Here are some things that caught my eye this month.
It’s NAND gates all the way down
Coursera is running Build a Modern Computer from First Principles: From Nand To Tetris starting June 6th. This is a project-centric course in which you build a (simulated) computer from the ground up starting with nothing more than NAND gates. My wife and I took this course last year and enjoyed it very much. When I was young I used to play around with 7400 series TTL chips, building little devices out of logic gates, and dreaming of the day when I’d design and build a CPU. Roll the clock forward a few decades, and now it’s possible to do exactly that for free. So, if you ever wanted to understand the basic principles underlying a computer, and hopefully develop a bit of mechanical sympathy for the hardware, then I can thoroughly recommend this course. If you want to understand those principles but don’t have time to take a course then read Code: The Hidden Language of Computer Hardware and Software by Charles Petzold.
It’s lambdas all the way down
In the late 1980s, I took a course on implementing functional programming languages. It was based around a book, The Implementation of Functional Programming Languages, by Simon Peyton Jones. I didn’t particularly care for the course, mostly because I had a very limited understanding of functional programming, so a large part of the book and the course was lost on me. However, this month I spotted that Microsoft Research had made the book freely available, so I decided to take another look at my old nemesis.
Much to my surprise, it wasn’t all impenetrable. Yes, it talked a lot about lambda calculus, and related concepts, but now that functional programming is far more common than it once was, there is a lot to be found that many people will recognise. For example, the book contains a chapter on list comprehensions, which have found their way into languages such as Python.
However, you won’t find Monads in the book as they didn’t come into being until 1991, which was four years after the book was published.
It looks like it would be a great starting point for a beginner as it has plenty of good examples and guides.I very much admire anything that introduces beginners to programming, because I don’t think it is particularly easy to get started. When I learned to program, getting started was relatively straightforward. You’d switch on your computer, wait a few seconds for it to boot, then you’d see a “Ready>” prompt. Then you’d immediately start typing in a small program, making sure that it fit in a whole 16k of RAM, and, if you were persistent then you’d get the results that you wanted. But the reason that it was so easy to get started was that nearly all computers of the time came with BASIC built in. This wasn’t to everyone’s taste, of course. The great computer science pioneer Edsger Dijkstra considered that “the teaching of BASIC should be rated as a criminal offence: it mutilates the mind beyond recovery.”
Software Engineering Radio: The LMAX architecture
Last month the Software Engineering Radio podcast interviewed Mike Barker about the LMAX architecture. I enjoyed listening to this, as they talked at length about the problems that the architecture was trying to solve and the various approaches that they’d tried before settling on what became the LMAX Disruptor library.
Talk Python to Me: Python performance from the inside-out at Intel
Michael Kennedy’s Talk Python to Me podcast continues to go from strength to strength. I’ve been listening to this podcast on and off for over a year. Earlier this month the topic was Python performance from the inside-out at Intel, in which David Stewart from Intel talked about how they (Intel) get languages – in this case Python – to run more quickly on Intel CPUs.
In Other News…
After more than 20 years working for the same company, I’ve handed in my notice as I was made an offer that I couldn’t refuse. It all happened so quickly in the end – I interviewed on Thursday morning and had an offer by Thursday afternoon. I start work with my new employer at the end of June. I’m delighted to have this new, exciting opportunity and I’m really looking forward to taking the next steps in my career. Naturally my feelings are tinged with sadness at the thought of saying goodbye to my colleagues, some of whom I’ve known for longer than I’ve known my wife.