From: bronxelf_ag001

2009-09-27 12:29 pm (UTC)

This post is Official Infocommie approved.



:D From: pozorvlak

2009-09-27 07:07 pm (UTC)

Thank you! From: susannahf

2009-09-27 12:41 pm (UTC)

That last one made me laugh out loud. Oh the number of times I've been there. What you didn't mention is the worst bit, which is when you have finally crafted a vaguely working, if slightly shonky fork-handle out of the sole of a boot, some melted cheese, and a bit of wax, losing a couple of fingers and a large portion of your sanity in the process. So you show it to someone, and go "look!", and they open a hidden door and say, "but we have a cutlery drawer here..." From: pozorvlak

2009-09-27 02:44 pm (UTC)

I don't think that's the worst bit: that's frustrating and humiliating, but it at least means that you can throw away your horrible fork-handle and start working with a nice one. The worst bit is when you think you've got it, and that the magical incantation new Cylinder(new SwissRoll(new Layer(boot.getSole(), new Mixture(cheese.melt().reform(), wax.melt(new CigaretteLighter(pocket.getContents(Word Handbag.LEFT).get(0))))))) ¹ will Do What You Want, and then you discover that the getSole() method is only implemented for running shoes and sandals...



¹ Why yes, I have been writing a lot of Java recently. How did you guess? :-) From: pozorvlak

2009-09-27 07:06 pm (UTC)





And it's especially horrific when the thing you have is really really like the thing you need, but for some insane reason the library author doesn't agree :-( On reflection, I don't think my description really got across the precise horror of API spelunking. Actually trying to construct a fork handle out of cheese, a candle and an old boot would have more in common with Doctor X programming than with API spelunking, which is essentially a navigational challenge: the question you're always asking is "how do I get there from here?" The kind of programming that you need a D&D Minotaur for. The difference between API spelunking and data munging is that in data munging (as I use the term here), any of your operators can be used at any stage, whereas in API spelunking you're limited to a small set of available operators at each turn, which may advance or retard your progress. In Unix scripting, pretty much everything takes a sequence of lines of text and turns it into a sequence of lines of text, but if you have a Boot object you can't decide to call getWick() on it. You're working in a category (or rather, a multicategory) rather than a monoid.And it's especially horrific when the thing you have isthe thing you need, but for some insane reason the library author doesn't agree :-( From: (Anonymous)

2009-11-15 11:58 pm (UTC)

Congratulations! You've just fairly accurately described programming the BlackBerry.



Want to make a font appear anti-aliased? Well, you might spend a few days toying with different values to feed the style int, find that what looks good on the 8320 looks terrible on the 8700, tear your hair out, give up on any easy solution, and then somebody pops up in a forum to tell you: yes, just use net.rim.font.FONT_DO_SOME_ANTI_ALIAS_PLE ASE, and no, that's nowhere in the published documentation. How did they find out about it? Beats me, but the BlackBerry's been around long enough to spawn some serious beardage on its acolytes.



Or, if you want to save an email to mass storage, you discover there's no way to access the attachments. Unless the email author has titled the attachment in question x-blackberrys-are-so-secure.zip. (I'm not kidding, only exaggerated the precise name a little.) So you keep going with the rest of the message, save it all to disk, great. Now, to pull the data out and recreate it... Oh, those MessagePart subclasses you need to use that you were just reading data from to save to disk? None of 'em have public constructors. So sorry, it's all mostly read-only in the end.



Hate that (*@# platform, and that's probably why I've been sitting on a great little app for a year, because finishing it is just so painful. From: stronae

2009-09-27 03:17 pm (UTC)

You want to zom all the glaars



HAHAHAHAHA From: jackalopemonger

2009-09-27 07:59 pm (UTC)

"You have a candle, a slice of cheese, and a pair of old boots. You need a fork-handle." Sounds like the beginnings of a text adventure game! From: bug_fashion

2010-06-25 03:44 pm (UTC)

you picture write what? From: totherme

2009-09-27 11:29 pm (UTC)

Do you think of "Clever datastructures" programming as a subcase of "Clever algorithms" programming?



If so, then you might (in some cases) be able to turn some of your third-fave problems into some of your second-fave ones... Although I guess that the "squinting" feel of your fourth-fave problems can happen here too... From: pozorvlak

2009-09-28 08:40 am (UTC)

I suppose I do. And yes, that's what I try to do with type-3 problems, but it isn't always possible: or rather, after staring at it for a while and trying to come up with an elegant data-driven design, sometimes I conclude that the path of least resistance is just to bang out the if-statements :-( From: necaris

2009-09-28 07:22 am (UTC)

I find languages like Ruby or Python (to name two that I am familiar enough with to be able to say this) help with the API spelunking in that if the API sucks, there are other ways to introspect and get at the insides of the software to get what you need done. Although that does turn into Dr X wizardry very quickly... From: pozorvlak

2009-09-28 08:41 am (UTC)

Yep. Duck typing obviates a lot of the problem, too. And in Perl, where the bias is against creating object hierarchies, the problem is further reduced. Will the increasing dominance of Moose end this situation? I hope not... From: bug_fashion

2010-06-26 07:31 am (UTC)

You are the few people who wrote something about that, I like it.