Archive for the 'programming' Category

Dear Dr. Dobb’s Portal and Rally Software

Wednesday, March 24th, 2010

A two-page PDF of what is essentially two glorified PowerPoint slides does not count as a whitepaper. No, not even if you give it a title like “Build Release Plans That Deliver Customer Value.”

Please stop wasting my time with this shit.

Congenially yours,


YADM (Yet Another Developmental Milestone)

Friday, November 6th, 2009

Behold: The Boy’s first programming book. Which he requested by name.

Scratch Programming for Teens

My feelings are… mixed.

The hobgoblin of little minds

Wednesday, October 14th, 2009

A few thoughts about consistency, of course (Pace Emerson. let’s not limit ourselves to merely foolish consistency…).

Ahem. Programming geekery ahead…


Silly String Bleg

Tuesday, February 24th, 2009

Anyone have any idea why a Java Swing GUI would be displaying “é” as a “Þ”? I’m guessing it’s an encoding issue of some sort… .NET is displaying them all as “é” but not Java.


On rings, and hats, and the throwing thereof…

Wednesday, January 7th, 2009

Hats, that is. Not rings…

Recently, I was asked to provide a specification and estimate for a project at work. I’m not a software architect, so I’m having a hard time with some aspects of the spec – I think I know what we should be doing, and I think I have a grasp on best practices for what we’re trying to do, but I don’t know for sure… And estimates? Forget it. Remember how Scotty lets McCoy in on his little secret of multiplying everything by three so he’s always done early and looks like a genius? Yeah. I appear to have a knack for dividing by three and using that for my number.

So I picked up a book and started to read. How I spent my Christmas Vacation…



Friday, January 2nd, 2009

So I’m test-driving NDepend, and I find the following, um… non-standard keyboard shortcut:


My inner 12-year-old was amused all out of proportion and promptly posted a screenshot @ The Daily WTF.

(The funny thing is that this isn’t exactly no-name software… It’s in use in many large .NET shops to monitor code quality. I reported the bug and got an email back from the lead programmer/company owner in under an hour. He’s fixed it for the next release, and seemed kind of surprised that no one had brought it to his attention since it’s been there for months.)

Typical programmer error

Saturday, December 27th, 2008

In the grand programming tradition of ‘off by one’ errors, yesterday was the birthday of Charles Babbage.

On two occasions I have been asked, ‘Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?’ I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.

How little things have changed, eh?

(and yes… I expect that regular blogging will resume shortly…)

for (int i = 0; i < someUpperbound; i++){ /*do stuff*/ }

Thursday, July 3rd, 2008

I don’t often comment on the search strings that bring people here – they certainly aren’t as interesting as the lesbian vampire sex permutations that bring random (and disappointed) browsers to The Mystery of the Haunted Vampire. (See what you have to look forward to, Doug?)

This morning, however, I got a doozy, one that really and truly prompted a “Dude. Wait. What?” moment, complete with mental needle-on-record sound effects. If you aren’t a programmer or otherwise IT-minded, skip this one – I really won’t mind. If you are, however, please join me after the jump…


Kids these days…

Thursday, May 29th, 2008

This morning, I read an interesting article (just before it succumbed to slashdotting) called ’13 reasons why Ruby, Python and the gang will push Java to die… of old age.’ Nothing earth-shattering in it, but one of the author’s points was that successful languages tend to be backed by large companies – to which someone commented:

C++ wasn’t sponsored by any big company.

Really? AT&T doesn’t count as a big company? ‘Ma Bell’? Bell Labs? Maybe not so much now, but man – back in the day…

Alas, my attempt at delivering snark to target was stymied by this:

Maximum concurrency limit of 10 exceeded.Currently serving the following requests:


If you are the owner of this website, you may need to upgrade to a more advanced plan.

(A max of 10 concurrent requests? yeesh… I’m surprised I was even able to read the posting.) Anyway, I’m sure that by now someone has managed to get through and point this out. And if no one has, well… there’s always tomorrow – or six hours from now when the slashdotting hordes have moved on to their next… wait… sorry… what’s that?

Ooooh, shiny.

*ahem* Where were we? Oh yeah: You call that music? Turn that noise off! Now get off my lawn, before I call the police!

