Recent Articles

Apr 2007

Saving a Few Nanoseconds

by in Feature Articles on

Last month, in Saving a Few Minutes, we learned about G.R.G.'s experience with RUNPROG, one of the earliest examples of The Inner-Platform Effect I've ever seen. RUNPROG lived on an ancient supercomputer with an operating system that lacked the concept of search paths. Instead of a simple, four-line enhancement to "search another directory," RUNPROG was a 100,000-line assembly program that essentially did everything that the operating system did.

Although RUNPROG was entirely unnecessary, cost an incredible amount of time and money to maintain, and caused programs to run and load a magnitude slower, the business did not mind. It saved them money in the long run in that it allowed them to bill out even more CPU-time to their timesharing clients. In fact, after three short months of production use, the business had already forgotten the pain endured to create RUNPROG. That was, until Black Tuesday arrived.


The Bunny Connection

by in Error'd on

I've always been impressed by Amazon.com's recommendation system. Sure, it gets a little weird when they know exactly what I want before I know what I want, but it sure is convenient. I'm sure you Linux folks (like Tom) appreciate it just as much. In fact, I'll bet you didn't even know how much you wanted No More Bottles For Bunny! ...


That'll Show the Grader

by in CodeSOD on

When I was grading for the Software Engineering course, I saw some pretty awful things. Most of the students were actually alright programmers; in fact some were pretty good. The trouble was that neither the really good ones nor the really bad ones came to lecture, so it was impossible to tell who the bad ones were until after it was too late to help them. Mostly, this was because we only began grading the term project --- interactively, as milestones --- late in the term.


Most groups still ended up getting the application to run but there were always one or two students that couldn't explain the system they were supposed to have helped design. During these evaluations, there were three types of teammates. The first was the person that couldn't sit still, wanting to pick up the slack. The second was the person that could only sit still because they, though fairly competent, knew that the application didn't really do what it was supposed to. And then there were the teammates that took sadistic pleasure in watching their randomly assigned partner suffer.



"Special" Offer

by in Error'd on

In my teenage years I went down south to visit some of the good 'ol boys in the Vinson clan (that's clan with a "c," though I have my concerns that some of them might be members of a clan with a "k," too). Regardless, we went to their church for some light gambling, where bingo cards were advertised as being "$5 each or 5 for $25." I'm not kidding. That's still a better special offer than Bob D. was offered on audible.com, though...


Eliminating Shady Characters

by in CodeSOD on

"These characters are real troublemakers," writes Cody. "You know the guys. Hair slicked back, boots, leather jackets. Or else, pants hanging down to their knees, pagers going off. Wouldn't it be great if we could just get rid of them? Wouldn't that make life a whole lot easier?"


One of the developers he works with thought so too. These punks were messing with the system, pretending to be foreigners. That's when the coworker took the law into his own hands and decided to "get ridoff" them himself.


/**
 * This function is called from jsp to get ridoff some
 * of the special characters
 */
public static String removeSpecialChars(String a_sValue)
{
    if (a_sValue != null)
    {
        a_sValue = a_sValue.replace('\'', ' ');
        a_sValue = a_sValue.replace('\"', ' ');
        a_sValue = a_sValue.replace('&', ' ');
    }

    return a_sValue;
}


Synergized Student Consulting

by in Feature Articles on

Making ends meet while attending college is tough. Tuition is ridiculously expensive, books are ridiculously expensive, and food is ridiculously... reasonable, generally. Still, it's hard to afford everything. You could work a crappy part-time job, sell your bone marrow, sign a waiver and let the med students have their way with you, or improvise to make money. Jesse's friend who we'll call "Giuseppe" chose improvisation.

Now, by "improvisation," I don't mean he got on stage to talk about how white people tie their shoes versus how black people tie their shoes (what's the deal with that, anyway? Heyoo!). No, he found himself a client! He could use all the skills he'd gleaned from his few years in college and make some money on the side.


The Case for Switch

by in CodeSOD on

Little more than a structured goto with a nicer getout, every C programmer knows (and many love) the switch statement. Even if you don't love it, there are obvious uses that produce cleaner code than strings of else-ifs and help prevent many simple kinds of errors.


Take for instance the following code, for which Gulliver writes in asking, "how many times do you have to check a condition?"


