Skip to main content

Top 100 Productivity Tools

O.k., I admit it - I don't know if there are a hundred tools here but there are certainly a bunch!

I am always on the look-out for tools to improve and enhance my personal productivity as well as organizational productivity. Automation and semi-automation are great ways to increase productivity, either by reducing or eliminating repetitive, error-prone tasks.

So, when people ask me what tool to use, I usually have a few in mind.  This page collects tools across multiple operating systems, categorized by their most common use.  I list tools that I personally use and have found useful. Naturally, your mileage may vary.  This does not constitute an endorsement by my employer.

I use Windows 7 and 10 computers predominantly at work and at home. My PhD research is conducted on both Windows 7 and Linux (Centos and Ubuntu).  I'm an old-school Unix developer as well (Ultrix, AIX, and SunOS anyone?)

You'll find that most of my favorite tools are on Windows. That's because it's my daily work environment. This list was inspired (but not cloned) from Scott Hanselman's list. He has his favorites and I have mine. As Scott says, "No one paid money to be on this list and no money is accepted to be on this list."  Another (much shorter list) is Ed Bott's list at http://www.zdnet.com/article/my-10-favorite-windows-programs-of-all-time/

Please note: this does not mean that other tools are not fine tools. Feel free to suggest new ones to me. I really enjoy trying new and improved software.  These are just tools that have served me well in the past.


Disclaimer: This does not constitute an endorsement from my employer.

As always, comply with your employer's rules about installing software on work computers.

Legend:
  • $ = purchase
  • free = free to use (may not be open source)
  • X = cross platform
  • D = donation-ware
  • U = unix platforms (linux, freebsd, solaris, etc.)
  • L = linux only
  • Win = windows only
  • FLOSS = free, libre open source software (free to use and open source)

Application Lifecycle Management (aka "Forges")


ALM tools include some combination of source control, build management, package management, defect tracking, and project management  (depending on the tool.)  Some even have code browsing tools, community management, code review management, and news forums.  If you're managing more than one software system, a properly configured and administered ALM can help ensure that there is consistency of management across all of your systems.  These are enterprise class systems.

Most are also available in SaaS (Cloud-based services) if you would prefer not to have to manage them. If your security and privacy tolerance is high enough, these can be attractive and productive solutions.

GitHub ($,Free) - This is is a GIT only repository, probably the most popular one on the planet at this time. It is free to use for public repositories but you must pay for private repositories.  I use it for collaboration on work projects.

BitBucket ($,Free) - this GIT and Mercurial (aka HG) based SaaS repository allows unlimited public and private repositories. Very handy.  It is now owned by Atlassian.  Using this for grad school projects and publishing my open source projects.

I am also using self-hosted Fossil running on my HostGator account for a grad school project. This was very easy to do and has been working great for me for almost 4 years now.

Archival and Compression tools

Archival tools allow you to grab a bunch of files and store them in a single file. This is convenience for sharing with others or making a quick backup copy.  All modern tools (anything from this century) also include compression. Many include encryption.

PowerArchiver 2013 (Win,$)  Yes, you  can use 7-Zip and I do on other machines but on my primary, I love the convenience and power of PowerArchiver. In particular, I like the built-in ability to transfer files using FTP. This one opens ZIP, RAR, TAR, and other popular archival formats.

7-Zip (Win, Free) - This is the tool I install on other computers. PowerArchiver is my go-to on my personal machines.

InfoZip (X,free)- this is a set of command line tools for zipping and  unzipping. I have used them for years so while PowerArchiver or 7-Zip might be better, this is what I'm used to when I'm doing automation work.

UPX (X, free) - this is an executable compression tool.  What's that? It makes your programs smaller by compressing them and uncompressing them only on execution.  It's transparent from your perspective but the files take less space on disk.  There's basically no reason not to use it.  I suppose some programs may be incompatible so make a copy before deploying.  You can also put this in your continuous integration toolchain and/or taskrunners and compress .EXEs as part of your build.


Build tools and Task Runners

Build tools are programs that help compile and package other programs. I have tried others such as aap, Bell Labs nmake, Apache ANT, and Perforce JAM. I simply prefer the ones below. At this point, the only languages that I use requiring a build tool are Java, JavaScript/TypeScript, and C++. Build tools come in two basic flavors - declarative or procedural. The declarative ones attempt to build a graph of what file depends on what other set of files. Then it builds everything from start to finish.  A procedural tool simply compiles one file after another in the sequence you specify.
The modern trend is to call these Task Runners not build tools because they may be used for languages that don't require compilation, like JavaScript or Python. However, there are tasks like transpiling (converting from one interpreted language to another) LESS or SASS, minification of HTML or JS files, or constructing installation packages which still need to be performed.  Task Runners do this for you. 

One of the problems is that tools such as NodeJS and npmjs automatically create DOS-style batch files on Windows.  Hopefully they will move to PowerShell which is somewhat more rational.

Apache Maven (X,FLOSS) - I've switched from ANT to Maven for my Java builds.  It is still a bit of a "magic" system because I find it is not particularly easy to understand exactly what it is doing sometimes.  Is there a Maven debugger?  Moving to Gradle would make sense if I programmed Java on larger projects. I have found the "Apache Maven 2 - effective implementation" book to be very helpful.

Gulp (X, FLOSS) - I've transitioned to Gulp for my JavaScript, CoffeeScript, and TypeScript code and I'm never going back to Grunt.  Gulp is code over configuration. Huh?  Yes, you use code to describe how to build your code.  And, surprise, it's wonderful.   It has good documentation and there are only 5 Gulp functions to learn.  Take that Grunt!  However, I will say that it requires more understanding of NodeJs to operate. But at least you're using JavaScript as the language, not a new Domain Specific Language (DSL).

