Recent Articles

Jul 2009

Many More Minutes

by in Error'd on

"I'm not an expert at world time," Matias, "but this may be an issue with time zones. Maybe some zones have more minutes than others."


Mister Fix-it

by in Feature Articles on

K&R has magical properties.To the outside observer, Christopher M's work environment might appear to be a potential breeding ground for WTFs. They supported an "enterprise-level" product and, when a developer noticed a bug, the development manager expected him to just go in and fix it. No change controls, no QA oversight — those were far too time consuming and added little value. Almost anywhere else, this set up would result in chaos, but Chris and his four fellow coders were experts, and they were able to navigate the lack of process.

One day, the development manager decided that, to better handle the bug fixes for their applications and be able to support their growing user base, they needed a new developer. And he knew the perfect candidate. On paper, Winston looked as though he would be an ideal match, and he interviewed even better. Not only did he passed the developer test with flying colors, but when asked about his free time and hobbies, Winston responded with a stern and serious face: "I seek out and destroy poorly written code." His knowledge, attitude, and tendency towards geekery put him over the top, so he was asked to start the following Monday.

Getting Confrontational about Variables


Josephus' Circle

by in Bring Your Own Code on

With nearly 750 responses, and solutions written in everything from ABAP to MUMPS to XSLT, I’d say that last week’s Programming Praxis (Russian Peasant Multiplication) was certainly a success. The comments are most certainly worth a read, if nothing else but to see things like the circuit diagram solution, something done entirely using regular expressions, and some obscure childrens' language called Baltie 3. That said, I'm excited to present this next Programming Praxis.

Titus Flavius Josephus was an important first-century historian. Having survived the siege and destruction of Jerusalem in 70 AD, he authored several works on Jewish history, including The Jewish War and Antiquities of the Jews. Not only have his writings given valuable insight into first century Judaism, they provide an extra-Biblical account of early Christianity. But aside from the books, and the writings, and all of his other invaluable contributions to history, Josephus also told the story of how he had escaped death by quickly standing in the "safe spot" of what is now called Josephus’ Circle.


A One-Year Job

by in Feature Articles on

ee... ee... ee... ee... ee... .........  "Good morning, Janet!" ee... ee... ee... ee... ee...

It had been just a couple of weeks, but the sound was the same every day. Chris L.'s boss, Phil, was wheeling his 286/12MHz personal computer in a handcart with a squeaky wheel down the aisle.


What Fundamental Underpinning?

by in CodeSOD on

Sascha was at wit's end. "It's a fundamental underpinning of the web! Server-side code cannot interact with the user's web browser and tell it to close the window. You have to do it in JavaScript!"

"Okay," Sascha's coworker smiled wryly, "not only can it be done, but I've done it! How's that for your 'fundamental underpinning'?"


Hypocrisy

by in Error'd on

"When writing validation scripts, it's easy to forget that some fields (company name, for example) might actually need a mix of letters and numbers," Laurie Denness writes, "you'd think some companies would be better at remembering that than others."


Pagination Consternation

by in Feature Articles on

Bruno was working on a PHP-based hotel reservation system and, thanks to the odd bug here and there, seldom had the time to look into the "feature requests" queue. But the good news was that the system was getting more and more stable with each release, and the really good news was that Bruno would be getting some help from a newly hired developer named Greg. Bruno even picked out the perfect first task for the new guy.

The system worked as you'd expect any online hotel reservation system to work – punch in the name of a city (optionally including the number of nights for your stay, smoking/nonsmoking preference, etc.), get a list of hotels back matching the criteria. Clicking the "Find Hotels" button would fire off a few operations; first retrieving a list of hotels from the database, then some light massaging of the list in PHP code, then writing out the results to the page. It was all well and good until you did a search for hotels in New York City, where you'd get a near-endless page with hundreds of hotels. The obvious, simple solution? Split up the results into multiple pages.


