Welcome to Adam's Programming Pages!
Dear guest, I'm Adam Petersen, a programmer and part-time psychology student based in Sweden. On these pages you'll find my articles and book reviews. All of them, in one way or another, related to programming.
The Time Paradox
January 2010
The Time Paradox is all about our attitudes towards time. Its core message is that we all have a unique, biased time-perspective that influences our decisions and behavior. Yet we're normally not aware of it, hence the paradox. This book makes us aware of our personal time-perspective and how it influences our feelings, actions, and future. It also promises to teach the ideal time profile and provides us with the tools to get there.
Coders at Work
November 2009
Wow! This is an amazing book. I've been looking forward to Coders at work since Peter published the first names on his blog two years ago. Given Peter's track-record , I knew he would do a terrific job, yet I'm positively surprised. Coders at work is a book that I recommend, without any reservation, to anyone interested in programming or aspiring to become a programmer. It's that good.
Masterminds of Programming
November 2009
A book featuring interviews with the minds behind
several historic and highly influential programming languages
promises to be an interesting read. And indeed it is, although much of the books potential value is lost due to omissions and flaws.
Erlang Programming
October 2009
Erlang was designed to solve real-world, practical problems. And it was designed to solve those problems in an elegant way. To me, Erlang is a perfect blend of research oriented towards practical applicability in the industry. The language itself is small and with a background in functional programming I found it quite easy to learn. But from learning the syntax and writing some simple programs to actually get a feel for how systems are designed, well, that step is huge.
Programming Clojure
August 2009
Clojure is the most exciting and innovative addition to the Lisp language family in a long time (sorry, Arc ). With the 1.0 release of Clojure just outside the door, Programming Clojure is perfectly timed. I've followed the development of Clojure over the last year and had high expectations on Stuart's book. Let me say that I'm impressed. Both with Clojure the language and with this book.
Structure and Interpretation of Computer Programs
July 2009
Structure and Interpretation of Computer Programs (SICP) is one of the true programming classics. It's a well-deserved position; SICP is simply the best programming book I've ever read. I made my first pass through it a year ago but deliberately postponed my review; reading SICP completely changed the way I approach programming. Thus, I wanted to get some distance to my reading experience and a chance to judge how much influence SICP would have on my everyday programming. I found that SICP does two things for you: it improves your coding no matter what languages you use at the moment. SICP also serves as a platform for learning new languages and techniques by building a foundation and context for your future learning.
A Whole New Mind
May 2009
We're all about to become obsolete. Just like the industrial worker of the 19th century got replaced by machines, or made superfluous as production moved to cheaper countries, the knowledge worker of the 21th century is facing outsourcing and ever growing global competition. Or at least, that's Daniel Pink's hypothesis. To survive, we need to broaden our skills. We need to look past our traditionally valued linear and logical thought-processes and develop more, in pop-science terms, "right-brain" skills like design, story, empathy, and play. In other words, we need a whole new mind.
Learning Python
April 2009
What attracts me about Python is its simplicity. And I mean simple in the right way through a minimum of accidental complexity and not, like Java, by limiting the possible design space. I plan to use Python for much of my everyday scripting and was looking for a book that quickly got me up to speed. With that goal, Learning Python was far from a perfect choice.
Pragmatic Thinking and Learning
February 2009
Andy Hunt's new book fills an important gap. While much of the people-oriented work in the software industry targets better and more effective ways to work, I've always lacked the focus on what really matters: our skills. At the end, the ability to constantly learn and evolve is what really makes a difference. It's not just about new languages and tools; we have to learn different problem domains, understand the challenges they possess, and address them with creative solutions. Drawing on research in cognitive research and learning theory, Andy explains how we can learn more effectively and boost our creativity.
Clean Code
February 2009
Over the past 10 years, I've learned a lot from Robert C. Martins writings. His previous book was a rewarding read and I had high expectations on Clean Code. It covers a vitally important area: the quality of our code matters. Any book that manages to teach us how to develop clean code is mandatory reading in my world. Unfortunately, I cannot put Clean Code in that category.
The Lucifer Effect
February 2009
The person-situation controversy stands as a theoretical divide in the field of personality psychology. Historically, the former camp held the upper hand emphasizing the individual's inner nature, personality traits, and even the character in explaining behavior. Zimbardo challenges that view by explaining how situational forces can bring good people into antisocial and destructive behavior. The Lucifer Effect is an important book well worth reading for several reasons.
The Soul of a New Machine
January 2009
Back in the 1970s, Data General was known as the "Darth Vader of the computer industry". The company had some success selling their 16-bit Eclipse machines, but times were changing; DEC had just released their 32-bit VAX and it was clear where the future was. The soul of a new machine is the story of Data General's struggle to create a new computer to compete on the 32-bit market.
Dreaming in Code
January 2009
In 1981 Tracy Kidder gave the world The soul of a new machine . The book described how a new computer came alive. In the process, Kidder wrote some of the best portraits of the developers behind the machine and the motivational factors that drive them. A quarter century later, Scott Rosenberg tries to do the same for software as Kidder did for hardware.
Thinking Forth
November 2008
Forth has the characteristics that make a language attractive to me: expressiveness, minimal syntax, immediate feedback, and a natural way to grow. Combining these properties sets the stage for good design by iteratively letting us build the language towards concepts in the current problem domain. Forth also puts the constraints where they should be; on the skill and creativity of the programmer. Thinking Forth describes a way to think about programming as a creative process. And it does so in an entertaining and pedagogical way. The result is a brilliant work that stands as some of the best software writing I've read.
iWoz
November 2008
Previous books (e.g. Hackers and Founders at Work ) have told the story about Steve "Woz" Wozniak's groundbreaking creation: the Apple II computer. The Apple II not only set a completely new standard for computers that carried Apple the company into a multimillion dollar business; Apple II is also widely acknowledged as a beautiful piece of design and technical brilliance. As Steve Wozniak finally writes his autobiography, I have high expectations. Like any biographical work, I'm expecting to get a view into that persons unique mind; to understand how he thinks and get an idea of his personality. In this particular case, I'm also expecting to understand the events and thoughts that lead to the creation of Apple II. Based on those criterions, this book is a success. But iWoz has its limitations and left me with the feeling that it could have been so much more.
Hackers: Heroes of the Computer Revolution
August 2008
Hackers is the story of the early days of computers. From a time when hacking was truly underground and a single computer took up an entire room, over the microprocessor revolution, to the booming videogame industry of the eighties. Through the whole journey Steven Levy lets us step into the great minds of the early hackers, understand their motivations and why programming is so fascinating. The result is a classic book that is of significant importance even today.
Smart and Gets Things Done
July 2008
The title "Smart and Gets Things Done" refers to the criterions you look for in a technical interview. These are the candidates you want to hire. But there's more to hiring technical talent than an interview, hence the rest of the book.
First of all, Joel motivates why you should care about finding the best developers. To any programmers who care about their craft this is obvious; there's a tremendous variation not only in productivity but also in quality between programmers. And it's simply not a matter of throwing more man-hours on the problem, let's say by hiring 10 mediocre programmers instead of a really great one. Brooks law provides an economic argument against that idea. Besides that, a great programmer writes code that lesser skilled programmers will never, ever be able to deliver. On some level, most managers understand this. The problem is that almost everyone does little more than paying lip service to the idea. Joel not only understands it, he also bases his company on the idea and provides some rather convincing data and discussions. It's an interesting and important introductory chapter that sets the stage for the rest of the book.
Let Over Lambda
June 2008
New Lisp books are rare, so this is a big event in my world (think Christmas, graduation and birthday at once and you're close). Let over Lambda is a self-published book of remarkably high quality. The first three chapters are available online, but in a way that's a shame; it's actually after these chapters that the book really takes of.
The introductory chapter makes clear that this is going to be highly opinionated and potentially flammable material. Doug doesn't shy away from breaking well-established Common Lisp idioms and holds strong opinions on both programming and language design (in Common Lisp, these two areas actually converge). Personally, I find it refreshing. At times it's a good idea to challenge conventional wisdom and get another perspective on how to do things. I may not change my initial believes, but at least it gets me to actively rethink my coding habits. That said, you do have to know Common Lisp pretty good in order to know that to sort out.