Fred Brooks talk: “A Personal History of Computers”

I was lucky to see Fred Brooks give a fantastic talk called “A Personal History of Computers.” Dr. Brooks is legendary computer scientist and author of “The Mythical Man-Month,” which, if you’re in the computer industry in any capacity, you should read, think about, and then re-read at least once a year for the rest of your career. (His newer book, “The Design of Design,” looks promising as well, though I haven’t read it yet.)

Dr. Brooks is 84, and his highly entertaining and personal talk walked us through his history with computers, which is basically most of the history of computers. Here’s his abstract:

I fell in love with computers at age 13, in 1944 when Aiken (architect) and IBM (engineers) unveiled the Harvard Mark I, the first American automatic computer. A half-generation behind the pioneers, I have known many of them. So this abbreviated history is personal in two senses: it is primarily about the people rather than the technology, and it disproportionally emphasizes the parts I know personally.

And here’s a video of the same talk that he gave elsewhere: http://www.heidelberg-laureate-forum.org/blog/video/lecture-tuesday-august-25-2015-fred-brooks/

I took two things away from the talk:

  1. Nothing ever changes.
  2. Everything changes all the time.

Nothing ever changes. Brooks discussed two works that he called the most important computer papers ever:

  1. “Preliminary discussion of the logical design of an electronic computing instrument,” a paper by Arthur Burks, Herman Goldstine, and John von Neumann.
  2. “As We May Think,” an essay by Vannevar Bush.

The von Neumann paper describes, in detail, how modern computers work. Bush’s essay describes, in detail, how modern networks and the internet works. They were written in 1946 and 1945, respectively. They were both so fundamentally brilliant, visionary, and practical that we haven’t been able to (or had to? or wanted to?) improve much on them in the last 70 years. Nothing ever changes.

And yet, everything changes all the time. Brooks spend his early career at IBM, which designed mainframe computers. Mainframes were physically huge and economically expensive, and were bought (or leased) and run by large companies, universities, and governments. At first mainframes were the only type of computer around. If you were a scientist or researcher who wanted to use The Computer (your company or university had at most One Computer, if you were lucky!), you had to use it according to how the high priests who controlled The Computer dictated. You had to share it with every other Department in your organization.

Minicomputers changed the sociology of the One Computer when they were introduced in the mid-1960’s. Minicomputers were smaller and cheaper than mainframes, and could be bought and run by mere Departments. Minicomputers changed the social and organizational dynamics of who could use The Computer; now each department or group could have their own computer to use as they liked! This quote in John Markoff’s new book “Machines of Loving Grace” sums it up well:

Computing was now sneaking out from behind the carefully maintained glass wall of the corporate data center and showing up in the corporate office supplies budget.

The microcomputer’s introduction in the 1980’s changed the sociology of computing again, this time making it possible for a person to have their own computer! “Personal computer” is a throwaway phrase in 2015, but when the personal computer was introduced it caused a massive change in how computing, and therefore work, was done.

Brooks said that now the sociology of computing is changing again as we have smart phones, watches, and other increasingly ubiquitous computing devices available.

And yet, nothing ever changes. At each transition point, Brooks said the companies that were successful in the current popular technology were too “fat, dumb, and happy” to reinvent their products or businesses to be successful in the new technology. They were “culturally not geared for” making the transition.

He didn’t use the words “disruption” or “disruptive innovation,” but what Brooks described was popularized as “The Innovators Dilemma” by Clayton Christensen in his book of the same name. Apparently each disruptive new era in the history of the computer came about in the same way as the previous ones.

It was great hearing about the history of computers from someone who had personally been there for most of it, and who knew many of the key players personally. I highly recommend watching the video (linked above) and reading “The Mythical Man Month,” as well as the von Neumann and Bush papers.

Business idea: Amazon Cloud Printing

Here’s a free business idea for Amazon: AMAZON CLOUD PRINTING.

It solves the problem of people who need a high quality printout without having to buy an expensive commercial printer or drive to a copy store, like an animal.

Here’s how it works:

  1. You request AMAZON CLOUD PRINTING online.
  2. An AMAZON DRONE flies an AMAZON LARGE COMMERCIAL PRINTER to your location.
    • Please open the window first, and then demolish the wall. It’s a big printer. You’ll have about 10 minutes to do this after submitting your AMAZON CLOUD PRINTING request. AMAZON CLOUD PRINTING is not responsible for damage or injury.
  3. The AMAZON DRONE waits for you to plug in the AMAZON LARGE COMMERCIAL PRINTER and load it with AMAZON COMMERCIAL PRINTER PAPER (not included).
  4. The AMAZON DRONE waits for you to unplug AMAZON ECHO, if present. AMAZON DRONE requires all of your attention. AMAZON DRONE is all you need.
  5. The AMAZON DRONE takes the file to print from you on an AMAZON USB THUMB DRIVE.
  6. The AMAZON DRONE prints the file on the AMAZON LARGE COMMERCIAL PRINTER.
  7. The AMAZON DRONE hands you the printout.
  8. You pay the AMAZON DRONE.
    • Cash only. No change given.
    • The AMAZON DRONE will count the money in front of you.
  9. The AMAZON DRONE then enters its WAIT-FOR-TIPPING mode.
    • It remains in this mode until you tip it, or until the INCENSED-DRONE-TIMEOUT is reached.
  10. Depending on the WAIT-FOR-TIPPING mode outcome, the AMAZON DRONE leaves with the AMAZON LARGE COMMERCIAL PRINTER using the original entry point, or a new one.

