Category Archives: Science

The Downsides of Embedded Software

As a software engineer, I should welcome the increasing penetration of software into more and more everyday devices.  But as a consumer, it’s easy to spot the obvious downsides.

Physical and mechanical connections don’t crash or have bugs.  They usually work well and when they do fail, you can sometimes open up the device to figure out what’s going on (wire came unsoldered, gear broke, etc.).

Embedded software, when written well, is great.  There are a lot of software focused companies that write good software.  The problem is that most hardware companies now have embedded software.  And these companies are not software companies, and they tend to write buggy software, or software with poor user experiences.

These are just a couple examples from our daily life:

  • Our clock radio made by iLuv sometimes crashes when you drop an iPhone into the dock.  This requires “rebooting” the clock radio by unplugging and plugging it back in.  In it’s crashed state, it still shows the time, just frozen at the time of crash.  It also inexplicably continues to play while crashed – the UI is just frozen.  Solution: debug your software.
  • Our Toyota Prius radio system has a physical volume knob – but it’s fly-by-wire.  When you start the car, the radio plays at the volume it was last set at (just like an old school radio).  The problem is, this might have been pretty loud, and twirling the knob down has no effect until the audio system has ‘booted up’, which takes several seconds.  This means you get to listen to a very loud radio while looking at the Toyota logo on your audio screen.  Two solutions: (a) don’t start the actual audio until the user has control over the volume, and (b) allow the user to set a maximum volume at startup, so they won’t get blasted when starting the car.
  • The Prius also has a fly-by-wire shift knob.  More than once, I’ve put it in reverse before the electronics are fully booted.  But unlike a normal car, the Prius does not actually get engaged into any gear unless you are fully booted up.  I do like the Prius, but I still don’t like that behavior.  Our other car is a manual transmission, and there is something deeply satisfying about feeling the mechanical connection between the gears and knowing the whole thing can be done without any electronics.  I have no idea how you’d push a Prius off the road if the electronics system was down. Can you even put it in neutral without booting up?

Let’s just hope that hardware companies bet better at writing software.  A crashed clock radio is one problem, but once software controls items that our lives depend on, you don’t want a crash to lead to a crash.


My experience at the Google Summer of Code Mentor Summit

I attended the Google Summer of Code 2010 Mentor Summit this last weekend in Mountain View, and it was really fascinating and inspiring.  It was my first mentor summit, representing the Biodiversity Informatics Group of the Marine Biological Lab in Woods Hole, MA with my colleague Dima Mozzherin, and it was also my first ‘unconference’.  For those that haven’t been to an unconference, it is basically a meeting where the talks are not scheduled in advanced, but are instead determined by the attendees themselves.  The entire conference schedule is determined in one frenzied hour during the opening session, and it works remarkably well (at least for a meeting that had less than 300 people… a multi-thousand person conference might not work as well).  The mechanism for setting the schedule was decidedly low-tech: sharpies, sticky notes and dot stickers to vote for a session, along with a big board showing available rooms, so sessions can be load balanced.  To me this demonstrates the great thing about engineers: use the best tech for the job, even if it is paper and pen.  Anyway, the end result is a list of sessions that by definition attendees are interested in, all nicely balanced between rooms.

The quality of the meeting was really outstanding – it was like attending a top-notch IT conference, with a variety of expertise represented, ranging from software engineers, to software managers, and experts on IP and licensing.  The variety of sessions was equally wide and allowed us to explore a series of topics, including open-source social networking software, IPR issues, advanced trolling (!), and sessions on the Google Summer of Code program itself.  Some talks were obviously prepared in advanced, and some were more discussion like.  In each case, folks used the excellent Etherpad software to take real-time collaborative notes (often using a site called that runs the open source code), which are all available on the conference wiki.

I held a session called “Liberate Your Data!” where we talked about ideas and strategies for bringing together data collected in diverse projects and formats into a single location (basically the goal of the Encyclopedia of Life).  We discussed strategies including creating plug-ins for Excel, using semantic markup technologies and the challenges of creating tools that work across domains, when the data ontologies and formats often vary widely between disciplines.

The meeting was held on the Google campus, which was quite nice.  I really like the idea of thinking of a workplace as a ‘campus’ instead of an office complex, since this promotes the notion of learning as well as doing.  Google fed us the whole weekend, and the food was pretty damn tasty.

