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!)
Python appeals to me for several reasons. It has a philosophy which talks about code being beautiful. While C# code isn’t necessarily ugly, I’m not aware that it’s a particular design goal to make the code beautiful. Python is just about the most general purpose language there is. It’s good for web development, desktop development and shell scripting and works cross platform. I’ve not seen how good it is for mobile development yet, but there are some options there too, such as kivy. I’m looking forward to having one language as my default go to language for most (or all) development tasks. Python seems to be the language of choice for a lot of teaching material, and the language should be pretty good for applying the things I’m learning about in SICP. I think it has better hosting options for small projects than .NET does too. I want to be able to host my projects cheaply and easily at first, and move onto something more scalable if and when things become successful. All the major cloud hosting providers support Python.
Python probably also has a bit more of a startuppy flavour to it if I need to get a job at some point. While there are startups (and lots of other companies) using .NET, I suspect Python is a bit more widely used in the startup scene. It’s also used in the scientific community, which is something that interests me. I studied physics at university, and worked for some companies that were involved in science-related work. I’m looking forward to exploring the SciPy library at some point.
I’m using Django mainly because it seems to be a popular and well-documented web framework for Python. It works in a similar way to ASP.NET MVC, with a few minor differences in terminology and how the code is structured. There also seems to be a decent community around Django (and Python) with several meetup groups in London.
As a project, BusyFlag is very small and simple, so it seems like a good project to learn Django and Python with. You can read and do tutorials, but you never really learn a new technology until you build a real project with it. I also hope that BusyFlag is something that people will find genuinely useful, but if not it will have served as a good learning experience.