Support Should Never Be Necessary

by in Feature Articles on

Not too long ago, the CTO at Dudley H.'s company had a startling revelation: there should never, ever be a need for technical support. If a client has an issue using one of their products, then the problem is most certainly in the product. Maybe the UI is a little confusing. Maybe it's not documented enough. Maybe the documentation isn't clear enough. Whatever the case, every client issue means that someone — be it the developer, tester, or helpdesk technician — didn't do their job properly and should strive to improve themselves.

Of course, the counterargument to the CTO's revelation, lobbied primarily by the helpdesk staff, was that many users are simply lazy, stupid, or lazy and stupid, and no amount of improvement could ever change that. Not that it mattered, though. The CTO was determined and set a new policy that all client issues were to have "problem/improvement" reports written about them, and that all reports were to be reviewed at the higest level. Being the loyal employees that they were, Dudley and his fellow helpdesk technicians began developing these reports.


Russian Peasant Multiplication

by in Bring Your Own Code on

Ever since the first OMGWTF Programming Contest, I've always wanted to bring back some element of "coding challenges" to the site. Ideally, this would be in the form of a second contest... but considering that contests require a ton of work, and the fact that interns around town have come to learn that interning at Inedo basically mean means shipping mugs, mailing stickers, testing contest entries, and acting as human ottomans, we'll have to go with something a bit scaled back. And that's where Programming Praxis will come in.

The goal of Programming Praxis is simple: provide an outlet for you, the enquiring software developer, to sharpen your programming skills on a problem a bit more interesting than the normal, boring stuff. That, and to put your code where you mouth is, so to say. There is no “right” answer and no perfect solution, but some will certainly be better than others. The best of these will get a TDWTF sticker.


Bourne Into Oblivion

by in Feature Articles on

Bueller?Jerry wasn't the sort of guy who would normally vent frustration out loud at work, yet here he was - cursing into the air at two individuals in particular - the first round of explitives being directed at the toolbag, somewhere, who had botched months of server backups by reusing the same set of tapes for months and the other being a long ago departed developer whose name he was continually being subjected to in the comments of the rotten shell script he was now stepping through.

What had started out as a 7:30am ticket from an early-bird user getting a error message when trying to open a spreadsheet test plan from the week before had turned into a full-on, corporate-wide DEFCON 1.


A Peculiar System

by in CodeSOD on

Near the end of the new contractor’s first week, Taka Sora was starting to wonder if he made the right hiring decision. Richard – the contractor in question – seemed to know his Action Script 3, but there was just something about him that wasn’t right. And it wasn’t the strange noises that he was making all day.

Richard was brought on to build a Tournament Brackets module as part of a larger project for a major client. He seemed to have gotten a great start, which was one of the reasons Taka just learned to deal with the neighing and nickering sounds coming from his work area. But by the end of the week, Richard’s progress just stopped. His second week wasn’t any better, though each promised he was "just about done." And his third – and final – week proved to be just as unproductive as the last.


What The Ad? - Not Even Then

by in Feature Articles on

Today's What The Ad? is courtesy of John D.. The general theme: business ads that wouldn't appeal to a typical business, even then.


BYTE, January 1982 - "FMS-80 Organizes Your Organization." Or, "Yes, you too can be just like organized crime!"


10206662-1129!

by in Error'd on

"I was updating my AT&T Global Network Client and was confronted with a few choices," wrote Nick S., "I think I clicked the right one."


The SQL String

by in Representative Line on

"Our Senior Architect likes the idea of keeping things simple," Stephen B, "no stored procedures, no parameterized queries... just simple, simple strings."

"So, in keeping up with the 'simplicity', following is one line of code from one of the business objects in one of the modules in one of the layers in our system. I think it speaks for itself."


Secured Debugging

by in Feature Articles on

