Update May 2016: I’ve transferred this blog to the HUGO static website engine and I’m hosting it on my company’s server. My writing still looks pretty, and Python & Django rock even more today than in 2009.
Update March 2014: I’ve transferred this blog to a hosted Ghost.org service, mostly because it makes my writing look prettier. Python & Django still rock.
I know I wrote in my first post that this blog was created because some internet hotshots said something. But this is only half true.
There was a bet, of course - and here’s the short story of it.
Two aspiring bloggers - me and my lead developer - made a bet that the first person to launch a blog would get a six pack of our favorite beer. Since our bets usually involve single bottles of beer, and my current beer score sheet was nothing to be proud of, this was an excellent opportunity for me to get back in the game AND create something useful. (We share an actual beer competition spreadsheet - on Google Docs, cause you gotta have revision history feature when tracking important stuff like bets.)
I had all the technological disadvantages you could think of, because he was able to deploy his blog completely by himself. Domain name registration, hosting account, application back-end setup, web design, integration of the back-end with the design… All of this is something I, being the project manager, usually assign other people to do when we start a web project for a client.
It’s not that I had no time to do it myself - I didn’t know how to do it. Domains and servers are handled by our web hosting department. Applications are handled by developers. Web design and integration are handled by designers.
The only thing I could do is fire up my text editor and start writing my first blog post.
And this is exactly what I did.
It took me 3 whole hours to write a good-enough post. No “hello world” would land me a six pack because this was part of the bet: one post was enough to win the bet, but the post had to have substance.
I had no domain name, no design, no blog whatsoever.
Still, I won the bet as soon as I was finished writing the post.
But I didn’t know that at the time.
This post is not about me winning a bet.
This post is about my decision to dig into the website code by myself, and the most exciting and insightful 8 hours of work I had this year.
It was exciting because I could do almost anything by myself. It was insightful because I’ve experienced for the first time, what an amazing system we have in place. It provided me with an understanding of things we could build in the future.
Let me explain. This blog is powered by the same web CMS applications our company sells to our clients. Applications are written in Python and run on Django framework.
I know everything there is to know about the applications from the user’s point of view. I use the applications every day, because our company’s website is run by them too. I know how long it takes to install them all (a few minutes) and who in the company needs to do what in order to launch a website.
But the inner workings of this whole system of ours? How do all the .html and .py and .css files fit together to create a website? I had no clue what my developers actually do when they work on a website. For all I knew, it was some sort of magic.
So I had to see for myself what was going on under the hood of every website we create. I decided to make my own website work, by myself. Of course, the applications would be pre-installed for me and I would download a free CSS-based website template, but after that I would be on my own.
I knew immediately that this decision will potentially make me lose the bet. I thought that, given my modest CSS and HTML skills, there was no way I could be done with the whole shebang in less that a week. And this was the best case scenario, because in it there was no touching of .py files. Every programming language scares me a bit, and so did Python - no matter how frakkin’ awesome they say it is.
Boy, am I glad I wasn’t afraid to walk the Django land with only as much outside help as my pride allowed me to ask for!
And there is no amount of beer that could compensate for the power I now have.
I was blown away by how logically organized everything was: Python application files, Django templates, and design files. I marched in on a heap of files with almost no documentation - and immediately understood why there’s no need to document everything. The code is the documentation. Anyone with as little HTML and CSS skills as me could make something simple work, just by looking at the code.
Fortunately we have dozens of websites already running on Django, so I peaked into other projects for some copying, pasting and editing. I don’t have a local server installed on my box, so everything I changed, I had to test directly online, on a test subdomain, where my blog was being conceived. That was when I experienced in action one of the coolest features: there is no need to FTP files during the project, ever. All I have to do is commit files into the source control repository and click “update” in the web control panel we’ve built into our projects. “Update” runs a shell script that sends files from the source control repository to the production web server. Beautiful.
After 8 hours of work - spent mostly on making CSS behave and look like I wanted it - my blog site was completely ready to be launched. It was 4:30 in the morning. Smugly, I issued a launch command to my betting buddy over e-mail and went to sleep. My blog would be up and running by the time I woke up, and I would probably win the bet.
What did I learn? I began to appreciate more - not less - the work my colleagues do every day. Good design and proper web-front-end coding is really hard - I always knew that, and now I experienced it through my adventure with CSS. Work that took me 8 hours to complete only takes designers a small fraction of that time. Compared with hours we used to spend on the same tasks before we switched to Python and Django, I cannot but wonder how did we ever manage to get anything done. I can now understand how and why a custom application can be written so fast with so few bugs. I understand how trivial some bugs actually are to squash, so I won’t let clients make a grand fuss out of something that even I could debug in a minute. A powerful yet simple software foundation, implemented and organized by smart people, gives you a tremendous amount of confidence in everything you do.
So, how come I won a bet with just one post in my text editor and no blog online?
I was lucky :-)