Saturday, April 19, 2008

Book Review: Out of their Minds: The Lives and Discoveries of 15 Great Computer Scientists

I'm on a roll in the book department.

As its title implies, this book presents 15 major figures (e.g. Dijkstra, Knuth, McCarthy) in computer science history and some of their most important discoveries. It was a very interesting, humbling, and motivating read. It's amazing to think of what these men discovered without the high level languages and modern hardware that is available today. Had I grown up in their generation, I doubt I would have pursued a career in software. Although I enjoyed my assembly language class in college, one semester was enough. Although I am obviously not on the same intellectual plane as the subjects of the book, reading about their accomplishments was inspiration enough to continue becoming a better developer and expanding my knowledge about computer science.

Two other things that jumped out at me when reading this book:
  • It was interesting to see that many of these men started their careers (or academic careers) in something other than computer science. From biology, to music, to chemistry, most of them were proficient in some other field before ending up in their final career path. What they all had in common though, was a passion for creating things, which easily transferred into the computer science field.
  • Reading this book made me wonder why college computer science programs (at least mine) do not have a History of Computer Science class where these men and their discoveries are the focus of the course. I think many students would gain an appreciation for the history behind the major discoveries in the field, along with the same motivation I received from reading the book. It would also make students appreciate the work and dedication required to become an expert in the field.

Sunday, April 13, 2008

Book Review: Tog on Software Design

I just finished reading Tog on Software Design, a very interesting book overall, although I found some parts a little more interesting than others.

Much of the focus of the book is on Bruce Tognazzi's Starfire project, a project started in 1992 to provide a vision of the future for software in the year 2004. The transcripts of the resulting video from the project were a little tedious to get through...I should have just watched the video. It was interesting to see how much of the technology featured in the video still isn't available four years after the story takes place.

The rest of the book focused on design principles intended to provide a better user experience when creating software. Many of the principles he presented were simple matter of fact statements that seemed obvious. But turning his principles into implementations are probably easier said than done.
The part of the book I found most interesting was his side-by-side comparison of software and magic. It is an interesting metaphor that doesn't seem very obvious, but makes a lot of sense after his explanation. To summarize:
Both software designers and magicians create virtual realities. We bring ours alive on computer displays; magicians bring theirs alive on the stage. We capture our "performances" in code so they can continue to occur long after their writing; magicians traditionally appear live. We depend on our knowledge of the mechanics of computer technology, the aesthetics of graphic design, and the science of psychology. Magicians depend on their knowledge of the mechanics of their tricks, the aesthetics of showmanship, and the science of psychology.
It's interesting to envision the goal of software design as providing a user with an illusion that makes the physical computer disappear and replaces it with a real world metaphor that allows them to get work done.

Saturday, April 12, 2008

Learning Math

Inspired by this post from Steve Yegge, I have decided to re-learn/learn as much math as possible. I've always wanted to be better at math. One thing I've always regretted is how much time I wasted in my high school AP Calculus class, only to have to take the same exact course my first semester in college. Combine that will all of the other math knowledge I've lost over the years and I feel like I should knkow much more than I do.

I'm starting from the very beginning, algebra, which should hopefully be more of a review than anything else. I ordered this book from Amazon the other day and plan to read a little bit each day while I eat breakfast. I haven't really determined what the end-state of this goal is. Maybe it will be a life-long thing and I will end up a math genius :)

It hasn't been necessary for me to know much high-level math in my development career. But I'm hoping that this project will enhance my problem solving skills and expand possible job opportunities. If nothing else, it will make me feel like I've made up for all of the knowledge I have lost over the years