Posts about software engineering

Computer Code for NASA’s Apollo Guidance System

photo of Margaret Hamilton, NASA

Margaret Hamilton, NASA. Standing next to a printout of the source code she and her team wrote for the Apollo guidance computer that made the moon landings possible.

Meet Margaret Hamilton, the badass ’60s programmer who saved the moon landing

The software for the guidance computer was written by a team at the MIT Instrumentation Laboratory (now the Draper Laboratory), headed up by Margaret Hamilton.

The guidance computer used something known as “core rope memory“: wires were roped through metal cores in a particular way to store code in binary. “If the wire goes through the core, it represents a one,” Hamilton explained in the documentary Moon Machines. “And around the core it represents a zero.” The programs were woven together by hand in factories. And because the factory workers were mostly women, core rope memory became known by engineers as “LOL memory,” LOL standing for “little old lady.”

Hamilton is now 78 and runs Hamilton Technologies, the Cambridge, Massachusetts-based company she founded in 1986. She’s lived to see “software engineering” — a term she coined — grow from a relative backwater in computing into a prestigious profession.

In the early days, women were often assigned software tasks because software just wasn’t viewed as very important. “It’s not that managers of yore respected women more than they do now,” Rose Eveleth writes in a great piece on early women programmers for Smithsonian magazine. “They simply saw computer programming as an easy job. It was like typing or filing to them and the development of software was less important than the development of hardware. So women wrote software, programmed and even told their male colleagues how to make the hardware better.”

My aunt was one of those early software engineers. She wrote a chapter for a book, Programming the IBM 360, in the 1960s. My uncle was one of the first employees at NASA and rose to be one of the senior administrators there over his career.

It is great when society is able to capture the value individuals are capable of providing. We need to make sure we allow everyone opportunities to contribute. We do well in many ways but we also do lose from discrimination and also just making it uncomfortable for people to contribute in certain roles when we need not do so.

We have accomplished great things with software in the last 40 years. We could have accomplished more if we had done a better job of allowing women to contribute to the efforts in this field.

Related: The Eagle Has LandedBarbara Liskov wins Turing AwardGreat Self Portrait by Astronaut with Earth Reflected in His Visor

Using Drones to Deliver Medical Supplies in Roadless Areas

This is an awesome use of technology to tackle important problems. Engineers are great.

Humanitarian drones to deliver medical supplies to roadless areas

That idea soon became a start-up called Matternet – a network for transporting matter – which aims to help the one billion people who do not have year-round access to roads.

[Andreas] Raptopoulos said the new system would be used to leapfrog the building of infrastructure, in the same way mobile networks have overtaken fixed lines in poorly connected countries.

In sub-Saharan Africa, 85% of roads are inaccessible during the wet season, cutting off huge swaths of the population and hindering the transport of medical supplies, he said.

There are three parts to the system delivering medical goods: the UAVs themselves, landing stations where packages can be dropped off and transferred, and the software that ensures vehicles get securely from point to point. Because of their short battery life, networks of drones are needed to work together, shuttling between ground stations

Approximate costings from Matternet put the price of unmanned aerial vehicles at £6,000 each and ground stations at £3,000 each. A network of five ground stations and 10 UAVs, as well as setup and training, would cost a charity in the region of £90,000, according to Raptopoulos. An eight-propeller drone can carry 2kg and travel 10km in good weather. Batteries need to be replaced every 600 cycles.

They are hiring: software engineer and avionic engineering right now. They are Palo Alto, California.

Related: Appropriate Technology Health Care Solution Could Save 72,000 Lives a YearCellphone MicroscopePay as You Go Solar in IndiaWater and Electricity for All

Working as a Software Developer

For most of my career I have been focused on management improvement – helping organizations improve results. Technology plays a big role in that and along the way I found myself becoming a programer for a while; and then a software development program manager. This is a good post on working as a software developer:

reading code is a very important skill. Before a program can be modified, you need to understand what it does, and how it does it. Only then can new functionality be added so it fits in with the existing structure, and without breaking anything. Reading and understanding a program can be a major effort, and one sign of a well-designed program is that it is relatively straight-forward to modify it.

Write for people first, computer second. The code you write will be read many times in the future (by you, or another developer). The computer doesn’t care how the code is written, so make it as easy as possible to understand for the next person that has to read it. A corollary to this is: don’t be too clever. It’s better to be clear than to be clever.

When there is a compelling need to write for the computer first and people second make sure to document that code well. For example, some code that is extremely dense and complex and confusing but greatly enhances the efficiency of a critical area of code.

