SureshJoshi.com ▼

My List of Essential Programs and Tools


2013-07-23

One of my biggest frustrations with re-formatting a computer, or even, getting a new computer is the process of getting it back to where I need it to be for the sake of productivity.In general, you’d think this would be pretty simple - put on a few programs, copy backups of personal files and off you go… This would be true, but since I do lots of development, there are a few essential programs I like to have on my development machine (some of which need to be installed in certain orders to reduce the chance of anything screwing up).

I tried going the route of partitioning and imaging my state after setting up, but I found that there is usually some -big- change which makes that pointless between formattings or new machines. A new operating system, perhaps, or a new version of one of the big installs on my computer.

I’ve just recently decided to try Ninite (even though it’s been out forever and mentioned multiple times in Lifehacker). One nifty thing that I really like - other than the fact that it saves me from manually installing some of these programs (not that much of a time savings, but a nice perk, nonetheless) - is the URL that it spits out related to the installed programs.

What this means to me is that instead of using LogMeIn or TeamViewer to remote desktop over to a family member’s computer only to install basic software, I can just give them a link to an installer that will take care of itself… Fantastic! Here an example of the installation package I just used for one of my personal computers:

http://ninite.com/7zip-chrome-dropbox-foxit-keepass2-libreoffice-notepadplusplus-putty-python-skype-truecrypt-vlc-winmerge-winscp/

This will automatically prep those applications for a bundled installation, and I don’t really need to do a thing afterwards. As I will show below, Ninite is still missing a ton of applications I regularly install for development purposes, but it does knock off a lot of the ‘Always Install’ list. Additionally, I just sent in a request for SourceTree, Xmind, and CCleaner.

Anyways, just for the sake of putting it all down, here are some lists of programs and tools to install on new machines.