The Joy of Anal Text

Wednesday, April 23rd, 2008

Here’s a hot tip, boys and girls: never try to normalize your data using text fields as your primary identifier. The computer won’t know that “Some Company, Inc” is supposed to be the same as “Some Company, Inc.” or “Some Company Inc”; likewise, “Department” is not the same as “Dept.” is not the same as “Dept” even if they represent the same entity – and the programmer will hate you when they also have to investigate manually find out that “SomeOtherCompany 2000, Inc” is different from “SomeOtherCompany2000, Inc”.

No, really. They will. Upper-case-H-A-T-E, hate you.

Sweet Jesus Tap-dancing Christ, do I hate MySQL

Saturday, April 12th, 2008

Lest you think I’ve drunk deeply of the Open Source Kool-Aid, let me please politely but forcefully disabuse you of that notion… Let’s talk about MySQL.

So… MySql? This darling of the Open Source scene, recently purchased by Sun because they were losing out on that whole Web 2.0 thang and needed to acquire some piece of that hot, sweet, sweaty LAMP stack action by hook or crook? Yeah, that MySQL.

It sucks. And I don’t mean a little, I mean lots. And by lots I mean more suck than James Dyson will need in hundreds of lifetimes. I mean suck on the order of Harley-starting, golf-balls-through-garden-hoses, black-hole-consuming-galaxies suck.

Did I mention MySQL sucks?

As part of the project referenced in my last post, I need to match data in a MySQL database to data in an Excel spreadsheet to data in a Microsoft SQL Server database, then ported back to a MySQL database. The client wants the code that will do all this to be SQL, not a compiled language, which means that most of this will have to be written in MS SQL Server since that’s the only platform that can really read all three data formats. So what’s the problem with MySQL?

Where to begin…

Never mind MySQL’s atypical SQL dialect – that’s pretty much par for the course when it comes to SQL databases, and there are regular expression libraries and code bases out there that will convert 90% of your Microsoft-specific SQL code to MySQL-specific code. Forget MySQL’s use of the back-tick as a way of identifying table and field names – sure, quotes or square brackets would be far more standard, but maybe (maybe) the back-tick is in a reasonable position on a Swedish keyboard instead of being in the carpal-tunnel-inducing location it is on standard English keyboards. Because, you know, you wouldn’t want something to identify something as esoteric as table and field names to be in an inconvenient location, right? And we definitely won’t talk about how MySQL barely deserves to be classified as an RDBMS (Relational DataBase Management System) since it, well, doesn’t entirely support the R part of that acronym. Hey, referential integrity is overrated, right?

No, these idiosyncrasies pale beside the horror of actually trying to use MySQL’s tools. Oh, the command line tools work well enough, as does MySQL QueryBrowser and MySQL Administrator (as long as you don’t expect to work with anything other than MySQL data sources). No, let’s talk about their offerings intended to make MySQL a viable alternative for commercial solutions.

So, my struggles with Visio and MS SQL Server? Laughably minor when compared to how crappily MySQL’s Workbench works. Want to reverse-engineer a MySQL database with their visual designer? You can’t – at least, not with the ‘community’ version, only the commercial version. One problem with this – they haven’t released the commercial version yet, and the community version’s been available for a while now.

Want to migrate a MS SQL Server database to MySQL using MySQL’s Migration Toolkit? Good luck connecting to your MS SQL database. From what I can tell on MySQL’s forums, I am far from alone in facing this problem, and… there’s no clear fix for it. There are no checklists detailing what the configuration needs to be for either the source or destination server – you’re on your own, there. Oh, and don’t bother with the video ‘tutorial’ for migrating MS SQL to MySQL – besides being utterly simplistic, it shows the user doing something you can’t apparently do: save a connection to a MS SQL database for MySQL to reuse. Sure, you can edit the XML file that stores saved user connections – good luck finding documentation on what the values need to be for the connection elements to actually work properly.