You’re welcome.

Empathy Driven Development slides

Here are the slides from my Embedded Systems Conference 2015 talk on Empathy Driven Development:

Empathy Driven Development slides (pdf)

The slides include a rough transcript of what I said.

I had a great time giving the talk and discussing it with others at ESC.  I’ve given this talk a number of times for software engineers, electrical engineers, mechanical engineers, and a few mixed groups as well, and I’ve learned that it applies to almost any engineering group.

I’ve had a few requests to give the talk for people’s teams & companies and to explore what it might look like in your particular environment, which I’m happy to do. Please email me at svec@saidsvec.com if you’d like to arrange a visit to your user group/meetup/team/company.

Thanks!

 

Edit: I reduced the pdf file size (and image quality) so the pdf is now 2MB instead of the previous 50MB.

What does Fitbit’s “Switch to Activity Record” mean?

I got a Fitbit Force for an early Christmas present this year, and at first I was confused by the the fitbit.com “Switch to Activity Record” option. I figured it out, so I thought I would write about it here in case the explanation helps anyone else.

On the “Sleep” tab you can “edit” a sleep entry and see something like this:

Editing a "Sleep" entry

Here Fitbit’s site is showing me that I slept 10:24pm – 6:01am.

If you click “Switch to Activity Record” near the bottom of the yellow box the sleep data disappears and the UI changes to say “Record has been moved to your Activity Tracking page. Click to view“.

What just happened? Where did my sleep go?

Clicking “Click to view” (or going to the Activities tab) and selecting the same day the sleep data was for shows:

Activities entry

Aha! “Switch to Activity Record” took my sleep data (from 10:24pm – 6:01am) and reinterpreted it as non-sleep data; so now the movements I made from 10:24pm-6:01am are interpreted as steps/calories/etc.

You can change this data back to being interpreted as sleep data by editing the entry and clicking “This is a sleep record”, shown here:

Activity view

Maybe “Switch to Activity Record” is obvious to you, but I think it could use a better UI/description.

(I won’t get into how terrible the fitbit.com overall UI is. Okay, I will: note that “End time” is “6 : 1” instead of “6:01”, and that checkboxes and buttons and links are seemingly randomly used to change and select options, and that the time entry forms are completely different in the Activity and Sleep views, and that Some Options Are In First Letter Caps and others are not.)

On the bright side, I like the Fitbit Force device itself. It’s relatively comfortable to wear during the day and at night (normally I hate wearing watches while I sleep), and seems accurate enough, though I’ve only used it for a day so far; we’ll see how it holds up over time.

While I’m blah-blah-blah’ing here, I’ll add that I’d like to see a new feature. As it is, you press the Force’s (only) button to see the current time. I noticed that each time I want to see the time I first rotate my wrist so the Force’s display is more parallel to my face. My feature request is that the Force recognizes this sharp-ish wrist rotation and activates the display without requiring me to press the button. Maybe that’s not possible in practice with the sensors the Force has, but it might worth a try.

Computers are the wrong smartness.

From Isaac Asimov’s 1975 short story “Point of View,” talking about Multivac, a malfunctioning computer:

“…if Multivac were as smart as a man, we could talk to it and find out what was wrong no matter how complicated it was. If it were as dumb as a machine, it would go wrong in simple ways that we could catch easily. The trouble is, it’s half-smart, like an idiot. It’s smart enough to go wrong in very complicated ways, but not smart enough to help us find out what’s wrong. And that’s the wrong smartness.”

That accurately describes most computers and software today, almost 40 years later: they’re the wrong smartness.

Bret Victor: The Future of Programming

Yet another great quote from Bret Victor in his back-to-the-future talk, “The Future of Programming”:

“The most dangerous thought you can have as a creative person is to think that you know what you’re doing. Because once you think you know what you’re doing you stop looking around for other ways of doing things. And you stop being able to see other ways of doing things. You become blind.”

(the quote starts around 31:20)

 

Developing People vs. Developing Products

Great quote from bunnie about Makers:

The Maker movement, I think, is less about developing products, and more about developing people. It’s about helping people realize that technology is something man-made, and because of this, every person has the power to control it: it just takes some knowledge. There is no magic in technology. Another way to look at it is, we can all be magicians with a little training.

That comes from an interview bunnie did with CSDN.net, which you can read here: http://www.bunniestudios.com/blog/?p=3234

