This is an updated version of a list I posted to my Advogato diary on 1st January 2004. The criteria for inclusion is relevance to what I consider the intellectual heart of the study of computation; naturally the criterion gets distorted by biases.
Lambda the Ultimate This is just clearly the best computer science weblog out there; it has no close competitors. Here's a selection of excellent posts, taken almost at random:
- State and Modularity
- Logic Programming in the Context of Multiparadigm Programming
- Perspectives
- Polyglot Programming
- Practical Theory
- A Survey of Object-Oriented Concepts
- Tuples + Objects + Infosets =Too Much Stuff!
Pinku Surana's Green Hat Journal: probably my favourite individual blog by a computer scientist. Some of his best past posts:
- Stratego/XT
- Interface Compilation
- Bayesian Learning
- OS & Continuations
- Objects have failed
- Box/unbox on .NET
- Exemplar based programming
Andrew Birkett's blog, subtitled "Thoughts of a software engineer", has a heavy programming languages design and implementation slant, and is generally excellent:
- Optimization asks the question "Why do programs have to get more complicated when you try to speed them up?" and why is it not possible to write code rather like *ML and XML transformers, so that one writes a simple program that is readable, maintainable and easy to reason about, and transformations on this code that make it into efficient code.
- Yet another compiler compiler and and It's MetaTurtles, all the way down gives a nice introduction to the idea of automating the process of compiler production by starting from formal specifications of the programming language.
Nice, but I have to quibble: Andrew asserts of denotational semantics: Unfortunately, having all these mathematical objects and theorems floating around isn't getting you much closer to having a compiler for the language, which simply isn't true: a denotational semantics provides you with the recipe for automatically generating an interpreter, which in principle can automatically transformed into a compiler by partial evaluation. The real problem with denotational semantics is that it's proven difficult to provide them for non-toy languages.
- Of limited scope and Predicate objects talks about some issues around variables whose meaningfulness varies through their lifetime.
- Monads by stealth motivates a C++ abstraction that turns out to be the same thing as a paradigmatic monad.
Matt Jadud's weblog How do you compile?, who also runs the Cool Stuff in Computer Science weblog. Focus on didactics of computer science; some sample posts:
- Respect for the Teacher: parts [1] and [2]
- Life after the PhD
- +1, -1, Net: Zero, or, when teaching goes wrong...
- Pedagogic programming languages and environments #1
Bill Clementson's Blog, a Common LISPer. Some samples:
Ian Wehermann's the maine paige. Sample posts:
John D. Mitchell's blog (he also keeps an artima.com blog. Java programmer. Samples:
Bjorn Borud's Random Scribblings; samples:
Gordon Weakliem's 80/20; samples:
Will Benton's Free Variable. Sample post: Thinking like a computer scientist
Cay Horstmann's rather sparse artima.com blog; sample post: Some objects are more equal than others
Jim Coplien's Artima.com artima.com blog has just this single entry, which makes it more an essay than a weblog: Teaching OO: Putting the Object back into OOD.
Katz's Web; sample on Inference Web: Explanations on the Semantic Web