Tuesday, November 30, 2010

Lots of projects

I have been working on a number of projects lately, and have had the chance to play with several new technologies (new to me, in any case).

  • A Qt Facebook status updating application called Effing. I am writing it for the Nokia N900, but because it is Qt it runs on both my Linux Desktop and on the phone. And it should run fine on Windows or Mac as well, but I haven't tested it.
  • Using QML for the interface of the above project. QML lets you create fancy interfaces that are completely separate from the processing code of your application, and then the two can communicate using Qt's signal/slot mechanism. It enforces good separation of concerns, which leads to some better programming, and it lets you quickly create interfaces with all the flash and sparkle of the big-boys without really knowing anything about animation, threading, etc. And like the Qt framework that it is a part of, once you create it you can run it on anything (even in a standalone viewer).
  • Integrating Flot charts (a jQuery project) into a Django-based website. I am replacing some work that started with google charts. Google charts are nice, but Flot really is top-notch, and doesn't create a dependency on the google servers.
  • Some geospatial programming in Python using the geopy and shapely libraries. The geopy library includes Vincenty's formula for calculating distances between two points on Earth. I have implemented this formula in Java before, but (aside from the fact that someone else has already done the work) using this library is better than rewriting in Python because it (hopefully) implements it in C and should be much faster. The shapely library allowed me to take some spatial data (polygons defining geographic areas) and calculate the relationship of geographic points to those areas. It includes methods for handling manipulations such as convex hulls and buffers around the shapes. In all, a very successful use of Python to create a one-off data-processing job.
  • Integrating memcached with the above python processing job to cache data between test runs of the script.
  • Creating Debian packages for uploading to the Maemo repository for the Nokia N900. It seems insanely tedious, but once you work out the basic process and th slim set of files you need to maintain for each version, it is really quite simple. And it is really nice that I can create source packages directly on Ubuntu which are uploaded to the Maemo build system. Using the Qt Creator to build and test, and uploading source packages, I don't need the Scratchbox emulator at all.
Hopefully I can post some useful info on these items here—particularly on QML and Flot, which I am learning a great deal about.

No comments:

Post a Comment