I wanted to share few tools and utilities that have helped me become a better developer over the years.
Some of these relate to coding and programming. These are libraries and softwares that you can use to write better code.
Some of the links below will help you be productive when working.
And then there are some tips and tricks that will make you look smart at your workplace.
I will update this page often. I also have plans to go over some of these tools in detail via posts. I will link those posts from here as well.
Unless I mention cost, you can assume they are free or I use their free version. I will specify below if the tool works on windows only.
Without further delay, here they are in no particular order.
1) IntelliJ IDEA – My IDE (Integrated Development Environment) of choice.
I spent countless hours installing plugins for Eclipse. I got tired of running into issues between eclipse and plugin versions.
And then one day JetBrains announced they were releasing open source, FREE, community version. I have never looked back.
I have IntelliJ keymapped to Eclipse so I still use all the same eclipse shortcuts. I get automatic code completion and all the plugins already installed. I can do a powerful partial text search. I get an intelligent refactoring tool. I never save code and yet I never lose any history of it.
2) Sublime Text – I use IntelliJ for Java code. For everything else, Sublime Text works great. I use the awesome code editor for HTML, Javascript, Python and other linux scripts.
3) Evernote – I use it as a notepad on the web. I have my to-do list in Evernote. I use it to capture thoughts and ideas. I use it as a calendar. I use it for note taking. I use it for tracking my goals. I use it to store things I read on the web for later. And the list goes on.
4) Evernote Skitch – Another wonderful tool from Evernote. I use it to annotate my screen shots. I can draw attention to specific things and write / point out anything in an image now. No more of creating word documents to explain an image.
5) Notepad2 – I have all my computers and laptops override default notepad to Notepad2. I get unlimited history, color highlighting, brace matching, font adjusting editor that I love. It has support for just about any programming language and is just as light as notepad. I use it for quick note taking and to open my .diff and .patch files. Windows Only.
6) 7-zip – if you pay to extract and create zip files, get your money back. You have a better and free option in 7-zip. You get password protection, AES-256 encryption, Ultra compression and file splitting based on size.
7) MobaXterm – I have been waiting for this SSH client tool since the good old SSH Secure Shell days in school. It supports the following:
X11 – I used it once to open firefox straight from the server to test URLs as if I was local to the box. My application was up I realized. There were routing issues I concluded.
RDP – Use it to remote desktop to a windows box.
VNC – I can remote access a Linux box via RealVNC or allow others to access my box if needed.
SFTP and SSH together. My favorite feature: Tell its SFTP browser to follow the Unix command line path. So I can go to a folder using command line and the SFTP will browse to it. Windows Only.
8) PDF Printer – Download the bullzip pdf printer and you can now print anything to PDF. Yup, I mean anything you can say CTRL-P to. I stopped paper printing receipts and other documents several years ago. You can always print PDF if needed. Windows Only.
9) Dropbox – So you printed all these PDFs above and you want to make sure you don’t lose them. What do you do? Sync them to your Dropbox account. Your files will be home in a safe place.
I use it to share large files without filling up my mailbox. If you didn’t already know this, you have these files available from the web browser as well.
10) Jing – Sometimes it is hard for me to explain in words what I am seeing on screen. I use Jing to capture the screen and audio and turn it into swf file which I can share with anyone.
11) Grammarly – I use it to spell check all my sentences online. It has a built-in editor in the web browser to fix the mistakes.
12) NimbleText – I use it to convert comma separated value data into other things. I have used it to turn data into href links. I have used it to convert data into repetitive insert statements. Use the online version from anywhere.
13) Java Decompiler – You have just pushed your code to test environment. And you are not sure if your Java fix made it there.
Get the jar file from the server and point Java Decompiler to it. See your change and all classes decompiled to a folder for easy confirmation. Windows Only.
14) XML Marker – You have a large XML file and you can’t make sense of it. Open it with XML Marker. It has built-in XML styling. Collapse what you don’t need. Drill down to the element. Find where on the tree does your element fall. It counts all the elements in a tree by default and highlights them. Windows Only.
I have their free version – XML Marker Version 1.1
15) Agent Ransack – Find a specific file or text in a folder. I like that I can print result and even manipulate the file from within the tool without having to go away from it. Excellent tool for file / text searching. Windows Only.
I am a big fan of Lucidchart. I have used Lucidchart to draw just about everything:
a) Flow charts b) Entity Relationship diagrams c) Org charts
d) Network / Server diagrams e) Data flows f) Mockups
g) Wireframes h) Business process charts.
I have used Gliffy, Creately and Pencil Project for flow charts in the past. I know they provide more than just flow charting.
17) Wireframes or Mockups
Few years ago, I used balsamiq for drawing wireframes for my startup before I built MVP. MVP stands for Minimal Viable Product.
I was able to visualize different web components my app would need before I built them. I was able to hash out far more details than if I had started coding without visualizing it.
I liked the mobile version balsamiq let met create.
18) Build Slides or Presentations
You can go crazy with all the features Prezi has to offer. Go to their site to check out some cool presentations.
I am also trying Visme and Canva these days. They both offer free options with several built in templates. The free version has few limitations on export and number of projects.
Haiku Deck is another popular option. Their free version does not allow export of the slides you create. But they offer options to embed the slides in your blog or website. With free version, your users will see Haiku Deck branding above the slides.
19) Oracle VM VirtualBox – I mentioned this in one of my posts but it is worth bringing up here.
If I am on windows and want to work with CentOS, I can install a pre-built CentOS virtual machine on my computer.
Now I don’t need to mess with the BIOS to allow dual boots as we did in the old days. I don’t need to buy another machine just for linux either.
This comes up more often than you know.
Internet Explorer does not allow you to have two versions on the same machine. So how do you test if your application supports IE8,IE9,IE10 and IE11? Download pre-built virtual machines for these versions and install them in your VirtualBox.
20) VisualVM for application profiling
Your application goes to production. Few weeks later, your Ops team complains they are having to restart the server often. They suspect something is causing the memory leak. The logs are not showing anything of importance before the server dies. What do you do?
Can you replicate this in your non-prod environment? If yes, point VisualVM to your server and start application profiling. If not, Ask for the heap dumps of the application. And open them in VisualVM for analysis.
If you have java 7 or above, you have VisualVM.
Look for classes that are memory hogs and see if you can spot anything unusual. I will do a post on this in future.
If the company can afford it, suggest looking into buying application performance monitoring tools. Splunk, New Relic, App Dynamics, JProfiler, Nagios are some popular options.
21) Java Libraries and Utilities
I am amazed by developers reinventing the wheel at times.
‘Null and Empty’ check is the most common one. I see code where developers perform the null check but forget the empty string check which leads to bugs.
They could have been leveraging Apache Commons Library or Google’s Guava Project instead. These pre-built utilities are a well tested piece of code. And developers can save hours of work and look good at the same time if they leveraged those.
Look for BeanUtils, SpringUtils, MathUtils, BidiMap, GenericValidator and several neat methods in there.
If you are new to any of the tools I mention above, I encourage you to try them out and see if it helps you.
I would appreciate if you let me know in a comment below on how it went or if you have any questions where I can help out.
If you have been using some of these already, I am interested in knowing if you like them.
If there are other alternatives you know might be helpful to all, please share them below as well.
-Amit