So maybe you can port MS SQL structures and data by running MS SQL queries against a linked MySQL database. After all, as far as I can tell, every other database driver that lets you link MS SQL to other databases will let you do this – and you can do it in reverse, copying MySQL to MS SQL. Ha. Nope. Apparently, I don’t have privileges to do anything other than view data from the linked server – even though I’m connecting to it using the MySQL root login. “CREATE TABLE foo (bar INT NOT NULL, baz varchar(255) NULL);”? Forget it. Not gonna happen. Not using any of the tools provided by MySQL anyway.

Computers. Programmers. Software. Hmph.

Sweet Jesus Tap-dancing Christ, do I hate Microsoft

Friday, April 11th, 2008

Obviously, it’s been ages since I’ve had to do any formal database design work. My benchmark? I was totally unaware that you could no longer reverse-engineer or modify databases using Visio. Hasn’t been possible since, oh, something like Visio 2003.

(Aside: you can still use older versions of Visio to modify SQL Server 2005 databases, just expect a ton of (apparently harmless) error messages if you use the built-in SQL Server drivers. I’m led to believe that the ODBC driver will do it just fine, too. Thank whomever for legacy support for 16-bit technology, eh? Good luck finding a legal obsolete version of Visio, though.)

So I installed a 90-day trial of Visual Studio 2008 Team System. ‘Coz, you know, it includes the latest MS SQL development tools.

This entails…

…a 4GB download.

So I can export a database diagram I’ve already created to a format that, oh, I CAN SHARE WITH A CLIENT!

And, as it turns out, you still can’t actually export the database diagram in any form than a SQL script. Fortunately, we had an ancient version of Visio lying around the office. But damn…

(And don’t get me started on Apple, Sun, or the vast preponderance of Open Source stuff, either. Right now, I hate ’em all. Computers. Software. Programmers. Hmph.)

One would think…

Friday, March 7th, 2008

…(upon looking at a co-worker’s code) that a class named DiskBurn would, well, burn DVDs or CDs. Setting aside the fact that it should be named something more along the lines of DiskBurner, it doesn’t actually burn anything. As it turns out, it never actually will – it’s going to create ISO images instead.

But that wasn’t what bugged me – for a variety of reasons, the specs were awfully hand-wavy for this part of the application, and I knew when I started working on DiskBurn that it didn’t do what we wanted. Because of the state of the spec, I was given a fair amount of leeway in determining the final form this feature would take, so most of the actual ‘burn’ code was left until I was finished with a different part of this project (and got back from vacation, which should be the subject of another post Real Soon Now).

Basically, the application is a web-based content management system consisting of a public search interface and an administrative back end. The administrative component allows a small group of archivists to add new documents to the system, tag them with searchable metadata, edit existing metadata, and tokenize and index the document so that the body of the document can be searched through the public interface. In addition, these archivists occasionally get requests for custom data sets that they ultimately deliver on CD or DVD. Their existing manual process takes weeks to complete; DiskBurn should create a downloadable disk image in under an hour, depending upon the size of the requested data set. If everything goes according to Hoyle’s, the longest part of this process for the archivists should be downloading the image (they’re located overseas, with cranky connectivity; we’re hosting the website) and subsequently burning it to disk.

No, what bugged me was finding code in DiskBurn that searches the data set (because you need to create the custom subset, of course) – in an application that already has classes dedicated to search.

Shoot. Me. Now.

AFGO* completed

Friday, February 15th, 2008

We just wrapped up a big ol’ project at work this week. In the end, it was a classic software development final push, complete with pizza at the office, and hallucinations from sleep deprivation.

Ah, good times.

We were only 1.5 months late, which for custom, one-off software is pretty good. IMO, it’s even better considering that it involved my learning a new programming language along with an utterly unfamiliar API. Oh yeah, there was that whole “write once, compile and test everywhere” cross-platform thing going on too… Still, despite the grotesquerie of the last week or so, it was still a lot of fun.

On a totally unrelated note, I will be entirely without internet access for the next 10 days or so. If your comments go into moderation, they’re going to stay there until I get back. On the bright side, during those 10 days, I should be able to maintain my current pace of posting. You won’t even notice.

*Another Fscking Growth Opportunity

Bobby Tables

Thursday, October 11th, 2007

xkcd strikes again!

Okay, it’s funnier if you’re somewhat experienced with database programming… But if you aren’t, trust me – it’s funny.