Wednesday, July 31, 2019

To go fast, you have to share

The paper I'm going to tell you about today is a nice advance for aggregate computing, but also one that I feel quite ambivalent about. On the one hand, the new "share" operator that it introduces is a nice piece of work that doubles the speed of pretty much every aggregate program that we've implemented. On the other hand, it's fixing a problem that I find embarrassing and wish we'd found a way to deal with long ago.

The origin of this problem goes back a long, long way, all the way to my first serious publication on engineering distributed systems, Infrastructure for Engineered Emergence on Sensor/Actuator Networks, published more than a decade ago in 2006 back in the middle of grad school. This is the publication that started my whole line of work with Proto, spatial computing, and aggregate computing. Unfortunately, it contains a subtle but important flaw: we separated memory and communication.

In principle, this makes a lot of sense, and it's the way that nearly every networking system has been constructed: sending information to your neighbors is, after all, a different sort of thing than remembering a piece of state for yourself. But this choice ended up injecting a subtle delay: when a program receives shared information with "nbr", it has to remember the value with "rep" before it can share the information onward in its next "nbr" execution. Every step of propagating a calculation thus gets an extra round of delay, though it never really mattered much when we were operating more in theory and simulation and assuming fast iterations.

Handling sharing ("nbr") and memory ("rep") separately injects an extra round of delay while information "loops around" to where it can be shared.  Combining them into the single "share" operator eliminates that delay.

Now that we're doing more deployments on real hardware, however, there's often good reasons to keep executions slower in order to save network capacity. And that, finally, has motivated us to fix the delay by combining the "nbr" and "rep" operations into a single unified "share" operation that sends the value stored to one's neighbors.

Theoretically, it's elegant, since this one operation can actually implement both of the previous separate functionalities. Pragmatically, it's a lifesaver, since pretty much every program we run just started converging at least twice as fast, if not faster.  I also wonder how many other distributed algorithms built by other people have this subtle flaw hiding inside of them---though most algorithms probably won't just because they're implemented so much more at the "assembly language" level in how they handle interactions, and the humans implementing them will likely have spotted the optimization opportunity and taken it.

So, all's well that ends well, I guess. I just wish I'd thought of this a decade back.

Sunday, July 28, 2019

Communicating Structure and Function in Synthetic Biology Diagrams

Our new paper, "Communicating Structure and Function in Synthetic Biology Diagrams," has just been accepted in ACS Synthetic Biology, and is up online in their collection of just-accepted-manuscripts. This article provides a nice summary and introduction of how to draw genetic systems diagrams that are unambiguous and easy to understand.

Example diagram illustrating SBOL Visual, highlighting all the types of glyphs that are used in diagrams.
If you can't get at this article behind the ACS paywall, you can also find a nice slide show introducing SBOL Visual on our website or get the material in long form in the full SBOL Visual 2.1 specification.  If you can get at the paper, though, I definitely recommend it, as it has some nice examples showing how this can be used not just for circuits but for pretty much any synthetic biology project, including metabolic engineering and large-scale genome editing and insertions.  It's also got some newly accepted material (e.g., proteins no longer look like yeast "shmoos") that's available online but won't be bundled into a specification release until 2.2 (which is likely 6-12 months away).

I hope you'll find SBOL Visual useful and adopt these methods for all of your illustrations and tools. Now that we've got a good emerging graphical standard that's easy to use in most illustration tools, I see no reason for anyone to avoid embracing it.  And if you run into obstacles or have suggestions for how to improve the standard---get in touch! It's an open community process, and we've had lots of good stuff come in from people joining the community over time!

Sunday, July 21, 2019

Backyard Naturalists

When my older daughter decided she wanted "science" as the theme for her seventh birthday party, we all brainstormed up "experiment" contests for the kids to do. The kids had a blast doing things like geometry (constructions with gumdrops and toothpicks) and chemistry (who can get the biggest Mentos and soda explosion?), but my favorite was our biology experiment. 

We called it "backyard naturalists", and I'd gotten a little USB "microscope" (really a macro camera) so that the kids could go find interesting things in the garden and then look at their findings blown up huge on my computer screen.

There are wonderful things hiding in your yard, and even very little kids can become entranced with the intricacy and beauty of them, and all the new questions that can be revealed when you look at something up close and carefully.  Here are some of the best of the things that all the backyard naturalists brought in and crowded around the screen to see.  No animals were harmed in the making of these images: all were released safely into the backyard when their photo sessions were complete. Enjoy!