I recently wrote a book, Management Matters: Building Enterprise Capability. There are many great things about a career in software development. It certainly is also challenging and not for someone looking for the easiest career but I have seem a higher percentage of happy software developers than I have seen in any other discipline.

Related: How To Become A Software Engineer/ProgrammerThe Software Developer Labor MarketAvoiding Tragedy of the Commons for Software DevelopmentPreparing Computer Science Students for JobsHiring the Best Fit For Your Company in an Inefficient Job MarketWant to be a Computer Game Programmer?What Graduates Should Know About an IT Career

Largest Google Summer of Code Ever

Google summer of code allows college students to work on open source software projects during the summer and get a $5,000 stipend from Google.

Google Summer of Code 2012 by the Numbers

This 8th year of Google Summer of Code is the largest yet. More mentoring organizations received more applications from more students than ever before. We received a record number of applications – 6685 – from 4258 students from 98 countries to work with the 180 selected mentoring organizations.

We also accepted more students this year: 1,212 from 69 countries. This year India supplied the largest number of students, 227.

USA has 172 students, Germany 72, Russia 56 and China 45. This year set the highest percentage of women (self identified) yet. Guess what percentage. If you guessed 8.3% you are right.

Projects from the following organizations/software projects are included this year: Apache Software Foundation, Debian Project, Electronic Frontier Foundation/The Tor Project, GIMP,, The JRuby Project, OpenStreetMap, Python Software Foundation, R project for statistical computing, Twitter, Wikimedia Foundation.

Google provides a stipend of 5,000 USD to the student and $500 to the mentoring organization. That puts Google’s support at over $6,500,000 this year.

Related: Google Summer of Code is Accepting Applications (2011)Google Summer of Code 2009Google Summer of Code 2007

Votizen is Looking for Software Engineers

Link broken by pointy haired boss at Votizen, so I removed it. This phb behavior will make those of us who link to websites hesitant to trust anything Votizen posts will stay around 🙁

A nice presentation on why software engineers should work at Votizen.

Related: How To Become A Software Engineer/ProgrammerThe Software Developer Labor MarketWant to be a Computer Game Programmer?IT Talent Shortage, or Management Failure?

Google Summer of Code is Accepting Application Now

Google Summer of Code 2011 is accepting applications. This is a great initiative I have highlighted previously: Google Summer of Code 2009, Google Summer of Code 2008. The deadline for applications is April 8th.

Google Summer of Code is a program that offers student developers stipends to write code for various open source projects. The program has brought together over 4,500 students with over 300 open source projects, to create millions of lines of code. Participants (including students and mentors) have represented over 85 countries. The program, which kicked off in 2005, is now in its seventh year.

Participating organizations include: R Project for Statistical Computing, Debian Project, WordPress and the Marine Biological Laboratory. (9 of the 175 participating organizations list Ruby as part of their project :-).

For 2010 the effort had a budget of $5,000,000 and accepted 1026 students partnering with 150 Open Source organizations. This year they plan on 1,150 – 1,200 student positions. For 2007 they had 6,200 applications and 7,000 in 2008. I don’t see any data on applicants for 2009.

As for the application it should include the following: your project proposal, why you’d like to execute on this particular project, and the reason you’re the best individual to do so. Your proposal should also include details of your academic, industry, and/or open source development experience, and other details as you see fit. An explanation of your development methodology is a good idea, as well.

Related: Engineering Majors Hold 8 of Top 10 Highest Paid MajorsHow To Become A Software Engineer/Programmerposts from my management blog on software development

Google Prediction API

This looks very cool.

The Prediction API enables access to Google’s machine learning algorithms to analyze your historic data and predict likely future outcomes. Upload your data to Google Storage for Developers, then use the Prediction API to make real-time decisions in your applications. The Prediction API implements supervised learning algorithms as a RESTful web service to let you leverage patterns in your data, providing more relevant information to your users. Run your predictions on Google’s infrastructure and scale effortlessly as your data grows in size and complexity.

Accessible from many platforms: Google App Engine, Apps Script (Google Spreadsheets), web & desktop apps, and command line.

The Prediction API supports CSV formatted training data, up to 100M in size. Numeric or unstructured text can be sent as input features, and discrete categories (up to a few hundred different ones) can be provided as output labels.

Language identification
Customer sentiment analysis
Product recommendations & upsell opportunities
Document and email classification

Related: The Second 5,000 Days of the WebRobot Independently Applies the Scientific MethodControlled Experiments for Software SolutionsStatistical Learning as the Ultimate Agile Development Tool by Peter Norvig

IBM Fellow Grady Booch on the Value of Engineering?