One of the things I noted was that, like many IT and software get togethers, it was fairly male dominated.  I am not sure how to improve this situation.  The same imbalance also exists in various science fields, such as physics, while is quite equally balanced in others, such as biology.  It would be interesting to study what the root causes are.

Another thing I noted is the fact that engineers sometimes tend to be focused on elegant engineering or technical solutions to problems, while end-users are almost always focused on their experience with a system.  Most users don’t care if the code running their cell phone or computer is open source or closed source, they just want it to work all of the time and be easy to use.  For me, the iPhone is the prime example.  Not only is the OS not open-source, you can’t even (easily) install any application you want without it being approved by a single company.  It’s a very closed platform, and yet it is extremely popular (even many folks at the conference had one).  And the reason of course is that it is a great user experience.  I think it is important for any software developer to think about their end user and the user experience in general if the goal is to have a project that is widely used.

Anyway, the summit was not only a great way to meet new people, but was also a great way to learn about other open source projects, and Google should be commended for investing in programs such as this.  I’m looking forward to future years already.

Scientific Literacy and Why It Is Critical

Bertrand Russel, British philosopher, once said “The trouble with the world is that the stupid are cocksure and the intelligent are full of doubt.”  This quote neatly summarizes a cognitive bias known as the “Dunning-Kruger effect“.  The effect, as described by Justin Kruger and David Dunning in the Journal of Personality and Social Psychology in 1999, is one in which “people reach erroneous conclusions and make unfortunate choices but their incompetence robs them of the metacognitive ability to realize it”.  In other words, they are too dumb to realize they are dumb.  Fortunately, there is a way out of the worst results of this effect, and it involves promoting scientific literacy in schools and in the media.

I am currently working on education and outreach efforts for the NASA Astrobiology Institute.  In these efforts, we seek to better inform the public as to how their tax dollars invested in NASA are used.  Not only do we need to train future scientists and engineers for NASA, we also need to train the public to understand, appreciate and fund their work.  We also need to produce members of society for whom scientific literacy and methodology is the expected norm.  We need to remove the oft-perceived barrier between scientists and the public, and produce better results in large public policy debates.

These policy debates, such as health care reform, financial regulation, and climate change policy, are often dominated by emotion, opinion, and biased lobbying by groups with short-term economic issues in mind.  Facts, however, do not have political agendas.  There is only set of facts, and those are backed by evidence and devoid of emotion.  The scientific process of discovery is based on finding and refining these facts, even when they contradict our own beliefs, preconceptions, or previous scientific findings.

If our goals include the long term custody of the world, then we need to move public discussions towards evidence-based fact as much as possible.  We need the public to understand, appreciate, and demand that policy decisions in diverse areas like health delivery, energy production, and more be made on the basis of evidence.  Science literacy and reducing the gap between scientists and the public is one mechanism for achieving this goal.

As an example of preconceptions, the unusually heavy snowstorms in the eastern US this past winter demonstrated the lack of understanding of basic scientific principles within the general media, a significant fraction of the general public, as well as many elected officials.  There were numerous discussion of how the snowfall was evidence that “global warming” was not occurring.  Similarly, heat waves in the summer sometimes produce the opposite reactions from the media, overshadowing more compelling evidence for climate change. This creates a confusing message that undermines confidence in carefully researched insights.  Absent from many of these discussions is the fact that local events (either in time or geography) are highly variable.  Our understanding must see these short term events in the context of the general trends as it is the study of the long term trends that increase knowledge of the system. While the eastern US was receiving cold weather in January and February, a simple calculation shows that it represents about 0.1% of the surface of the Earth and is not a representative indicator of the Earth’s climate.  Such care is rarely evident in the popular media, and this indicates the severity of the problem of scientific illiteracy.

Another common misconception is that when a previously publicized scientific result is updated, changed or overturned, this indicates scientists have been wrong before, and therefore shouldn’t be trusted at all.  What this view fails to appreciate is one of the cornerstones of scientific advancement – every result is subject to change based on new evidence, new understanding, and new experimental results.  What the public sees as a case of scientists being wrong or changing their minds is often normal advancement in a profession which is highly critical of itself and subjects any claims to scrutiny.  If only politicians would subject themselves to the same self-critical reviews as scientists, the world might be a much better place.

There will certainly be debates and issues for which emotion, faith and other inherently unquantifiable areas are important.  But for most policy issues and most professions, fact, evidence, and logic are a much more productive way to solve problems.  Now we need to take message to our schools and to the media so that we get better results from the next generation of leaders than we are getting from the current generation.