Recent Articles

Jun 2019

Classic WTF: The not-so-efficient StringBuilder

by in CodeSOD on
As our short summer break continues, this one is from waaaaay back, but it's yet another example of how seemingly simple tasks and seemingly simple data-types can be too complicated sometimes. Original--Remy

The .NET developers out there have likely heard that using a StringBuilder is a much better practice than string concatenation. Something about strings being immutable and creating new strings in memory for every concatenation. But, I'm not sure that this (as found by Andrey Shchekin) is what they had in mind ...


Classic WTF: Uncovering Nothing

by in CodeSOD on
As our little summer break continues, we have a tale about Remi (no relation) and a missing stored procedure. Original --Remy

Remi works on one of his country's largest Internet Service Providers, and has the fortune to be on an elite team that focuses on agile development. Or misfortune, depending on how you look at it: at his company, "agile development" actually means "we need that in two weeks".

One of Remi's first assignments was to fix an "emergency" on one of the ATM Addressing systems. Apparently, the application was coming up with incorrect routing data. After a solid day-and-a-half of digging through Visual Basic code that called SQL Server stored procedures which called VB-based COM objects which called more stored procs, Remi found a weird table ("Cal_ATM") that was referenced from an externally-linked database, and the data in that table was completely out of date.


Classic WTF: Emergency Faxes

by in Feature Articles on
One of my first teenage jobs was to work as an office assistant. As this was the 90s, that meant I had to use and understand a fax machine. I… did not. The fax machine forever was a dark mystery to me, something that required strange incantations to work. As our summer break continues, at least I never caused this much trouble with the damn thing. Original --Remy

As far as technologies go, faxing is ancient. It predates the telephone by over a decade and, despite vast advances in scanning and email technology, the fax still remains a standard form of communication.

When a transmission goes out, the occasional telecommunication ‘hiccup’ or line noise can corrupt the fax. Most modern fax machines have some rudimentary error handling that will alerts the user that the fax should be resent.


Classic WTF: Logical Tiers? That Makes No Sense!

by in CodeSOD on
It's that time of year when we take a short summer break, and that means we reach back into the archives for some classic WTFs that remind us of when things were better. Or worse. So much worse. Today, we find out where checkboxes come from. Original --Remy

Some developers just don't believe in "standards." I should know, I used to work with some of them. They had their own way of doing things, from reinventing the database to changing the web paradigm. I always found it ironic that these folks have a pretty good knowledge of the tools, but could never seem to figure out how to use 'em. Like Chris' predecessor, who seems to have done the equivalent of tightening screws with a voltammeter.

Ok, so I had to port over an ASP app to Coldfusion MX. It was a simple set of search pages so I didn't think it would take too long. Problem was, I couldn't find anywhere in the code where the HTML for one of the select boxes was. Silly me, I should have checked inside the SQL Server stored procedure first! And of course, this is just the tip of iceberg on this site. There were stored procedures that were used to build the actual HTML for the dynamic navigation as well.


MathOverflow

by in Error'd on

"I just logged in to StackOverlflow and gained two rep points! Wow, let's see who vot... uhmm... -20 +5 +10 +10 equals 2?" Ryan R. writes.


Get Out Your Decoder Ring

by in CodeSOD on

Back in the late 60s, early 70s, “Fourth Generation Languages” (4GL) seemed like the future. “Write programs without a programmer!” they promised. “It’s a specification-based language, you just tell the computer what should happen, and it figures out how to do it!”

The most famous and probably most widely deployed 4GL, when all its variants and dialects are taken as a single unit, has to be SQL. SQL is the epitome of a specification-based language: each SQL statement represents an expression in relational algebra, and the database gets to use its own internal logic for deciding the best way to execute that statement, making database tuning a dark art involving statistical modeling and a lot of, “I dunno, but when I use this hint it runs fast.”


The Map you Pay For

by in CodeSOD on

Soraya’s company recently decided to expand the payment options that they support. This meant integrating “Inipay”, Initech’s API for handling payment processing globally. This particular API is open sourced, which means that Soraya was able to investigate exactly how the sausage was made.

Many of the classes were tagged as being @author auto create. In fact, there were about 2,000 such classes, all nearly identical aside from a few minor differences. What got Soraya’s attention though was that each of them referred to InipayObject and InipayHashMap. Re-implementing standard classes is always a concern.


ToArray, then REST a bit

by in CodeSOD on

Mandy’s company was brought on to port some REST APIs to Java for a client. Those APIs were written in an in-house, proprietary programming language. Possibly this was a deployment of BobX? Regardless of what the in-house language was, it was everything one would expect from the Inner-Platform Effect. Weird, complicated, tortured logic.

Somewhere in Mandy’s company, a pointy-haired-boss decided they’d throw a junior developer at this. “They did a REST API during their internship, how hard could translating this logic be?” Well, that junior developer didn’t understand the ins-and-outs of Java that well. They certainly didn’t understand the original APIs they were trying to port. The result is that they tried to follow the twisted logic of the in-house language while trying to fumble through Java.