void ReplaceCommas (char *buffer)
    {
    int i,j;
    j=strlen(buffer);
    for (i=0; i < j; i++)
        {
        if (buffer[i]==',')
            {
            if (buffer[i]==',') buffer[i]='.';
            }
        if (buffer[i]==',')
            {
            if (buffer[i]=='"') buffer[i]='\'';
            }
        }
    return;
    }



Securing The Server Room

by in Feature Articles on

“Hey, you’re in IT, right,” a frantic fellow in a maintenance jumpsuit asked, barging right into G.R.G.’s cramped little office. G.R.G. shifted his eyes away from the project he was working on – some database for physics students and professors – and began to formulate an affirmative answer. Before he could even complete the word “yes,” the Maintenance Guy jumped in, “’cause, we have a serious problem.”

The Maintenance Guy went on to explain that he was receiving increasingly severe temperature alarms from the Server Room. First 86°F, then 93°F, then 97°F, and – just then – 103°F. He figured that the dedicated air conditioning unit had died. Normally, that wouldn’t be a problem, but he had no way to get in to fix it. The Server Room – which housed all of the university’s critical research, financial, and operational servers – was locked.


File... Save As... Hard Copy

by in Error'd on

Jamin doesn't trust traditional filesystems. You can keep your FATs and your NTFSs; he'll stick with paper. Of course, file storage takes up more physical space in this case, but copying a file is as easy as setting the printer to print and collate two copies every time a file is saved. The only issue he has is that booting from the scanner takes several days.


Race and Government

by in Feature Articles on

The government: preserving rights and protecting justice. The Department of Motor Vehicles: our model of efficiency and equality. My car: newly titled and good luck finding parking in San Francisco.


While I was sitting at the CA DMV, I contemplated these things. Why did I register for an appointment at 9am on a Monday, especially when the lady behind the dispatchers desk didn't ask for any proof that I actually had a reason to be in the "Appointment Express!" line. No matter, it only took me 15 minutes to get in, hand in my homework, and get out. But all is not well at the DMV.



The Worse Than Failure Programming Contest

by in Feature Articles on

A couple months back, I mentioned that I’d like to try out something new on this site, specifically, a programming contest. After a lot of thinking and a little bit of coding, I finally put one together: The Olympiad of Misguided Geeks at Worse Than Failure Programming Contest.

Unlike other programming contests, the goal of the OMGWTF contest is not to flex your algorithmic muscles and solve some abstract computational problem like you might in an ACM contest. Nor is it like the International Obfuscated C Coding Contest; in fact, writing code like that would be a surefire way to lose this contest. Instead, the goal of the OMGWTF contest is to solve an incredibly simple problem using the most obscenely convoluted way imaginable. And for this first contest, the simple problem is to build and implement the logic for a four-function calculator.


Time for Consultants

by in CodeSOD on

Because consultants work on many different kinds of projects, they have the ability to produce large libraries of boilerplate code. "Hey, we did something like this before. Just a couple of tweaks and we're done!" Code reuse makes everyone happy, especially management on both sides.



Schooling the Interviewer

by in Feature Articles on

Sometimes the best WTFs don't come from without; they come from within. If you think back across the history of your career, you've probably had your share of red-faced, forehead-slapping moments from doing something stupid. You've got some coming up ahead, too. And if you've never made an embarrassing professional mistake, congratulations, you're an oblivious "Expert."

Dan O. was enjoying the fruits of working for a dot-com venture in early 2001. Well, like most dot-coms at the beginning of the century, Dan's went bankrupt. Maybe they were ahead of their time, maybe they were big dreamers, or maybe it was the fact that a client that represented 80% of the company's revenues dried up.


Ahh, No One Will Notice

by in Error'd on

If you're working on a feature of an application that is hidden off in a dark, cobweb-covered corner that maybe one in ten thousand users will ever use, you might be a little lax about it. Maybe it'll stay out of the smoke testing plan, maybe it'll even be forgotten by the time the software ships. A good example of an insignificant feature would be the ability to select a background color in a print preview screen. A bad example of an insignificant feature would be creating a new document.


(submitted anonymously)


Predictive, Recursive Error

by in Error'd on

Dave T. sent in this message that I've been trying to figure out. As I understand it, FontLab's import failed because it couldn't find the reason the import failed... but it wouldn't have a reason to fail to begin with. It's as though it predicted a failure that didn't actually happen, which caused an error. I swear, this'll lead me to trepan myself like the guy in that movie Pi.


And We Got Sheena

by in CodeSOD on

G.R.G. writes: years ago, we got to program on the original Macintosh. Believe it or not, it had really impressive speed with its 8MHz CPU. And then we inherited a programmer named Sheena. Her degree was in Cinema. We needed programmers. Sheena is what we got.

Generally, we tried to parcel out the simplest part of every project for Sheena. In this one big project, we needed a procedure that would read entries out of a Help file. So we gave that job to Sheena. The spec was: "Write a procedure that returns the N'th line of the help file."


Meaninglessness

by in Feature Articles on

As you may or may not know, my day job is a Software Developer at a small consulting company called Inedo. We build all sorts of businessy software that does all sorts of businessy things for all sorts of businessy, erm, businesses. Most days, it’s a challenging and satisfying job; I’ll go home thinking, I accomplished something today. But every once in a while, I can’t help but wonder, why am I spending my life building cold, meaningless business applications?

I’ve found that the feeling of meaninglessness comes especially after the “Deployment Celebrations” of some big, “productivity-increasing” system. Congratulations! We saved MegaCorp shareholders millions each year in labor costs, and we got a fantastic bullet point to put on our resumés. But we also put an entire floor of nice, hardworking people out of work. Now, I’m sure a lot of you have felt this sense of meaninglessness as well. Fortunately, folks like Ferdy remind us that, while we may not be doctors, or astronauts, or really anyone in a position to change the world, making it run a little more efficiently every can be a good thing.


Strings in Hiding

by in CodeSOD on

With all this talk about char* and the struct hack, some of you may have gotten the (incorrect) impression that I hate C-strings. On the contrary, I think they're great. Many of my friends are character buffers! In fact, one of my favorite functions is strdupa. But with std::strings and StringBuffers out there, how can they compete?

Luckily Ben, one of our field agents, has found a good example of when a StringBuffer is overkill. Apparently, it was too much trouble to type TextToPrint[Index]=sb.ToString().


The Source Control Manager

by in Feature Articles on

If you haven’t done so already, you will. Soon. It’s inevitable. No matter how careful you are, no matter how meticulous your check-ins, you will eventually be the developer who Breaks the Build.

Most developers fear becoming the Build Breaker. It’s not so much that they’d be responsible for hours of lost productivity, lost testing, lost testing time, and that sort of thing, it’s the “other” consequences. To help prevent broken builds, development organizations have put together penalizing procedures that are designed to embarrass and humiliate the Build Breaker. It’s almost always something fun and silly – the Build Breaker has to bring bagels to the next team meeting, or the Build Breaker Beanie Cap gets passed down from the last Build Breaker and must be worn for a week straight – but it works. Nobody wants to be The Build Breaker.


Please Turn to Page F%

by in Error'd on

Trying to follow news and current events the old-fashioned way is not so easy. Analog media like “newspapers” (I’d have to check Ye Olde English Dictionary, but I think that’s what they’re called) lack hyperlinks and require the reader to physically “turn” the “page” in order to continue reading a story. It’s crazy. And not only that, these ancient relics have no ability to handle errors like Page Not Found. Oli D. is still struggling to find Page F5 amongst F1, F2, F3, F4, F%, and F6...


Comment in Earnest

by in CodeSOD on

Most Introduction to Computer Science classes teach students about the importance of comments. Some even teach the value of good comments. It is still not surprising to think that a lot of code is speckled with inanity. I've seen it, I think you probably have too. I'm pretty sure I didn't write it but who knows: the author didn't put his name anywhere in the file, just a note following n+=1 explaining that the statement "increments n."



Government Department

by in Feature Articles on

"You Tris?"

Luke had just blown his opportunity to make a good first impression, as was his custom. Luke was a huge, imposing, surly man who'd been in IT for far too long. Tris tried to feign a smile.


History++

by in CodeSOD on

In the beginning was FORTRAN; Science created FORTRAN and loved it and saw that it was good. Many great and mighty works were done in this language as it spread across the face of the deep. This --- the favored language, imbued with the power of transformation --- understood the very mind of Science.


But, lo! there was another language stirring in the garden. It was called "C" and employed the dark arts and pointer arithmetic. Lacking a native complex type and at least six extra letters in its name, C became jealous of FORTRAN, the beloved. With it's spawn, C++, it struck out to win the heart of Science.



GRG's Worst Production Failure

by in Feature Articles on

Last month, in //TODO: Uncomment Later I asked, what was your worst production failure? This month, G.R.G. (from Insecurity Doors, Mystery of the High Test Scores, Saving A Few Minutes, and so many more) tells of his worst production failure.

Long ago, I worked as a programmer at a university’s hearing research lab. They were awarded a large government grant to study the effects of different kinds of noise on hearing. For the really loud and really faint noises, the researchers used animal subjects with ears that are similar to human ears. Specifically, chinchillas.


Don't Read

by in Error'd on

Everyone has rebellious impulses. Doing the exact opposite of what signs, your conscience, authority figures, or common sense tell you to do is always more fun than obeying them. Honestly, the "Do Not Feed the Tigers" sign at the zoo might as well just read "Fun Prohibited." Sometimes you have to listen to the Avril Lavigne in your head and just, like, totally reject authority!!


(Submitted by Nit)


While-While

by in CodeSOD on

As Ken Thompson showed, you can never trust a compiler. His most famous example was of a trojan compiler, though he later refined the model. Lesser know is his example of the trojan-less compiler: it meets your sister in a bar, buys her a couple of drinks, and the next thing you know you've got a shotgun and a preacher. That's when the compiler skips town.


That, of course, is an extreme example; and as much as we all like extreme programming, it doesn't exactly reflect reality. Given a shortage of power drinks, you can often get less rowdy compilers to do what you want by speaking slowly and repeating key phrases. Realizing this, Anders sent in a perfect example, taken from a module loader.


Did You Know?...

by in Error'd on

Before popup blocking was a common browser feature, I developed a high level of skill manually blocking popups. I could zoom the mouse over a window and close it almost immediately after it appeared. This became second nature, and after getting used to it, I became incapable of not closing popups. Similarly, I subconsciously check "Do not show this message again" boxes and uncheck "show this message next time [x] starts" any time I see it. If this is what I'm missing out on, I'll deal with it.


(Submitted by Ben)


Must Be Last

by in CodeSOD on

Software is a delicate thing. The myth of "portability" is detrimental in that it causes us to abuse intricate, beautiful code by turning it into generic, ugly tripe. If you develop something that doesn't require loving care to compile, you've failed your inner artist.

That being said, Francis would like to share the following work of art with you. Keep your hands to yourself, however, because the slightest touch could bring everything crashing down. Also, be sure to read all of our other snippets first, as this one must be last.



Continuous Improvement

by in Feature Articles on

