Posts about programming

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

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

Tool to Make Creating Android Applications Easy

I am skeptical this will be really useful but it is a good thing to try. I can believe we could get good tools to allow non-programmer to create simple applications – but I think it will take years to get decent tools. Try App Inventor for Android. I might have to try it myself.

I would image sure most of the applications created will be horrible. It certainly is different from Apples attempts to restrict developers of iPhone apps as much as possible. The move certainly seems to open the development of simple applications beyond those that “are thrilled when a computer reminds them they’re missing a bracket or semicolon” 🙂

Related: Arduino: Open Source Programmable Hardware4 and 8 Year Old Sisters Impress with SqueakApp Inventor for AndroidDroid Incredible

4 and 8 Year Old Sisters Impress with Squeak

Young programmers win big

XtremeApps is a competition based in Singapore where competitors program computer applications from scratch.

Armed with just the basics in the Squeak programming language, as well as encouragement – but no help – from mum and dad, the Chan sisters came up with an application called Health Fairies.

It is an interactive, educational story with an anti-smoking message: The main protaganist is a beautiful young girl who loses her youth, and good looks, because she puffs away like there’s no tomorrow.

The sisters took the bulk of the June holidays to complete their entry. They had to come up with the storyline, draw the characters, and write programs that animated the characters, among other things.

Their effort paid off: Health Fairies landed a merit award in the junior category of the contest, beating 68 other contestants, mostly 11 and 12 year olds.

Related: Programming with PicturesProgrammerssoftware development posts on our management blogGlobal Cancer Deaths to Double by 2030

How To Become A Software Engineer/Programmer

How To Become A Software Engineer/Programmer

my advice for budding software engineers is this.

1) Know that you love software before you commit to it. You’ll know when you take your first pseudocode class: a clear division forms between the people who get it and the people who don’t. If you’re in the “don’t” section, choose another career.

2) If you don’t like teaching yourself new things, the skills you learn today will be irrelevant in less than a decade. Accept the commitment to learn throughout your career as a coder, or accept your eventual fate as a has-been.

3) College degrees matter less than hands-on knowledge and time spent at the keyboard. I outpaced my entire class in college because I bought my own programming books that deviated from the coursework, and as a result I learned things they were not teaching in school.

5) Early on, decide if you want to focus on application development or software engineering. Application development deals with making user interfaces, interfacing different systems together, solving business process problems, and exposing applications to the outside world (i.e. web services and other remoting techniques). Software engineering deals with creation of utilities and processes that support information processing, tends to be more math intensive, requires a lower-level understanding of the trade, and rarely deals with the systems that expose the software to an end user. There are core differences in these two disciplines and 100 shades in between, so figure out what you like.

Good blog post; those thinking of a career in software development should read the whole thing. By the way if you are a programmer already that loves it and looking for a new position: my work is hiring a Ruby on Rails developer.

Related: Joy in Work, Software DevelopmentThe Software Developer Labor MarketA Career in Computer ProgrammingThe Manager FAQIT Talent Shortage, or Management Failure?

The Million Dollar Programming Prize

The Million Dollar Programming Prize

One of the main areas of collaborative filtering we exploited is the nearest-neighbor approach. A movie’s “neighbors” in this context are other movies that tend to be scored most similarly when rated by the same viewer. For example, consider Saving Private Ryan (1998), a war movie directed by Steven Spielberg and starring Tom Hanks. Its neighbors may include other war movies, movies directed by Spielberg, or movies starring Tom Hanks. To predict a particular viewer’s rating, we would look for the nearest neighbors to Saving Private Ryan that the viewer had already seen and rated. For some viewers, it may be easy to find a full allotment of close neighbors; for many others, we may discover only a handful of neighboring movies.

A second area of collaborative-filtering research we pursued involves what are known as latent-factor models. These score both a given movie and a given viewer according to a set of factors, themselves inferred from patterns in the ratings given to all the movies by all the viewers [see illustration, “The Latent-Factor Approach“]. Factors for movies may measure comedy versus drama, action versus romance, and orientation to children versus orientation to adults. Because the factors are determined automatically by algorithms, they may correspond to hard-to-describe concepts such as quirkiness, or they may not be interpretable by humans at all.

The model may use 20 to 40 such factors to locate each movie and viewer in a multidimensional space. It then predicts a viewer’s rating of a movie according to the movie’s score on the dimensions that person cares about most. We can put these judgments in quantitative terms by taking the dot (or scalar) product of the locations of the viewer and the movie.

We found that most nearest-neighbor techniques work best on 50 or fewer neighbors, which means these methods can’t exploit all the information a viewer’s ratings may contain. Latent-factor models have the opposite weakness: They are bad at detecting strong associations among a few closely related films, such as The Lord of the Rings trilogy (2001–2003).

