Archive

Archive for December, 2005

Intelligence 1, Intelligent Design 0

December 20th, 2005
Comments Off

A US court has ruled that intelligent design cannot be taught in a Grade 9 class, because it isn’t science. Score one for Team Enlightenment.

Uncategorized

It’s Just Unevenly Distributed

December 19th, 2005
Comments Off

Once again, I have to quote William Gibson: the future is already here, it’s just unevenly distributed. Check out eyeOS, a desktop-in-a-browser that comes with editor, calculator, and a bunch of other tools. Sure, it’s kind of slow, but it’s very pretty… You can even take it for a test drive.

Uncategorized

I’d Vote for Her

December 16th, 2005
Comments Off

I watched part of the first Canadian federal election debate last night. Then I read Michelle Levesque’s latest post. Given the option, I’d vote for her.

Uncategorized

Sean Dawson to join DrProject team in January

December 14th, 2005
Comments Off

Thanks to generous support from Prof. Steve Easterbrook, Sean Dawson will be working on DrProject alongside Chris Lenz and Jason Montojo in January. We’re looking forward to a productive month.

DrProject

Maintaining Correctness

December 11th, 2005

I’m re-thinking the lectures in the Software Carpentry course based on feedback from this term’s students. I’m going to merge the three lectures on different development processes into one, and use the space that frees up to talk in more detail about programming style and software design—assuming, of course, I can think of something to say that isn’t banal.

I also want to talk about the material in an article by Paul Dubois in the May/June 2005 issue of Computing in Science & Engineering called “Maintaining Correctness in Scientific Programs”. Here are a few key lines from the introduction:

The more frequently a program is changed, the more difficult it is to maintain its correctness… Most programmers can reasonably tell when their programs are incorrect, but for scientific programmers, this is not the case. A bug that doesn’t cause the program to fail in an obvious way could be indistinguishable from an error in modeling the real world with equations… Solving this problem must be the focus of our methodology, be it for a single person writing a 10,000-line program [or] a team of 20 or more writing half a million lines.

Paul then outlines a strategy based on defense in depth which has the following layers:

  • a protocol for source control;
  • use of language-specific safety tools;
  • design by contract;
  • verification;
  • reusing reliable components;
  • automating testing;
  • unit testing (which requires automation to be effective);
  • to-main testing policy (i.e., code must be tested before being integrated from a branch into the main line);
  • regression testing;
  • release management; and
  • bug tracking.

This immediately struck me as an excellent way to organize and motivate several important parts of the course. It also points out some holes that I’ll need to fill. Oh, to have more hours, and more hands…

Software Carpentry

Evidence

December 11th, 2005
Comments Off

Every time I complain about Python’s muddled response to Ruby on Rails, someone pushes back by saying, “What does it matter?” This screenshot, taken from the “what we provide” page of a web hosting company, might serve as an answer:

webhosting.png
Yup: Ruby gets a whole column of its own, while Python is tucked into “Miscellaneous”, along with OCaml. How many new users is that going to attract?

Uncategorized

American Scientist article on Software Carpentry

December 9th, 2005
Comments Off

The Jan/Feb 2006 issue of American Scientist, the magazine of Sigma Xi, contains an article on Software Carpentry.

Software Carpentry, Writing

Four More Books

December 8th, 2005
Comments Off

So, how’s your web site doing? Are people reading what you blog? Downloading your software? Simple statistics are fairly easy to gather, but if the web is how you make your living, simple stats may not be enough: you might need to find out what percentage of your customers are being referred from where, or how often they wander down blind alleys in search of the Mac beta of your latest game.

If this is your current migraine, Web Site Measurement Hacks may be your new best friend. It mixes practical “do it this way” advice with cogent discussion of why you’d want to do some things some way, and other things not at all. It did jump around a little more than some of O’Reilly’s other “Hacks” books, but that’s partly the nature of the subject. Recommended.

Modeling the Internet and the Web sounds like it’s about the same topic, but it isn’t. Instead, it surveys various mathematical and statistical models of page connectivity and user behavior. There are chapters on text analysis and advanced web crawling, and lots of comparisons of theoretical predictions with actual data to inspire confidence in the modeling techniques used. If this is your thing, this is your book.

Brian Hook’s Write Portable Code is also recommended. Anyone who has ported a non-trivial C or C++ application from one OS to another will have experienced some of the pain he describes. What makes this book worth owning is the breadth of its coverage, and the way the author ties various solutions together. Everything from line endings and byte ordering to stack layouts and exception handling is present and properly indexed. What’s more, the writing and code samples are cleanly laid out and very readable.

Finally, there is Bruce Tate’s Beyond Java. It’s central messages are that (a) Java’s accelerating bloat is getting in the way of leading-edge developers, (b) dynamic languages like Ruby are a lot more fun, and (c) you can never have too many kayaking anecdotes. I agree in part with the first point, though of course one geek’s bloat is another’s gotta-have-it. I’d agree with the second point, too, although more data and less ramble would have made it more convincing. As for the third, well, I think the analogies are forced, and make the book feel more Tony Robbins than Brian Kernighan.


Pierre Baldi, Paolo Frasconi, and Padhraic Smyth: Modeling the Internet and the Web: Probbailistic Methods and Algorithms. Wiley, 2003, 0470849061, 285 pages.

Brian Hook: Write Portable Code. No Starch Press, 2005, 1593270569, 248 pages.

Eric T. Peterson: Web Site Measurement Hacks. O’Reilly, 2005, 0596009887, 405 pages.

Bruce Tate: Beyond Java. O’Reilly, 2005, 0596100949, 185 pages.

Books

Laurie and Jorge’s book reviews in DDJ

December 8th, 2005
Comments Off

Book reviews by our very own Jorge Aranda and Laura MacDougall are now on the DDJ web site. (Unfortunately, they’re behind a paywall, but trust me, they’re spiffalicious.)

Writing

Summer of Code Part Deux

December 8th, 2005
Comments Off

The second round of Google Summer of Code mini-articles are now on the Doctor Dobb’s Journal web site.

Uncategorized