In 1968, when David Foskey finally had the opportunity to stand face-to-face with a Honeywell 8200, his expression was nothing short of awestruck. Technically, the 8200 didn’t have a face, it had a window that overlooked a room. And not just any room, but a room the size of a freakin' basketball court. In fact, Honeywell recommended that no less than six thousand square feet be dedicated to the 8200; any less and the sorters, collators, processors, storage devices, and computer operators would be a bit too cramped.

For David, his enthrallment wasn’t just about the sheer size – to reiterate, a freakin' basketball court – or the mainframe’s raw computer power – over 400,000 operations per second and 1,048,576 bytes1 of memory. It was also the fact that a Honeywell 82002 played a memorable role as war planning, Latvian army controlling, deviously plotting supercomputer in a recent Harry Palmer spy movie, Billion Dollar Brain. And not only that, but the Honeywell 8200 that David peered into was owned and operated by the Department of Defense.

Snapping Out of It


Synchronization by Modal

by in CodeSOD on

Bryan D recently started a new contract with a large company that was developing a rich client application with all the latest buzzword technologies: WCF, WPF, BDD, etc. He was brought on to clean up the code and help figure out why the middle tier wasn’t so “middle”. It actually lived in the UI.

The middle tier seemed pretty straight forward: it was a collection of classes that were designed to be exposed as webservices and then called by the UI. Each service class implemented an abstract Interface that had a pretty straightforward set of method.


Sponsor Appreciation, Flushing Logic, Estmate Problems, and More

by in Feature Articles on

Please show your support for The Daily WTF by checking out the companies that have been kind enough to sponsor us. And, in doing so, I’m sure you’ll find some pretty cool products and services built by like-minded developers and IT professionals.

 

Microsoft/web   Microsoft/web - We teamed up with Microsoft/web to answer a burning question: with the dizzying array of languages, frameworks, tools, and technologies, what do you think about web development? It's all finished! Just let us know if you'd like a copy!
 

Decent Diversions

Comic Reader Mobi   Comic Reader Mobi - I'm not a big comic book guy myself,but Comic Reader Mobi looks like a good way to start. Simply tap any of the text bubbles to magnify; the app automatically detects the size of the text bubble and magnifies that text alone. You can also magnify a small area without expanding the entire page. It is an extremely handy feature that allows you to see the whole page and read the text without zooming in and out.

Cool Tools

Splunk   Splunk - Search, navigate, alert and report on all your IT data in real time. Logs, configurations, messages, traps and alerts, script, code, metrics and more. If a machine can generate it -- Splunk can eat it.
Caretta   Caretta Software - makers of GUI Design Studio, a specialized software prototyping and User Interface design tool for Desktop, Mobile and Web Applications. Quick and Easy to use, with No Coding! Why not give the 30-day trial a shot?
TechSmith   TechSmith - the world’s leading provider of screen capture and recording software for individual and professional use. Personally, I can't live without SnagIt, and am quickly getting addicted to Camtasia. The Jing project is also pretty interesting for instant sharing.
SlickEdit   SlickEdit - makers of that very-impressive code editor and some pretty neat Eclipse and VisualStudio.NET tools and add-ins, some of which (Gadgets) are free. Check out this short video highlighting just one of SlickEdit's Visual Studio integration features.
Software Verification   Software Verification - software engineering tools for memory leak detection, code coverage, performance profiling, thread lock contention analysis and thread deadlock detection, flow tracing and application replay on the Windows Vista, 2003, XP, 2000 and NT platforms.
 

Great Components

Mindfusion   MindFusion - a great source for flow-charting and diagramming components for a variety of platforms including .NET, WPF, ActiveX and Swing
div elements   Divelements - developers of WinForms, WPF, and Silverlight controls. Easily integrate the Office 2007 Ribbon Interface, Dockable Windows, and several other interfaces. All products are available with a 30-day trial.
Atlassian   Atlassian - the folks behind JIRA (which, in turn inspired Manual JIRA) wanted to let you know that they're not a "follow the rules" software company who realizes that there is no single recipe for practicing agile development. They were once hungry for practical tips, so they thought they should share their agile story.
 

