At Colonel Duck we are constantly evolving our processes. We constantly try new things and if something works, we jump on it. This includes software, and I want to share with you some of the great software that we have found that really helps us when coding and building our own software. Some of it is free and some is commercial, but all of it is great! Here are my top 5 applications, and some bonus recommendations at the end from the rest of our Systems team.
DataGrip — An IDE for your database
Price: Free for students and teachers, £149 p/a for business users, £69 p/a for personal licenses, discounts for non-profits, startups, open-source projects and more.
Supports: Windows, Mac, linux
A multi-engine database environment, probably not the most exciting piece of software to start this post with, but DataGrip makes managing databases about as exciting as it could ever be.
It has a great looking UI as it’s made by the same people who make IntelliJ, the Java IDE. It supports many of the major relational databases, and does everything you would expect of a database front-end, as well as adding code-completion, exporting data in SQL format, CSV, JSON, XML to the clipboard or a file and many other things.
It’s a rather vast application but as soon as we started using it we saw an increase in productivity, it’s simply so much better and more full-featured than any other database tool I’ve used. It’s kind of like an IDE for your database. It’s robust and nice to look at, which helps too. There is a 30-day free trial, so go and download it!
Meld — For when merging goes wrong
Supports: Windows, Linux, MacOS available but not officially supported
No matter how clever your IDE, there are times when it just breaks down and cries. This seems to happen at particularly awkward times like when you have to merge two branches of code. You know those times where the IDE thinks you’ve changed a whole file when you’ve changed a few lines? It’s those times that Meld comes to the rescue.
It just does “diffing” better than other tools I’ve used, and it has a nice, bold, clear UI. I’ve never seen it fail to compare two files correctly due to line endings or unknown funk.
Clumsy — Break your network on purpose
Supports: Windows only ☹
We stumbled across this gem when we wanted to test the robustness of one of our communication protocols. It’s a great piece of software that enables you to simulate network problems. You can introduce latency, dropped packets, throttling, well you can see for yourself in the picture above. It’s such a simple idea and it’s so well executed, you can even apply the effects to specific IPs or protocols. Sadly it’s Windows only.
Cygwin — Make Windows good
Supports: Windows only ☹
Okay so my headline is a bit of a joke, it won’t really make Windows good, no software is that powerful (haha I made a funny) but Cygwin is pretty damn amazing. It gives Windows a bash command line (before Microsoft did it) and comes bundled with many great Linux tools. When you install it you can select which tools you want to include, and there are a LOT. It has its own folder structure that you can freely access in Windows so it’s almost like having a Linux virtual machine, that uses very few resources. I have barely scratched the surface of its potential, I used it to set up remote backups with Rsync (an amazing Linux command-line backup tool). A better explanation of what it does can be had from the Cygwin website:
- a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows.
- a DLL (cygwin1.dll) which provides substantial POSIX API functionality.“
Postman — See the internet like Neo
Price: Free for basic version
Supports: Windows, Mac, Linux
Another tool that I’ve found incredibly useful for specific things, but I have yet to utilise it fully. I would describe it as a way to experiment with APIs and web servers. It allows you to “see the internet like Neo” because you can see the raw text returned by web servers, before your browser turns them into a pretty web page. I’ve used it for seeing what JSON is being returned by an API so I can parse it correctly in my application. I’ve also used it for testing security protocols, as you can add headers and authentication to your outgoing requests. If you were really cool you could just surf the web with it and never use a browser again.
Some other software that we use and recommend (In no particular order).
- Netbeans — Some hate it, it’s not as pretty as IntelliJ, but it’s a free open-source Java IDE that has everything you really need for building Java applications.
- Putty — The best SSH client we have seen.
- Gyazo — Like the Windows snipping tool, but automatically uploads the file and copies a link to your clipboard, NEAT!
- FileZilla — Decent, free FTP client.
- Thunderbird— Our favourite email client, very flexible.
- Paint.net— Easy to use and powerful upgrade to Window’s paint.exe. Great for producing UI mockups.
- Git — The world-dominating version control solution.
- Handbrake — fuss-free video conversion.
- Hamachi — free VPN solution.
- RabbitMQ — Powerful, robust messaging server, great for making your applications talk to each other across the net.
- Slack — Like MSN messenger for 2018, great for sending code-snippets to colleagues.
- VirtualBox — Create a virtual computer inside your computer.
- Gource — Create animations of your code repository.
- Workflowy — Store your notes/plans/ideas in a tree structure of unlimited depth.