Tools and Training

backhoe

No Silver Bullet tells us to be skeptical about claims of tools that can provide drastic improvements in productivity. What we can instead hope for from productivity tools are minor, yet still significant, improvements.

However, both lowering our expectations and going with proven technologies aren’t enough to receive productivity benefits when introducing a new tool. Many companies still fail because of a certain classic mistake: Lack of Training.

Continue reading “Tools and Training”

Hipster PDA

GTD advises those that practice it to empty their minds often. If you suddenly get a great idea or if just remembered something that you must do, you have to write it down somewhere as soon as that comes into your head. Not only will it be less likely to be forgotten, it will also free your mind to think about stuff that you actually enjoy thinking about.

The problem with this advice is that most of those ideas pop up when you’re on the go, and thus requires you to bring a portable note taking tool with you always. Ticklers or small notebooks are often too bulky to fit in your pocket, while PDAs and smartphones are often too expensive for such a simple task.

Enter the Hipster PDA.

Hipster PDA

The Hipster PDA (Parietal Disgorgement Aid) is a fully extensible system for coordinating incoming and outgoing data for any aspect of your life and work. It scales brilliantly, degrades gracefully, supports optional categories and “beaming,” and is configurable to an unlimited number of options. Best of all, the Hipster PDA fits into your hip pocket and costs practically nothing to purchase and maintain. Let’s make one together.

Continue reading “Hipster PDA”

More Necessary CS Skills

Body feels like heck today as a result of breaking demolishing a personal fitness record yesterday. The heat isn’t helping.

I’m not in the mood to conduct research so here’s a follow up to a previous cheat post.

Learning basic web development and photo editing is not enough to be competitive in the IT industry. Here are other necessary skills for a fresh grad to learn.

Google-fu

Practice your Google-fu.

I don’t really need to explain why you should learn how to efficiently use Google to find the information you need. Between finding answers to software problems up to stealing code, Google is an indispensable tool for a software developer.

Unfortunately, not a lot of people know how to choose the proper keywords or determine which keywords should be enclosed with quotation marks (I’ve even lost count of how many times I’ve seen this happen in my previous company). With a bit of practice, though, you could overcome this problem and eventually learn to stalk people find solutions in Google in no time.

Get enough Linux/SysAd/programming experience to install a LAMP server from scratch.

This might sound impractical to people working with .NET, Java, or any development tool whose primary audience does not use the LAMP platform, but the sheer amount of useful free/open source software built for LAMP makes it hard to ignore.

When you build a LAMP server, from installation of OS up to setting up some basic apps like WordPress and MediaWiki, you will learn a lot of basic skills in the process. Installing the OS is a no-brainer, but the other stuff aren’t so trivial especially to people used to working in Windows: using a shell (and optionally installing SSH to allow remote terminal access), using vi, emacs, nano, or any console based text editor; learning the Linux user security model e.g. setting file permissions, etc. The learning doesn’t stop once you get to the AMP part, as configuring Apache, MySQL, PHP, Perl, and Python for basic usage still requires a bit of research (and trial and error).

In line with learning LAMP, you might also want to learn how to create virtual machines via VirtualBox or VMWare Server to remove the need for dual booting or getting a dedicated machine. LAMP servers are lightweight compared to modern OSs so the host machine’s performance will probably not be affected by hosting a virtualized server.

Understand how the Internet works.

This one’s essential for web developers. No, I’m not saying you need to do crazy impractical stuff like memorize the OSI Model. What I’m saying is that as a person creating dynamic websites, you should at least know the basics of networking, especially HTTP.

People who know these stuff might find it funny that there are web developers who aren’t familiar with how browsers and servers interact via HTTP, but in reality, a lot of people don’t know these basics. I myself didn’t know the difference between POST and GET requests until my second year in the business.

Learning how to use common network related tools like packet sniffers and port scanners is also useful in web development. Having Wireshark in my machine actually gave me “unfair” advantage in my projects, allowing me to isolate and fix difficult bugs that other devs couldn’t handle.