In this webcast IBM Fellow Grady Booch discusses the critical role engineering plays in moving society forward. And he explores the history of science and engineering. This interesting webcast would be a good video to show children, or anyone, to bring out the desire to study engineering and encourage them to study so they can join the many engineers shaping our world and our future.

Related: What is an Engineer?Engineer Tried to Save His Sister and Invented a Breakthrough Medical DeviceThe Engineer That Made Your Cat a PhotographerEngineers Should Follow Their Hearts

Low-Cost Multi-touch Whiteboard Using Wii Remote

Using infrared (IR) light pens and the Wii Remote, it is possible to create very low-cost multi-point interactive whiteboards and multi-point tablet displays. Johnny Chung Lee, Carnegie Mellon University. Download the software. Great stuff, it is wonderful to see what people can create with technology.

Related: Very Cool Wearable Computing Gadget from MITBuild Your Own Tabletop Interactive Multi-touch ComputerWhiteboard Mechanical Simulation System (from MIT)How Do Wii Game Controllers Work?

Controlled Experiments for Software Solutions

by Justin Hunter

Jeff Fry linked to a great webcast in Controlled Experiments To Test For Bugs In Our Mental Models.

I firmly believe that applied statistics-based experiments are under-appreciated by businesses (and, for that matter, business schools). Few people who understand them are as articulate and concise as Kohavi. Admittedly, I could be accused of being biased as: (a) I am the son of a prominent applied statistician and (b) I am the founder of a software testing tools company that uses applied statistics-based methods and algorithms to make our tool work.

Summary of the webcast, on Practical Guide to Controlled Experiments on the Web: Listen to Your Customers not to the HiPPO – a presentation by Ron Kohavi with Microsoft Research.

1:00 Amazon: in 2000, Greg Linden wanted to add recommendations in shopping cards during the check out process. The “HiPPO” (meaning the Highest Paid Person’s Opinion) was against it on the grounds that it would be a bad idea; recommendations would confuse and/or distract people. Amazon, a company with a good culture of experimentation, decided to run a small experiment anyway, “just to get the data” – It was wildly successful and is in widespread use today at Amazon and other firms.

3:00 Dr. Footcare example: Including a coupon code above the total price to be paid had a dramatic impact on abandonment rates.

4:00 “Was this answer useful?” Dramatic differences occur when Y/N is replaced with 5 Stars and whether an empty text box is initially shown with either (or whether it is triggered only after a user clicks to give their initial response)

6:00 Sewing machines: experimenting with a sales promotion strategy led to extremely counter-intuitive pricing choice

7:00 “We are really, really bad at understanding what is going to work with customers…”
Continue reading

Productivity Gains in Software Engineering

Great post: Productivity gains in software engineering are powering innovation

According to data from the U.S. Bureau of Labor Statistics, today’s business industry workers are on average 30% more productive than their 1998 counterparts (productivity growth of roughly 2.6% per year).

The most dramatic gains, however, have occurred within software development.

Software engineers today are about 200-400% more productive than software engineers were 10 years ago because of open source software, better programming tools, common libraries, easier access to information, better education, and other factors. This means that one engineer today can do what 3-5 people did in 1999!

In my 15 years of software development, I’ve seen 5x-10x productivity gains in engineers. Which could mean that the productivity of a well-trained engineer doubles every five years. (note that this Law is much harder to prove than Moore’s Law – but potentially just as profound). That would mean that the productivity of an engineer is growing at roughly 14.9% per year! That’s fast … really fast … much faster than the 2.6% yearly gains the population as a whole is making.

What do you think? I definitely see a huge improvement of productivity in web application software development myself.

Related: 10x Productivity Difference in Software DevelopmentIs Productivity Growth BadThe Software Developer Labor MarketMyths of Manufacturing Productivity

  • Recent Comments:

    • Richard Hopp: Awesome blog post, love the biodiversity. Really excited after watching this video, since I...
    • Robbie Miller: How fantastic, not only a great subject to study, but to be able to travel the world too....
    • Jaspal Singh: Japan has an edge when it comes to humanoid robots. No doubt in few more year, you will find...
    • Marcus Williams: This is actually a marvelous piece of engineering. Kudos for sharing!
    • M Zeeshan Haider: You are so interesting! I don’t believe I’ve truly read through anything like...
    • Jaspal Singh: I fully agree to the post idea. The farming is a natural process and should be free from any...
    • Touseef Ahmed: What a best creative idea I think you blong to india.
    • courier: I like the trailer 🙂
  • Recent Trackbacks:

  • Links