Because these two methods are complementary, we combined them, using many versions of each in what machine-learning experts call an ensemble approach. This allowed us to build systems that were simple and therefore easy to code and fast to run.

Interesting article. See some other posts on challenge prizes.

Read: posts on programingProblems Programming MathProgrammers (comic)

Ruby on Rails Job Opportunity in DC

I, John Hunter, work for the American Society for Engineering Education as an Information Technology Program Manager. My work on this blog is not associated with ASEE and the opinions I express are mine and not those of ASEE. That said, we are looking for a Ruby on Rails developer at ASEE, in Washington DC.

class Employee < ActiveRecord::Base acts_as_programmer has_many :talents has_and_belongs_to_many :computer_languages after_create :schedule_interview validates_inclusion_of :salary, :in => 60000..80000,
:message => “should be between $60k and $80k a year”
validates_inclusion_of :years_of_experience,
:in => 2..7,
:message => “should be between 2 and 7 years”

validates_presence_of :resume
validates_interest_in :ruby_on_rails
validates_interest_in :agile software development

REQUIRED_LANGUAGES = [“Ruby”,”Perl”,”Python”,”JavaScript”,”Lisp”]

def validate
errors.add_to_base(“You must know one of the languages”) unless
({|x|} & REQUIRED_LANGUAGES).size > 0

