An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

My First PyCon

March 17, 2013 ·

Given the incredible focus on children and education in the Python community, I feel like I should be writing this blog post in crayon "My First PyCon By Sean Corfield, Aged 50"...

PyCon 2013 was my first exposure to the Python community and, beyond some Python 101 for the 10gen MongoDB for Developers course, which I took late last year, my first real exposure to what Python is all about. Color me impressed on both counts!

As I've mentioned before, I try to learn a new language every year or two, hopefully in enough detail to take it to production in some way. Python's been on my list for a while and, as I blogged back in October, 2013 is my year to learn Python! I don't expect to be building applications with Python but I do hope to streamline our build system at work over time to get rid of the ad hoc mix of bash scripts and ant tasks (our 800 line build.xml is already getting pretty painful to maintain because ant is not really designed for conditional logic and loops... and, frankly, XML is not a programming language!).

PyCon 2013 had 2,500 people signed up and the exhibitor hall was packed with a lot of companies I'd heard of and a lot of companies I had not heard of, but everyone was overwhelmingly friendly and positive and the vibe was very much an inclusive community - everyone is welcome, from young to old, from all around the world, from every walk of life - and it was certainly the most diverse technical conference I have ever attended which made a wonderfully refreshing change! At every break and lunch, I struck up conversations with new people and over and over again I heard that "Python is awesome!" and the "Python community is awesome!". The Python Software Foundation flew a ten year old boy and his father from South Africa so the boy could be a Teaching Assistant at the pre-conference workshop for kids to learn Python programming. One of the keynote speakers brought his two(?) year old kid up on stage - wearing a Python T shirt - and I saw several parents with children at the conference, as attendees. Getting kids into programming at such young ages is awesome. Every attendee was offered a Raspberry Pi and we were told that all the spare ones that attendees didn't want would be donated to school programs and similar outreach. In addition to the unusual sight of children at a tech conference, there were also far more women at PyCon than I've ever seen at a tech conference, with booths occupied by PyLadies, Women Who Code, CodeChix, OpenHatch and others - all of whom are dedicated to increasing diversity in IT. That was awesome too.

So what about the technology itself? I learned that Python is a clean, elegant, powerful language based on some well-designed abstractions, with a rich ecosystem of libraries and tools. Python seems to satisfy both the "easy to learn" camp and the high end "power user" which is no mean feat. I was very impressed with how deeply baked iterators, generators and comprehensions are into the both the language and the "social norms" around building software - that sort of consistency (and flexibility) is important and it's one of the things I love about Clojure (the sequence abstraction). Several sessions I attended covered iterators and generators and a couple touched on coroutines (which seem to be implemented as generators that yield to each other, which is pretty slick). The idea of contexts is very powerful, similar in some ways to Clojure's structural macros, so that you can easily run code in, say, the "context" of an open file and have the file automatically closed for you. Another powerful aspect of Python which I liked was how tuples are used for multiple assignments, similar to destructuring in Clojure, and it was good to know that this is both idiomatic, fast and atomic. Another session covered Python's class support and showed how to create the simplest possible code needed yet be able to enhance it over time as requirements changed in ways that would not break early clients of the class: starting with public attributes and switching to implicit property getters and setters with changing how the class was used, using decorators (annotations).

I went to PyCon thinking Python was "just another scripting language" but I came back thinking that "Python is awesome!".

Tags: python

5 responses

  • 1 Anna // Mar 17, 2013 at 8:49 PM

    So glad to read you enjoyed PyCon. I love Python and I love the Python Community. And you are now a member. Thanks for joining us and making us even more awesome.
  • 2 Ryan Guill // Mar 18, 2013 at 5:48 AM

    I have also been trying to learn a new language every couple years and this past year I started looking into python - I haven't really written anything significant in it yet but I have had a lot of the same reaction to it. I am starting to look at it as a potential replacement for CF.

    The biggest problem I have found is the split in the community and code over 2.x vs 3.x - but it really isn't that big and is getting better all the time. I've only been really following and researching it for about 6 months and I have seen quite a few projects move to 3 in that time.

    There is also a sense that it can be slow at times, but I have not yet been able to really see that for myself or figure out "slow compared to what?" Slow compared to C, okay, no big deal, slow compared to other scripting languages, maybe more so. But it does seem that pypy will help some of that, and if you are using cpython and come across something you really need to be fast, you can always write C extensions. Plus the sense seems to be that while python is slow, usually you aren't IO bound in web apps anyway, so it doesn't matter.

    The biggest draw for me is that it comes pre-installed in every linux distribution I have found, plus pip and easy_install means that it is quite easy to bring up a new VM and get an app running fast and for no cost but time.
  • 3 Brandon Rhodes // Mar 21, 2013 at 9:04 PM

    Thank you for this encouraging account! This is exactly how I imagine the Python community, on a really good day, looking like to someone new.
  • 4 Sean Corfield // Mar 25, 2013 at 1:51 PM

    @Ryan, I guess I'm lucky starting out with Python 3.x and not having to go thru that transition (even tho' it might limit my choice of libraries for a while?). The same thing happened for me with Clojure: I started with 1.3.0 and avoided the painful transition from the 1.2 monolithic "contrib" library to the new-with-1.3.0 modular contrib ecosystem.

    @Anna, @Brandon, I'm looking forward to learning more from the Python community!
  • 5 Chris Webster // Apr 16, 2013 at 4:33 PM

    Python was my new language for 2012, although I haven't had a chance to do much serious work with it yet. Clojure is shaping up to be this year's new language for me, so your observations on Python and PyCon are interesting, because I sense a similar openness around both languages and their respective communities. Both seem to value simplicity, embrace newcomers and offer potentially powerful (if very different) alternatives to the mainstream. Above all they both seem to give back the sense of fun and exploration that can make programming such a great thing to get paid for doing. Mind you, FP makes Clojure rather more challenging for this newcomer, but that's part of the fun too. Hope you're enjoying your new language too.