GNU Make (U,FLOSS) - still my favorite for quick and dirty C or C++ programs. However, these are certainly becoming less and less frequent. I'm looking to SCons to replace this.

SCons (X,FLOSS) - Python based build tool, this one has really attracted my interest. Clean, simple syntax and seems to work in direct manner. Does require Python to be installed first.

Collaboration Tools

Google Drive (X,free) - I use Google docs heavily for personal, never for work. It is a great environment for collaborative editing as well. This comes in handy for group projects at school.  Now that it is Javascript extensible, I expected to see a host of excellent add-ons.

Putty (Win,FLOSS) - this is my go-to SSH program on Windows.  Works great with Linux servers. The one problem I find is that it stores profiles in the registry. This makes it hard to move that info around to other machines. So I'm experimenting with another one (I'm not listing it yet).  It is also possible that one of the "portable" putty programs also has this fixed but I haven't tried one yet. Update: there is indeed a version of putty that stores this information in files in addition to the registry.

TeamViewer(X,free for non-commercial) - teamviewer is the best desktop sharing program I've found. It works very well on Windows, not quite as perfectly on Linux but all-in-all, the best.

Command Lines or Shells

When you program and simply want to control a computer to its fullest, the command line is the place to be.  


JPSoft Take Command (Win,$) - my favorite command shell.  Autocompletion rocks, great additions to the DOS batch language, awesome interactive features like ESET  (think interactive SET command) and control-pgup for command history. I've been using this and its ancestors 4DOS, 4OS2, and 4NT for as long as I can remember.

JPSoft TCC (Win,Free)- this is a free subset of take command. This is what goes on non-development machines in my house.

Powershell (Win,Free)- I play with it but it has not taken over (no pun intended) from Take Command.  Perhaps someday when the interactive features catch up.  I think Linux commands could benefit from borrowing the object oriented nature of Powershell and its integration with .NET.  There could also very easily be a Java-based shell that borrows from PowerShell's concept of cmdlets. Also the language is pretty nice except for the gratuitous use of odd-ball operators. A simpler core with object.method for everything else would have been more consistent and easier to learn.  I would think that would be a priority for any language for casual users.
 At this point, unless you have need for deep Windows control (WMI, .NET, etc.), I find using PERL is more portable and fairly equivalent.

KornShell (L,FLOSS) - I am an old-school KornShell CLI user as well as programmer.  I've almost entirely switched to Bash at this point, which has easier to use command line history and keyboard remapping.

Bash for Windows (Win, Free) - this is Microsoft's attempt at integrating Linux command line tools into Windows. Works pretty well.

Continuous Integration tools

These tools are used to manage the builds themselves, by performing all of the necessary steps.  Typically web-based, they can control and report on dozens of builds.  The CI tool does not actually perform the build. It kicks off each build and reports on the success or failure.  It can also execute scripts or plugins to transfer the build results to other places.  Most of the tools include a web-based interface to see the progress of the system.

I would like to see a "personal CI/CD server".  Gulp can be used to watch files and trigger automatic builds and such but that setup is not trivial.  

Jenkins (X,FLOSS) - practically  a pseudonym for continuous integration.  Good stuff.  Not without issues but has hundreds of plugins. Very easy to setup. I would be open to replacing it with something better.

Database Engines

These are all database engines that I'm using in one way or another.  Listed in random order.

Level DB(U,FLOSS) - Google's key value store.Just started playing with this.  Compare to Redis below.

Mongo DB (X, FLOSS)- document oriented data store. Straightforward.

SQLITE (X, FLOSS) - the standard for single-user embedded zero maintenance relational databases, particularly for C/C++ code.  Same principal author as Fossil.  Like they say, this target for this is configuration files and small data files. it is not designed to replace a large multi-user database. I enjoy using it because it is so straightforward. Like Fossil, it is a single binary executable. No DDLs to install, no registry hacks.

JavaDB / Apache Derby (X, FLOSS)- Java's answer to sqlite with even more features.  Has both embedded and standalone versions.  Could be considered more powerful. However, it does increase complexity compared to SQLite's single executable simplicity.

Oracle RDBMS(X,$) - when you need heavy duty and full PL/SQL. Amazing amounts of power. Amazing amounts of complexity.  IBM DB2 now claims to have PL/SQL support but only in their paid product (this is short-sighted in my opinion).  At least Oracle's developer editions still provide the full power.

PostgreSQL (X,FLOSS) - when you need PL/SQL but don't want to pay for Oracle.  DB2 supposedly provides PL/SQL support now but only in the paid version. It appears (last I checked) that DB2 Express did not include PL/SQL support.

Redis(X,FLOSS) - an easy to use, easy to install key value (or key-data structure?) store database. A pleasure to use.


MariaDB(X,FLOSS) - a better alternative to mySql. I still prefer PostgreSQL because of PL/SQL support.

Database tools

HeidiSQL(Win,free) - a handy GUI tool for managing MySQL databases.

Oracle SQL Developer (X,free) - simply wonderful tool for writing and debugging Oracle PL/SQL. 

Defect and Issue Management

A defect tracking system is an essential part of software development and maintenance.  You should never write one - there are many to choose from on the market and even a paid-product will save you money over writing one.   A defect tracking system is a great way to manage work and maintain metrics on your product, if you set it up correctly and maintain good quality.  Don't allow users (end-users or developers) to enter invalid, incorrect, or incomplete data.  It only takes a few minutes to type a quality defect or feature request report.

MantisBT (X,FLOSS) - This is my favorite for ease of use and completeness.  

HP Quality Center (X,$) - another excellent, enterprise class defect tracker. However, it's been years since I used it daily.

Jira (X,$) - another excellent defect tracker. Enterprise class product. Phenomenally configurable.


For lightweight work, I find the built-in tracker in Fossil is sufficient for my needs.