Petals on a clover flower
A bird's discarded feather
A small moth, gently contained within a plastic cup.

The interior of a flower, including little white shrimp-like mites (one is particularly visible in the lower center)

Japanese beetle, exploring possible food sources offered to it.

Interior of a flower looking beautifully spiky and crystalline.

Wolf spider, found scuttling along and hunting.









Friday, July 19, 2019

Patrick Winston and the Power of Imperfection


I learned today from colleagues that one of my mentors had passed away. Patrick Winston was one of my thesis advisors in graduate school, but also one of the people who first inspired me to seek to go there (along with Gerry Sussman). He was also my boss as a TA, a colleague and collaborator, and also someone that I think I may have disappointed with my choices.

At first, I didn't quite engage, but a colleague and friend asked me how I was doing, and I found myself writing back much more than I had thought to, as I thought more and more about how big an influence Patrick was on my whole life, as well as my career. I learned so much from him, both his good points and his flaws. And more than anything else, I think I learned about the courage to let go of perfectionism and worry less about being right than just being better than I was before.

Patrick, in my experience, was not particularly a natural leader or a charismatic speaker or a gifted teacher. And yet he excelled at all three, at leadership and speaking and teaching, not by dint of some amazing gift but by the fact that he deeply cared to do all of these things well. To do this, Patrick collected heuristics from observing people he admired, learning not their brilliance but their ways of avoiding disaster. And amazingly, it turns out that you can go a lot farther and get a lot more done just by carefully using a little checklist of heuristics to avoid pitfalls than you can get done by being a brilliant egotist with a fatal, unacknowledged flaw.  Patrick was one of the most humble people that I knew, with a quiet way of speaking and a careful attention to the big picture and just plain being effective and consistent at whatever he judged to be the most important things to do.

Patrick was generous with his knowledge too. Above all else, I knew Patrick as a teacher, a teacher in many different ways, who would smuggle extra lessons into all his actions, just because he thought his listeners might appreciate knowing these things too. I learned from him for years, and I'm still using many of the most important lessons that he taught me.

Just last week, I was talking about Patrick to a younger colleague, introducing yet another person to his wonderful heuristics on how to give a talk. I'm thinking about that as I write this, and how grateful I've been for all those lessons, and the trust and help he gave me when I was his student, even when I was on my way to make another set of interesting mistakes. But I'm also thinking about how I took his presence for granted and hadn't stopped by to visit him at MIT for years, which makes me sad.


He was not a Great Man, in the sense that I no longer believe in Greatness (partly due to the lessons I learned from him). But he was a person who achieved greatness in many different ways and, I believe, above all else in the ways he invested in teaching so many of us in so many different ways.

I am deeply grateful for the gifts that I received from him, and will continue to do my best to pass them on.

Wednesday, July 03, 2019

Introducing the SBOL Industrial Consortium

We're officially announcing the launch of the SBOL Industrial Consortium today, which makes me very happy.

This is something that's been a long time coming: there's a number of us at companies that are using, invested in, or interested in SBOL. Pretty much every synthetic biology company grapples with the problems that SBOL aims to solve, and either we have to roll our own or else we need to make sure that something is out there that's close enough to our needs to make it work. Or, as I like to put it: if SBOL didn't exist, we'd have to invent something very much like it anyway.

But most of the development to date has been done by universities, and there there are things that are just plain hard to do on a model of grant-based funding of development by graduate students. To bring things to the next level, and ensure a stable base of shared infrastructure, we need industry involvement, and the goal of the SBOL Industrial Consortium is to organize and coordinate the interested industrial players in a free and open context, where all of us can benefit both in industry and in academia and in government.

The SBOL Industrial Consortium first really nucleated in hallway discussions at the SEED Synthetic Biology conference last year. From then until now was a few months of discussions to figure out who was interested and the principles for organization, then about six months getting the legal framework set up, and then a couple of months getting the founding members sorted out, arranging finances, and bootstrapping up our organization.

SBOL Industrial Consortium logo and founding members

We've got a nice strong founding team, and we've got some nice press in SynBioBeta and  PLOS to help announce our launch. Next step: making sure that we're able to really work together and help each other out in a way that makes it worth it for us all. If it works, I expect that the consortium will grow naturally and organically from here.

One way or another though: as all of us companies working in synthetic biology grow and need to exchange more information about what we're doing in synthetic biology in our business transactions, something like the SBOL Industrial Consortium needs to exist. I'm happy to be helping try to keep that in the open and non-proprietary space, and have confidence that we've a good shot at being able to make something useful work.