Every year I discover one or two tools that become a standard part of my developer toolkit. However, the universe has been especially generous this year, with five new tools becoming an essential part of my day-to-day developer life.
Early this year I moved away from Zend Framework and started re-writing a major application in a new framework. This move finally prompted me to start the migration from Subversion to Git. After evaluating several tools for viewing Git repositories, I settled on GitX. Whilst
subgit under Eclipse/Zend Studio works well for most of the basic operations, I prefer to do trickier operations in GitX, which seems more intuitive and less prone to blowing up. Its all down to personal preference I suppose, but for me, GitX rocks.
Although I started my new project in Git and was able to move several small projects over quite quickly by simply creating new repos and ditching the revision history, there was always that nagging feeling that I would some day need to migrate the seven years worth of revision history that I had in my company’s main Subversion repository. I tried several manual approaches first but just a few weeks ago I discovered SubGit. OMG! This tool is amazing! Once you’ve created the small text file to map Subversion user names to Git user names, you can literally convert an entire Subversion repository with a single command, eg:
subgit import --svn-url "https://path.to/svn/repo" --authors-file authors-transform.txt name_of_new_repo.git
SubGit worked flawlessly for me and the result was just as good, if not better, then the manual approach that I had tried previously. The creators of SubGit have done a seriously good job!
This tool isn’t exactly new, but I only just discovered it recently. Whilst it is basically just a menu widget that displays CPU usage, memory usage, network activity and disk activity, that description does not do MenuMeters justice at all. The displays are very clear, very accurate and there is a great range of very sensible options. This tool is freeware but I was so impressed I made a small donation.
Up until recently, all of the files belonging to my current employer were stored on a central file server at head office. This obviously worked well for the staff at head office, but not so well for our remote staff. Every few months I would investigate DropBox and the other cloud storage providers to see if they had a solution that would provide secure, distributed file storage at a reasonable cost. Unfortunately, all of the commercial plans that I could find were fairly expensive. I could have literally bought a new file server every two years with the fees we would have shelled out on cloud file storage.
And then one day I discovered Bit Torrent Sync, or btsync. The name says it all really. It uses the Bit Torrent protocols to synchronise files between multiple computers. When sharing a folder you create a key and in order for somebody else to synchronise that folder, they need that key. In practice it works as well as DropBox or any other cloud-based file sharing service, except that your files are not stored on a central server, which in my opinion is a benefit, as I don’t particularly want my employer’s entire intellectual property sitting on a server beyond my control, owned by some company that may or may not be affiliated with our competitors, in another country that may or may not have strong data protection laws. So unless you really need or want access to your files via a browser, Bit Torrent Sync works just fine. Although it is only in beta at the moment, I have been using it to synchronise about 40GB of company files between ten different users in several different cities and it has worked like a dream. Bit Torrent Sync is definitely the most awesome and least talked about tool of 2013!
For the last few years I have been using Zend Framework 1 for my web apps. Last year I attended the first public training course on Zend Framework 2 and even went to ZendCon and attended most of the ZF2 talks. Unfortunately, the difficulty of working with Zend Framework 2, despite the time and money I had invested in learning it, forced me to look for an alternative framework.
It honestly didn’t take long to find and settle on Laravel. I spent a few weeks writing a small online survey application in Laravel 3 that was successfully used by several hundred people in February. Continuing on from that success I upgraded the code to Laravel 4, after which I ran several larger surveys, including a 5,000 person survey in October. Working with Laravel during this period was awesome. Although I did hit several gotchas, it was easy to find answers on the Laravel forum and StackOverflow and the one time I did hit a critical issue with version 4.1 it was fixed within 12 hours of logging the bug on GitHub.
Zend Framework will always have its die hard fans, but I would be very surprised if anybody would go back to Zend Framework after writing a small application in Laravel. And before I get a raft of comments from those die hards, let me say that you cannot evaluate a framework by writing a five minute “Hello World” application or watching a couple of tutorials. You have to actually develop a real application, deploy it for real users and then support it. Only then will you get the full experience of the framework in terms of design, development, configuration, deployment, bug resolution, etc. And to further qualify my comments I’m referring to straight up web applications, not web services, mobile back-ends, or anything like that. Just plain old web apps, like what 90% of web developers are writing 90% of the time.
All in all its been a great year in devland and I can’t wait for 2014 to roll around so that I can convert even more of my old ZF code to Laravel!