Disk and Filesystem Utilities

imdisk(Win, Free) - mount an .ISO file (disk image) into virtual memory.

rufus (Win, free) - Open Source tool to burn .ISO files to USB flash sticks.  There are many programs in this category. I've also used Universal USB Installer.  This one has a portable version, so I keep a copy in my "/bin" directory.


Diagramming and Visualization


Railroad Diagram Generator (web,free) - written by Gunther Rademarcher. An amazing tool for generating syntax diagrams (also known as Railroad Diagrams).

Microsoft Visio (Win, $) - on the desktop, this is a powerful tool.

ATT GraphViz(free) - generate vector graphs from data.  Fantastic tool. Indispensible for research and data driven visualization.  Generate your output in GraphViz form then run GraphViz to graph it. 

D3 (free) - another great visualization tool, but requires significantly more programming than GraphViz.

EBooks and ePublication


I own several Amazon Kindle devices and I'm happy with all of them. But sometimes, I prefer to read on my PC. Go figure!

Kindle Cloud Reader (X,free) - this is the Amazon web-based reader. Works great on any platform.

Calibre (X, free) - this is my ebook reader when running disconnected or to read non-Amazon ePubs.

Foxit PDF Reader(Win,L,Free) - not only is this a really fast PDF viewer, but it has awesome features like typewriter and form fill-in and save capabilities that Adobe does not. A long time favorite and lifesaver. The annotation features alone make it worth having.  The Linux version is not as full featured as the Windows version.

Kiwix (X, free) - This is an offline ebook reader, specifically for Wikipedia (and other Wikimedia). It automates the download and installation of the media.  Wonderful tool!  Super handy when you're on a cruise and you want to look up information. Be aware - it is based on Bittorrent in some fashion so you may be uploading data to other peer to peer machines.

Emulation and Simulation

I still run the occasional MSDOS/PCDOS program (though mostly for nostalgia!)

DosBox(Win,D) - This is the tool I use to run them. It has worked very well for me.

DosEmu(L,free) - For dos programs on Linux, use DosEmu.

File Synchronization, Storage Backup, and Recovery utilities

Backup is an essential task.  Be aware that most cloud based backup systems don't keep deleted files around very long. Read the fine print.  I supplement with a local backup system that keeps files as long as I choose.


AllwaySync (Win, free or $) - the best file sync utility on Windows that I have found.  I use this to synchronize folders on a hard-drive with folders on USB sticks or external drives or even LAN drives ("shares"). Unusual UI but effective.  The free version is limited but it's a high number of files. I paid for this problem gladly given how much I've used it.

CloudBerry (Win, $) - so far, this has been the most flexible cloud drive mounting program I've found.  Still early in evaluation but seems to support vast number of providers and has lots of goodies.

JPSoft's CascadePoint (Win, free)- an unsupported tool but that does a great job of copying many version of files. Not the same as a source control system - more like a continuous backup system.  I wish the company would just open source it since they decided not to sell it any more.

Mozy($) - I had been using Mozy for about four years. It has a particularly nice enterprise or business mode where you can see which employees have conducted backups and which have not.  I would have continued using it if the client software was more reliable. I would often find it hung and needing to be restarted. Still, I liked it alot. No longer using it.