Essential Programs and Tools:

  • 7Zip - Has shell integration, lots of options, every archive format I’ve ever needed, very un-obtrusive otherwise. Open-source.
  • Box.net - Got 50GB free with my HP TouchPad. Has a monthly bandwidth limit (lame), and now supports 250MB files (still kinda lame). Their sync tool isn’t that great though.
  • Bullzip PDF
    • PDF writers are a flavour of the month for me. Right now it’s Bullzip PDF (although, the PDF export option that comes with most other software I use makes this -almost- obsolete).
  • CCleaner - Amazingly handy computer cleaner. Fixes registry issues, cleans up temporary files created from a long list of common applications.
  • Chrome
    • Hands down, my favourite browser. Chrome sync and built-in developer tools make this a winner (never mind the incredible speed and slickness too).
  • DropBox - Thanks to SpaceRace, I have more than 2.5GB of space, making DropBox actually useful in my life. Binary diff is what makes this a winner (I’ll make another post explaining what I mean here).
  • FileZilla - The basic Windows FTP functionality hasn’t been enough since I started uploading to my Dreamhost backup account… FileZilla stepped in. Nothing special, but a nice-to-have and open-source. Recently replaced by WinSCP.
  • FoxIt Reader
    • Love it. I usually love everything Adobe does, but their PDF readers have just been bloated beyond words for me. Maybe I’ll give Adobe Reader 12 a shot whenever it comes out… Until then, FoxIt is easily my go-to.
  • KeePass - Super handy when you’re a bit of a security nut, like me… Manages all my passwords, auto-completes, and is not stored in the cloud (I’m so unnecessarily paranoid about cloud everything with respect to privacy and security). Open-source.
  • LibreOffice - An open source equivalent to Microsoft Office, which isn’t as good as 2010 or later, but better than Office 2003. I prefer this over OpenOffice (especially since OpenOffice stopped being developed for a while, at some point).
  • Microsoft Security Essentials
    • A great malware scanner. Free. Unobtrusive and often records very high on the ‘Top Scanners’ lists). Most of the other free anti-malware software are extremely bloated.
  • Notepad++ - Ever since I found Notepad++, I stopped wasting my time with Notepad.exe. This is an impromptu IDE, XML reader, HTML editor, etc…
  • Putty - A free terminal emulator. A bit of a Swiss-army knife for me (I think I have used every connection type at some point or another).
  • Truecrypt - Open-source encryption tool. Back to my security and paranoia. I don’t put important stuff on other people’s servers unless they’re encrypted on my side. I’ve combined Truecrypt and Dropbox for secure, cloud storage… In reality, it’s probably all piece of mind, rather than actual security that I need.
  • VirtualBox
    • For all my virtualization needs… No reason specifically, but I prefer it over VMWare Player (although, they’re close enough that it doesn’t matter one way or the other). At any given time, I have a few Linux distros available to play around with, and a shared folder so that everything can get access to everything. My latest distro of choice is CrunchBang (#!)
  • WinMerge - My preferred merge/comparison tool. I use this for all my diffs, be it in programming contexts, or not.
  • Xmind - For mind-mapping. I moved to this from FreeMind/FreePlane. It’s a heavier install and a bit bloated, but just so much nicer all around (both to look at, and to use).

Optional Programs and Tools:

I don’t use these tools in my day-to-day life, but they fill a need. I would prefer to have portable versions of them if possible, to avoid cluttering up my computer’s registry. I might investigate using these with Sandboxie actually…

  • Microsoft Expression Studio 4
    • I used this for those occasional times I needed to do graphics work, use a web editor, etc… Unfortunately, Microsoft gave up on this (except for Blend, to design UIs). I’ve replaced this with Inkscape and Gimp (again, portable versions)
  • Process Hacker - A suped-up process monitor, that gives you much more insight than the built-in Windows tools.
  • Syncfusion Metro Studio
    • They offer free Metro icons. I heart Metro, and I heart free… This decision was pretty straightforward.
  • WinCDEmu - Open-source tool to mount disk images. Really good shell integration. Very unobtrusive. I only use this when I need to mount and install ISOs, which is pretty infrequently.
  • yEd - A really handy tool to create diagrams, flowcharts, graphs, etc… I can’t get enough of this when making my architecture diagrams.

Development-oriented Programs and Tools:

  • Boost - I was a huge fan of the Boost libraries before C++11 came around. Since I used Boost primarily for its threading and memory libraries, I don’t use it much anymore. The installation and compilation from scratch is a bit of a pain, but there is some really great stuff in here.
  • CMake - A cross-platform build tool. Useful for managing the build process across multiple OSes… I typically use it for out-of-source builds.
  • Debugging Tools for Windows (both x32, x64) - Exactly what it sounds like. Might be bundled with one of the Microsoft SDKs as well.
  • Dependency Walker - Builds a tree of DLL dependencies. Useful for finding out which DLLs you’re missing. Also would be nice to have shell integration.
  • dotPeek - A tool to ‘reverse engineer’ a DLL which hasn’t been obfuscated. Replaced .NET Reflector when it stopped being free.
  • Doxygen - A tool to help create documentation for software. Installed with Graphviz to make slick call graphs.
  • NetBalancer - Allows one to play around with network speeds and throttle certain programs independently of others. Be very careful when uninstalling, as the driver will still throttle, unless it’s shut off before uninstallation.
  • Python - If I need to script, prototype, or go cross-platform, but I don’t want the coding overhead of C++, I go right to Python. I integrate this with Visual Studio using PyTools, or I use PyCharm on my Mac (JetBrains == Incredible… I’m such a JetBrains groupie). Also, I’m still a Python 2.7 guy, because I don’t think Python 3 has the library support just yet to really be useful to me.
  • Qt - Cross-platform GUI toolkit (C++ mostly). Has bindings for Python (PySide and PyQt) and is dual-licensed. I really fought with Qt for a while, preferring wxWidgets, but especially since Qt5 - I’m hooked… I can’t believe I had issues with Qt before.
  • SourceTree - This is on the radar (I use this on my Mac). Once v1.0 comes out with Hg support, this will easily replace TortoiseHg. Since v1.0 came out a couple of weeks ago, this has become my new source control of choice. Really slick and links to BitBucket extremely well (both Atlassian products, so it makes sense). This also allows me to use the same source control tool on my Windows and Mac boxes.
  • SQL Server 2012
    • Recently, I’ve done a lot of data warehousing, and use SSIS extensively. I’m not a big-time SQL guy, but after a year of making a data warehouse from scratch, I’m finally seeing the light.
  • Sysinternals - All around useful suite to have for development.
  • TortoiseHg - My new source control of choice. Similar to TortoiseSvn, it has Windows shell-integration. All around solid source control choice.
  • TortoiseSvn - SVN used to be my source control of choice, and I still have some SVN repositories. Tortoise versions have shell-integration, which is extremely useful.
  • Unit test frameworks - There are a necessity, and usually crop up on a project by project basis. For .NET-based testing, I’ve moved to xUnit.net from NUnit and MSTest - as it feels a bit leaner and cleaner (but frankly, any unit tests are better than none). For C++, I used to import cppUnit and associated headers/libraries, but now use Visual Studio’s built-in native unit testing environment. Previously, I also used VS’s managed unit testing platform to test native code… It’s a bit of a pain, but possible.
  • Visual Studio 2012
    • I love Visual Studio (especially 2012) and I think it’s an amazing development environment. As much as I love open-source software, after having used some of the alternatives, I have to concede that they don’t hold a candle to VS. At least, VS2012… I like VS2010 as well. VS2008 was definitely in need of improvement, and I preferred using Code::Blocks over it.
  • WAMP - A Windows-based web development environment. As I’ve written about before, I use this to host WordPress instances when doing local development. Most of my other development tools come with built-in servers, so this one is progressively getting less useful.

Programs and Tools in VMs just to play around with

  • Haskell
    • I’m trying to hone my functional programming skills. I debate between trying my hand at F#, or putting more effort into Haskell.
  • Erlang - Much like Haskell, I think this is a good language to learn. I don’t think it will ever help me get a job, but I have some ideas about projects that would benefit from Erlang’s architecture. Just need to find a free year or so to learn and implement these projects (quite large-scale ones, unfortunately).

Feature Photo credit: Great Beyond / Foter / CC BY-NC-SA