Is There A God? (by )

When I filled in the application forms to be a cub scout leader, I was faced with a problem. There was a little box, long enough for one or two words, called something like "Religion".

The notes explained that having some kind of idea of spirituality was a prerequisite for involvement, which I agreed with; I think that many people these days, rejecting the interesting creation Christianity has evolved into over the past couple of thousand years, have gone rather too far to the opposite extreme, adopting materialism and nihilism.

But I'm afraid I don't have any simple "religion" that I can write a name for in that short a space. If I had to summarise my philosophy of life, I think I'd have to write "Fundamentalist Taoism with influences from Chaos Magick and Fight Club". Which (a) wouldn't fit in that space and (b) might lead people to ask if I'm trying to be funny.

So I panicked and wrote "Methodist", because that's what my wife had put on hers...

But it got me thinking: "What is the most concise description of my philosophy of the world I can write, that won't still require further explanation?". So here's a stab at it.

Read more »

Efficient Software (by )

Efficiency is a major goal for programmers. It used to be a much bigger goal; once upon a time, it was a struggle to fit useful applications into machines with 1MHz clocks, which took several clock cycles to perform basic operations on 16-bit values. You had to optimise even quite basic algorithms to get them to complete in acceptable timeframes.

In the 1980s and 1990s, the available computing power and memory for running an application exploded, but the sizes of data sets people wanted to work with grew in step. Now people wanted to word process documents with large images. Or keep databases of EVERYTHING. So efficiency was still a big concern for application programmers. But the focus began to shift.

Read more »

Career (by )

It's not just on technical matters that I find myself liking Paul Graham, he's also pretty much followed the kind of career path I want: start own company, become wealthy enough to no longer need to work, then mess around designing programming languages. Ok, I'm a bit more daring: I want to design a programming language, a virtual machine, operating system kernel, network protocol suite, database, and set of standard libraries.

Read more »

What I want from a programming language (by )

I'm interested in programming languages. When I was a kid, I'd get books on different languages out of the library, and sit and learn a language. I didn't get to write code in many of them, since this was before I owned a modem; all I had at home where BASIC, Z80 assembly language, Pascal, x86 assembler, then C and C++. But I devoured new languages whenever I could. When I came across FORTH I wrote my own implementation (although at the time I didn't get the metaprogramming stuff), since FORTH is easy to implement (it's a great bootstrapping language), and later on, I implemented a kind of Lisp as a scripting language for a game engine (except I used a Prolog-esque syntax, foo(bar,baz) rather than (foo bar baz)). I really wanted to play with the rich feature set of Ada, and the parallelism of occam. I studied COBOL and FORTRAN and found they didn't look much fun. I studied Smalltalk and found that it looked like great fun. Prolog was interesting, a radical departure, but I saw it as foolish to write whole programs in it - I felt it should be used as a database query language like SQL. It's Turing complete, but a large class of programs are ugly to write in it.

Read more »

Secure bootstrapping (by )

Back in the day, Ken Thompson described a rather scary problem with the way programming languages are compiled.

In summary, one could modify the C compiler so that, when it compiled some security-critical application like sshd, it inserted a security hole. The pristine sshd sources, when compiled, would produce a vulnerable executable. But then to protect the modification to the C compiler from being found, one can use the same trick on the compiler - make it insert the bugs into sshd and into itself when compiled from pristine sources. Compile this compiler up, then test it on its original sources, and when it's all working OK, install it on a system (and the bad sshd) and remove the dodgy sources. Clear your .bash_history and you're done 😉

Read more »

WordPress Themes

Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales
Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales