|
|
Ian Uy posted this in Articles on January 24th, 2010 | Email This Post | Print This Post
 Larry Wall haz dem
Larry Wall, the creator of the infamous Perl programming language, has once said that the greatest virtues of a good programmer are Laziness, Impatience and Hubris. To not mislead the lazy “computer science” students, allow me to define each virtues:
- Laziness — The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don’t have to answer so many questions about it. Hence, the first great virtue of a programmer. See also impatience and hubris.
- Impatience – The anger you feel when the computer is being lazy. This makes you write programs that don’t just react to your needs, but actually anticipate them. Or at least pretend to. Hence, the second great virtue of a programmer. See also laziness and hubris.
- Hubris – Excessive pride. Also the quality that makes you write (and maintain) programs that other people won’t want to say bad things about. Hence, the third great virtue of a programmer. See also laziness and impatience.
A few days ago, a tester at our company filled a track that contained multiple attachments (Screenshots, Error Logs, etc) to assist the developers on their investigation. As we are using Microsoft’s Team Foundation System for source control and bug tracking, the most obvious way to get these attachments is through TFS Web Access; Frankly speaking, this is the only “official” way to access the track (bug report) on our company.
 The TFS Web Access homepage UI
I don’t know if its a lack of feature or what, but there is no way in TFS Web Access to download multiple attachments at once. Additionally, when downloading attachments that contains a space on their filename, TFS Web Access will automatically concatenate the filename and that will remove the file’s extension (EG: Screenshot of the bug.jpg will be renamed to Screenshot)… You still need to manually rename the file with the proper extension to open it. And because I’m lazy, I don’t want to log-in to TFS Web Access, type in the track ID, click on the attachments tab, click on the file(s) I want to download, browse for the location where to save the file, create a new folder for the track, click save, minimize my browser, open the download location and (unzip the attachment, it its zipped, which normally is) to just view a single screenshot.
Since I am a big believer of Wall’s three virtues, I created a tool that will automate those boring and repetitive tasks for me (and allow me to download *all* attachments from a work item + workaround the “spacing” bug). The tool is called WIF or Work Item Fetcher and it is currently in Closed-Limited Beta.
At first, I thought about parsing the web pages to download the attachments using HTML Sanitizers and Regular Expressions but then I remembered that only Chuck Norris can parse HTML using regular expressions! So I searched the web and found out about the TFS SDK! Go .NET! Go Laziness! Okay, enough chit-chat, the rest of the post will be dedicated to discussing how to use the TFS API to download attachments from TFS.
Continue reading “Laziness, Impatience and Hubris or How to download Work Item attachments programatically using TFS SDK” »
Ian Uy posted this in Articles on September 17th, 2009 | Email This Post | Print This Post
 Paul Graham (Author of Hackers and Painters)
I love Paul Graham. The guy speaks my mind. Although I don’t agree with all of his ideas (E.G. Java programmers are stupid. PERIOD.), most of his ideas are golden. For those of weak hearts (and sensitive ego), please proceed with care.
The essay that will follow, entitled Great Hackers, basically compliments the main idea of my previous post which is “To do something well you have to love it.”
Some quotable quotes from this essay:
“Ordinary programmers write code to pay the bills. Great hackers think of it as something they do for fun, and which they’re delighted to find people will pay them for.”
“Hackers like to work for people with high standards. But it’s not enough just to be exacting. You have to insist on the right things. Which usually means that you have to be a hacker yourself. I’ve seen occasional articles about how to manage programmers. Really there should be two articles: one about what to do if you are yourself a programmer, and one about what to do if you’re not. And the second could probably be condensed into two words: give up.”
“The distinguishing feature of nasty little problems is that you don’t learn anything from them. Working on nasty little problems makes you stupid. Good hackers avoid it for the same reason models avoid cheeseburgers.”
“I’ve found that people who are great at something are not so much convinced of their own greatness as mystified at why everyone else seems so incompetent.”
“The key to being a good hacker may be to work on what you like. When I think about the great hackers I know, one thing they have in common is the extreme difficulty of making them work on anything they don’t want to. I don’t know if this is cause or effect; it may be both.”
“One difference I’ve noticed between great hackers and smart people in general is that hackers are more politically incorrect. And I can see why political incorrectness would be a useful quality in programming. Programs are very complex and, at least in the hands of good programmers, very fluid. In such situations it’s helpful to have a habit of questioning assumptions.”
AND NOW, THE ESSAY
Continue reading “Ordinary Programmers vs Great Hackers” »
 ASP.NET Migration Problem
If you’ve read my previous blog post, I talked about some of the problems encountered while migrating some of our web applications from .NET 1.1 to .NET 2.0. Well, those products are now handed off to the Test Department for their routine torture.
Just a couple of days after the hand-off (Hand-off to Test or HOTT), the tester who is testing the product filed two (2) Tracks (Incident/Bug/Problem). Since I am the only developer working on the product, all of the tracks will automatically be assigned to me. The said tracks that were filed have the same “type” of problem.
When browsing for a file (Backup File / File Upload), the value of the Textbox would change back to its default value when the page re-loads.
Continue reading “ASP.NET 1.X to ASP.NET 2.0 Migration Postback Problem” »
 Do you know how much Programmer's Blood it cost to put this tiny sticker in a Software Box?
In my previous blog post, I’ve mentioned that I’m working on a project to migrate an entire product line to Vista. What I meant by that is that I am responsible for making sure that our current product will run properly on Windows Vista. To guarantee that it is indeed Running Properly it should behave *exactly* like it behaves in Windows XP. In simple terms, my entire job security is riding on making our products compatible with Microsoft’s failed attempt at a MAC-ish Operating System and with Microsoft’s successful attempt (a first in their history) to make their operating system NOT backward compatible with older applications. So much for Raymond Chen’s camp undying obsession with backward compatibility.
This products that I’m talking about are a set of Web Applications written in ASP.NET version 1.1. This web applications are as old as Windows XP. I checked its File Modification History in our TFS repository and the last time that anyone have touched its code base is in 2005 — and that’s just for a minor code modification to fix a bug. I believe this apps were written way way back in 2004 — when I was in Third Year High School!
To make this products compatible with Vista, there are a couple of steps that had to be done. I’ll enumerate each steps and what it takes to accomplish them.
Continue reading “Migration: Why Developers Hate Microsoft or Why Developers Hate Vista or My First Encounter how Microsoft can Break your Software” »

While having dinner with my teammates at the Shangri-La Plaza, we had a nostalgic conversation about our adventures in technology, particularly in programming. Just a bunch of geeks talking about geeky stuffs on a Friday night.
According to our Project Lead, he started his programming adventure by writing programs in BASIC on an Intel 486 computer a Sharp MZ80 Series (2 Mhz and 24KB of RAM). He also mentioned that he had once used a cassette tape to store his programs. He is that old (80+ years old in Programmer Years). Another teammate told me that his programming adventure started when he first discovered Visual Basic. For me, my programming adventure began when my elementary professor taught us Web Development (as in HTML) way way back in 1999. 1999 was the time when having an E-Mail account can get you laid . *I know, HTML is not programming! STOP BOTHERING ME*

After sometime reminiscing the days of Web 1.0, Visual Basic 4, Dial-Up Internet, mIRC, Hacked Unix Shell Accounts, Hacked AOL accounts and the Borland Turbo C Compilers, I suddenly brought up the topic of programming milestones — Those important events in your programming life that marks an important transformation. Those paradigm-shifting events that changed your geeky life forever. What’s interesting with this conversation is that everyone in the table can relate to each others milestones, its like everyone have the same programming milestones. Maybe all programmers have the same set of programming milestones? Like in life (as in real life), where we consider both College Graduation and Marriage as milestones.
Continue reading “What are your Programming Milestones?” »
 My First Official "Coding Horror" Encounter
Back in College, I have a friend who’s programming prowess is so godly that it can easily match mine. He is a C++ Junkie and belongs to the Java Cult. His mental agility is so great that he can beat me in writing complex algorithms anytime of the day. In fact, I chose him to be the “Architect” for our project in Compiler Theory Class (Kompayler Studio 2008: The First Tagalog Kompayler, Programming Language and IDE). He is THAT great of a programmer… BUT
Being a Great Programmer is not the same as being a Great Software Developer
“Aren’t programming and software development the same?” Uhhmm, NO. Programming is just a single part of Software Development. Software Development, on the other hand, is an entirely different song and dance.
In one of our converstations, I told him that instead of reading books about programming he should try to read books about software development. I gave him that advice not because I want him to suck in programming (I’m not that envious). I gave him that advice because I want him to realize that programming alone won’t make a great software product and that programming prowess alone won’t give him the best programming job around… at least here in the Philippines.
One of our main differences is reflected on how we write code (which eventually shows in our software). For example, say that we have a project that requires us to deliver a Simple Number Sorting Application that will ask the user to input 50 numbers and sort it. This project is resource constrained in such a way that we need to deliver it in 2 days.
Continue reading “Coding Horror 01: Readability vs Efficiency” »
After spending almost 2 months at work without actually doing anything that barely resembles programming, I was finally sent to a training at an outsourced training company in Makati.
The training is about Windows Communication Framework or WCF — Microsoft’s answer to building Service-Oriented Architectures (SOA). Gone were the days of Web Services, more so, socket programming! It’s all abstracted now. Yay for lame programmers!
But anyway, the training was GREAT! I was able to learn the ins and outs of WCF. But what’s interesting is that I learned a new “way” to do rollbacks automatically! It’s called…
TRANSACTIONS!

|
|
Comments