SpiderOak($) - I switched to Spideroak in 2015.  Storage is 10x cheaper than Mozy (though I don't believe it has the enterprise capabilities that Mozy has).  I'm hoping that the client is more reliable than Mozy's, which very occasionally would hang and have to be restarted. Update: I no longer use it.

Microsoft Robocopy (Win, free) - Microsoft's robocopy tool is a command line only tool but for Windows sysadmins, it is a godsend.  It competes (if you will) with Linux rsync but in a different way.  There are 3rd party GUIs if you want a better way than remembering a myriad of command line parameters.

Stellar Phoenix file recovery ($)- I've had to use this once but it worked like a champ. Alternatives did not (including Spinrite below). Just my one-time experience to go on.  But this is what I'd use again if I had to.

Spinrite 6($) - for exercising and recovering your disks.  I recently (2015) recovered a non-working drive with this tool.   Until now, I had had mixed results but I'm feeling more positive about it.  Has plenty of testimonials. I listen to Steve Gibson's SecurityNow podcast religiously so I know he knows his stuff.

EaseUS Todo Backup (Win, $ or free) - This is my multi-generation backup tool.  I finally bit the bullet and got something local (not cloud based).

File Comparison

Comparing files and directories of files is a common task.  Tip: Need to make sure your tool can do 3 way merge and can handle Unicode.  Many do not.

Beyond Compare (Win,$)  - still my favorite for file comparison.

DiffMerge (Win,free) - a new contender, from the SourceGear folks who did a new DVCS called Veracity. They also produce Vault.

File Filtering and Sorting

JPSoft Takecommand (Win,$) has  a command called TPIPE which is extraordinary.  The TPIPE command is apparently available from another vendor but since it is part of TakeCommand, I just use that.  The command is based on a library from these folks: http://www.datamystic.com/textpipe 

Swiss File Knife (X,free) - An alternative I'm playing with.  Gives you a consistent CLI for use across Mac, Windows, and Linux.

The sort utility that comes with Windows is adequate for simple tasks. Anything more sophisticated will require one of the following alternatives:
  • load into a relational database and extract as a sorted result set.
  • load into a spreadsheet and export as a sorted file.
  • use a file-based sorting tool

Extract Transform Load

I don't use ETL (extract transform and load) tools at home. They are clearly enterprise grade tools.

However, if you're preprocessing some text files, like removing tabs or invisible characters, then take a look at something like Swiss File Knife (above) or TakeCommand (above).

File Sharing and Transfer

see the sync tools (above) for additional suggestions.

cURL (x,free) - this is a swiss-army knife of file upload and download utilities. Need to pull a file down from the internet without a browser? The following command does it while preserving the file name.

           curl -O http://theurlgoeshere

Bittorrent Sync (X,$) - my former choice for syncing large files between network connected machines. From bit torrent labs. Note that this is not the same as the BitTorrent clients you may be familiar with.  It is multi-platform and quick. It is designed to be highly secure (but do your due-diligence before trusting it.)  It does take a bit of work to setup just right on Linux. It is pretty easy on Windows.

HFS (Win,free) - this handy tool allows you to easily share any file or set of files over insecure HTTP (see restriction below).  It is not a full-function web server. You can't use CGIs or servlets on it.  But you can share files easily by clicking on them in the Windows Explorer.  Great for read-only documents as well.  I'm finding this is a great tool for experimentation and development.  The author clearly took the time to really refine the user interface. It is GUI and menu driven.  

Warning! This program uses HTTP, not HTTP/S. As a result, your communication can be intercepted and the data is not encrypted!  As a result, consider encrypting data before using this program or use only on a trusted network.

File Monitoring and Watching

Sometimes you want to watch a file and be notified of changes.  Sometimes that means viewing the changes yourself and other times, you want a program to be run.  File watching can be a very handy (though potentially unreliable) way to trigger process automation.   File monitoring is watching the file's output as it changes.  During development it is very important to watch logs for errors and other indications of the program operation.

Notepad++ (Win, free) This text editor include the capability to watch server logs (this was a surprise to me.)  Simply select "Monitoring (tail -f)" from the "View" menu.

mTail (Win, free)- this is a great utility for watching server logs stream by.

tail /f - this is the command you can use if you have JPSoft TCC.  It runs in the Windows console and emulates the Linux tail -f command.

There is a filewatcher utilties page on sourceforge (http://sourceforge.net/projects/fwutilities/ ) but I have no experience with that program.  It turns out that JPSoft TCC / TakeCommand has a capability for this built-in (called FOLDERMONITOR) so I haven't had to use it.

Also, if you're wanting to watch a folder because you are performing software development builds, you may prefer a utility such as GulpJS which has this capability built-in.

Fonts

If you spend a lot of time looking at code or data, it helps to have clean easy to read fonts.  Here are some I've collected.

I like slashed or dotted zeros, especially when reading programs or data.


Consolas (free, X) - this is my default programming font when on a new computer.


SourceCodePro (free, X) - This is a new one (2014) from Adobe. Preview the font here.


General Windows utilities

Arainia Gizmo Manager (Win,free)  (burning iso, generating file hashes, text editor, etc.) 


Audio Switch (win, free) -  allows you to switch between different output targets, like from headphones to speakers. Very handy on Windows.

Bins (win,$5) - inexpensive extension of the built-in Windows 7 toolbar which allows you to stack-up icons. I find this superior to the "dock" programs on the market, such as RocketDock and ObjectDock.That style seems to work for Mac OS/X users but on Windows, the toolbar works best for me.

Clipmate (Win,$)- the king of clipboard management products.  The "PowerPaste" feature alone is worth the price.  You also get a database for saving clips, screenclips, clipboard pre-processing, and other features. Very nice. If you write documentation for a living, PowerPaste is your new best friend.  Like TCC, I've been using it for longer than I can remember (certainly in the early 1990's).

DefaultProgramEditor (Win,Free) - make it easy to change defaults.

Dexpot(win,free) - this is a multi-desktop management tool. Lots of features.  It is a bit heavyweight at times but on laptop, it is very nice since you have limited screen real-estate.

Dragon Naturally Speaking(Win,$) - this is the best speech recognition software I've found. If you are going to be doing a lot of speech recognition, this is the one to have.  It also has an API which some folks have managed to write very nice extensions with.  However, the free built-in software in Windows is pretty good if you want to get a sense of what you can do.

Hashtools (Win, free) -  This is a free tool to generate SHA1, MD5, SHA256, and other hash codes.

JSONViewer (Win,free) - This set of utilities allows you to easily view JSON files on Windows. Comes with plugins for Fiddler and Visual Studio.

Keyboard Jedi (Win,free)- This utility allows you to see your keyboard presses on a transparent scrolling log window. This is great for when doing presentations or using a speech recognition software because you can actually see what is pressed. From Roy Osherove (check out his Test-Driven Development training - I've only watched his free TDD videos and they were quite informative).  It seems folks are switching to Carnac as the replace for this but I couldn't get Carnac to work on Windows 7.

Ninite (win, free) - a tool for keeping some specific Windows utilities up to date. It is particularly good for updating the Java JDK and such.

NirSoft Utilities (Win,free) - These are excellent utilities for Windows. I use the following:
  • cports - see what is listening on what ports (in a win)
  • nircmd - handy command line tool for setting volume, shutting down system, ejecting cd, restarting services, etc. Lots of features.
  • zip installer - turns zip files into MSI installers. Very handy.
Oddly enough, it sometimes gets a false positive hit on some antivirus tools (at work) but not on Microsoft's tool.  

MyFolders(Win,free) - this allows you to quickly copy and move files to your favorite folders by simply right-clicking in explorer.  I used to use FileTargets (from Moon Software) but it doesn't support Windows-64-bit.  This one works great.

OpenWith(Enhanced) (Win,free)-  slick enhancement to MS Explorer to allow for more choices when doing "open with" in the context menu.

Rapid EE(Win,D) -  This tool is a MUST HAVE tool. It allows you to easily edit your environment variables.  Unlike the lousy tool supplied by Microsoft, this tool has it all.  It is my go-to program for anything having to do with diagnosing or editing my PATH variables.  It tells you what paths no longer exist, lets you select directory components rather than type and get them wrong, and a host of other features.

SendToKindle (Win,free) - This app from Amazon is handy because it lets you send .pdf and .mobi (e-book reader files) directly to your Kindle for reading.  Simple and straightforward.

SendToToys (Win, free) - This app allows you to add more options to the Send To menu.  My favorite is the ability to easily copy a filename (or path) to the clipboard.

SoundSwitch (Win,free) This sweet little tool allows me to quickly switch audio output. Extremely handy when switching between headphones and external speakers. Update: author no longer supports due to no longer using Windows.  However, it is open sourced under GPL v2.  I see 6 forks. See zvolume pro as alternative.  Update: It has been adopted by a new maintainer. https://github.com/Belphemur/SoundSwitch but I haven't tried it yet.  2nd Update: I'm now using Audio Switch.


Total Commander (Win,shareware) -This is a windows based program for you Norton Commander fans. It has a plug-in based architecture, built-in viewers, can do bulk renames. It's a regular Swiss army knife, made in Switzerland.

Universal USB Installer (Win, free) http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/

WinCompose (Win, free) https://github.com/SamHocevar/wincomposehttps://github.com/SamHocevar/wincompose.  If you type special unicode characters or a foreign language (I use it for French), this is a great utility that reminds me of the Compose key on my old DEC VAX vt220 keyboard. By the way, the first time you run it, it will take a seemingly long time to generate the "Show Sequences" dialog. Just be patient and it will show you the amazing list of shortcuts.

ZoomIt (Free) - great tool (like everything at SysInternals.com ) for zooming on screen, drawing, etc.

zvolume pro ($) - volume and audio device management tool.  paid but full of features.  I'm investigating this one as a replacement for SoundSwitch which has fallen into disrepair. I'm still evaluating this one.

Graphics and Visualization

ATT Graphviz (free,X)- this is an amazing tool for building graphs automatically.  I don't mean barcharts, I mean graphs of interconnected nodes.  Fantastically powerful.

Paraview - I started using this as part of my studies. Interesting platform.

Integrated development environments  

I'm still a heavy user of text editors rather than integrated development environments. I find it depends on the language I'm working with.  In Java and VB.Net, you would find that the IDE is a more productive environment (generally speaking).

Eclipse (X,FLOSS)- the "standard" but not always the best in my opinion. I've found many plugins are not nearly as stable or solid as in NetBeans.  No objective evidence, just my experience.

Microsoft Visual Studio for Visual Basic.NET ($) -  I do write and maintain .NET programs so this is the tool of choice. I would probably prefer Delphi but frankly Visual Basic.NET is a pretty amazing language.

Netbeans (X,FLOSS) - My favorite Java development IDE. It just makes more sense to me than Eclipse.

Code::Blocks (X,free) - I'm starting to use this for C++ code on Linux. Nicely done.

Keyboard Enhancement and Experience utilities

AutoHotKey (win,free) - a great tool for writing utilities on windows. It is also easy to attach autoit scripts to keyboard and mouse events.  Right out of the box, you can use it to help autocorrect in any window. Just great.  Also, on certain laptops (like the DELL 7470) there are no HOME and END keys. So I use AHK to remap two useless keys instead.

WindowPad (win,free) - a great tool (built on AutoHotKey ) to reposition windows using WIN+Keypad numbers. Great when using speech recognition or avoiding mouse. Also great when for some reason a window refuses to respond to mouse commands.  Update: I have to give this one three thumbs up.  It has become part of my workflow to such an extent that I can't work without it.  This should be built into Windows.  Update: it basically is now, so I've stopped using it as much.


Image Processing and Manipulation


OJOSoft Total Video Converter (Win,$) - there are free ways and there are easy ways. This is an easy way. Converts FLV files, MPG, MP4, etc. OJO video converter does a great job of converting any file to FLV.
VLC is needed to actually view the FLV which flash doesn't (ironically).  Company out of business. Too bad.

Geotag Security (Win,Free) - this program is used to strip the GEO Tag information from image files.  What are Geo Tags?  They are essentially coordinate information (like GPS coordinates) that are stored in photos you take, typically with Cell phones but also other devices.  While GEO Tags are great for automatically keeping track of pictures you've taken (like on your vacation), I'm concerned about pictures taken at my home or work location  (this page has some interesting information about John McAfee).  This program is available in a free or pro version.  The pro version is capable of automatically stripping the GEO Tags in pictures in a given set of file folders and protects up to 5 computers.  There may be other ways of doing this but I found this tool pretty easy to use.

ffmpeg (X,free) is a great tool but extremely complex.  You'll want to search on the internet for examples of how to achieve what you want.

gifcam(Win,Free) is a tool that acts like a camera producing a GIF from your desktop. Just started playing with this but impressed so far.

Internet Network programming utilities 


Fiddler2 (Win,free) -this is a proxy tool which allows you to see the traffic between your web browser and your web servers, even if encrypted. It works as a plug-in for Internet explorer. Extremely handy.

Charles ($) - http://www.charlesproxy.com/ I haven't used this one yet. Looks good.

JavaScript Programming utilities

I program almost always in JavaScript (well TypeScript anyway) so I have a suite of utilities I use.  I will say that many of these unit testing suites can be frustrating to use on Windows.  I believe the fault is windows and the fact that many programs like nodejs don't seem to use powershell yet.

KarmaJS (X,Free) - test runner

JasmineJS (X,Free) - unit testing framework for JavaScript. Not quite like xUnit.  Uses describe() and it() functions along with something similar to hamcrest for comparisons.

Gulp (X,Free) - build tool that I find most appealing for JavaScript.

PhantomJS (X,Free) - headless browser - super useful.

Music Tools


RIP Grooveshark.com - last day of business was April, 2015.
I love listening to GrooveShark.com - it's the only music site I use.

I've since switched to Digitally Imported (http://DI.FM) and Amazon Prime.

Clementine (X, free) - this is the client I just switched to for listening to GrooveShark Digitally Imported.  It seems to do everything I want and it's a client not a webpage.  I have Dexpot setup to move it to my 3rd desktop so it doesn't interfere with my work except when I want to switch to it. Very nice.

Floola (Win, free) - this is the podcasting tool I'm using with my 5th generation iPod video. (with the 1 inch screen!)  So far, it appears to work. We'll see.  ITunes was not able to work with it yet the ipod was solidly constructed and works fine.  I feel I can trust it more than a cell phone because when I'm travelling overseas, I don't want that phone just turning on (fat fingering and such) and using up a bunch of high dollar bandwidth.

Network Monitoring

Network monitoring is a complex topic. However, there are simple tools you can adopt in your small team/home environment.

The Dude - a simple, easy to use monitoring program for small home networks.  I believe it also runs under WINE for Linux.

Wireshark (X,free) - probably the best protocol analyzer you can get.  I have used this to find problems on my home network.

Nagios (Linux,free) - for basic monitoring, still the one I turn to. I've had mixed results with others and my needs are basic.

bro (Linux, free) - this is my new exploratory tool.

Mathematics and Statistics Tools

Maxima (free) - symbolic algebra and linear algebra tool.  Not quite as powerful as Matlab or Mathematica but I was able to do quite a bit with it and it's free.  I ran into problems doing inversion of (large) matrices.  Matlab (and Scilab) had no problem.  This is still my go-to mathematics tool because it is more general purpose than either Matlab or Scilab. Kinda Lispy -- because it is written in Lisp. Go figure.

MATLAB ($) - great but expensive - consider Scilab (below) if you're budget cannot afford it.

R (X,free) - nice language for expressing math and particularly statistics. I find it a bit  obtuse. You have to spend some time with it to learn all the intricacies.  Frankly, most stats can be done easier with Excel!

Scilab (Win, free)- a free and mostly (70% perhaps?) compatible with MATLAB.

(free) - a language derived from APL, could even be considered the "spiritual successor to APL". I'm looking to learn more about this but I'm finding the language rules not as reasonable (or modern) as R.

Microsoft Excel - with the inclusion of the statistics add-in module, this is a powerful analytic tool.

Operating Systems

Windows 7 (Win,$) - this is my primary desktop operating system.  I have not moved to Windows 8 yet.

Freedos(X,free)  - this is what I use if I want to run DOS in a virtual machine, such as VirtualBox or XEN.

I use a number of different Linux distributions, for different needs:

LInux Mint (L, free) - this is my new favorite (2016).

OpenSuse (L,free) - this is one of the Linux distros I use on laptops.

Fedora (L,free) - this is the other Linux distros I use on laptops.

Centos  - this is the Linux distribution I use on servers because I want to know how RHEL works and RHEL dominates the enterprise.

Package Installation (aka Installers)

On Linux, you use the package installer provided by your distribution. Thus, I use Zypper on OpenSuse and I use Yum on Fedora.  Both of these install RPM (redhat package manager) files.  I'm quite intrigued by the NIX package manager but haven't used it yet.

Chocolatey (Win,Free) is a package that gives Windows an "apt-get" (for you Debian linux fans) equivalent command. I'm starting to think This is the way to go on Windows.   I'm a big fan now.  One script installs a PC to my liking.  For VMs, I may consider going with "box starter".

NSIS installer (Win,free) is a MSI package creator for your projects.

ZipInstaller (Win,free) is another great NirSoft utility.  Turn zip files into normal MSI installers. Which means they now show up in your registry and can be "uninstalled".

Box Starter (Win, Free) seems like an interesting package. I'm not using it yet.

Password Management tools

My two favorites are LastPass and Roboform.  I've also started using KeePass on an encrypted hard drive.

These are great for people who can't remember passwords and can't think of good random passwords.

Path management


Visual Subst (Win,free) is a GUI front-end to the SUBST command. This is really handy. It allows you to provide a drive letter which redirects to another drive + path.  For example, you could create a w: drive that points to your c:\windows directory and path.  This is great for standardizing drives when everyone has their own preferred layout.  Just agree on the subst drives and let everyone map as they chose. It's still not as nice as AmigaDOS or OpenVMS when it comes to multi-letter volume names (yes, you could have a drive named RON_HOME_DRIVE: ) but it is as good as it gets on Windows.

Note: Editing paths is sometimes necessary.  If you're using TCC, it's easy. Just type "ESET PATH" and you can set the PATH variable interactively.  Or, use Rapid EE (see above)


Viewpathing is a cool idea - I don't have any special tools for doing it on Windows. Suggestions?

Printer Management

iPrint (Win,free) - lets you preview your print jobs to make sure you're only printing the pages that matter.

Project Management


ProjectLibre(Win,Free) - I have found this to be sufficient for my personal project management needs.

Microsoft Project(Win,$) - I use MS Project for work projects because it is powerful and dependable.


Search and Navigation

Listary (Win, $) - is my  new favorite search tool. Integrates right into explorer. fast and fluid. Very nice. I registered the pro edition and love it.

Launchy (Win,D)- my former favorite on windows.  I use it to quickly navigator to folders.  I also use the Favorites feature in explorer to pin my top 10 favorites.  The combination makes navigation quick and easy.  I use it much more often than Windows Desktop Search which is slow.  I have tried many others but this is what I use.

RegexBuddy (Win,$) - Fantastic tool for testing and writing regular expressions (aka patterns or regex).  Yes, you can struggle without it. I did for years.  But having it in my tool box now makes using regular expressions a treat.

Security Software

Sandboxie (Win,$) - this is a sandboxing program, loosely similar to FreeBSD Jails.  Sandboxie makes programs *think* they have access to the filesystem and registry but actually redirects all updates to a sandbox.  Very nice when running  unknown software and you want to know what that software is doing to your system. Lots of capabilities.

See Geotag Security above - I think removing unintended GeoTags is a good thing to do.

Servers

Apache HTTPD Server - still a favorite because I'm somewhat familiar with the configuration file and plug-in system.

WAMPServer (Win, free). On Windows, this wraps PHP, MySQL, and Apache into a simple to install bundle with a nice little manager toolbar.

FileZilla FTP Server (Win, Free)- this is my preferred SFTP server.  I also use the client.

Roxen Web Server (X,Free)- when I'm doing simple server stuff, this one is simple and convenient. It's been around a long time. No longer my first choice however.

Serva (Win, free) - a mult-server which includes HTTP, FTP, TFTP, DHCP, ProxyDHCP, DNS, BINL, SNTP, and Syslog all in one. used for PXE services (booting machines off the network.)

Scripting languages

KornShell (U) - still my favorite although I use bash more and more often.  Use the 1993 version, not the 1988 version which is more limited.

Perl (X) - Perl 5 is the king of Unix scripting languages.  The Camel book (Programming Perl: Unmatched power for text processing and scripting) taught me a ton about Unix programming. Perl 6 is available in the form of Rakudo Perl but I haven't tried it yet.

Python (X) - the upstart. truly object oriented (unlike Perl)  I find it easy to use and understand.  Jython is the dialect for the JVM. IronPython on .Net.

Groovy (X) - I'm getting into Groovy more often now.

Ruby (X)- I like Smalltalk and Perl so I like Ruby!

JPSoft's Take Command - I have been using 4DOS, 4OS2, and 4NT for years so I just had to continue with Take Command.

JavaScript is the language I find myself using more often now but not for utility scripting ala Perl.

gow (Win,Free) - Gnu on Windows. A bunch of Unix/Linux utilities compiled natively for Windows.  "cinst gow" to install with Chocolatey.  Unfortunatley, bundles a few broken utilities like a copy of VIM (but with out syntax highlighting and other goodies.)

Source Control and Configuration Management

Software development without source control is amateurish and dangerous.  As a manager or business owner, I would never tolerate it. The state of the art is currently distributed version control (DVCS). This means that every developer has a full copy of the repository, making disconnected development a breeze, and helping make merging easier as well.  That is not to say that centralized VCS is not useful but I find DVCS more natural to use.

Fossil (X,FLOSS)- simple to use but not well known. Includes a built-in WIKI and bug tracker. I find it very nice for solo work. It is also quite tiny (one small executable of about 1.3MB), unlike other tools such as GIT and Mercurial. I was surprised to see my Windows GIT install tipping the scales at over 100 MB. I also like the fact that is includes a built-in webserver.  I like the straightforward command language.

GIT (X, FLOSS)- now the industry standard, originally developed by Linus Torvalds, it has quickly dominated the industry. I find it more brittle and complex than Fossil. That's probably because I tried using a couple of the "friendly" front-end tools that tend to hide problems.  From the command line,  GIT works fine.

Mercurial (X,FLOSS)- (aka HG - the chemical symbol for Mercury) the next most popular tool in this category.

Let's be clear  - I don't use any of these deeply enough to claim I fully understand the differences between them.  I just know my own workflow and how I'm able to be productive in each of these.

Programmer Utilities


CLOC (Win, free)- This is an open source tool from Northrup-Grumman that counts source lines of code. While this metric often gets eyeballs rolling, it is still useful in getting a sense of the size and bulk of a code base.


System Utilities (care and feeding of my Windows desktop)


Acronis Drive Monitor (Win,free) - checks on my drive health. Reads and displays the SMART parameters in a simple to understand way. Unfortunately, does not detect the use of cloud based backup. Could be because Acronis sells a backup program as well?

Growl for Windows (Win,free) - sweet tool that consolidates all of your background notifications into one place. Network addressable, easy to program for. What's not to love? Oh and it can forward to iPhone, WindowsPhone 7, and Android with 3rd party apps. It also has a nice command line tool for integration into batch scripts.  Snarl is equivalent but I like Growl just a bit more in terms of visual appeal.

Piriform Speccy (Win,free)- generate specifications of your desktop. Ever wonder what brand of motherboard you have, or kind of RAM? Rather than open the case, you can run Speccy and pull the data directly.

Revo Uninstaller (Win,free & $) - truly remove all traces of a program when you uninstall it. I pay for the pro version because I support their work and it's a great tool.

Service Control Manager (w,free) - this tool lets you not only start and stop services like the built-in Windows service manager but you can also add and remove services (which ordinarily requires a command line tool.)

Turbo Service Manager (Win,free)- this tool has even more options than Service Control Manager. Comes with 32-bit and 64 bit versions.

WinDirStat (Win,free)  the best way to find disk hogs.

Text Editors

Notepad++ (Win,free) -  my go-to editor for daily use. Are you still using notepad? Please.

VIM (X,free) - Heavy Duty text editor which is particularly good if you were raised on Unix.  As an example of an organizational productivity tool, we used to use VIM at a phone company to edit and verify extremely large files.  VIM would edit these without a hitch where as other editors would either choke and give up or simply take forever to load.  In this use case, VIM is acting a bit like the legendary mainframe tool File-AID.

Atom (X,free) - an editor that borrows a lot from Sublime and TextMate (Mac).

Incidentally, I mention File-Aid earlier. I'm rather surprised that only one open source tool has been attempted (record-editor). I would think this would be a popular category but I guess people struggle using inadequate tools instead.  If you're working with large, fixed-format flat files, you need a better tool than Windows Notepad.

bowpad (Win,Free) - I just came across this editor and I already think it makes sense to recommend to my friends.  It looks like MS Word, with a Ribbon Bar, but is a regular text editor with syntax color highlighting. Simple and functional.

Time Management

ManicTime (Win,$)is a good tool to better understand how you spend your time.  The visualization for this tool is excellent. The pro version has useful features but you can use the free one just fine.

ProcrastiTracker is another free alternative.

The best ever was SphericalTech Time Tracker.  But they are no longer in business.

Unit Testing frameworks

I am doing a lot of Java and JavaScript programming for school.

For java, I like TestNG(x,free).

For JavaScript, I use Karma (x,free).  I also use PhantomJS and JasmineJS.

Voice over IP

Skype (free,X) is still my go-to voice tool.

Linphone (free,X)  is a new tool I'm exploring for use with SIP.

Writing tools


TreeSheets http://www.treesheets.com/ a tree structured grid-based organizer. Not a well known tool, it provides the best parts of a mindmap, and a spreadsheet.  Hierarchical spreadsheets- who knew?

Microsoft Office ($$)

Open Office (free)  I have found this more stable than LibreOffice.

Zotero (citation manager) (free)

PDF SAM (Split and Merge). This allows you to split and merge PDF files. For example, you have a bunch of PowerPoints you want to merge but the color schemes are incompatible. Print them to PDF and merge the result.

Software as a Service (SaaS)

Kall8 - 1-800 telephone number service. used them for my small biz. Worked great.

TrustFax.com - internet fax service. easy to use and convenient for w hen you don't have a fax line.

Zoho Creator -    While Salesforce.com is an awesome tool, I've found that Zoho gives me plenty of power, lower cost, and control over some details (like calendaring) which SF simply didn't have (at the time.) It's been a few years since I used it but I was impressed.

Unix / Linux Utilities for Windows


GOW (Win,free) - while you can enjoy using Cygwin, I'm not a fan of using Bash on Windows. This is Gnu on Windows and it has a nice windows-friendly installer.


Virtualization

Though some operating systems can be easily simulated or emulated on Windows, others are better run in a virtual machine.  Virtual machine technology has been around since the late 60's / early 70's. It's phenomenal and has powered the cloud from the beginning.

Vagrant (X, Free) - Vagrant is a utility for managing virtual machines. It is not a virtual machine hypervisor.  For that, I  use Virtualbox.  I also use the vagrant-multi-putty plugin which is wonderful because it lets me use Putty, my preferred SSH client.

VirtualBox (X, Free) - VirtualBox is a free multiplatform x86 hypervisor by Oracle.  I'm grateful that they provide such a sophisticated package for free.


Retired / no longer used.


FDM - Free Download Manager (win,OSS).  Although this program sounds like some kind of shady tool, it is actually quite handy.  It has a built-in BitTorrent client as well as FTP and other file transfer capabilities. It is open source (GPL) for windows only.  I stopped using this because (if you turn on BitTorrent) you'll find your machine getting pings from all over the world and I'm not happy about that.  The value to me of having FDM didn't exceed the risks. note: I understand that's how bit torrent works but I noticed that even when I didn't have Bit Torrent enabled, starting the FDM program still caused me to receive pings.



Comments

Popular posts from this blog

Using Fossil SCM with Jenkins CI

Currently, there is no SCM plugin for Fossil in Jenkins. I've been coding one but it's not yet ready.

Update: I have permission from my employer to open source the plugin. Now if only I had the time...

Update 2:  I've created a github repo for my code: 
https://github.com/rjperrella/jenkins-fossil-adapter

It turns out, you should be able do a pretty good job of integrating Fossil into Jenkins without using such a plugin.

Here's my idea:

For now, you should just need the Xtrigger plugin. This plugin is capable of triggering a build based on a number of things changing. Among them, a web-addressable piece of content in XML.

Fossil is able to generate RSS feeds trivially.

On the Fossil machine, you'll want to start the fossil server as usual:

$ fossil server --port=1234

On the Jenkins machine, you'll simply install the Xtrigger plugin and set it to trigger a build, by polling the following URL for changes:

   http://<FOSSILMACHINE>:1234/timeline.rss?y=ci&n=0

T…

Why Fossil-SCM is an excellent choice for introductory programming courses

Fossil SCM for introductory programming courses The use of source control management (or version control - take your pick) is an important skill for new programmers to adopt.  It is expected that all programmers use SCM in their daily jobs, in order to coordinate changes among team members.  Thus, getting beginners to adopt good habits early should be a goal.

While GIT (git-scm.com)  is certainly the dominant source control system of today, I believe instructors of introductory classes in programming should consider an alternative called Fossil (fossil-scm.org).

Fossil has several compelling advantages in education over GIT.  You will see that I value the practical aspects of Fossil even more than its technical capabilities.  After all, an instructor has a limited amount of time to have an impact and they don't want to waste time doing technical support on a tool that is too complex.  Helping one or two people is fine but helping 30 can be a real burden.

Simple installation and …

So you want to use Fossil DVCS as your SCM solution? Here are some first steps.

First steps when using Fossil SCM.

Download the executable from http://www.fossil-scm.org

Depending on your programming language and operating systems, you'll want to make sure you ignore certain kinds of file extensions.

You might want to create a configuration file and store it in fossil for use in other fossil setups.  The configuration file goes into the top level directory under a folder called ".fossil-settings".  The filename matches the configuration setting, thus it is called "ignore-glob".

For unix/linux, I would ignore the following file extensions (you can put one per line or separate them with commas. I'll use the per line convention here.)

*.o
*.a
a.out
*~
*.pipe
*.tar

For Windows, I would ignore these:

*.obj
*.exe
*.lib
*.tmp
*.$$$


Next, you'll want to decide on binary file for the purpose of merging. These go in the .fossil-settings/binary-glob file:

*.jpeg
*.jpg
*.gif
*.bmp
*.mpeg
*.mpg
*.avi
*.flv
*.ico

Typing fossil settings binary-…