In my last post, I mentioned that I’m implementing my current project with some new (to me) technologies, namely Python and Django. I do often seem to find myself doing each new project while simultaneously learning some new language or framework. There’s something very appealing about learning new things. All technology stacks have faults and idiosyncracies and you come to know these as you become familar with them. Unknown tools have the promise (never actually fulfilled) of being perfect. Perhaps there’s also a bit of self-protection involved. If this is “just a learning project” then it doesn’t matter how good it turns out to be. If you’re using technology you already know well, you have to face up to how good your work actually is. Using new tools can also make the experience more challenging and varied. Grunt work is less boring if you’ve never done that particular type of grunt work before.
For most of my career as a software developer I’ve worked with the Microsoft development stack, starting with Visual Basic and then moving to C# when .NET came out, and using ASP.NET and MVC for web projects. But for my own projects, I tend to be drawn to other languages and technologies. I’ve built a couple of things with PHP, have dabbled in Ruby and I’m currently working through SICP using Scheme.
My current project is BusyFlag, based on the idea I posted a few weeks ago. I’ve decided to implement this in yet another new (to me) language: Python, using Django as the web framework. I feel like I’m pretty late to the Python party! It was first released in 1991, and I first heard about it around 2000 (and completely ignored it until now!)
One of my goals for this year is to work through Structure and Interpretation of Computer Programs (otherwise known as SICP, or the Wizard Book). It’s been on my radar for a while, and I’ve made a few aborted attempts in the past, but in my present state of being happily jobless I actually have enough spare time to give it the attention it deserves. As a form of preparation, I’ve already worked through The Little Schemer and The Seasoned Schemer. At the time of writing, I’m only part of the way through chapter 2 of SICP, so I still have a long way to go!
I’ve been learning Python recently, as I’m planning to use it for some future projects. One of the things I’ve initially found a bit confusing is the different types of built-in containers that Python provides: Lists, Tuples, Sets and Dictionaries. So this post is just a few notes for myself on how these work and what they’re useful for. There’s nothing here that you can’t get from the excellent documentation at https://docs.python.org. Continue reading
I’ve been working through these two programming books, on and off, since some time last year. I’ve just finished the second of the two, so it’s time for a book review. I’m considering them as a single book because they are both fairly small, and one continues right after the other; even the chapter numberings continue across the two books, and functions from the first book appear in the second one. I took a few months gap between the two books, but it’s probably better to continue straight on so the concepts from the first book are fresh in your mind.
The books use the programming language Scheme to teach certain interesting programming concepts. They’re not designed to actually teach you the language, although I’m sure the material covered will be useful when I do go on to learn Scheme from a more practical point of view. The first book, The Little Schemer, is all about learning to think recursively, while The Seasoned Schemer is more about functions, and also covers state and continuations. Continuations in particular were a new concept for me before I started the book. Continue reading