It’s pretty common when doing Java development to need mutiple versions installed alongside each other. With Brew and Jenv, switching Java versions between projects becomes easy.
I was recently given the task of modernising a simple internal site’s front-end. It was built using plain hand-written HTML, CSS and JavaScript, with all layouts being done using HTML tables.
If you’ve ever stayed at Center Parcs, you’ll probably have noticed that the heating is configured to drop down to 14 °C every few hours.
One part of doing C++ the right way is using automatic variables for everything you possibly can. However at some point in your C++ endeavours, you’re likely to be using a C API of some sort, with explicit method calls to manage lifecycles, which can make this more difficult. My work at Canonical has involved talking to lots of these sorts of APIs, many of them based on GNOME’s Glib. To make life easier, I have created a set of easy to use wrappers to manage the lifecycle Glib and GObject objects.
DBus is the most common RPC middleware used in Linux desktop shell development. Unfortunately it does not provide much support for testing services using it. I created libqtdbustest and libqtdbusmock to fill this gap, for Qt/C++ based services, at least.
Having tried to fall in love with Meld and KDiff3, I’ve eventually gone back to my favourite merge tool, TortoiseMerge. It’s actually very straightforward to get running on Linux.
Over the last few years I have become a much bigger fan of dynamic languages like Ruby and Python. Today I was thinking about one of my old gripes about dynamic languages, which was a lack of method overloading.