Keeping employee morale up is a hard thing to do, so businesses do their best to keep spirits up. Maybe a company picnic, maybe you get to wear a Hawaiian shirt to work one day (thanks, soulless employer, I've always wanted to look like a total boob in a Hawaiian shirt), or perhaps a game of friendly competition.

Well, John Q. Public and his coworkers were offered a crossword puzzle. It's safe and has a fun factor somewhere between breathing and finding a penny on the ground. Essentially, it's the minimum amount of fun you can have before moving into the territory of not-fun. Plus, the company could fill it up with generic words like QUALITY, PROCESSIMPROVEMENT, and TRIAGE.


The End of the String as We Know It

by in CodeSOD on

I wish that there was something funny I could say about C-style, null-terminated strings. There isn't. "Putting a sentinel value at the end of a variable length sequence instead of a fixed-size count at the beginning: priceless." The fact is, they just aren't funny.



Umm, Steve Got Lost

by in Tales from the Interview on

Unadmirable Honesty
(submitted anonymously)

Interviewing at my company is a grueling process filled with phone interviews, group presentation and interview, and one-on-one interviews. One of the one-on-one interviews is usually a behavioral interview. You know the kind, "If two people you worked with were having an argument about something what would you do?" or "When you start a project, walk me through the steps you take to make sure that you are successful." Most candidates will pass the behavioral part fairly easily since the phone interview should have weeded out most of the duds. That's why it was so amusing when one managed to slip through.


Change Article Title

by in Error'd on

Despite the fact that we work together and literally sit within arm's reach of one another, I was overjoyed when Alex made me an author on this site. "They'll talk about ya in the papers, kid. Stick with me and you'll go far," he said. Of course I'm paraphrasing; "Jesus, this is taking way too much time out of my day. Can you write an article so I don't have to?" might be a little more accurate. Still, I was honored to have the opportunity for several reasons:


(Submitted by Chris)


It's Gonna Be a While

by in CodeSOD on

One of Adam Lane's many fun adventures as a consultant was to help out a company that had a large, broken, in-house reporting system. The company's lead programmer had just up and left, leaving a mess of a project that "Visual Basic was having a few problems compiling" and that Adam would have to "clean it up and make it work." A dirty job, but that's why they paid Adam Adam's employer the big bucks.

The reporting system had a total of 192 forms, 87 modules, and 21 class modules. And hundreds of compiler errors. I believe the appropriate adjective here is "Hindenburgesque." Before Adam even looked at the code, the client wanted a ballpark guess of how long it would take to get their system back and compiling. Adam guessed "a week or two at best." After looking the code, he revised estimate: "it's gonna be a while."


Soft Coding

by in Alex's Soapbox on

The submission behind today's schedule article was withdrawn; instead, I'd like to take this opportunity to present the practice of Soft Coding.

Most programmers consider “Hard Coding” to be a Bad Thing: it’s hack-like, inelegant, and all-around lazy code. And as such, many programmers try their damnedest to avoid it. Unfortunately, this quest of avoidance often leads towards a much worse path: complication, convolution, and all-around unmaintainable code. It’s a path I like to call Soft Coding.


Cross Your Fingers ...

by in CodeSOD on

Josh will take any bit of solace he can find. The database he works with each day has caused him more pain than every other combined. Saying that it's "just a mess" is like saying that Hurricane Katrina was "just a storm."

Take the User table, for example. The original developers never thought to put a unique constraint on the "Username" column, resulting in a now-unchangeable 249 users with a username of "null", 103 with the username "" (that's blank), and over 400 Jose's and John's. As for Josh, he's just happy he can share this following stored procedure. It's a fun, little microcosm of his daily insanity.


The Incidental Expert

by in Feature Articles on

Call me jaded, but every time I'm starting up on a new project as a maintenance developer, I expect the worst. It helps to soften the blow when the code I have to maintain is, in fact, "the worst." Plus it makes it all the better when I get to maintain good code.

In the early 90s, Tim was called on for help with a beautifully written TurboPascal system (and he assures me that such a thing exists). His company was tasked not with improving the already excellent system but, puzzlingly, replacing it altogether. It was there that he first met Hung.


Click Where?

by in Error'd on

It was a big day for the Human Resources department at George's company: they finally moved their myriad of documents and forms to the company's Intranet. While they could have simply uploaded their Word files directly, they opted for a more Web 0.1 approach: they printed off the documents, scanned them in, and uploaded the resulting PDFs.  


Some Call it Concatenation

by in CodeSOD on

Geoff Lane's predecessor, Brian, had a problem: none of the URLs their dataset started with "http://". This meant that, before displaying them in the UI, Brian would have to figure out a way to take the string "http://", and placed it front of every URL.

Give that requirement, how might you accomplish such a task? Here was Brian's solution ...


Act Now!

by in Error'd on

With an offer like this, Dan Q. would be an idiot not to spend £100,000.00 on several copies of Sage Instant Accounts 12 (Google cache) from across the pond. Order now and get it before whatever the hell Red Nose Day is!


Back That URL Up

by in CodeSOD on

In the progression of web application developers, there is a phase during which the developer has the power to build something really useful but lacks the ability to create useful URLs. This phase is dangerous because if the application becomes widely deployed, you're likely to be stuck with a namespace that complements its lack of expressibility with an overabundance of complexity.

That aside, there is one thing constant in the ever-changing world of the web: root. For any domain, the document root unifies and binds all other resources on that domain. If you're ever feeling lost, that's where you want to head. Aaron, digging through a "legacy enterprise application, written in old-school VB6 ASP" found just the function for finding your way from any page to that place of calm.


Trash Talking

by in Feature Articles on

Here's a secret about your company's tech department: they hate you. They really, really, really hate dealing with your stupid questions because you're a stupid user who never learns. They're even devising ways to avoid dealing with you.

In fact, I worked with a tech support guy who developed a strategy to avoid doing work; he'd pretend he'd identified the problem, give the user a task that takes a minimum of five minutes to complete, and ask that the user call back if the problem wasn't solved (with a high probability of the call going to one of the other support guys). The tech department at Alise's friend's company was roughly as helpful as my former coworker.


The UNIX Philosophy

by in CodeSOD on

Recently, a friend of mine --- a chemistry graduate student at a prestigious university --- was complaining that his advisor was forcing him to use C++ instead of Fortran. The problem: he needed to g/re/p an input stream, crunch some numbers, and produce some output. "It's so easy to use the Fortran system call; is there even a way to execute command-line programs from C++?"

That of course is the UNIX Philosophy: to build a bunch of fundamental, pipeable tools and then call them with exec and friends. In that same vein, Paul sends along the following Perl code he found, "written by an ex-coworker."


The Chief Development Manager

by in Feature Articles on

"Wait a sec," whispered Chris’s coworker David, "he can’t possibly think this will solve the Build Problem? His idea is completely absurd!"

Chris nodded slightly, clearly uncomfortable to be part of a conversation taking place in the middle of a meeting. Especially a meeting being held by the Chief Development Manager. While some managers like to lead by example, and others like to lead by befriending, the Chief Development Manager liked to lead by fear.


Wise To Their Ways

by in Error'd on

S. B. S. knows that employment scammers are waiting around every corner. Your neighbor might be one. Your coworker. Even your grandmother is probably running work-at-home scams on the internet! S. B. S. fortunately wasn't taken in by this one from Monster.ca:


Bringing LOGing Back

by in CodeSOD on
Linda didn't have much to say about the following code snippet. In fact, she sent nothing else; therefore, I feel like I don't need to say much about it. All I know is that if I ever need a logger to produce a stack trace in Java, this is how I'll do it.


The Final Assignment

by in Feature Articles on

I was never able to wrap my mind around academic tenure. Though I certainly understand the desire for "academic freedom," a system that provides an "unfireable" designation, regardless of job performance, seems like it might have a bit of an impact on, say, job performance. Perhaps I’m just biased from my first experience with tenure: Yes Alex, we realize that 80% of students drop his course, and that he often misses lecture, and that he occasionally shows up smelling of bourbon, but please understand: he’s a tenured professor. And by the way, that did not make me feel any better about spending $1,400 on a completely worthless class.

I’m sure that Kerin A. doesn’t have a high opinion of academic tenure, either. His first experience with it was in Web Development 101, a course instructed by a certain tenured faculty member whom I’ll call Professor Lawrence. He was "on loan" from, as he put it, one of the best and most prestigious universities in the world: a small liberal arts college that no one in the class had ever heard of.


Just in Case

by in CodeSOD on

 The best thing about HTML is that (historically) consumers are insanely permissive about what they accept. The most obvious thing is that --- casting off the iron fist of XML --- hypertext markup allows tags to be case-insensitive. It is widely accepted that this helps designers more fully express themselves on the web.

Of course, this causes problems for some tools. Take the example of the tool Ben was looking at. He wanted to learn more about regular expressions and, realizing that all HTML tools are probably written with regular expressions, decided to dig into one.


Really Unique Passwords

by in Feature Articles on

We all know the rules for good passwords. They should be at least 90 characters long, have no recognizable words or phrases, consist of 30% lowercase characters, 30% uppercase characters, and 40% special characters, and they should be changed daily, if not hourly. Where I work, if you forget your password, you're fired on the spot and recommended for execution.

OK, maybe I'm exaggerating a little, but let's quit jerking each other around and get serious. Password security is a big deal. Enrique knows this as well as the rest of us. Sadly, two developers he worked with missed the message.


Yes, That's Exactly What I Meant

by in Error'd on

Christian K. needed to wash his Nitro, which according to Google is probably either a Dodge car, snowboard, fishing boat, punk rock album, sexy movie guide, or web development framework. Anyhow, he had no outside spigot to use in his apartment complex, so he needed a way to hook it up to his kitchen sink. Google tried to correct his search, and I have to admit that I'm more than a little afraid to check this out in Google Image Search.


In the Shadow of Giants

by in CodeSOD on

It is not uncommon to feel intimidated when starting a new job. This is especially true when you think you've been hired as a programmer, show up, and are asked to do IT for "just a couple of months" until they hire someone to do that job.


Such is the situation in which Clint found himself, many years ago. The problem is that when they finally hire an IT guy, it may be hard for the other programmers to accept you into the herd. To them, you're just the guy that bounces the email server and makes backups.


Lucky for Clint, the other developers sat him down and walked him through the application he would be working on. Though many of the concepts seemed foreign, they appeared to know what they were doing. In fact, when one of the other developers complained that he was getting "inconsistent results," he asked Clint to take a look at his code.