Solid Hosting

go grid   Go Grid - the first multi-tier, cloud computing platform that allows you to manage your cloud hosting infrastructure completely on demand through an intuitive, web interface. Get powerful dedicated resources on a cloud computing architecture that you can buy as you need instead of deploying servers and building complex load balanced networks. Get a $50 credit when signing up!
Cushy CMS   Cushy CMS - a hosted CMS built from the ground up with ease of use in mind. It's incredibly simple to use: no PHP or ASP required. If you can add CSS classes to HTML tags then you can implement CushyCMS. And best of all, it's free. Spend a few minutes and try it out!
SoftLayer   SoftLayer - serious hosting provider with datacenters in three cities (Dallas, Seattle, DC) that has plans designed to scale from a single, dedicated server to your own virtual data center (complete with racks and all)

Slow, Difficult to Code, and Buggy

by in Feature Articles on

Back in 2006, Steve worked as a developer at mid-sized financial services firm. Like many organizations with central IT operations, departments within Steve’s company had the option to “buy” application development services from IT, or use an outside vendor for their business software needs, provided that the vendor’s software met IT’s security and technical requirements.

Generally, getting IT’s approval was easy: the purchaser just needed to set up a meeting between the vendor and an “integration services” developer on Steve’s team, and then wait a few days for approval. But every now and then – such as when the HR department hired GlobalComp to build a web portal – things get a bit tricky.

The GlobalComp Review


Planning for the Past

by in Error'd on

"I was very grateful for the letter Virgin sent out the day after they were here," Magnus Therning "That sure helped us planning."


The Ace in the Hole

by in Tales from the Interview on

After spending his first three years out of college in an entry-level position with Ask.com, Erhen was ready to move on to something with more responsibility. One day, he received a phone call from a company that wanted him to come in for an immediate interview.

The following day, Erhen arrived at the company’s place of business. It was a sports equipment supplier, operating out of a building that might have been built entirely out of asbestos. On the inside, there wasn’t a piece of furniture or decoration that had been built post-cold war.


The Four Dutchmen

by in CodeSOD on

"It's some nice code," smiled the software architect at Petr Valasek's company, "it needed refactoring before it was ever written. But the good news is, you get to refactor it now."

And just like that, Petr was a new father. His baby was the bastard child known as the GIS Hardware Monitoring module. It wasn't pretty, but Petr knew it had potential and was excited to refactor the code. One of the first things he came across was this.


The Confidential Upgrade

by in Feature Articles on

Twenty five years ago, when Steve W. worked for a military subcontractor, he'd often roll his eyes when meetings were denoted "CONFIDENTIAL". It's not that he didn't take confidentiality seriously, it's just that everything they did was confidential. By labeling most everything "CONFIDENTIAL", there was no way of knowing when some things – like performance reviews and should-we-fire-so-and-so discussions – were really, really confidential. At least, not until you were actually in the meeting.

At one meeting, it was was really, really confidential. It was a one-on-one and across the table from Steve sat the Project Manager. These kind of solitary meetings took place either because you're doing something very wrong... or you're getting canned.


The Program Accelerator

by in Feature Articles on

As a postgrad in the late '80s, Neil Bowers made some extra book money by acting as a helper in the computing lab. At the time, undergrads were all working on a grindingly slow VAX-11/780, and Neil and his fellow postgrads were posted there for hands-on help. This tended to be focused at the start of the year, when there were groups discovering Unix and programming for the first time.

One time, an Irish girl asked Neil for some help, saying that she couldn’t understand what was going on: she thought her program looked right, but for some reason, each time she ran it she got partial output, and varying amounts of output each time. The homework assignment she was working on involved writing a program that generated various values and wrote the results in ascii tabular form to a file.