As I am sure most of you are aware by now, I’m a keen pilot, and as I’m sure most of you can work out, knowing what the weather is doing is kinda critical.

My club operates a weather station, and during the tower’s operating hours, the data is uploaded to the internet. I thought it’d be pretty cool if I could pull this data in a machine readable form in order to be able to some coding using the sensor data.

After some research, I discovered that the weather station software outputs the raw data in a text file, which, with a little bit of coding, you can parse and extract useful data. I dug up the specification for the file from some old documentation I found on the web (to save you searching, I’ve stuck the file format spec up on gist for convenience), and using this I was able to write a little tool to parse the file and output values requested in a highly customisable way.

Usage

Pass the code the URL of your clientsraw.txt and optionally specify a format string (it will default to outputting some basic useful weather information).

python wd-parse.py -u http://example.com/path/to/clientraw.txt [-o "formatted list of output"]

I find this useful, not least because it provides me with a quick way of telling if it’s a flyable day before getting into the car. But of course the real power of this tool is being able to hook it into other things, for example, you could graph weather over time using a tool like munin, output a METAR, or even cross reference the wind direction and runway orientation and calculate crosswind components.

All of these I plan to do if I get the time!

» Visit the project on Github…

Helping out a friend and colleague, as well as stretching my programming muscles with a language I don’t often get to play with these days, I’d like to introduce LoveNote Server.

LoveNote is a simple abstract message queue server which lets you pass an message payload to one of a pool of endpoints and receive a webhook callback with the result. You can specify that this message be delivered ASAP, but crucially you can also specify a date and time for the delivery.

How it works

It works by POSTing a bit of JSON to a webhook provided by the server that contains a delivery time, an array of servers to try, the payload and an optional callback URL.

When received by the server, the message is queued. When the delivery time is reached the list of servers is randomised and the payload POSTed in sequence until all servers fail, or delivery is achieved. If a callback is specified, a report is then POSTed back to the callback as a JSON blob.

Why this is useful

Simply, this provides a common message passing framework with a unified event driven API, simplifying your architecture somewhat. It is especially handy if you wanted a message to be delivered some time in the future, for example for a credit card renewal or email reminder, where beforehand you’d probably have to write a dedicated server process.

All you now have to do is listen to webhook pings.

What still needs to be done

This is an early version and was written to help out a friend with a specific need, and although I’ve gone on to use it in a couple of client projects, there are still a fair amount of enhancements that could be made.

Some obvious ones are:

  • Message IDs: Currently messages in the queue are anonymous. It’d be handy to have message IDs since this would allow more sophisticated process control of scheduled messages.
  • Cancel Control: Basic message control to cancel future queued messages.
  • Make message queues persistent: Currently the queue is held in memory, which is simple and fast, but far from ideal. We should periodically flush the queue to a persistent storage so that no messages are lost if a server goes down.

Get involved and send your pull requests to the usual place!

» Visit the project on Github…

I got bored one evening, so I hacked together the beginnings of an API library for latakoo Flight. Currently it’s available in three four tasty flavours – PHP, Python, Ruby and C# .NET / Mono.

The libraries are minimal but functional; they let you perform both anonymous and authenticated queries against the latakoo API endpoint, but I’ve only had time to add method wrappers for a few of api calls. Feel free to fork the project to help flesh these out!

Hopefully these libraries will make it easier to get the power of latakoo behind your project, and be sure to check out Latakoo to find out how to share video on the Internet.

Happy hacking!

» API Documentation
» Github Project Page