http://seancorfield.github.io for newer blog posts." />

An Architect's View

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

An Architect's View

Entries Tagged as python

LightTable comes of age!

January 10, 2014 · 4 Comments

Early in 2012, Chris Granger - former Program Manager for Microsoft's Visual Studio product, Bay Area resident, and Clojure enthusiast - released a proof of concept video for something he called "LightTable", a radical rethinking of our traditional programming environments. Over the next few months, new videos appeared, followed by a KickStarter project...

...and gradually the vision of LightTable turned into a series of working software sketches that drew an ever-increasing number of users, taking advantage of LightTable's live code evaluation for Clojure, ClojureScript, JavaScript, and Python - despite its rough edges - until just the other day when LightTable reached a stage where Chris, and his new team, felt it was ready to be released to the public: LightTable became open source and it also sprouted an ecosystem of plugins.

LightTable is still young but it is already a usable editor with some very unique features. Over the last year I've kept dipping into LightTable to see how it is evolving but it's been too rough around the edges, and too feature poor, to use for anything more than small projects for short periods. It's always shown tremendous promise though so I knew it was only a matter of time...

...and with the new release, and the plugins available, today I was able to use LightTable for all of my editing needs (and I'm writing this blog post in it as well!). Today I've been exploring the Monger library for MongoDB. We've been a CongoMongo shop for a couple of years but there are all sorts of reasons why we're concerned about continuing to rely on that library (and I'm pretty much the de facto lead on the project!). LightTable's live evaluation and inline documentation make it really easy to explore and play with new libraries and to evaluate how a particular library will work with your code.

What's missing?

As I said, LightTable is still young. The plugins available so far are pretty basic. I'm an Emacs user so I'm used to full keyboard control, integrated Git, and a whole bunch of powerful packages. That said, LightTable is already doing well: the Emacs key bindings are usable (but still quirky), there's a great REPL experience, rainbow delimiters and the Claire plugin provides a good first step toward the ido-mode C-x C-f experience. Git integration is the biggest missing piece for me right now. Global find and replace. An integrated shell. And an IRC client would be icing on the cake.

So I can't leave Emacs behind yet. I doubt I'll be able to leave it behind for a while. But I expect I'll be able to use LightTable for more and more serious work going forward.

4 CommentsTags: clojure · javascript · programming · python

My First PyCon

March 17, 2013 · 5 Comments

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!".

5 CommentsTags: python

Free Online MongoDB Courses

December 20, 2012 · 1 Comment

I recently completed 10gen's MongoDB for Developers online course. It was the first time they had run the course so there were a few bumps in the road - and Superstorm Sandy closed 10gen's New York office for a while - but overall it went very smoothly, especially considering they had over 20,000 students sign up!

[Read more →]

1 CommentTags: mongodb · programming · python

Python came early

October 25, 2012 · 16 Comments

I just posted that I'll be learning Python in 2013 and going to PyCon. I hadn't actually intended to start doing Python until January - but then I signed up for 10gen's MongoDB for Developers course...

[Read more →]

16 CommentsTags: mongodb · python

Learn A New Language Every Year - 2013 is Python

October 23, 2012 · 17 Comments

I strongly agree with The Pragmatic Programmer's advice to learn a new language every year if you can and that was why I was recommending Seven Languages in Seven Weeks to anyone who would listen.

[Read more →]

17 CommentsTags: programming · python