29th
May
2007
A recurring theme has emerged in what I’ve been reading the last few days. It boils down to the differences between software based on a clean, logical algorithm, and software based on arbitrary rules.
The topic first arose in a conversation I was having with Chris Conway over at Code Reads, exploring the pros and cons of functional programming. Chris said that he used FP every day, programming in OCaml, and loved it. It wondered if the reason he loved FP so much and I found it so unappealing was that he spent a lot of time working on problems that had elegant algorithmic solutions, whereas I spent so much time working on code that was (comparatively) a hodge-podge of arbitrary rules. This difference seemed to me to be a key distinction between “academic” and “business” software. Chris did not agree with me, or perhaps simply thought other factors (performance and library availability), were more important. We left it at that.
Read the rest of this entry »
posted in Coding, Functional Programming, Skillfulness, Software Design, Software Industry, Software Is Hard, Software Process |
22nd
May
2007
Welcome, everyone.
So, this is WordPress. So far, so good. Got the domain, upgraded the hosting account, setup WordPress (very easy), played with themes, didn’t really like any, modded one I liked (pretty easy) after getting my wife to help with the colors (they’re not what I would have picked, but in the end I like them), and here it is.
Oh yeah, also setup Technorati, Google (submit, analytics, etc…), and Yahoo, post one final post on Blogger, and post this one here.
Whew.
OK, back to business.
posted in Meta |
15th
May
2007
Scott Rosenberg’s book Dreaming in Code, and the Code Reads section of blog have really inspired me to think and read more about my job. The “assigned reading” for Code Reads has been really great, so recently I started on a tangent - a book mentioned in Code Read 6, titled Bringing Design to Software, by Terry Winograd. Prof. Winograd teaches software design at Stanford, and the book is a collection of essays that came out of a 1992 workshop on software design. So far, I’ve only read the introduction and the first chapter (which was the text for Code Read 6). So far the ideas have been very interesting, but a word of warning if you’re thinking of purchasing this book. Reading it is a chore because of the awful printing. Addison Wesley, the ACM, and Prof. Winograd could have done so much better than reproducing these low-res weirdly half-toned pages. It looks like the master pages were printed on an old 16-pin dot matrix printer, and designed using “creative” shares of gray. But I’ll forgive them the bad printing if the rest of the book is as interesting as what I’ve read so far.
Before I get too into that book, though, I want to tell a quick story.
Read the rest of this entry »
posted in CS Literature, Integration, Skillfulness, Software Design, Terry Winograd |
9th
May
2007
While I’m working on my next big post, here are a few things worth reading.
Scott Rosenberg’s post on ambiguity was right on. Ambiguity is a double edged sword - it can make things elegant, or intractable. Scott’s insight is very sharp, as usual.
Last year, Basil Vandegriend put out a concise and helpful post on writing good unit tests. Most people agree tests are important, but many do not know precisely how to make them work. Basil addresses real issues, and gives good advice. I wish I had read this ten years ago.
Basil’s latest post on the top five essential practices for writing software is also bang on. It is a quick must read for programmer trying to make the leap from just coding to professional software development.
posted in Coding, Skillfulness, Software Process, Worth Reading |