Team:Wellesley HCI/Notebook/KaraNotebook
From 2012.igem.org
(→04Jun 2012) |
|||
(52 intermediate revisions not shown) | |||
Line 23: | Line 23: | ||
/*actual content styles*/ | /*actual content styles*/ | ||
- | body {width: | + | body {width: 900px; margin:auto;} |
#bu-wellesley_wiki_content {height:auto; line-height:100%;} | #bu-wellesley_wiki_content {height:auto; line-height:100%;} | ||
Line 56: | Line 56: | ||
font-weight:500; | font-weight:500; | ||
color:white; | color:white; | ||
- | background-color:# | + | background-color:#2d2d2d; |
border:none; | border:none; | ||
margin-top:25px; | margin-top:25px; | ||
Line 99: | Line 99: | ||
<link rel="stylesheet" type="text/css" href="http://cs.wellesley.edu/~hcilab/iGEM2012/css/Team.css"> | <link rel="stylesheet" type="text/css" href="http://cs.wellesley.edu/~hcilab/iGEM2012/css/Team.css"> | ||
+ | <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,600' rel='stylesheet' type='text/css'> | ||
<style type="text/css">@import "http://cs.wellesley.edu/~hcilab/iGEM_wiki/css/videobox.css";</style> | <style type="text/css">@import "http://cs.wellesley.edu/~hcilab/iGEM_wiki/css/videobox.css";</style> | ||
Line 106: | Line 107: | ||
<div id="bu-wellesley_wiki_content"> | <div id="bu-wellesley_wiki_content"> | ||
- | + | <a href="https://2012.igem.org/Team:Wellesley_HCI"><img src="http://cs.wellesley.edu/~hcilab/iGEM2012/images/titleimage.png" width="300px" style="display:block; float:left;"></a> | |
+ | <!--Start NavBar--> | ||
<ul id="nav"> | <ul id="nav"> | ||
- | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Team">Team</a></li> | + | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Team">Team</a> |
- | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Project_Overview">Project</a></li> | + | <ul> |
+ | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Team">Team Members</a></li> | ||
+ | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Notebook">Notebook</a></li> | ||
+ | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Acknowledgement">Acknowledgement</a></li> | ||
+ | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Tips_Tricks">Tips & Tricks</a></li> | ||
+ | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Social">Fun</a></li> | ||
+ | </ul> | ||
+ | </li> | ||
+ | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Project_Overview">Project</a> | ||
+ | <ul> | ||
+ | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Project_Overview">Project Overview</a></li> | ||
+ | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/SynBio_Search">SynBio Search</a></li> | ||
+ | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/MoClo_Planner">MoClo Planner</a></li> | ||
+ | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/SynFlo">SynFlo</a></li> | ||
+ | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Downloads_Tutorials">Downloads & Tutorials</a></li> | ||
+ | </ul> | ||
+ | </li> | ||
- | <li><a href=" | + | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Human_Practices">Human Practices</a> |
<ul> | <ul> | ||
- | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Methodology">Methodology</a></li> | + | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Human_Practices">User Research</a></li> |
+ | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Methodology">Methodology</a></li> | ||
<li><a href="https://2012.igem.org/Team:Wellesley_HCI/Safety">Safety</a></li> | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Safety">Safety</a></li> | ||
- | + | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Outreach">Outreach</a></li> | |
- | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Outreach">Outreach</a></li> | + | |
</ul> | </ul> | ||
</li> | </li> | ||
<li><a href="https://2012.igem.org/Team:Wellesley_HCI/Gold">Medal Fulfillment</a></li> | <li><a href="https://2012.igem.org/Team:Wellesley_HCI/Gold">Medal Fulfillment</a></li> | ||
- | + | ||
- | + | </ul> | |
- | + | <!--End NavBar--> | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
<!--notebook goes here--> | <!--notebook goes here--> | ||
Line 141: | Line 155: | ||
rpp: 4, | rpp: 4, | ||
interval: 30000, | interval: 30000, | ||
- | width: | + | width: 900, |
height: 200, | height: 200, | ||
theme: { | theme: { | ||
shell: { | shell: { | ||
- | background: '# | + | background: '#292421', |
color: '#ffffff' | color: '#ffffff' | ||
}, | }, | ||
Line 151: | Line 165: | ||
background: '#ffffff', | background: '#ffffff', | ||
color: '#423942', | color: '#423942', | ||
- | links: '# | + | links: '#d84823' |
} | } | ||
}, | }, | ||
Line 171: | Line 185: | ||
== Introduction (May 29 - June 2) == | == Introduction (May 29 - June 2) == | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
<div class="long"> | <div class="long"> | ||
Line 193: | Line 195: | ||
== Team research (June 3 - June 9) == | == Team research (June 3 - June 9) == | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
<div class="long"> | <div class="long"> | ||
===04Jun 2012=== | ===04Jun 2012=== | ||
Went to MS NERD for a workshop on Windows 8 | Went to MS NERD for a workshop on Windows 8 | ||
- | + | * Introduced to Windows Metro and apps | |
- | + | * Demo for Windows 8 on the Slate tablet | |
- | + | **How they utilized many different possibilities for touch, like the picture password and gestures from sides and corners having different functions | |
- | + | **Metro homepage provided a central hub for many different apps - like using FB or WordPress without being explicitly on, able to access just from the People app | |
- | + | **Apps also updated with live tiles, badges, and toast popups | |
- | + | ***Something similar for the ELNs to streamline access to streams of information (machines, materials management, reminders, timers) and live updating through the cloud | |
- | + | ***Also helps with communication and collaboration between scientists if could use cloud to do both in real time | |
- | + | **Split-screen view: applications for collaboration? A large window for the shared presentation and a personal dock on the side, for bi-directional file exchange | |
- | + | **Visual Studio and Blend changes: most importantly, multiplatform support thanks to ability to write in HTML5 and JS | |
- | + | ***Relevant to last year: people asked why they couldn't have the ELN on so-and-so mobile device; may help with interactions with the tabletop surfaces for presentations | |
===05Jun 2012=== | ===05Jun 2012=== | ||
- | MIT synthetic bio bootcamp | + | [[File:MIT Bootcamp Wetlab Work.jpg|right|thumb|In the lab, working with <i>E. coli</i>]] |
- | + | MIT synthetic bio bootcamp | |
- | + | * Started the day with an intro to synthetic biology: how it merges biology and engineering, what tools and concepts both bring to the table to build cells/machines | |
- | + | ** Concrete examples provided with examples of past iGem projects, including the 2006 MIT team's Eau d'Coli | |
- | + | *** Interesting to see how they used abstraction to design their system, then delved into the physical parts (genes) and interesting to see a logic gate represented with DNA | |
- | + | * Second half was wetlab for appreciation for the difficulties encountered during labwork, and to see where paper notebooks are lacking | |
- | + | *** Transformed E. coli K12 using E. chromi color plasmids | |
- | + | *** Measured the effect of modulating expression (e.g. promoters and RBSs of varying binding affinity) | |
- | + | **** Use of concepts (e.g. ß-galactosidase catalyzes splitting of ONPG into yellow product) to quantify efficiency of each system | |
- | 06Jun 2012 | + | |
- | Putting together preliminary presentation for Orit and Consuelo's feedback | + | ===06Jun - 09Jun 2012=== |
- | Building on our existing research and new directions to take: | + | * Putting together preliminary presentation for Orit and Consuelo's feedback |
- | + | * Building on our existing research and new directions to take: | |
- | + | ** Troubleshooting phase of Build step/cycle as a target for software tools: research approaches and thought processes, how to support existing methods | |
- | + | ** Look up paper of the DIYBio DIS'12 workshop | |
- | + | ** Investigate existing software tools for each step of the information workflow, esp. previous iGem entries | |
- | + | ** Focus less on current state of ELN technology and more on avenues of innovation for small academic labs (current market for regulated commercial labs staffed with professionals) | |
+ | ** Survey professors on campus as part of expert input step in gathering project requirements and specs (UCD) | ||
</div> | </div> | ||
== Brainstorming (June 10 - June 16) == | == Brainstorming (June 10 - June 16) == | ||
- | <div class=" | + | |
- | + | <div class="long"> | |
- | + | ===11Jun 2012=== | |
- | + | [[File:WHCI Selfbrainstorm sm.jpg|thumb|right|Dreaming big. Anything is possible!]] | |
- | + | The whole lab got together to have group presentations and brainstorming for each topic from a wide wariety of perspectives. Topics presented ranged from nitty gritty details like the actual technology and its capabilities, to higher-level ideas like how interaction works when you factor in the users. Once presentations were over, we split into two groups with at least one member of each research group present and came up with five concepts. My group ended up branching out all over the place with potential ideas, and it was hard to distinguish some of them as they were different and yet still natural outgrowths of a seed idea. | |
- | + | ||
- | + | ===12Jun 2012=== | |
- | + | It was pushed back by about a week, but we finally go to go to BU and meet their wetlab team! We started the day with a little symbol review and introductions, followed by iGEM medal requirements and their projects and tools. They told us about modular cloning, or MoClo, which really feels like synthetic biology. It's very machine-like and structured, but instead of having a mass-produced mechanical part, you have DNA instead. It's pretty interesting and seems like a great idea, and even though the timeframes sound long (five hours or so?) compared to days required by standard practices, this looks like a great improvement. But I don't really know enough about the topic or standard cloning in general to understand the drawbacks of this new process (perhaps because it's so new, a good repository hasn't been created and so it isn't ready for widespread use?). | |
- | + | Wendy and Kim also presented the art project, along with a mass presentation by Casey, Kathy, and Wendy on all of the other projects and Monday brainstorming. We got a little feedback from them, but I feel like this stuff is a lot to take in all at once. Projection seemed to be a hit with the BU team, though, and I personally do like the idea of it a lot. It avoids the surface contamination problem by using in-lab surfaces, while still being portable - presumably you could hook up projector-camera combinations all over the lab, or wire up the scientists themselves (alright, maybe not). And cheaper and less personal than tablets. | |
- | + | Afterwards, I brainstormed a few biosafety questions for our day with Natalie tomorrow, especially with regards to synthetic biology. I remember she touched on some ideas before during the MIT bootcamp, that there weren't many regulations for the synthetic biology community. It's an interesting situation since you might expect many, probably overblown rules, given how easy it is to make the leap from synthetic biology into Hollywood science fiction, and the government's reaction to other research fields like stem cells. | |
- | + | ||
+ | ===13Jun 2012=== | ||
+ | [[File:2012-06-14 BU Brainstorm PLOTbox.jpg|thumb|right|Presenting the ELN/PLOTbox at the brainstorming session]] | ||
+ | We had Robert from Agilent and Traci, Shawn, and Monique from BU over for an all-day brainstorming session. Before they came, we put up printouts, photos, post-its, and posterboard from the previous day, and other notes all over a reserved classroom to create project-specific stations. At first, we ended up in small groups - I wasn't sure if we were meant to man our specific stations or wander around, but that's what ended up happening (the ELN station ended up a bit of a ghost town). After a while, I wandered over to the art group, which proved to be pretty interesting - I had a chance to finally see the Sifteos for myself and play a game with them, using the cubes to view a maze and guide a gopher through it. Towards the end of the day, we joined together to discuss one subject en masse - we focused on the art project and general workflow and collaboration, leaving the other topics for the following day. Later, I did a little research on the Eugene language, which I found just familiar enough to make some sense and yet the approach and way of thinking felt so different from standard biology that I was left rather lost. But it's probably a question of thinking it over and familiarizing myself with it. I think it'll get better with time. | ||
+ | |||
+ | ===14Jun 2012=== | ||
+ | We had a short time to interview Natalie Kuldell during our ELN/PLOT (Personal Lab Organization Tool) presentation today. She shared her work style with us and what benefits her current set-up (i.e. paper-wiki hybrid) offer her. Paper, she told us, was invaluable for drawings, and the sharing and editing capabilities of the wiki also proved to be very useful. Her insights highlighted desired features we'd noticed in our own research, like freeform annotation with support for drawings, as well as search capabilities. | ||
+ | We also have a CS/Math department talk every week, and this week was a little relevant to our work in HCI. Two professors working on vision, voice recognition, and natural language processing presented on their research and the current status of the field, including Siri's inability to really understand what the user asks of her. (Kidnapping a child? Here are several restaurants you can take them to.) | ||
+ | We also had a little brainstorming about art and human practices, building on yesterday's discussions. We had man named Dave here - I think I missed his introduction, because I don't know his last name or where he's from, but he was mostly involved in giving feedback on our art ideas. | ||
+ | |||
+ | ===15Jun 2012=== | ||
+ | Rested and reflected on brainstorming: started researching products mentioned by the other brainstorming people, e.g. Robert from Agilent - for example, panavi, from Chi '12, an augmented cooking system that integrates information like temperature into the surroundings. | ||
+ | We also interviewed Christopher Arumainayagam, a Wellesley chemistry professor, about his lab workflow and opinions on features. The lab setting he described was quite different from the biology labs I was used to! | ||
+ | We also contacted Tamara Hendrickson, professor at Wayne State, who hosted a bioethics workshop at Wellesley with particular emphasis on ethics in academic labs - a possible information source for regulations and training in good practices implemented through the use of PLOTbox. | ||
</div> | </div> | ||
+ | |||
+ | == The first steps of design (June 17 - June 23) == | ||
+ | |||
+ | <div class="long"> | ||
+ | ===17-18 Jun 2012=== | ||
+ | Researched MoClo, headcams, and digital pens. | ||
+ | Transcribed the Beast/PLOT brainstorming session between Traci and Orit from last Wednesday | ||
+ | Tried to defend the PLOTbox from getting axed, the question being what kind of innovative interactions could we research with it? It's hard sometimes, separating the ideas of making tools useful to the synthetic biology community and remembering that this is, at the heart, a research lab in HCI. Defense unsuccessful, but we were given a reprieve to think it over for a bit longer while working on our other assignments. | ||
+ | Interviewed Professor Andrea Sequeira, an evolutionary biologist on campus who works with weevils from the Galapagos Islands. She was very enthusiastic about the project and very forthcoming with information - she drew us diagrams and even had printouts giving a rundown on lab procedures. | ||
+ | |||
+ | ===19Jun 2012=== | ||
+ | [[File:WHCI Balsamiq2.png|thumb|right|Balsamiq prototype]] | ||
+ | Researched LifeLines and CTFL, computer cybercrime evidence visualization tool - for timeline visualizations to apply to data for synbio. | ||
+ | Transcribed brainstorming with Traci, Robert, Orit, and the lab. Created paper and Balsamiq prototypes of the MoClo Planner. | ||
+ | |||
+ | ===20Jun 2012=== | ||
+ | Finished transcribing the Beast Bu Plotbox audio and uploaded to Dropbox. | ||
+ | Did some more research on Eugene - found a general guide to installation and opening (Chris Voigt's book) and some resources for when we acquire Eugene, which we can't because SourceForge seems to be down. But if we get it we can start learning to make it and compile with the dl and example files. | ||
+ | Visualization | ||
+ | Brainstorm crowdsourcing for the data sheets - could we have curated data entry that's voted on by the community, rather than done by anyone with an account? | ||
+ | |||
+ | ===21Jun 2012=== | ||
+ | Looking into Eugene script examples and documentation. I wonder if there's a way to automate the definition and declaration of various properties, parts, and devices? Writing it all out by hand would definitely by extremely time-consuming. Nahum and I started drafting a list of parts and properties based on the BU wetlab project and the Weber MoClo paper. | ||
+ | Kathy, Nahum, and I started developing a paper prototype of the MoClo Planner based on Traci's feedback on the Balsamiq prototype. We also showed this to Orit tog et her feedback, and she gave us several helpful pointers as well. We wrapped up by putting the prototype on a free whiteboard with notes and postits below each. | ||
+ | |||
+ | ===22Jun 2012=== | ||
+ | Started implementing the MoClo planner, laying down the XML code for the program's structure in Visual Studio. The ideas were familiar but the syntax was different enough to be initially very frustrating, but things went a lot better as the day went along! Nahum and I managed to create the layouts for three different pages: the level 0 module parts selection page, the level 1 shutter in which selected level 0 parts are assembled into level 1 modules, and the level 2 shutter in which level 1 modules are assembled into level 2 modules. | ||
+ | Databinding is still rather unclear but seems like a useful tool for incorporating flexibility into our program, definitely bears looking into. | ||
+ | We now have stepped up form paper prototypes, but so far it's all just window dressing. Next work is when we start working on functionality, and oh boy! Just looking at Eugene scares me, not to mention reading up on SBOL as well. And C#! It should be a very intense, information-dense week. | ||
</div> | </div> | ||
+ | |||
+ | == Programming, Finally (June 24 - June 30) == | ||
<div class="long"> | <div class="long"> | ||
- | + | ===25Jun 2012=== | |
+ | Started reading up on SBOL: core data model, file format, visualization extension | ||
+ | Started working on a paper prototype demonstration video for Traci for the MoClo planner: lots of drawing, again, and cleaning. Also worked with Nahum to script it. Filming begins tomorrow. Maybe embed the video once it's done? | ||
+ | |||
+ | ===26Jun 2012=== | ||
+ | Finished building video paper prototype and then switched over to working on the MoClo Planner UI. It was hard, but not so bad once Nahum and I got the hang of things. The structure part of it, anyway - describing behaviors was a bit more mind-bending, and we had a time of it trying to understand how to manipulate our shutters. We did pick up a little bit about C# but all-in-all it was a tiring and frustrating and confusing sort of day. Tomorrow, we're going to look into older code and see what they did to make drawers behave, and consider how to use SBOL in the MoClo planner. SBOL Visual is definitely going to figure in it. | ||
+ | |||
+ | ===27Jun 2012=== | ||
+ | Continued working on implementing structure and function of MoClo planner. | ||
+ | Fixed level-moving so they move properly, respecting boundaries, and | ||
+ | started implementing button event handles in Level 0 to populate filtersPanel with the appropriate filters for each part type. | ||
+ | Designed a user control to represent each part, including info like its name, id, sbol image, and selection and data sheet options | ||
+ | |||
+ | ===28Jun 2012=== | ||
+ | More MoClo planner stuff - added context menus and filter list population tied to each nav-button. | ||
+ | |||
+ | ===29Jun 2012=== | ||
+ | [[File:WHCI AtMIT2.JPG|thumb|right|Meanwhile, at MIT iGEM headquarters...]] | ||
+ | Met MIT iGem plus toured their labs and checked out their projects including cool machines, got a look at their workspace and talked about their work with a few members. We also attended a physics lecture given by Dr. Walter Lewin, which was being filmed for NHK, and our group was targeted by them for interviews after - a slow-moving group of college kids, 13 of them? Probably a pretty good target. | ||
</div> | </div> | ||
+ | <br/><br/><br/> | ||
+ | <br/><br/><br/> | ||
+ | |||
+ | == Development 1 (July 1 - July 7) == | ||
+ | |||
+ | <div class="long"> | ||
+ | ===03 Jul 2012=== | ||
+ | Coding bootcamp today - some old stuff from class and some new stuff too, especially talking about IDEs and surface programming. Best take-away was breakpoints - started using them immediately in my code. They offer an amazing amount of information and it's all so easy to access! Trying to capture all that with printing would have taken much longer and been more of a hassle to sift through. Finally implemented drag and drop on Parts, moving from L0 search to L1 toolbox, with some little extras to keep things from tripping up or throwing exceptions or other unfortunate things. The add Parts button I put in to test a variable in a different class turned out to be invaluable for making parts to test drag and drop out on, and we finally came up with a way/implemented a way to differentiate the two types of interactions Parts have - contact and drag. It's been worrisome to think of ways to differentiate the two but I think it works fairly well! THough I might be biased, having helped code it and all. Perhaps the pilot study will prove useful for feedback in that regard. But this is great! This is the most progress we've made in days! OH AND I FINALLY GOT HOW TO GET CLASSES TO REFER TO ELEMENTS CONTAINED ELSEWHERE! Thanks to Consuelo. I feel silly for not thinking of it before, but it was just such an important breakthrough because nothing else that happened today would have been possible without it! Though there's still so much left to do, I feel a lot better about our prospects than I did yesterday. Even if we did get an ultimatum and have to hurry up and catch up with the rest of the class. | ||
+ | |||
+ | ===04 - 07 Jul 2012=== | ||
+ | Start of drag and drop implementation for Parts. It's nice that using ScatterViewItems gives a visual component to the behavior. They can now move between the Parts palettes at the top of Level 1 and the L1 modules inside the construction tabs. L1 modules themselves still need quite a bit of work, but they now take in Parts! Manual construction is up and running even if the addition process isn't yet the most forgiving. With the UI making progress, I got set on backend integration to give our controls some real data to work with. At the end, the string search worked but figuring out how to do filter search has been difficult. There isn't a way for us to access all of a particular part and filter those results by category. | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
</div> | </div> | ||
+ | |||
+ | == Development 2 (July 8 - July 14) == | ||
+ | |||
+ | <div class="long"> | ||
+ | ===08 - 09 Jul 2012=== | ||
+ | Could have gone better. Tried to make L1modules retain information across clones, but it seems that setting pointers to the original's data isn't enough. We may have to copy all the properties over one by one. But once that's done it won't be a huge deal to put in the information we need from the backend or Kathy needs from us, but I wish we could have figured out a way that was more dynamic. | ||
+ | Also looking further into the question of the sortable listbox, but so far inquiries have been unsuccessful. We found several links to frameworks developed some years ago, from before the current .NET framework. I tried downloading one and implement its drag-drop functionalities on a listbox, but it didn't work. With this, and the listbox not even detecting my touchdown events, I'm at a bit of a loss as to how to proceed. | ||
+ | |||
+ | ===10 Jul 2012=== | ||
+ | Breakthrough! I spent the morning putting in the properties one by one, so information was preserved even as L1modules were moved around and cloned. I would have liked to find a codier solution, but you can't argue with what works. | ||
+ | Still, that's not the thing. The thing is, we got sortable stackpanels to work! It's been days. That sounds shorter than it felt. | ||
+ | After trying out some relatively (?) simple looking sample code and configuring it for touch, we found DoDragDrop was killing VisualStudio. Not good. At the end of our ropes, Nahum and I sat and discussed with Consuelo, who gave us this grave proclamation: sample code was doing nothing for us. It was time to give up on the pretty, coders' solutions and go for the uglier functional code. But we thought we'd try one last thing, and so we wrote something very simple (plus a result callback method). Two event handlers with maybe 30 lines maximum between them, and you know what? It worked! Crazy, hacked-up thing, but it worked and it never even went near the drag and drop handlers that had become the bane of my lab hours. I was so happy! After, it was easy, smooth sailing - we got dropping L1modules into L2modules to work as well, and did a little styling on the parts whose gargantuan side had been rather irksome since we made the switch from mammoth Big Mac to the sleeker but smaller Uppy. | ||
+ | Tomorrow, we write a method stub for the Permutations tab for Kathy and Consuelo's Eugene code, and start with backend. | ||
+ | |||
+ | ===11 - 12 Jul 2012=== | ||
+ | Started with backend. Couldn't find the old code I'd started, should've checked it in, so we started from a clean slate. We updated the Parts to hold registry data sheet information, to make all of that available for building later. We got text input search to work and filters look lke they're doing something, but they're a little questionable and returning very few results. So that bears looking into a bit. We also implemented one of the element menu controls, but are debating the viability of the remaining two and considering switching them to something else. | ||
+ | |||
+ | A minor UI update, but it changed the appearance a lot: wrote an algorithm to arrange ScatterViewItems in their containers, so they don't just show up randomly all over the place. It works alright, although we have some exceptions that are giving us trouble now. Also considering simply switching the svi to WrapPanels, which will expand to fit content and allow us to scroll when there are too many Parts to be shown at once. We need to make a dummy data sheet so the Eugene/Permutations team doesn't get a bunch of exceptions when they try to test. | ||
+ | |||
+ | ===13 - 14 Jul 2012=== | ||
+ | Here's something new but important: threading. Currently search is a slow and resource intensive process that causes the UI to hang while it operates. Apparently this is because the main UI thread is taking care of creating the search and trawling the parts registry. So the idea for that is to create a new, separate worker thread that does the search in the background while the main UI thread remains responsive to user input, and with a progress indicator so they know what's going on with the search. Easy enough in concept? | ||
+ | Really tough in practice! I think I understand the code but when it comes to doing it, I can't! I'm not sure where the problem lies, since the separate thread won't throw exceptions on the main thread. But I do know it has something to do with how I'm getting it to make the search or with search itself - there's something incompatible there. I tested out the skeleton of it and it seemed to work fine, as long as its work was writing to the console. I don't know if that's a background-event though. Alternatively, creating a thread did work only it didn't work in the background and the UI still hung. | ||
+ | We also did a quick and silent demo of the UI's current state for Orit. Next week we'll be presenting, so it's time to make slides and speeches. | ||
+ | |||
</div> | </div> | ||
+ | |||
+ | == Development 3 (July 15 - July 21) == | ||
<div class="long"> | <div class="long"> | ||
- | + | ||
+ | ===16 - 17 Jul 2012=== | ||
+ | Met with Orit to show her the UI. Got threading to work, and now during searches a spinning circle of dots appears and the UI remains responsive. Search is still a little slow, and Kathy found some problems with searching for a part specifically by name. It doesn't work properly at all - sometimes it gives parts without data (which have no business moving past the filtering), sometimes it returns the desired part and then some. Will people who search for a part by ID always want only that part? If so, we can run a check for the "bba_" string in front. But if people want related parts and things to show up as well (less likely?), then it's alright as is. Still slow though, and sometimes it returns nothing or duplicates. | ||
+ | After that, we started working on the data sheet that users can bring up using the element menu. | ||
+ | |||
+ | Also backend but of a slightly different flavor: working with Kathy to integrate with Eugene. Permutations were operating automatically using all the parts, which was very slow. But it worked! Had some problems with line breaks in some text files we were using to direct the process, and found that in some areas Eugene had dropped some crucial characters while writing for some reason. Very strange! But we went through and ctrl-fed the errors and fixed them. Anyway, we also switched permutations from "use all available parts" to "use selected parts" where selection was indicated using a highlight. We also applied this to level 1 modules in addition to parts, so eugene permutations should be well integrated now. The first half of today however was spent catching up on google power searching. Though I use google every day, I learned some new things about it. Hopefully I'll be a more effective searcher in the future. | ||
+ | |||
+ | ===18 Jul 2012=== | ||
+ | [[File:WHCI Beachday.jpg|thumb|right|It was a lovely day at the beach, when <i>suddenly thunderstorms</i>]] | ||
+ | Demo for international guidance counselors: we showed Photo River, the Sifteos, and the MoClo Planner. | ||
+ | And then it was Beach Day! Pretty event-filled and most of it on the road. We ran low on gas on the way there, going out of our minds wondering if we were going to make it to the gas station (we did), and finally got to the beach. About an hour later, the sky started turning dark, and a pretty violent storm chased us all home. Lots of thunder and lightning and napping in the back of the car - it was a long day. But it was nice to have a change of scenery and the water and sand were quite nice. | ||
+ | |||
+ | ===19 Jul 2012=== | ||
+ | Recorded a demo of MoClo planner, doing a walkthrough to show the interactions. Talked with Kathy and Nicole about changes to search/backend - how to get more information, what more info to get (esp. on CDS), and how to optimize it? Turns out search is churning down on all the source code five times over, one for each class. | ||
+ | Worked with Madeleine and Veronica on integrating the primer designer; now you can spawn in draggable fusion sites and we've worked out an idea for the data structure of parts and their respective fusion sites. | ||
+ | And most importantly | ||
+ | TONIGHT | ||
+ | THE DARK KNIGHT RISES. | ||
+ | |||
+ | ===20 Jul 2012=== | ||
+ | Presentation for CS/Math talks as part of our summer research program. Lots of technical difficulties (ironic given our lab is 75% CS and CS-related majors). It went alright, I think? Sometimes the audience was quiet, but we got some insightful questions. | ||
+ | Back in the lab, I worked on Primer Designer more. Implemented dropping of fusion sites and automatic doubling (a fusion site for each end of two adjoining parts) and storing data for use in the next page. | ||
+ | |||
+ | |||
</div> | </div> | ||
+ | == User Studies 1 (July 22 - July 28) == | ||
+ | |||
+ | <div class="long"> | ||
+ | ===23 - 26 Jul 2012=== | ||
+ | Lately I've been working with Veronica to fix the Primer Designer: we managed to get the primer tests integrated and their results displayed in the Primer Designer, but it took forever to figure out what was going wrong! With some judicious application of command line testing and breakpoints (at least 50% of the time spent on test backend integration must've been spent hitting F5 and F11 over and over), plus some of Nicole's genius, we managed to get the code working properly and returning useful values. It was very staisfying! I don't think things have been this difficult to overcome since struggling to create a sortable ListBox for the Level 2 modules, but we definitely got it done a lot faster this time. | ||
+ | |||
+ | After that, we spent some time on the UI. Fusion sites were only cloning once and became un-draggable afterwards, and they showed up scattered all over the place in the library instead of in neat rows like we wanted. Turns out it was just some silly stuff on my part, like using the wrong constructor. Easy enough to fix! | ||
+ | |||
+ | Had a mild heart attack when Consuelo forwarded the email Traci sent her about designing primers, though. I'd spent so much time on the UI and building the modules themselves that I'd mostly forgotten about the primers and how confusing I'd found the process. It's a good thing Kathy's on hand to help decipher these things, but all the same I think I should try to learn primers and PCR over again and hope it sticks. And once put into the code as just another string, it seems so much less intimidating to talk about prefixes, suffixes, reverse sequences, and complementary strands. They're all just another transformation or operation then, nothing huge. | ||
+ | |||
+ | Veronica worked on that for a while, and I tried to develop a backend for the automatic placement of fusion sites. I got it working after a few logic hiccups, nothing too serious, and afterwards I pitched in to the effort to print the correct primers, based on Traci's explanations. That went well enough, and the day wrapped up with implementing the user creation of fusion sites in the library and checks for duplicate fusion sites before primer generation. | ||
+ | |||
+ | I also put in some time on search to make it a bit faster, at least when parts are displayed under a type or filter, but I'm not sure if it's really optimized. The way it handles data may be unecessarily complex. And figuring out how to incorporate searching within all parts or just one type was a bit of a headache! I'd forgotten how tangled conditional trees could get. Am I overthinking this? | ||
+ | |||
+ | ===27 Jul 2012=== | ||
+ | Today was a pretty slow day. Uppy went off with Consuelo, Kathy, and Nahum to MIT for user studies. I somehow managed to break Nahum's optimized search code within a half hour of being shown it - oh, man! There wasn't any time to fix it and check in his version before they left, but I tried to fix it while they were on the road. In the end I didn't make it, so Veronica and I did a little busywork fixing bugs while getting a constant stream of input from the MIT users, relayed to us through Gchat. One very vague exception (along the lines of "Something bad happened") kept appearing, and we just couldn't figure out what it was! Instead, we called it a day, checked in, and went on home. | ||
+ | |||
+ | ===28 - 29 Jul 2012=== | ||
+ | The weekend was spent on checking off the laundry list of fixes found during the MIT user studies, in preparation for the BU studies. We got Nahum's search integrated and search in all/search in one type working. Some minor fixes included adjusting drag thresholds to be less sensitive, fixing a bug in which parts did not always appear in the next level, threading data sheets and primer testing, swipe-deleting for parts and Level 1 modules in the workspace palettes, and auto-generating un-draggable templates for building modules (which become active when full). The mysterious exception from before seems to be gone, too - I think I deleted the initialization invocation at some point, and replacing it seems to have fixed things. | ||
+ | </div> | ||
+ | |||
+ | == User Studies 2 and Fin. (July 29 - August 02) == | ||
+ | |||
+ | <div class="long"> | ||
+ | ===30 Jul 2012=== | ||
+ | [[File:WHCI BU-Traci&Sonia.PNG|thumb|right|Traci and Sonia testing the MoClo Planner]] | ||
+ | Today we had a user study at BU. Our first group was Traci and a grad student from her lab, Sonya. The second was Shawn and Monique. They exposed a lot of flaws in the program, most importantly the ones that were caused by our misunderstanding of primer design as well as several other important, though not necessarily MoClo-related, bugs. They all offered great feedback, but Traci especially gave us a wealth of information on what they needed from the MoClo Planner and what areas of it needed work. A long day, with all the trouble you could ask for with moving things around and setting things up, but we got a lot out of it. | ||
+ | |||
+ | ===31 Jul - 01 Aug 2012=== | ||
+ | After all that, our first priority was to handle the aftermath of the user study at BU. There's so much that Traci gave us that it's hard to know where to start. Veronica and I overhauled the layout of the Primer Designer to show more of the data that Traci, Shawn, and Monique asked that we show, while Casey worked on getting things that the backend didn't provide for us in its current state. I picked up on one enormous glaring flaw that had somehow avoided detection until Traci and Sonya spotted it yesterday - that in the Primer Designer, some parts had the wrong sequence. It was the sequence from the dummy data sheet we made for testing purposes, and it was being used because unless users explicitly requested the data sheet, the parts never pulled their data from the registry. Pretty serious! One of the dangers of running in-house testing with dummy data all the time. That was pretty much taken care of, but understanding the logic behind the Primer Designer was a bit of a fight. A fight that still continues... | ||
+ | |||
+ | ===02 Aug 2012=== | ||
+ | Last day! Veronica made really cute thank-you cards (more like books actually) for Orit and Consuelo, and the lab went in to a separate room one at a time to sign them. We got coached on spieling for an hour or two before presentations, and then we went down. We were in a tight little corner and though we had organized shifts, the MoClo planner group seemed to be passing in and out of poster-manning pretty freely. Or maybe that was just me? There were a lot of interesting presentations, though, and I was glad to have a chance to read the posters and talk to the other presenters about their work for the summer. Once the presentation two hours were up, we headed out for a zombie lab photo and then to El Oriental de Cuba for some great food! I couldn't enjoy the food I'd ordered, though, because I'd already filled up on the empanadas and yuca and plantains we got as appetizers. It was loud, the food was delicious, and it was a great time. Couldn't ask for a better way to wrap up the last ten weeks. | ||
+ | |||
+ | ===03 Aug 2012=== | ||
+ | So not quite wrapped up. Went in to redo Primer Designer based on Traci's actual work and not our misconception of it. Had to draw several diagrams and pore over the spreadsheets and powerpoints she gave us to make sure I understood. It ended up being a lot more data than we originally had shown! I tried adding several buttons that would not only show primers for a selected part, but also those of the destination vectors it will be included in. | ||
+ | </div> | ||
<!--notebook ends here--> | <!--notebook ends here--> |
Latest revision as of 18:58, 3 October 2012
![](http://cs.wellesley.edu/~hcilab/iGEM2012/images/titleimage.png)
Kara's Notebook
Introduction (May 29 - June 2)
The first foray into human-computer interaction! We started with a basic introduction to the concepts of HCI research and the lab's particular goals and projects. Also included were the subteams our labs were divided into - I ended up in the Information Workflow and eLab Notebook groups, but my team members were to arrive next week. Still, since it was just the inofmration-gathering phase at the moment, being able to communicate via email was more than enough.
But before I started with workflow and ELN research, Consuelo sat me down in front of Samsung surface and gave me a thick Surface-programming training manual to work on. It was my first contact with XML and C# - they reminded me a lot of HTML and CSS/JS, though, but that does make sense. It was an interesting experience to dissect the logic in the code I was instructed to write and see familiar patterns in it.
Once that was done (which was a shame), it was time to start researching the ELN. We had a number of preliminary readings to do, which covered the current state of commercial ELNs to new and dramatically different implementations of the technology. It was quite a large volume of information to process, but it's exciting to see that technology in labs is a lot closer to the futuristic equipment shown in the media than I'd previously thought.
Team research (June 3 - June 9)
04Jun 2012
Went to MS NERD for a workshop on Windows 8
- Introduced to Windows Metro and apps
- Demo for Windows 8 on the Slate tablet
- How they utilized many different possibilities for touch, like the picture password and gestures from sides and corners having different functions
- Metro homepage provided a central hub for many different apps - like using FB or WordPress without being explicitly on, able to access just from the People app
- Apps also updated with live tiles, badges, and toast popups
- Something similar for the ELNs to streamline access to streams of information (machines, materials management, reminders, timers) and live updating through the cloud
- Also helps with communication and collaboration between scientists if could use cloud to do both in real time
- Split-screen view: applications for collaboration? A large window for the shared presentation and a personal dock on the side, for bi-directional file exchange
- Visual Studio and Blend changes: most importantly, multiplatform support thanks to ability to write in HTML5 and JS
- Relevant to last year: people asked why they couldn't have the ELN on so-and-so mobile device; may help with interactions with the tabletop surfaces for presentations
05Jun 2012
MIT synthetic bio bootcamp
- Started the day with an intro to synthetic biology: how it merges biology and engineering, what tools and concepts both bring to the table to build cells/machines
- Concrete examples provided with examples of past iGem projects, including the 2006 MIT team's Eau d'Coli
- Interesting to see how they used abstraction to design their system, then delved into the physical parts (genes) and interesting to see a logic gate represented with DNA
- Concrete examples provided with examples of past iGem projects, including the 2006 MIT team's Eau d'Coli
- Second half was wetlab for appreciation for the difficulties encountered during labwork, and to see where paper notebooks are lacking
- Transformed E. coli K12 using E. chromi color plasmids
- Measured the effect of modulating expression (e.g. promoters and RBSs of varying binding affinity)
- Use of concepts (e.g. ß-galactosidase catalyzes splitting of ONPG into yellow product) to quantify efficiency of each system
06Jun - 09Jun 2012
- Putting together preliminary presentation for Orit and Consuelo's feedback
- Building on our existing research and new directions to take:
- Troubleshooting phase of Build step/cycle as a target for software tools: research approaches and thought processes, how to support existing methods
- Look up paper of the DIYBio DIS'12 workshop
- Investigate existing software tools for each step of the information workflow, esp. previous iGem entries
- Focus less on current state of ELN technology and more on avenues of innovation for small academic labs (current market for regulated commercial labs staffed with professionals)
- Survey professors on campus as part of expert input step in gathering project requirements and specs (UCD)
Brainstorming (June 10 - June 16)
11Jun 2012
The whole lab got together to have group presentations and brainstorming for each topic from a wide wariety of perspectives. Topics presented ranged from nitty gritty details like the actual technology and its capabilities, to higher-level ideas like how interaction works when you factor in the users. Once presentations were over, we split into two groups with at least one member of each research group present and came up with five concepts. My group ended up branching out all over the place with potential ideas, and it was hard to distinguish some of them as they were different and yet still natural outgrowths of a seed idea.
12Jun 2012
It was pushed back by about a week, but we finally go to go to BU and meet their wetlab team! We started the day with a little symbol review and introductions, followed by iGEM medal requirements and their projects and tools. They told us about modular cloning, or MoClo, which really feels like synthetic biology. It's very machine-like and structured, but instead of having a mass-produced mechanical part, you have DNA instead. It's pretty interesting and seems like a great idea, and even though the timeframes sound long (five hours or so?) compared to days required by standard practices, this looks like a great improvement. But I don't really know enough about the topic or standard cloning in general to understand the drawbacks of this new process (perhaps because it's so new, a good repository hasn't been created and so it isn't ready for widespread use?). Wendy and Kim also presented the art project, along with a mass presentation by Casey, Kathy, and Wendy on all of the other projects and Monday brainstorming. We got a little feedback from them, but I feel like this stuff is a lot to take in all at once. Projection seemed to be a hit with the BU team, though, and I personally do like the idea of it a lot. It avoids the surface contamination problem by using in-lab surfaces, while still being portable - presumably you could hook up projector-camera combinations all over the lab, or wire up the scientists themselves (alright, maybe not). And cheaper and less personal than tablets. Afterwards, I brainstormed a few biosafety questions for our day with Natalie tomorrow, especially with regards to synthetic biology. I remember she touched on some ideas before during the MIT bootcamp, that there weren't many regulations for the synthetic biology community. It's an interesting situation since you might expect many, probably overblown rules, given how easy it is to make the leap from synthetic biology into Hollywood science fiction, and the government's reaction to other research fields like stem cells.
13Jun 2012
We had Robert from Agilent and Traci, Shawn, and Monique from BU over for an all-day brainstorming session. Before they came, we put up printouts, photos, post-its, and posterboard from the previous day, and other notes all over a reserved classroom to create project-specific stations. At first, we ended up in small groups - I wasn't sure if we were meant to man our specific stations or wander around, but that's what ended up happening (the ELN station ended up a bit of a ghost town). After a while, I wandered over to the art group, which proved to be pretty interesting - I had a chance to finally see the Sifteos for myself and play a game with them, using the cubes to view a maze and guide a gopher through it. Towards the end of the day, we joined together to discuss one subject en masse - we focused on the art project and general workflow and collaboration, leaving the other topics for the following day. Later, I did a little research on the Eugene language, which I found just familiar enough to make some sense and yet the approach and way of thinking felt so different from standard biology that I was left rather lost. But it's probably a question of thinking it over and familiarizing myself with it. I think it'll get better with time.
14Jun 2012
We had a short time to interview Natalie Kuldell during our ELN/PLOT (Personal Lab Organization Tool) presentation today. She shared her work style with us and what benefits her current set-up (i.e. paper-wiki hybrid) offer her. Paper, she told us, was invaluable for drawings, and the sharing and editing capabilities of the wiki also proved to be very useful. Her insights highlighted desired features we'd noticed in our own research, like freeform annotation with support for drawings, as well as search capabilities. We also have a CS/Math department talk every week, and this week was a little relevant to our work in HCI. Two professors working on vision, voice recognition, and natural language processing presented on their research and the current status of the field, including Siri's inability to really understand what the user asks of her. (Kidnapping a child? Here are several restaurants you can take them to.) We also had a little brainstorming about art and human practices, building on yesterday's discussions. We had man named Dave here - I think I missed his introduction, because I don't know his last name or where he's from, but he was mostly involved in giving feedback on our art ideas.
15Jun 2012
Rested and reflected on brainstorming: started researching products mentioned by the other brainstorming people, e.g. Robert from Agilent - for example, panavi, from Chi '12, an augmented cooking system that integrates information like temperature into the surroundings. We also interviewed Christopher Arumainayagam, a Wellesley chemistry professor, about his lab workflow and opinions on features. The lab setting he described was quite different from the biology labs I was used to! We also contacted Tamara Hendrickson, professor at Wayne State, who hosted a bioethics workshop at Wellesley with particular emphasis on ethics in academic labs - a possible information source for regulations and training in good practices implemented through the use of PLOTbox.
The first steps of design (June 17 - June 23)
17-18 Jun 2012
Researched MoClo, headcams, and digital pens. Transcribed the Beast/PLOT brainstorming session between Traci and Orit from last Wednesday Tried to defend the PLOTbox from getting axed, the question being what kind of innovative interactions could we research with it? It's hard sometimes, separating the ideas of making tools useful to the synthetic biology community and remembering that this is, at the heart, a research lab in HCI. Defense unsuccessful, but we were given a reprieve to think it over for a bit longer while working on our other assignments. Interviewed Professor Andrea Sequeira, an evolutionary biologist on campus who works with weevils from the Galapagos Islands. She was very enthusiastic about the project and very forthcoming with information - she drew us diagrams and even had printouts giving a rundown on lab procedures.
19Jun 2012
Researched LifeLines and CTFL, computer cybercrime evidence visualization tool - for timeline visualizations to apply to data for synbio. Transcribed brainstorming with Traci, Robert, Orit, and the lab. Created paper and Balsamiq prototypes of the MoClo Planner.
20Jun 2012
Finished transcribing the Beast Bu Plotbox audio and uploaded to Dropbox. Did some more research on Eugene - found a general guide to installation and opening (Chris Voigt's book) and some resources for when we acquire Eugene, which we can't because SourceForge seems to be down. But if we get it we can start learning to make it and compile with the dl and example files. Visualization Brainstorm crowdsourcing for the data sheets - could we have curated data entry that's voted on by the community, rather than done by anyone with an account?
21Jun 2012
Looking into Eugene script examples and documentation. I wonder if there's a way to automate the definition and declaration of various properties, parts, and devices? Writing it all out by hand would definitely by extremely time-consuming. Nahum and I started drafting a list of parts and properties based on the BU wetlab project and the Weber MoClo paper. Kathy, Nahum, and I started developing a paper prototype of the MoClo Planner based on Traci's feedback on the Balsamiq prototype. We also showed this to Orit tog et her feedback, and she gave us several helpful pointers as well. We wrapped up by putting the prototype on a free whiteboard with notes and postits below each.
22Jun 2012
Started implementing the MoClo planner, laying down the XML code for the program's structure in Visual Studio. The ideas were familiar but the syntax was different enough to be initially very frustrating, but things went a lot better as the day went along! Nahum and I managed to create the layouts for three different pages: the level 0 module parts selection page, the level 1 shutter in which selected level 0 parts are assembled into level 1 modules, and the level 2 shutter in which level 1 modules are assembled into level 2 modules. Databinding is still rather unclear but seems like a useful tool for incorporating flexibility into our program, definitely bears looking into. We now have stepped up form paper prototypes, but so far it's all just window dressing. Next work is when we start working on functionality, and oh boy! Just looking at Eugene scares me, not to mention reading up on SBOL as well. And C#! It should be a very intense, information-dense week.
Programming, Finally (June 24 - June 30)
25Jun 2012
Started reading up on SBOL: core data model, file format, visualization extension Started working on a paper prototype demonstration video for Traci for the MoClo planner: lots of drawing, again, and cleaning. Also worked with Nahum to script it. Filming begins tomorrow. Maybe embed the video once it's done?
26Jun 2012
Finished building video paper prototype and then switched over to working on the MoClo Planner UI. It was hard, but not so bad once Nahum and I got the hang of things. The structure part of it, anyway - describing behaviors was a bit more mind-bending, and we had a time of it trying to understand how to manipulate our shutters. We did pick up a little bit about C# but all-in-all it was a tiring and frustrating and confusing sort of day. Tomorrow, we're going to look into older code and see what they did to make drawers behave, and consider how to use SBOL in the MoClo planner. SBOL Visual is definitely going to figure in it.
27Jun 2012
Continued working on implementing structure and function of MoClo planner. Fixed level-moving so they move properly, respecting boundaries, and started implementing button event handles in Level 0 to populate filtersPanel with the appropriate filters for each part type. Designed a user control to represent each part, including info like its name, id, sbol image, and selection and data sheet options
28Jun 2012
More MoClo planner stuff - added context menus and filter list population tied to each nav-button.
29Jun 2012
Met MIT iGem plus toured their labs and checked out their projects including cool machines, got a look at their workspace and talked about their work with a few members. We also attended a physics lecture given by Dr. Walter Lewin, which was being filmed for NHK, and our group was targeted by them for interviews after - a slow-moving group of college kids, 13 of them? Probably a pretty good target.
Development 1 (July 1 - July 7)
03 Jul 2012
Coding bootcamp today - some old stuff from class and some new stuff too, especially talking about IDEs and surface programming. Best take-away was breakpoints - started using them immediately in my code. They offer an amazing amount of information and it's all so easy to access! Trying to capture all that with printing would have taken much longer and been more of a hassle to sift through. Finally implemented drag and drop on Parts, moving from L0 search to L1 toolbox, with some little extras to keep things from tripping up or throwing exceptions or other unfortunate things. The add Parts button I put in to test a variable in a different class turned out to be invaluable for making parts to test drag and drop out on, and we finally came up with a way/implemented a way to differentiate the two types of interactions Parts have - contact and drag. It's been worrisome to think of ways to differentiate the two but I think it works fairly well! THough I might be biased, having helped code it and all. Perhaps the pilot study will prove useful for feedback in that regard. But this is great! This is the most progress we've made in days! OH AND I FINALLY GOT HOW TO GET CLASSES TO REFER TO ELEMENTS CONTAINED ELSEWHERE! Thanks to Consuelo. I feel silly for not thinking of it before, but it was just such an important breakthrough because nothing else that happened today would have been possible without it! Though there's still so much left to do, I feel a lot better about our prospects than I did yesterday. Even if we did get an ultimatum and have to hurry up and catch up with the rest of the class.
04 - 07 Jul 2012
Start of drag and drop implementation for Parts. It's nice that using ScatterViewItems gives a visual component to the behavior. They can now move between the Parts palettes at the top of Level 1 and the L1 modules inside the construction tabs. L1 modules themselves still need quite a bit of work, but they now take in Parts! Manual construction is up and running even if the addition process isn't yet the most forgiving. With the UI making progress, I got set on backend integration to give our controls some real data to work with. At the end, the string search worked but figuring out how to do filter search has been difficult. There isn't a way for us to access all of a particular part and filter those results by category.
Development 2 (July 8 - July 14)
08 - 09 Jul 2012
Could have gone better. Tried to make L1modules retain information across clones, but it seems that setting pointers to the original's data isn't enough. We may have to copy all the properties over one by one. But once that's done it won't be a huge deal to put in the information we need from the backend or Kathy needs from us, but I wish we could have figured out a way that was more dynamic. Also looking further into the question of the sortable listbox, but so far inquiries have been unsuccessful. We found several links to frameworks developed some years ago, from before the current .NET framework. I tried downloading one and implement its drag-drop functionalities on a listbox, but it didn't work. With this, and the listbox not even detecting my touchdown events, I'm at a bit of a loss as to how to proceed.
10 Jul 2012
Breakthrough! I spent the morning putting in the properties one by one, so information was preserved even as L1modules were moved around and cloned. I would have liked to find a codier solution, but you can't argue with what works. Still, that's not the thing. The thing is, we got sortable stackpanels to work! It's been days. That sounds shorter than it felt. After trying out some relatively (?) simple looking sample code and configuring it for touch, we found DoDragDrop was killing VisualStudio. Not good. At the end of our ropes, Nahum and I sat and discussed with Consuelo, who gave us this grave proclamation: sample code was doing nothing for us. It was time to give up on the pretty, coders' solutions and go for the uglier functional code. But we thought we'd try one last thing, and so we wrote something very simple (plus a result callback method). Two event handlers with maybe 30 lines maximum between them, and you know what? It worked! Crazy, hacked-up thing, but it worked and it never even went near the drag and drop handlers that had become the bane of my lab hours. I was so happy! After, it was easy, smooth sailing - we got dropping L1modules into L2modules to work as well, and did a little styling on the parts whose gargantuan side had been rather irksome since we made the switch from mammoth Big Mac to the sleeker but smaller Uppy. Tomorrow, we write a method stub for the Permutations tab for Kathy and Consuelo's Eugene code, and start with backend.
11 - 12 Jul 2012
Started with backend. Couldn't find the old code I'd started, should've checked it in, so we started from a clean slate. We updated the Parts to hold registry data sheet information, to make all of that available for building later. We got text input search to work and filters look lke they're doing something, but they're a little questionable and returning very few results. So that bears looking into a bit. We also implemented one of the element menu controls, but are debating the viability of the remaining two and considering switching them to something else.
A minor UI update, but it changed the appearance a lot: wrote an algorithm to arrange ScatterViewItems in their containers, so they don't just show up randomly all over the place. It works alright, although we have some exceptions that are giving us trouble now. Also considering simply switching the svi to WrapPanels, which will expand to fit content and allow us to scroll when there are too many Parts to be shown at once. We need to make a dummy data sheet so the Eugene/Permutations team doesn't get a bunch of exceptions when they try to test.
13 - 14 Jul 2012
Here's something new but important: threading. Currently search is a slow and resource intensive process that causes the UI to hang while it operates. Apparently this is because the main UI thread is taking care of creating the search and trawling the parts registry. So the idea for that is to create a new, separate worker thread that does the search in the background while the main UI thread remains responsive to user input, and with a progress indicator so they know what's going on with the search. Easy enough in concept? Really tough in practice! I think I understand the code but when it comes to doing it, I can't! I'm not sure where the problem lies, since the separate thread won't throw exceptions on the main thread. But I do know it has something to do with how I'm getting it to make the search or with search itself - there's something incompatible there. I tested out the skeleton of it and it seemed to work fine, as long as its work was writing to the console. I don't know if that's a background-event though. Alternatively, creating a thread did work only it didn't work in the background and the UI still hung. We also did a quick and silent demo of the UI's current state for Orit. Next week we'll be presenting, so it's time to make slides and speeches.
Development 3 (July 15 - July 21)
16 - 17 Jul 2012
Met with Orit to show her the UI. Got threading to work, and now during searches a spinning circle of dots appears and the UI remains responsive. Search is still a little slow, and Kathy found some problems with searching for a part specifically by name. It doesn't work properly at all - sometimes it gives parts without data (which have no business moving past the filtering), sometimes it returns the desired part and then some. Will people who search for a part by ID always want only that part? If so, we can run a check for the "bba_" string in front. But if people want related parts and things to show up as well (less likely?), then it's alright as is. Still slow though, and sometimes it returns nothing or duplicates. After that, we started working on the data sheet that users can bring up using the element menu.
Also backend but of a slightly different flavor: working with Kathy to integrate with Eugene. Permutations were operating automatically using all the parts, which was very slow. But it worked! Had some problems with line breaks in some text files we were using to direct the process, and found that in some areas Eugene had dropped some crucial characters while writing for some reason. Very strange! But we went through and ctrl-fed the errors and fixed them. Anyway, we also switched permutations from "use all available parts" to "use selected parts" where selection was indicated using a highlight. We also applied this to level 1 modules in addition to parts, so eugene permutations should be well integrated now. The first half of today however was spent catching up on google power searching. Though I use google every day, I learned some new things about it. Hopefully I'll be a more effective searcher in the future.
18 Jul 2012
Demo for international guidance counselors: we showed Photo River, the Sifteos, and the MoClo Planner. And then it was Beach Day! Pretty event-filled and most of it on the road. We ran low on gas on the way there, going out of our minds wondering if we were going to make it to the gas station (we did), and finally got to the beach. About an hour later, the sky started turning dark, and a pretty violent storm chased us all home. Lots of thunder and lightning and napping in the back of the car - it was a long day. But it was nice to have a change of scenery and the water and sand were quite nice.
19 Jul 2012
Recorded a demo of MoClo planner, doing a walkthrough to show the interactions. Talked with Kathy and Nicole about changes to search/backend - how to get more information, what more info to get (esp. on CDS), and how to optimize it? Turns out search is churning down on all the source code five times over, one for each class. Worked with Madeleine and Veronica on integrating the primer designer; now you can spawn in draggable fusion sites and we've worked out an idea for the data structure of parts and their respective fusion sites. And most importantly TONIGHT THE DARK KNIGHT RISES.
20 Jul 2012
Presentation for CS/Math talks as part of our summer research program. Lots of technical difficulties (ironic given our lab is 75% CS and CS-related majors). It went alright, I think? Sometimes the audience was quiet, but we got some insightful questions. Back in the lab, I worked on Primer Designer more. Implemented dropping of fusion sites and automatic doubling (a fusion site for each end of two adjoining parts) and storing data for use in the next page.
User Studies 1 (July 22 - July 28)
23 - 26 Jul 2012
Lately I've been working with Veronica to fix the Primer Designer: we managed to get the primer tests integrated and their results displayed in the Primer Designer, but it took forever to figure out what was going wrong! With some judicious application of command line testing and breakpoints (at least 50% of the time spent on test backend integration must've been spent hitting F5 and F11 over and over), plus some of Nicole's genius, we managed to get the code working properly and returning useful values. It was very staisfying! I don't think things have been this difficult to overcome since struggling to create a sortable ListBox for the Level 2 modules, but we definitely got it done a lot faster this time.
After that, we spent some time on the UI. Fusion sites were only cloning once and became un-draggable afterwards, and they showed up scattered all over the place in the library instead of in neat rows like we wanted. Turns out it was just some silly stuff on my part, like using the wrong constructor. Easy enough to fix!
Had a mild heart attack when Consuelo forwarded the email Traci sent her about designing primers, though. I'd spent so much time on the UI and building the modules themselves that I'd mostly forgotten about the primers and how confusing I'd found the process. It's a good thing Kathy's on hand to help decipher these things, but all the same I think I should try to learn primers and PCR over again and hope it sticks. And once put into the code as just another string, it seems so much less intimidating to talk about prefixes, suffixes, reverse sequences, and complementary strands. They're all just another transformation or operation then, nothing huge.
Veronica worked on that for a while, and I tried to develop a backend for the automatic placement of fusion sites. I got it working after a few logic hiccups, nothing too serious, and afterwards I pitched in to the effort to print the correct primers, based on Traci's explanations. That went well enough, and the day wrapped up with implementing the user creation of fusion sites in the library and checks for duplicate fusion sites before primer generation.
I also put in some time on search to make it a bit faster, at least when parts are displayed under a type or filter, but I'm not sure if it's really optimized. The way it handles data may be unecessarily complex. And figuring out how to incorporate searching within all parts or just one type was a bit of a headache! I'd forgotten how tangled conditional trees could get. Am I overthinking this?
27 Jul 2012
Today was a pretty slow day. Uppy went off with Consuelo, Kathy, and Nahum to MIT for user studies. I somehow managed to break Nahum's optimized search code within a half hour of being shown it - oh, man! There wasn't any time to fix it and check in his version before they left, but I tried to fix it while they were on the road. In the end I didn't make it, so Veronica and I did a little busywork fixing bugs while getting a constant stream of input from the MIT users, relayed to us through Gchat. One very vague exception (along the lines of "Something bad happened") kept appearing, and we just couldn't figure out what it was! Instead, we called it a day, checked in, and went on home.
28 - 29 Jul 2012
The weekend was spent on checking off the laundry list of fixes found during the MIT user studies, in preparation for the BU studies. We got Nahum's search integrated and search in all/search in one type working. Some minor fixes included adjusting drag thresholds to be less sensitive, fixing a bug in which parts did not always appear in the next level, threading data sheets and primer testing, swipe-deleting for parts and Level 1 modules in the workspace palettes, and auto-generating un-draggable templates for building modules (which become active when full). The mysterious exception from before seems to be gone, too - I think I deleted the initialization invocation at some point, and replacing it seems to have fixed things.
User Studies 2 and Fin. (July 29 - August 02)
30 Jul 2012
Today we had a user study at BU. Our first group was Traci and a grad student from her lab, Sonya. The second was Shawn and Monique. They exposed a lot of flaws in the program, most importantly the ones that were caused by our misunderstanding of primer design as well as several other important, though not necessarily MoClo-related, bugs. They all offered great feedback, but Traci especially gave us a wealth of information on what they needed from the MoClo Planner and what areas of it needed work. A long day, with all the trouble you could ask for with moving things around and setting things up, but we got a lot out of it.
31 Jul - 01 Aug 2012
After all that, our first priority was to handle the aftermath of the user study at BU. There's so much that Traci gave us that it's hard to know where to start. Veronica and I overhauled the layout of the Primer Designer to show more of the data that Traci, Shawn, and Monique asked that we show, while Casey worked on getting things that the backend didn't provide for us in its current state. I picked up on one enormous glaring flaw that had somehow avoided detection until Traci and Sonya spotted it yesterday - that in the Primer Designer, some parts had the wrong sequence. It was the sequence from the dummy data sheet we made for testing purposes, and it was being used because unless users explicitly requested the data sheet, the parts never pulled their data from the registry. Pretty serious! One of the dangers of running in-house testing with dummy data all the time. That was pretty much taken care of, but understanding the logic behind the Primer Designer was a bit of a fight. A fight that still continues...
02 Aug 2012
Last day! Veronica made really cute thank-you cards (more like books actually) for Orit and Consuelo, and the lab went in to a separate room one at a time to sign them. We got coached on spieling for an hour or two before presentations, and then we went down. We were in a tight little corner and though we had organized shifts, the MoClo planner group seemed to be passing in and out of poster-manning pretty freely. Or maybe that was just me? There were a lot of interesting presentations, though, and I was glad to have a chance to read the posters and talk to the other presenters about their work for the summer. Once the presentation two hours were up, we headed out for a zombie lab photo and then to El Oriental de Cuba for some great food! I couldn't enjoy the food I'd ordered, though, because I'd already filled up on the empanadas and yuca and plantains we got as appetizers. It was loud, the food was delicious, and it was a great time. Couldn't ask for a better way to wrap up the last ten weeks.
03 Aug 2012
So not quite wrapped up. Went in to redo Primer Designer based on Traci's actual work and not our misconception of it. Had to draw several diagrams and pore over the spreadsheets and powerpoints she gave us to make sure I understood. It ended up being a lot more data than we originally had shown! I tried adding several buttons that would not only show primers for a selected part, but also those of the destination vectors it will be included in.