A change in direction: Python, Django, and Google App Engine

This is a cross-post from my other for-own-use developer blog. I’m posting it here because people often ask me what I’m so busy with.

It’s been a while since my last post; I have been real busy. Anyway, just to quickly say this, I’ve made a change in direction in my development efforts.

I’ve said earlier that I am determined learn a new programming language this year because my brain is starting to rot, but have since decided a few months ago that it will not be Cocoa Touch, for various reasons: too niche (the emerging global mobile apps market is highly fragmented by Nokia, iPhone, Android, Crackberry and possibly Palm as a viable contender), and skills here only attacks a small piece of my larger effort, which my gut tells me it’s a task that could probably be farmed out and done cheaper/faster by outsourcing to a iPhone dev shop where Cocoa Touch is their core competency.

A mobile app that does not utilize any connectivity, nay, “intelligent” connectivity, is not much different from calc.exe on your WinXP desktop. It’s fine for a narrow and specific, uninteresting task. An interesting mobile app would tap the cloud for some form of intelligence. Why not leverage that mandatory data plan from AT&T for your iPhone?

When the time comes, if necessary (such as if the iPhone app will be an important part of my competitive advantage), then I’ll pick up Cocoa Touch myself. For now, I do not think that will be the case, thus I’m going to spend more time on laying the groundwork for the more important piece: the back-end, web 2.0 / cloud computing / SaaS piece. And as Microsoft knows, as Tim O’Reilly says – nobody with their right mind would bet against the Web! (Have you seen HTML5?)

The past month or two, I’ve tried real hard to squeeze time in to learn Python, Django and Google App Engine – all at the same time in parallel, not sequentially. Yes, I’m trying to rush – because I am impatient.

Python is not as popular as other Web languages such as PHP, or popular as a language in general, but it would appear that many smart people I know are proficient in it. I need to learn a new language anyway, so Python is my new shiny toy.

I chose Django because as everybody knows now, if you’re building a web site, Model-View-Controller (MVC) is in. Hand-stitching HTML plus backend code, with layout and business logic intermangled is out. And oh, Django is built using Python.

Google App Engine is a hybrid that you would lump in the category of PaaS and IaaS. That’s Platform-as-a-Service and Infrastructure-as-a-Service. See Appirio’s chart here. The value proposition here is clear: You focus on building your web app, let Google scale it for you. One of Google’s core competency *is* in scaling software AND hardware. Have you seen the hardware from one of their data centers? This reminds me of the headless (or blind) chicken rumor that KFC is breeding — solely for the purpose of meat, everything else is unimportant. Now that’s a real lean and mean searching machine that Google has got, which makes sense – kill the VGA card, reduce I/O on the bus.

I’ll let the experts work their magic there, and I will focus on my web application’s value proposition. I think people forget, you can spin up a *nix server on AWS, but you still have to fire up the MySQL daemon yourself, and scale up yourself .. identifying app bottlenecks and what not. I don’t want to spend time debugging latency problems.

And oh, Google App Engine supports Python, and Django :) There is method to my seemingly incoherent madness.

At any rate, I’m bullish on cloud computing + SaaS, so even though there aren’t any marketing success poster-childs for App Engine yet, I am willing to be an early adopter and risk it.

So there’s my not-so-short announcement .. that I’m putting Cocoa Touch on hold indefinitely, and focusing on Python + Django + Google App Engine.

Shameless self-promotion: If you’re local to San Diego, I’ve started a user group for Google App Engine on Facebook. There’s also a Django user group in San Diego.

Tags: , , , ,

  • I've been trying to get enthusiastic about learning how to use Google App Engine since around August 2009. I can see it's a great opportunity, if there's enough buy-in from software developers and bigger customer IT shops. You have the advantage of being in the US where the IT market is a lot more dynamic. Here in the UK, things tend to lag, and there is limited scope for jobs in the newer IT fields.

    I know there's loads of info on the web, but I like to work from textbooks when I'm starting out with a new technology. After a long pre-order, I finally received the Nov 2009 O'Reilly book, "Programming Google App Engine" (Dan Sanderson) and am reading it. The book hits the right spot for me... better than the related O'Reilly title, "Using..." (Charles Severance) which I found slow going (but may return to for reference).

    I have a Java background and will likely use Java for at least some of my App Engine work, but Python has to be in there too, simply because Google and a lot of other smart people use it.

    Like you, I have to learn Python from scratch. Doing so while learning the App Engine seems a good combination. How did this work out for you?

  • I agree that more a more tech-savvy geographical location would be more likely to demand for new technologies .. but at any rate, imho, if you're the technical domain expert to the non-technical customer, then it's kinda part of your job to explain the benefits .. for what it's worth. Some are going to be very risk-averse and be real laggards when it comes to adopting technology

    http://en.wikipedia.org/wiki/Technology_adoption_lifecycle

    If you're dealing with laggards, it may just be a waste of time trying to convince them.

    As for myself, I listed 3 things above (Python, Django, and App Engine) .. and I've now the opportunity to reflect back (thanks for commenting). When I wrote this blog post, GAE did not support Java yet (so my experience has been with GAE-Python). I found out that attempting to learn GAE-Python without a proficiency in Django a challenge.

    After I got the basics of Django down, how things the major pieces with each other i.e. models.py, views.py, urls.py, /templates/ .. the process of picking up GAE made more sense. In fact, I had dived into GAE before Django, and I didn't have a good feel for it, and decided that I'll tackle Django first. Then as I was going through Django, I had many "aha" moments. Aha, as in, "this was the stuff I read in the GAE docs but didn't understand, so that's what they meant!"

    It's almost like climbing up this plateau, there's path 1 or 2. For me the Django path was easier to climb. Once up the plateau, climbing up from the other path was easier.

    Also, back when I did this, there was no books on GAE. Just online docs. I'm like you, I prefer a book in hand with examples to work through when I'm learning something new. So I found this Django book, and I recommend it.

    'Django 1.0 Website Development' by Ayman Hourieh http://bit.ly/8Ocxgh

    I've now got Django and Python under my belt, but I haven't returned to pickup GAE-Python yet .. because now I'm polishing my front-end skills ;) with jQuery and jQuery UI. There's also some cons with using GAE that some have pointed out online, so depending on your goal, GAE may not be the best choice. The GAE team is still evolving to mature GAE of course. I'll have to revisit it again.

    I wish you the best!
blog comments powered by Disqus