Right Tool for the Right Job
My dad taught me as a young child that there are different tools that are appropriate for different jobs. Don't use that flat-head on a Philips head screw. Is that a nail? No? Then why the heck are you using a hammer?
As a programmer I find that more than ever, the right tool for the right job is vital for productivity. About two years ago I switched to a MacBook Pro as my main machine and I couldn't be happier. For me, that's one of my "right tools", I love it and I have no plans on switching back. There are occasions where I feel the difference in trying to find a cheap/free tool to get something done where a slew of options are available for PC users, but I can't say it has affected me too much. Throughout a given day I will likely use a huge assortment of tools, below is my list of frequent tools that I use pretty much every single week for various tasks as a programmer.
- NetBeans IDE
- Notepad++
- SourceTree
- Git
- BitBucket
- Microsoft SQL Server Management Studio (SSMS)
- VirtualBox
- Firefox
- Firebug
- Chrome
- Internet Explorer
- Filezilla
- Mantis Bug Tracker
- Trello
- Jenkins
- Phing
- Kompozer
- MySQLWorkbench
Phew, that's 18 different tools, and only a couple (such as Kompozer) don't get used every week. Sure, 3 of them are browsers and it doesn't include iOS Safari, but I have tasks I can only do in IE (shudder), I prefer to use Firefox for web development, and I use Chrome as my searching browser to keep Firefox from having 30 open tabs. This is just a quick list of what I happen to be using at this time, I'm open to suggestions to try as well!
What are your favorite tools for the trade?
"How" is Temporary
Jeff Atwood said "In our field, how only lasts about five years, but why is forever" and I agree. I love learning so much that often I get distracted from a real task with a real deadline because something I saw, read, or thought about interested me at least a bit and I want to know more.
Learning is fun, and in IT related fields, constant learning is a requirement to not being left in the dust. I've gotten to where I am today based on my ability to learn, my ability to take on new challenges, and my ability to say "we should be able to figure something out" and then figure something out.
Getting Organized and Low Maintenance
It's been a while too long since I've posted. All of the systems I've been building for the last 18 months or so are starting to tie together very nicely. So why has it been a while since I've posted??
Like I said, the systems are starting to come together, which means I'm getting really excited and I want to accomplish everything, but alas, I'm only one person. I have recently started using BitBucket to host my private repos. I discovered that their FREE accounts are limited based on # of contributors, not # of private repos like GitHub. I've always wanted to use GitHub but the majority of my work is not something I can share openly, and therefore I don't use it at all. Unlimited private repos is exactly what I need right now, and knowing that I can have up to 5 contributors (including myself) is a high enough limit for now. If I need more than four others I should be able to justify the minimal expense of $10/mo.
Anyway, the feature that has me the most excited is the built in Wiki. The real feature in there that I really love is the ability to clone the wiki to my local machine, edit it there and push it back to update the wiki. The other awesome thing is I'm now going to use Pandoc to build the Wiki in HTML format and load it directly to our VPS. Nothing against the Wiki in BitBucket, and I wouldn't mind making it public... but it would require me to have a lot of non-technical people creating BitBucket accounts just to view the Wiki, that's not easy to use for them.
Here's how easy pandoc was to get up and running.
Installing pandoc on my development VM (Debian):
sudo apt-get install pandoc
A simple command to convert one markdown (.md) file to HTML:
pandoc Home.md -o Home.html
The good news is, now that I know how easy this was to do, I will start setting up all of my documentation in these Wikis, and I will create build scripts using Phing and Pandoc to generate whatever documentation I need to make available. Simple, fits into my workflow, and easy to maintain multiple formats of documentation within source control. It also encourages me to load all my projects to BitBucket, because a) no cost, b) another place my source code is stored, c) makes it easy to collaborate as new developers come on board!
Life is good!
Talk Carefully At Home
I worked from home today and towards the end of the day Julie, my amazing fiance (update: wife!), said "Oh! I know what your next presentation should be!"
She ran and grabbed one of our massive sitcky-note flipcharts... and here's what happened.
No NoSQL For Me... Yet
If you work in any IT related field you must be ready to embrace change and new technologies. You must be willing to learn. Constantly. You must also be willing to think. Thinking critically and solving problems is the reason I get paid, and the reason I can pay our mortgage!
Anyone who works with data or databases has probably heard the term "NoSQL" more than once. I've read about it over and over and over. There are debates, cage matches, and more. I'm not going to talk about what NoSQL is or why it's good or bad. Personally, I think some very interesting things are happening with the technology and I will keep reading about it, but just because something is interesting doesn't mean it's for everyone. For example, I have gone sky diving and I'm addicted to the adrenaline rush and can't wait for my opportunity to go again. I also think base jumping is interesting, but I will likely never do that!
Maybe one day there will be a good reason for me to deploy an application based around a NoSQL database, but for now I will happily take advantage of ACID and the relational model.