def schedule_interview
self.interviewer = Interviewer.create(
:name => “Keith Mounts”,
:url => ““,

def hire
vacation_days = 15
telecommuting_days_per_week = 0..2
office_location = “dupont circle metro stop, washington, dc”
environment = “friendly”
company = “american society for engineering education”


class ApplyController < ApplicationController def index @employee = end def apply @employee = if @employee.update_attributes(params[:employee]) flash[:notice] = "Thanks for applying! I'll get back to you very soon!" redirect_to :action => “thanks”
render :action => “index”


Modified from job announcement created by Sean Stickle when he was at ASEE. Related: Ruby on Rails Job Opportunity

Keeping Out Technology Workers is not a Good Economic Strategy

The barriers between countries, related to jobs, are decreasing. Jobs are more international today than 20 years ago and that trend will continue. People are going to move to different countries to do jobs (especially in science, engineering and advanced technology). The USA has a good market on those jobs (for many reasons). But there is nothing that requires those jobs to be in the USA.

The biggest impact of the USA turning away great scientists and engineers will be that they go to work outside the USA and increase the speed at which the USA loses its place as the leading location for science, engineering and technology work. This is no longer the 1960’s. Back then those turned away by the USA had trouble finding work elsewhere that could compete with the work done in the USA. If the USA wants to isolate ourselves (with 5% of the population) from a fairly open global science and engineering job market, other countries will step in (they already are trying, realizing what a huge economic benefit doing so provides).

Those other countries will be able to put together great centers of science and engineering innovation. Those areas will create great companies that create great jobs. I can understand wanting this to be 1960, but wanting it doesn’t make it happen.

You could go even further and shut off science and engineering students access to USA universities (which are the best in the world). That would put a crimp in plans for a very short while. Soon many professors would move to foreign schools. The foreign schools would need those professors, and offer a great deal of pay. And those professors would need jobs as their schools laid off professors as students disappeared. Granted the best schools and best professors could stay in the USA, but plenty of very good ones would leave.

I just don’t think the idea of closing off the companies in the USA from using foreign workers will work. We are lucky now that, for several reasons, it is still easiest to move people from Germany, India, Korea, Mexico and Brazil all to the USA to work on advanced technology projects. The advantage today however, is much much smaller than it was 30 years ago. Today just moving all those people to some other location, say Singapore, England, Canada or China will work pretty well (and 5 years from now will work much better in whatever locations start to emerge as the leading alternative sites). Making the alternative of setting up centers of excellence outside the USA more appealing is not a good strategy for those in the USA wanting science, engineering and computer programming jobs. We should instead do what we can to encourage more companies in the USA that are centralizing technology excellence in the USA.

Comment on Reddit discussion.

Related: Science and Engineering in Global EconomicsGlobal technology job economyCountries Should Encourage Immigration of Technology WorkersThe Software Developer Labor MarketWhat Graduates Should Know About an IT CareerRelative Engineering Economic PositionsChina’s Technology Savvy LeadershipEducation, Entrepreneurship and ImmigrationThe Future is EngineeringGlobal Technology Leadership

The Software Developer Labor Market

With the economy today you don’t hear much of a desperate need for programmers. But Dr. Norman Matloff, Department of Computer Science, University of California at Davis, testimony to Congress (Presented April 21, 1998; updated December 9, 2002) on Debunking the Myth of a Desperate Software Labor Shortage is full of lots of interesting information (for current and past job markets).

The industry says that it will need H-1B visas temporarily, until more programmers can be trained. Is this true?

No, it’s false and dishonest… The industry has been using this “temporary need” stall tactic for years, ever since the H-1B law was enacted in 1990. In the early- and mid-1990s, for example, the industry kept saying that H-1Bs wouldn’t be needed after the laid-off defense programmers and engineers were retrained, but never carried out its promise. It hired those laid off in low-level jobs such as technician (which is all the retraining programs prepared them for), and hired H-1Bs for the programming and engineering work.

Unlike Dr. Matloff, and many readers of this blog, I am actually not a big opponent of H-1B visas. I believe we benefit more by allowing tech savy workers to work in the USA than we lose. I understand people fear jobs are being taken away, but I don’t believe it. I believe one of the reasons we maintain such a strong programming position is due to encouraging people to come to the USA to program.

I also do believe, there are abuses, under the current law, of companies playing games to say no-one can be found in the USA with the proper skills. And I believe those apposed to H-1B visas make reasonable arguments and this testimony is a good presentation of those arguments.

This obsession with specific skills is unwarranted. What counts is general programming talent – hiring smart people – not experience with specific software technologies.

Very true.

What developers should do.

Suppose you are currently using programming language X, but you see that X is beginning to go out of fashion, and a new language (or OS or platform, etc.) Y is just beginning to come on the scene. The term “just beginning” is crucial here; it means that Y is so new that there almost no one has work experience in it yet. At that point you should ask your current employer to assign you to a project which uses Y, and let you learn Y on the job. If your employer is not willing to do this, or does not have a project using Y, then find another employer who uses both X and Y, and thus who will be willing to hire you on the basis of your experience with X alone, since very few people have experience with Y yet.

Good advice.

Related: IT Talent Shortage, or Management Failure?Preparing Computer Science Students for JobsEngineering Graduates Again in Great Shape (May 2008)What Graduates Should Know About an IT Careerposts related to computer programming
Continue reading

Google Summer of Code 2009

Google Summer of Code is a global program that offers student developers stipends to write code for various open source software projects. Google funds the program with $4,500 for each student (and pays the mentor organization $500). Google works with several open source, free software, and technology-related groups to identify and fund projects over a three month period.

Since its inception in 2005, the program has provided opportunities for nearly 2500 students, from nearly 100 countries. Through Google Summer of Code, accepted student applicants are paired with a mentor or mentors from the participating projects, thus gaining exposure to real-world software development scenarios and the opportunity for employment in areas related to their academic pursuits. In turn, the participating projects are able to more easily identify and bring in new developers. Best of all, more source code is created and released for the use and benefit of all.

Google funded approximately 400 student projects in 2005, 600 in 2006, 900 in 2007 and 1125 in 2008 and will be funding approximately 1,000 student projects in 2009.

Applying for the program is only allowed from March 23rd through April 3rd. Still a short period of time but in previous years they have only taken them for one week. Organizations hosting students include: Creative Commons, MySQL, Debian, The Electronic Frontier Foundation/The Tor Project,, Grameen Foundation USA, National Center for Supercomputing Applications, Ruby on Rails, Wikimedia Foundation and WordPress. See the full list of organizations and link to descriptions of the projects each organization offers.

See the internship directory (another ltd. site) for more opportunities including those in science and engineering.

Related: Google Summer of Code Projects 2008posts on fellowships and scholarshipsLarry Page on How to Change the Worldcomic on programmersInterview of Steve Wozniak

Data Analysts Captivated by R’s Power

Data Analysts Captivated by R’s Power

data mining has entered a golden age, whether being used to set ad prices, find new drugs more quickly or fine-tune financial models. Companies as diverse as Google, Pfizer, Merck, Bank of America, the InterContinental Hotels Group and Shell use it.

Close to 1,600 different packages reside on just one of the many Web sites devoted to R, and the number of packages has grown exponentially. One package, called BiodiversityR, offers a graphical interface aimed at making calculations of environmental trends easier.

Another package, called Emu, analyzes speech patterns, while GenABEL is used to study the human genome. The financial services community has demonstrated a particular affinity for R; dozens of packages exist for derivatives analysis alone. “The great beauty of R is that you can modify it to do all sorts of things,” said Hal Varian, chief economist at Google. “And you have a lot of prepackaged stuff that’s already available, so you’re standing on the shoulders of giants.”

R first appeared in 1996, when the statistics professors Ross Ihaka and Robert Gentleman of the University of Auckland in New Zealand released the code as a free software package. According to them, the notion of devising something like R sprang up during a hallway conversation. They both wanted technology better suited for their statistics students, who needed to analyze data and produce graphical models of the information. Most comparable software had been designed by computer scientists and proved hard to use.

R is another example of great, free, open source software. See R packages for Statistics for Experimenters.

via: R in the news

Related: Mistakes in Experimental Design and InterpretationData Based Decision Making at GoogleFreeware Math ProgramsHow Large Quantities of Information Change Everything