“Shaping Things” by Bruce Sterling

I just finished “Shaping Things,” by Bruce Sterling.  It’s a very broad look at the way technology, people, and society have changed – and changed each other – over time.  And since it’s by Bruce Sterling, it’s mostly focused on the possibilities of tomorrow.

My favorite quote:

“Tomorrow composts today.”

Very cool – both the quote, and the book.

Sterling looks at five classes of technosocial relationships:

  • Artifacts / Hunters and Farmers
  • Machines / Customers
  • Products / Consumers
  • Gizmos / End-Users
  • Spimes / Wranglers

Definitely worth a read.

I got it from the library, and I’m going to hang on to it for a little while longer and read it again.  It’s short, but conceptually dense.

Definitely worth a re-read.

Hacks and Hack-Nots

The world is divided into two kinds of people: Hacks and Hack-Nots.

Hacks people hack.  They want hardware and software (aka “technology” or “tech”) they can change, optimize, use as they please, modify, destroy, etc. – in short, they want to hack.

Hack-Nots people do not hack. They don’t want to know what “hacking” means. They want their hardware and software to Just Work.  They don’t want to be aware of technology at all, they just don’t care.  They want to email, work, check Facebook, etc. – in short, they want to do something other than use the tech.  Technology is a means to an end, nothing more.

Hacks check email, Facebook, blogs, etc. just like Hack-Nots, but for Hacks the journey is more important than the destination.  The experience of checking email is more important than the email itself.  Configurability is key.  Even if it Just Works out of the box, Hacks will optimize it to their liking.  Technology is an end in itself.

For Hacks, optimization and configurability are more than just a Nice To Have, they are Moral Imperatives.  They believe it is actually morally wrong to not be able to mess with their technology.  They believe that being told they can only use C++ is slavery.  Even if C++ is their favorite programming language in the world, not having a choice is wrong.

For Hack-Nots, optimization and configurability are a distraction. Putzing around with settings is a waste of time.  They do not want to mess with technology that already works.  They do not care that software can only be written in C++.  They do not know what C++ is, and they will never care.

Until the last five or ten years most computing technology was made by, and for, Hacks.  Recently this trend has changed. Most technology is still made by Hacks, by definition.  Somewhere, however,  someone with an eye for the desires and dollars of the Hack-Nots took notice and is now telling the Hacks what to make.

Not in all cases, of course.  Most technology is still Hacks-only.

But the Hack-Nots are coming, and technology is on its way to meet them.  Hack-Nots will drive the marketplace simply because they are more numerous than the Hacks.

Baby Steps

A few seemingly unrelated thoughts, and then a tie-’em-all-together thought:

1. Rands’ recent post on “Saving Seconds” really resonated with me. I forwarded it to my wife and said, “See, this is how I think!” so that she could better understand why I optimize the shortcuts on our PC, or the way I load the dishwasher, or the other thousand seemingly-OCD-inspired things I do. (Thankfully she understands me very well already!)

2. I think it’s incredibly important to be good to “the environment.” Whether you believe in the global warming story or not, it needs to be done. I recycle everything possible (and I got really excited when I found out that Ecology Action, our local recycling place started recycling #3 – #7 plastics!), am a vegetarian, use reusable grocery bags (and don’t use individual plastic bags for bagging fruit or veggies), use BioBag compostable trash bags, and the list goes on.

3. Joel’s “Fire and Motion” post also resonates with me. Forward progress, even if it’s just a tiny bit of progress, is good. And necessary, in fact, to getting anything done.

If your goal is to save the Earth it’s easy to get overwhelmed because you can’t do it all yourself. What possible difference can a single person make? There’s too much to do!

If your goal is to improve some software or improve a software development process itself, it’s also easy to get overwhelmed because you can’t do it all yourself. What possible difference can a single person make? There’s too much to do!

Guess what? Maybe you’re right. Maybe you can’t save the Earth by yourself, or single-handedly improve the festering swamp that is your team’s software development process, but there is something that you can do – you can take baby steps.

Recycle something. Get a reusable bag or two for your groceries. Turn off the lights when you leave the office conference room. Ask a coworker to look over your code for bugs before you checkin a change. Create an automated test suite for your software, start with a single “does it compile?” test.

It will require an intentional change in your thinking and behavior to do these things the first time, and the second time, and the seventh time. But soon enough doing a little bit extra for the environment or your software will become a habit, and those small bits of effort will add up into something meaningful over time.

And you will be motivated to keep adding more good habits over time because you will see the internal (“Yay! I feel better about myself!”) and external (“Yay! I found a bug!”) benefits from those habits you’ve already adopted.

And as you develop those small habits, you will be noticed by others around you who may even join you in small improvements – “viral marketing” at work.


A Couple Of Resources:

Joel’s “Getting Things Done When You’re Only a Grunt” post has more software development improvement ideas.

http://science.howstuffworks.com/save-earth-top-ten.htm has a few Earth-friendly things you can do.