Lately I have been really interested in participating in some of the programming related massive open online courses (MOOCs) offered by Coursera. Coursera offers a really great platform for learning; providing multiple ways to test students’ understanding of the material and also most importantly a large community of like minded people in the Coursera discussion forums providing invaluable help to others.

In the modern world there are rarely any stand alone applications anymore. Everything is connected. Whether it be an android application calling a restful api or a webpage connecting to thousands of internet users. When working with large systems there is always a need for communication between connected components. Web services are often a great way to communicate with each other and allow a single restful api to control all componenets. However, sometimes we need faster communication between components. This is needed so often that it seems weird that everytime it is needed people seem to roll their own, ussualy some some awkward messaging format using a custom wrapper around the socket api (more often than not an OS dependent one).

One of the main reasons c++ is chosen as a language for an application is so that it can squeeze every last bit of performance out of your computer. With a networked application this quest for performance is combined with the network’s performance. A lot of the time we have no control over the network that the application is on and therefore our only control over this performance factor is the amount of data we are sending across it. Binary message formats allow us to compress data much more efficiently than other formats and therefore are a good match to c++. Below are a couple of code examples, using binary message formats in c++.

In each of the examples below I have used the address example from the previous article as an example xml file to be read in and parsed (as is common with xml, especially configuration files), create an xml message from scratch, query the xml message and also output as xml to a stream or file. I have separated out the querying into an outputAddress function that will be used throughout the example.

In each of the examples below I have tried to show you most of the different aspects of using json, i.e. creating json messages from scratch, outputting json, parsing json and querying json objects. The example json message used contains most of the features that a json message could contain. Querying the json object has been extracted into an output function which is used multiple times in each example to show that everything is working correctly.

With ever increasing data volumes being transfered in networks around the world, the type data formats used to pass information around has obviously been a heavily discussed topic. It usually comes down to three main factors: data compression, speed of encoding/decoding and how easy it is to read and debug. In this post I am going to talk about some of the most commonly used message formats; their advantages and disadvantages, including my opinions, and links to some other blog posts with examples of using them with c++.

Working with networking applications can be quite hard to troubleshoot sometimes. Wireshark is an amazingly helpful tool to debug problems, however sometimes it just can’t do exactly what you want it to do. Libraries are available in common scripting libraries such as Python and Ruby to quickly create scripts that can analyse network traffic in a specific way.

I work in a development team that is very heavily invested in ruby on rails for their webapps and that’s where most of the teams experience lies with web development. But being a python guy I was quite keen to show everyone some Django development. So I used my latest project repowatcher as an example for some Django code, and hopefully get more people excited about Python and Django, plus it’s always useful to see how abother language/framework does things differently.

So after working on commercial software for a few years, I really fancied getting my feet wet in some open source software again, I haven’t had too much time for this, but when I found out my favorite cinema had their own API I couldn’t resist making a wrapper for it.

It only took a couple of hours but it was quite fun to make. I tried to make up for missing information supplied by the API by introducing some simple hacks to get the information a different way. I’ll go through my methodology in this blog post as well as some simple use cases. So here it is the Cineworld API Wrapper written in Python

There are many options for GUI programming with Python. I’ll go over my favorite, and generally most well known frameworks and show you some simple programs with each one. In fact these aren’t really Python frameworks but actually Python bindings for already established c/c++ libraries. So the three options are PyQt/PySide, wxPython and PyGTK with their respective c++ frameworks Qt, wxWidgets and GTK+. I’ll go over the differences of PyQt and PySide, I mention both since PyQt is more mature than PySide but has a more restrictive license, also PySide has just moved out of beta with its version 1 release, and according to its creators, the company behind the original Qt, it is ready for production level code.