Thom Nichols


Technology is evolution outside the gene pool

Articles from the year 2010

Lightweight Data Types in Python

I've been working on a Python project where system resources are very limited; as a result, I'm concerned about object overhead.  Additionally, the nature of the code requires a lot of data types (e.g. objects that have no methods, just a lot of properties.)  Python's namedtuple class lends itself to this use case, but it's not quite as flexible as I'd like ...

Use Python's threading.Event for interruptable sleep

As I've mentioned before, python's lack of a Thread.interrupt() method makes writing lively concurrent programs sometimes difficult.  One of the most common scenarios is when you want to sleep() for a period of time.  Yes, sometimes polling is the answer.  There are times when you really want to say "wait for some period of time..."   Except what you almost always mean is "wait for some ...

Tweet your Project status with Maven and Groovy

I saw a tweet from Tim_Yates a while ago about keeping track of Groovy plugin releases.  Well, what if each plugin project had its own Twitter feed?

That's essentially what I've done for the HTTPBuilder project, my solution for making the complexities of HTTP both simple and accessible from Groovy.  HTTPBuilder automatically 'tweets' every time I publish a release as part of the build process. 

I ...

Tracelytics: Firebug for the Server Side

I saw an interesting talk at last night's Providence Geeks by a startup called Tracelytics.  Their product is something you could roughly call "Firebug for the server side."  Tracelytics provides software profiling across the entire server side of a request.  Now this isn't necessarily anything new (DynaTrace comes to mind) but what's interesting is that Tracelytics actually profiles the entire request path, from the web ...

Ubuntu looks even better on a MacBook Pro

I recently setup my macbook to dual-boot OS X and Linux, primarily to support OpenEmbedded development.  There's plenty of good documentation out there, but not all in one place.  So I decided to gather up what I found.

Note that these notes are for Ubuntu 10.04, Lucid Lynx.  I came across a lot of old documentation saying "you need to do X for Y to work ...