Greek To Me

by in Feature Articles on

Wikipedia favicon hexdump

Many decades ago—before laser printers, graphical operating systems, and device-independent imaging models—Gus worked in the IT department of a local college. As a personal project during slow moments at work, he took it upon himself to figure out how to print Greek text. About a week later, he'd hacked together a solution that resulted in a printout of classical Greek writing.


Do You Speak United States?

by in Error'd on

Mark wrote, "A Computer Science Degree + a New York certification + ability to speak United States?...I'm the perfict fit!!"


The Honeypot

by in CodeSOD on

Pitor works for a web development shop. They’ll develop and design sites, usually pretty simple ones, for their customers. They’ll host them. They’ll update them. Every once in awhile, a customer will think “we could do this cheaper in house!” and takes their site and their contract to a cheap webhost.

Sometimes, those customers come back when they realized their mistake.


Whose Tern is it to Play?

by in CodeSOD on

Every once in awhile, someone sends us some code from a game. Now, I’ve never delved deep into game development, aside from making a 3D asteroids game as a final project for a class twenty years ago, but I’ve also read an article about how fast inverse square root works, and know that you shouldn’t blow in a Nintendo cartridge, so I’m basically an expert, and I understand that under the constraints of games, some of the rules about clarity and maintainability go out the window.

But Adam S found some code that’d be just plain bad in any context:


This Null Leaves Me Feeling Empty

by in CodeSOD on

Stella needs to interface with a cloud-hosted marketing automation system. The documentation isn’t particularly great, and her organization doesn’t have anyone with any serious experience with the stack, so she’s been trying to find examples and wrapper libraries that can make it easier.

She found one. While digging through the wrapper code, she found this block:


Is Thinking Range Empty?

by in CodeSOD on

Susi inherited some code which she fortunately wasn't expected to maintain. She had a worse problem: she was expected to figure out what it did so that a new version of the software could be created. No one actually understood all the ins-and-outs of the software, there was no document that fully specified what it did, but it was absolutely business critical and every feature needed to continue to work, even if no one knew exactly what those features were.

Features and functionality aside, internally, everything was stringly typed, and I do mean everything. Why use a struct in C++ when you can use a character delimited string? Why use a class when you can instead use multiple different kinds of delimiters to mean different things? Susi found cases where they stretched to delimiters involving characters Susi didn't even know existed, like the double o̿verscore.


Just Don't Look Too Closely

by in Error'd on

"Balmuda's marketing has a lot to say about their products in Japan...just not in Japanese...or really in Latin either for that matter," writes Michael.


Sorted by Title

by in CodeSOD on

Dictionaries/Maps are usually implemented on top of some sort of hashing system. This isn’t precisely required, but it allows extremely fast access by key. The disadvantage is that the data isn’t stored in any human-friendly order.

Cicely’s co-worker had a problem with this. They wanted to store key value pairs- specifically, the titles of a media item, and the actual object representing the media items. They wanted to be able to fetch items by their title, but they also wanted to be able to present the items sorted by their title.


Drink from the Font of Wisdom

by in Feature Articles on

A long time ago, George G started at Initech’s downtown office. They had just rented a few floors in an old office building that had recently transitioned from “urban blight” to “twee coffee shops on the first floor and the scent of shoe polish and fresh leather on every floor.”

It was a big space, and George was in the part of his career where he merited a private office with a view of the alley.


Robot Anarchy

by in Feature Articles on

Chaz had a pretty sweet gig as a software architect at a tech-based toy company. Being able to play around with computers AND toys all day wasn't terrible, but the pot got even sweeter when his company licensed a cool robotic product from a certain Danish toy company that specializes in small, colorful bricks. Chaz was happy to become the lead platform architect for this exciting new initiative.

The intended outcome was to make the robots consumer-programmable via an interface with a smartphone app. Chaz had grand ideas for how he wanted to build the app and backend from the ground up with stability, performance, and security as the main pillars. That dream was dashed by Stellan, the CFO-turned-CTO, who insisted they develop against the same in-house platform they'd been using for over a decade. Chaz argued with Stellan until he was blue in the face, but Stellan scoffed at him, "I don't care if smartphones didn't even exist when our platform was designed. The cost of building a whole new one would be astronomical. We want a quick turnaround and high profit margin on these robots!" Stellan clearly showed he was far more qualified to be a CFO than CTO.


This Event is Quite the Do

by in CodeSOD on

Benjamin inherited some code from a fellow developer. The original author of this code wrote a lot of code for the company, and that code drives a lot of products which make the company piles of money. Tired of making money, that developer left to go open a restaurant.

Which means Benjamin is now responsible for maintaining code which lives in 15,000 line files where class-level variables are essentially treated as globals. There's also a lot of misunderstandings about how Windows Forms GUIs work.