A Good Story About Programming
November 24, 2007 10:00 AM   Subscribe

"This is the story of when I re-wrote the Lotus Notes Formula Engine.... So here was I was, offered this position that I clearly wasn't qualified for. I had no experience with language runtimes or compilers, I knew very little about C and didn't know anything about C++, I had never dealt with platform byte ordering and packing and all the other issues associated with writing something for eight different operating systems, I had never even used proper version control. But none of that mattered to me. It seemed to me like an amazing opportunity and I would be doing exactly the kind of stuff I enjoy most..."
posted by grumblebee (64 comments total) 12 users marked this as a favorite
 
Interesting stuff. I ain't a programmer, either.
posted by brundlefly at 10:35 AM on November 24, 2007


Interesting post to me, as I am a software engineer. I wonder what random passer-bys will get out of it.
posted by Harald74 at 10:35 AM on November 24, 2007


Looks like his Web server is about as reliable as Lotus Notes' email server. Anyone have a copy of the text?
posted by Nelson at 10:37 AM on November 24, 2007


The Google cache works.
posted by cmonkey at 10:42 AM on November 24, 2007


This goes a significant way to explaining why Notes is probably the worst program I've ever had the misfortune to be lumbered with using. Nice that his bit of it is well made, though. cf.
posted by armoured-ant at 10:45 AM on November 24, 2007


And here is the Google cache for a follow-up post.
posted by oddman at 10:49 AM on November 24, 2007


And that was a really interesting story. It's always fun to read about what other engineers do when they're handed brutal tasks like that.
posted by cmonkey at 10:51 AM on November 24, 2007


What a surprise - IBM hires grossly underqualified programmers for Notes. The finished product certainly shows that kind of quality - what an utterly craptacular excuse for a mail platform. Have you ever heard of people resigning because the email system was so shitty they couldn't do their jobs? My organization was forcibly migrated to Notes last year after our company (an Outlook/Exchange shop) was bought out by a larger company that still hasn't migrated off that garbage platform. We've actually had resignations over it - people who were so completely hamstrung when trying to do their jobs that they quit in frustration.
posted by deadmessenger at 10:56 AM on November 24, 2007


Someone should write a little script that scans through MetaFilter (and maybe Slashdot and Digg) articles and primes the Coral Cache for all of the links. This would have been a perfect use for it, but it appears not to have been cached before it went down.
posted by Kadin2048 at 11:00 AM on November 24, 2007 [1 favorite]


So I spent the first four months just learning and fixing. Sometimes I'd cause regressions, especially early on. At one point I made so many mistakes that the build team talked to Wai Ki about me, I was slowing them down and if I kept it up they would take away my code submission privileges.

Interestingly, Linus Torvlads talked a lot about this problem in a lecture he gave about git, the version control system used by the Linux Kernel. Git is "p2p" in the sense that it doesn't have a central server, rather repositories can pull from each other, and developers each get their own copy that they can commit too. It's a really cool idea that totally blew my mind when I heard about it.

Git solves that problem. No ifs, ands, or buts, the problem is just solved.
posted by delmoi at 11:00 AM on November 24, 2007


Have you ever heard of people resigning because the email system was so shitty they couldn't do their jobs?

*Raises hand*

I've quit over a shitty email system that kept me from doing my job (and kept getting my people in trouble with upper management). In my case it was Exchange 2000. Considering I'd administered Notes and BanyanMail in the past, the shittyness of Exchange could not be overstated.

But, I'm also probably the only operations guy on the planet that loves sendmail.
posted by toxic at 11:13 AM on November 24, 2007


All these people dissing Lotus Notes should read the special secret user's guide, which can be found via the dropdown menus under Tools --> Preferences --> Mail Preferences --> Special Features --> Folder Options --> Preference Options --> Tools --> Arbitrary Extra Menu Level --> Fuck You For Working At A Company That Uses This Application --> Special Tools.
posted by game warden to the events rhino at 11:18 AM on November 24, 2007 [25 favorites]


MetaFilter: Special tools.
posted by loquacious at 11:37 AM on November 24, 2007 [2 favorites]


The most wondeful thing about Notes is that mail files ove 1gb get corrupted. So when we ask people to archive (That is a pia in itself) they later complain that they can't open the archive...
posted by Gungho at 11:41 AM on November 24, 2007


git wouldn't actually solve the problem he's talking about.
posted by cytherea at 11:41 AM on November 24, 2007


This is pretty fantastic. Too bad the brain-damaged bonobo that wrote Groupwise doesn't have a blog yet.

Sometimes I love PINE so much that - like vi - I use it to compose a little thank you note to it.
posted by Wolfdog at 11:48 AM on November 24, 2007 [1 favorite]


Ah, notes. Back in the days before anyone had heard of Melissa (1998, to be precise), a colleague of mine sent a "Merry Christmas" email in Notes that sent itself to everyone in your address book (using LotusScript, or whatever it was called.)

After the IT chaps had put out the fires in the mail servers and my colleague had finished his disciplinary conversation, they asked Lotus if this was something they intended to fix, as it presented a bit of a Security Problem. I believe Lotus' response was "yes, we know, please don't tell anyone." Inspiring, eh?

Nice post, btw.
posted by Luddite at 11:53 AM on November 24, 2007


Oh, and a lot of the Notes developers I knew referred to it as "Scrotal Groats". For which phrase, quite possibly, this mefi page will now be the sole result on Google.
posted by Luddite at 11:56 AM on November 24, 2007


CouchDB, anyone?
posted by five fresh fish at 12:11 PM on November 24, 2007 [1 favorite]


Google cache to spare the MT-crippled web server.
posted by genghis at 12:29 PM on November 24, 2007


Jesus Christ, Notes isn't that bad. Incompetently administered, any software product is a piece of shit. I agree that Notes is probably the worst thing IBM puts out, though, which is saying something (cough websphere cough portal)
posted by synaesthetichaze at 12:41 PM on November 24, 2007


Wow, this is so completely my world. My first consulting gig, back in 1996 or so, I was hired as a Lotus Notes expert programmer despite having only casual, user experience with it. But this was back in the day where consulting firms would hire anybody who sorta looked like a coder and throw them at projects -- as long as we're billing. So there I am, fresh out of school, irrelevant master's degree in Mechanical Engineering in hand, and I'm billing this environmental engineering company $90/hour as a Lotus Notes programmer, sweating like a hooker at Sunday mass.

Back then, Lotus Notes v3 was the most current version, and all it had was that crappy, crappy formula language. No debugger existed -- you had to run your code and see what it did. I was quickly getting frustrated, because none of my code was working right, and I couldn't figure out why. On about my third or fourth day, I debugged my code down to an exaserbating "it's executing my code OUT OF ORDER!!!?! HOW CAN I CODE WHEN IT RUNS IN RANDOM ORDER???"

There are two types of instructions a programmer can use in formula language: @Commands and @Formulas. (I can't really explain the difference, except that @Commands do "bigger things" than @Formulas.) Turns out in v3, @Commands always run last -- *after* all @Formulas -- no matter where they're positioned in the code. Oh. ::face-palm::

Lotus Notes can be incredibly powerful and user-friendly, especially for sales force automation and workflow applications that integrate e-mail messaging, but it really comes down to the programmers building the applications, most of whom are sub-mediocre. That's fine by me -- it makes me look like a rock star and my applications look like masterpieces by comparison.

At my current gig I'm coding in Lotus Notes v6, which includes all the updates that Mr. Katz implimented -- and, yeah, it's tons nicer, includes conditional looping**, an (undocumented) formula language debugger, etc. So thank you, Damien Katz, for doing that voodoo that you do so well.

** Strictly speaking, you *could* do looping in v3 Formula language, but you had to do some freaky recursive stuff where a macro called itself.
posted by LordSludge at 12:45 PM on November 24, 2007


In reflecting on the comments by deadmessenger and toxic, I'm curious how to answer the capitialistico-philosophical question: if Lotus Notes is so crappy and communications is the core of the effectiveness of any modern organization, how come some corporations using Notes are succeeding well enough to buy out others that are using more modern, useful communications tools?
posted by twsf at 12:47 PM on November 24, 2007


Notes is a strange beast. It's a scripting language and a wiki and a mail server and a document repository and a maid service. I was intimately involved in a couple of Exchange/Outlook based scripting projects and I could only look enviously at the Notes development team (yes, we had sections of the company using Notes separately from e-mail). We had to rely on my Exchange expertise (which was I suppose barely sufficient) and this weird fiftyish guy who was like the only guy in Chicagoland we could hire who knew how to script an application for the environment. Whereas the Notes guys came right out of school by the dozens and put workable stuff together in a week's time. The scripting tools just made it that much easier.

Sure, it was a mangy beast if all you used it for was e-mail, but it had a lot of other built-in capabilities that could be exploited with the right people.

Can't speak to current comparisons of the products, though. Oh, Notes is multi-platform and integrates automagically with IBM mainframes nowadays, which is a key selling point. Exchange only does that if you perform the right incantations at midnight on a granite altar when the moon is full in the dead of winter.
posted by dhartung at 1:11 PM on November 24, 2007


Notes was just an ugly, ugly program. I hated using it. I hated doing support for it, I hated even looking at it.
posted by empath at 1:11 PM on November 24, 2007 [1 favorite]


git wouldn't actually solve the problem he's talking about.

Well it solves the problem of repository access, which is what I meant. Obviously it doesn’t solve the problem of writing buggy code.
posted by delmoi at 1:38 PM on November 24, 2007


In reflecting on the comments by deadmessenger and toxic, I'm curious how to answer the capitialistico-philosophical question: if Lotus Notes is so crappy and communications is the core of the effectiveness of any modern organization, how come some corporations using Notes are succeeding well enough to buy out others that are using more modern, useful communications tools?

1) Communications is not the core of an effective capitalistic business

-- or --

2) said business is using some other method then email for most of it's key decisions, such as the telephone or face to face communication
posted by delmoi at 1:40 PM on November 24, 2007


One part of software development unmentioned in this interesting story is unit testing. Knowing what I know today, after a few years of working in the industry, my first goal (after bug fixing) would be to write code to exercise the existing system in various ways. Then I could use the test code with any new code I wrote to make sure it behaved in exactly the same way as the old version.

One difficulty with this is that if the old code isn't structured very cleanly (eg it has many global variables), it could be hard to break it up into smaller segments to test individually. I don't know of a good solution for this.

I also find it interesting that he considered code reviews a hindrance to development. I once had that mindset too, and if you're trying to get something done in a hurry it can be really convenient to do without a second pair of eyes. But I wonder how comfortable he is with being the only human who has even passing familiarity with the thousands of lines of code now in this engine. Code reviews (like peer reviews in academic papers) can point out edge cases, flaws in the code, and poor documentation.
posted by A dead Quaker at 1:59 PM on November 24, 2007


It scares me, my company is looking to go from Notes 7 to Exchange 07 next year (and Microsoft's Unified Communications Platform).

Ugh.
posted by SirOmega at 2:24 PM on November 24, 2007


"... It's a scripting language and a wiki and a mail server and a document repository and a maid service. ..."
posted by dhartung at 4:11 PM on November 24


You neglected to mention what a superlative dessert topping and floor wax it is, too.

*former Notes/Domino adminstrator, who still recommends throwing hardware at any Notes/Domino problem, because hardware is cheap and there's always more of it*
posted by paulsc at 2:34 PM on November 24, 2007


if Lotus Notes is so crappy and communications is the core of the effectiveness of any modern organization, how come some corporations using Notes are succeeding well enough to buy out others that are using more modern, useful communications tools?

It's adequate for email. I've worked with Notes, Groupwise and Exchange, and they're all very complicated (arguably over-complicated) enterprise messaging systems.

I agree that Notes is probably the worst thing IBM puts out, though, which is saying something (cough websphere cough portal)

There is NO WAY Notes is worse than Websphere Portal. This is simply unpossible.
posted by me & my monkey at 2:36 PM on November 24, 2007


One part of software development unmentioned in this interesting story is unit testing.

Well it did mention that his changes were causing regressions. I assume that meant during regression testing. It's not like automated testing was invented in the last couple of years.
posted by grouse at 2:52 PM on November 24, 2007


if Lotus Notes is so crappy and communications is the core of the effectiveness of any modern organization, how come some corporations using Notes are succeeding

Well, when it's used as intended (as an intra-office mail system and document sharing system, and directory, and carpet cleaner), set up correctly, on sufficient hardware, is reasonably well integrated with HR/Personnel policies, and has an admin that knows what he's doing, Notes does get the job done -- provided that you use it almost exclusively internally (and that you feed it very fast hardware constantly).

It's when you try to integrate it into anything that isn't part of the IBM ecosystem that it turns into a steaming pile of poop. The IBM ecosystem didn't used to include the Internet, though it may have gotten better since I last touched it.

If the communications that are part of the core of your modern business are overwhelmingly internal communications across your reasonably homogeneous network, then the shortcomings of Notes aren't going to bother you nearly as much as they would for a business where Internet communications or a multi-platform environment are critical.
posted by toxic at 2:59 PM on November 24, 2007


Well it solves the problem of repository access

If the keeper of the authoritative build repository doesn't want you to commit to it, then sure, you can continue to access your copy for all the good it'll do you. You can also pull other peoples' changes from their copies (if they let you) and hopefully even stay current. But if your work doesn't get into the build what's the point?
posted by George_Spiggott at 3:35 PM on November 24, 2007


Your search - Scrotal-Groats - did not match any documents.

Suggestions:

* Make sure all words are spelled correctly.
* Try different keywords.
* Try more general keywords.
* Try fewer keywords.
* Stop searching for inside jokes; the Internet is not a toy.
posted by sdodd at 4:10 PM on November 24, 2007


Well it did mention that his changes were causing regressions. I assume that meant during regression testing. It's not like automated testing was invented in the last couple of years.

I dunno, he mentions that in the same place where he talks about how his early changes often broke the build. If he wasn't running automated tests before checking in, he wasn't really in the unit testing mindset. It kind of sounds like the regression tests were either being run occasionally by the engineer in charge of the build, or else being done manually.

I got the unit testing religion a couple years ago, and when someone is as enthusiastic about the engineering process as he is, it surprises me that he doesn't talk about testing.
posted by A dead Quaker at 4:12 PM on November 24, 2007


Well it solves the problem of repository access, which is what I meant. Obviously it doesn’t solve the problem of writing buggy code.

But the problem was process, not offline development. He was committing unstable changesets to the main branch.

Not that distributed source control is bad--but git is a latecomer there. Not that it's not well suited to the task it was designed for.
posted by cytherea at 4:14 PM on November 24, 2007


Sorry five fresh fish, but considering Gungho's comment, I had to laugh when I saw this on the front page of the CouchDB site:

"A CouchDB database file can not grow beyond 2 gigabytes in size. [...] This problem will be addressed in a future release."
posted by sdodd at 4:15 PM on November 24, 2007


But no one will ever need more than 640K!
posted by five fresh fish at 4:29 PM on November 24, 2007


Microsoft Mail used to have a database corruption problem, too. Caught me more than a few times, unfortunately.

I have no problem with not being able to exceed a certain size, I can archive things when I have to. Just freakin' tell me before it happens rather than silently corrupting 600+ megs of data! Don't punish me because your programmers lack the ability to imagine.
posted by tommasz at 4:33 PM on November 24, 2007


If the keeper of the authoritative build repository doesn't want you to commit to it, then sure, you can continue to access your copy for all the good it'll do you. You can also pull other peoples' changes from their copies (if they let you) and hopefully even stay current. But if your work doesn't get into the build what's the point?

Right, but there is no "build" of a Git project. Everyone can build whenever they want. Obviously there is an official "blessed" copy, but someone could easily keep their own release with their own pet feature up to date, if it had some exotic feature that was useful for some people, then it might be used.

The other problem that Linus touched on is the problem of "breaking the build" if people "break the build" it slows everyone else down, but with Git everyone can build their own copy whenever they want. A company could keep one "stable" build that passes all the regression tests, another repository of people's latest versions that will compile, and developers can commit to their own repositories whoever they want, so if they change the code a lot, they can still go back to a version from three hours ago, if they need too.

It's kind of like saying "Why use email when you can use inter-office mail" Well, it makes things more efficient, and smooths over problems that might otherwise exist, etc.
posted by delmoi at 4:46 PM on November 24, 2007


Right, but there is no "build" of a Git project.

* cough *

I give up.
posted by George_Spiggott at 5:12 PM on November 24, 2007


George_Spiggott: Maybe I should have said there is no "one build" or "the build", of a project stored in Git. So when you say

your work doesn't get into the build what's the point?

What on earth do you mean by "the build"? If not a single, central build of a project, then what is it? The whole point is that doesn't need to exist.

Now, obviously if you're working at a company they are going to want to have one final version of the software, but you don't need to sync everything in one nightly build like a lot of companies do. Teams can sync with developers, and team leads can sync with eachother, and so everyone can stay reasonably current, and developers can work on whatever they want without interfering with each other.

So if that's not what you meant, then I really have no idea what you're talking about?
posted by delmoi at 5:41 PM on November 24, 2007


delmoi, there really isn't any difference between a centralized version control system and a decentralized one when it comes to the issues we're talking about here. If you're not allowed to commit your changes to the "blessed" code base, then your relationship to the overall development effort is exactly the same as it would be if you were using a centralized system like CVS; you can receive changes and merge them into your own work, but you don't get to contribute. Any revision control system will let you work on a private copy, make your own builds and keep up with changes even if you're not a committer.

I will grant there's one difference: with a distributed system like git or Mercurial, your peer groups can pull your changes if they want them. But if they make changes dependent on yours and commit back to the official trunk, they'd better have done the diligence that you got banned for not doing or they'll be in the same boat.

It's also worth mentioning that the current crop of version control systems make it much more straightforward to exclude problematic changesets that did get in and shouldn't have, than, say, CVS does, but that's not so much a distinguishing feature of a distributed system as it is of a non-sucky system.
posted by George_Spiggott at 6:06 PM on November 24, 2007 [1 favorite]


Oh, and a lot of the Notes developers I knew referred to it as "Scrotal Groats".

We called it "Bloatus Goats" back in '99. What a horrible piece of digital dogshit.
posted by stavrosthewonderchicken at 6:35 PM on November 24, 2007


I don't know why anyone would use Notes for the email alone... it's creating internal databases where it shines. We track everything in notes, from bugs to signings to change requests to vacation schedules. And we can customize things on a whim, and each team member can create their own views to see the data as they like. What do other companies use for that? Access? Excel?
posted by smackfu at 6:45 PM on November 24, 2007


I read this article and swore I'd never work with this guy. He seems to have learned little or nothing from this experience.

I also find it interesting that he considered code reviews a hindrance to development.

I write tens of thousands of lines of code a year; aside from demos, everything I write is code-reviewed and everything I write is unit tested.

It's particularly stupid since he was working in a language he didn't know. Note that he had to throw away pretty well all his code at least once because of his ignorance of the language.
posted by lupus_yonderboy at 7:15 PM on November 24, 2007


What do other companies use for that? Access? Excel?

Well you could do it in access for small groups, but that would be painful. Excel wouldn't work very well, but Outlook has a lot of what you're talking about built in. Outlook is what we use where I work. Not like I like it, but there you go.

It's also worth mentioning that the current crop of version control systems make it much more straightforward to exclude problematic changesets that did get in and shouldn't have, than, say, CVS does, but that's not so much a distinguishing feature of a distributed system as it is of a non-sucky system.

Ah. Well, where I work we had no version control for our stuff when I started, and I just started putting things in SVN on my own. I'm not too familiar with this stuff, but Git sounded pretty awesome to me. :P
posted by delmoi at 7:36 PM on November 24, 2007


It's particularly stupid since he was working in a language he didn't know. Note that he had to throw away pretty well all his code at least once because of his ignorance of the language.

Yeah, really. The only saving grace was that he was working toward an already existing, exact specification. It would either work, or not work, so the internals of the code don't need to be that great. It wouldn't need too much extension later on.

But yeah, this would be an awful way to design something in an already mature system. It's the kind of coding you would do if you were working on a prototype of something, or some application at a startup, or as a research project.
posted by delmoi at 7:53 PM on November 24, 2007


Sorry about the snappish comment, earlier. Your point actually is relevant in that distributed version control allows developers the freedom to do fine-grained collaboration on a subset of work while maintaining it in a state that might break the build if it were to go into the master repository. There are medium-term efforts within a project where "it'll break the build" is an artificial constraint that forces you to work in a way that may be far from optimal. A centralized system forces everyone to put and fetch from the same well: if I can't have your changes until you commit them and you can't commit them until they don't break the build, you and I are going to have a hard time working together, even if I don't care about breaking the build because I'm just working on a subsystem I've isolated on a test frame. I'm just not convinced that that's the situation our hero was in here.
posted by George_Spiggott at 7:57 PM on November 24, 2007


Plus, this guy can't even keep his blog up.
posted by delmoi at 8:06 PM on November 24, 2007


I was stuck by his quote from the (very interesting) linked article: "I asked other engineers really dumb C++ questions, the kind of questions someone asks when they don't even know what's important. I would often get puzzled looks..." It reminded me of a story.

At my first serious programming job one of the project managers was a former software developer. After awhile he got the itch -- he wanted to write code again. Being management, he invented a project to work on. I don't know why he chose to use C++, as he didn't appear to be all that familiar with it. After toiling away for a bit, he came to my desk to show me his code. He was senior to me, and I felt a little uncomfortable at the prospect of criticizing him. Then I looked at his work, and what I saw appalled me.

He had modeled an HTML generator with one class per tag. There was a BODY class, a TABLE class, a P class, and so on. Each class's constructor would emit the open tag, and the destructor would emit the close tag. I immediately knew this was a bad idea, but it wasn't until I saw the code demonstrating the use of these classes that I realized just how bad.

He allocated these tag objects on the stack, so the only way to print a close tag was to force the variable out of scope. Right curly braces were scattered seemingly haphazardly around. Tags that were deeply nested within the HTML document (say, an EM inside a TD in a TR in a TABLE) had to be deeply nested in the C++ code. Indentation eight or nine levels deep was not uncommon. It didn't even look like C++ code at first glance.

Then he asked me what I thought of his design. I was deeply embarrassed for him. I couldn't look him in the eye. I'm ashamed to say my only response was, "Yeah, err, that's great."

Now I know that I should have taken the opportunity to talk to him about the proper role of destructors -- to release resources allocated by the instance. And to suggest that he perhaps look into overriding ostream's operator<<.

Anyway, thanks for letting me get that off my chest. I apologize if I have inadvertently turned this thread into a DailyWTF.
posted by sdodd at 8:27 PM on November 24, 2007 [2 favorites]


I'm just working on a subsystem I've isolated on a test frame. I'm just not convinced that that's the situation our hero was in here.

Nope, because he was working by himself. But it would have been helpful for him to keep track of his own changes. I'm working on a fairly large personal project, already as big as the final version of the Formula Engine, and I can't imagine doing it without SVN. So Source Control for a single person is fairly worthwhile. And switching between source control systems (one personal, one 'master') would be a huge pain as well.

One of the things Linus said is that what seems like a simple efficiency booster can really change the work. It's like the difference between email and phone. On the surface, they both do the same thing, but since email is so much more efficient, it changes the way you work. (Although probably not for the better, in that case).

For example, developers don't need to set up any kind of long-lived repository to do that collaboration. They can do it easily on the fly (how easy, I don't know, how much that differs from central repositories, I don't know). Developers can also easily setup multiple repositories, transfer code between them, etc.

Anyway, seemed like a good idea to me.
posted by delmoi at 8:30 PM on November 24, 2007


There is NO WAY Notes is worse than Websphere Portal. This is simply unpossible.

Having worked with both, I can say that Notes is worse, but it is a photo-finish. Lotus support has a lot of that "yeah, that's a known bug... no, there's no fix... no, we don't plan on releasing one" kind of shit. At least with Portal, I could cajole them into hacking up a PK for me when I found the 700th bug in their shitty, shitty software.

I really like IBM. Their hardware is top notch, they have the best virtualization in the world, and AIX is my favorite OS. Linux on the mainframe is fantastic. But they should really stick to what they're good at. Portal & Notes need to die.

That said, I'm not a die-hard Notes hater like a lot of people in this thread seem to be. I agree that it requires some ridiculous resources to run properly, and that if you try to do too much with it... well, I hope you have real good backups (another thing IBM does well, by the way: TSM).
posted by synaesthetichaze at 8:37 PM on November 24, 2007


He had modeled an HTML generator with one class per tag. There was a BODY class, a TABLE class, a P class, and so on. Each class's constructor would emit the open tag, and the destructor would emit the close tag. I immediately knew this was a bad idea, but it wasn't until I saw the code demonstrating the use of these classes that I realized just how bad.

My mouth is literally agape.

Now there are actually some reasons why you might want a class for each tag, and there is actually an apache project that does something similar to what your boss did, although it doesn't pervert the concept of destructors that way. There is also taglibs which lets people define tags by creating new classes and using XML namespaces to reference them in XML files.

But yeah, what your boss was doing was totally whack.
posted by delmoi at 8:46 PM on November 24, 2007


Awesome post and thread, thanks guys.
posted by intermod at 8:59 PM on November 24, 2007


Hah! I love the idea destructor == close tag!

I mean, it's a terrible thing -- it's got everything wrong with it (for one, that means that each tag has to know about where it's writing to -- instead you should have your top-level tag render on request to some sort of abstract output class, which also gives you the benefit of being able to throw in a mock for testing; and it also means that you can't ever re-use the same data structure, which makes generating boilerplate slow and stupid; and.... etc.)

But it has a certain crazy charm. It's sort of the retarded twin of RAII.
posted by lupus_yonderboy at 10:44 PM on November 24, 2007


Each class's constructor would emit the open tag, and the destructor would emit the close tag. I immediately knew this was a bad idea...

Well, right off the bat that's a violation of the HTML spec for a lot of tags (unless your deconstructor was outputting NULLs for INPUT, BR, IMG, and a bunch of others).

I've had my ability to commit revoked before. It's 'cause I kept discovering bugs in the software that QA had already green-lighted. The moral of the story: don't try.
posted by Civil_Disobedient at 3:23 AM on November 25, 2007


Also...
"It's truly easier to ask forgiveness than to ask permission, not to mention things get done a lot faster if you just do them. It sounds weird, but that was big part of the culture at Iris. Just get it done and do it right, do whatever it takes. So that's the way I worked, I was just going to go headfirst into it, damn the torpedoes."

100% truth.
posted by Civil_Disobedient at 3:45 AM on November 25, 2007


At some point, I found an environment variable that controlled the Notes window title (NOTES_Window_Title or something). Small things amusing small minds, of course, but this provided a tiny measure of relief from the unrelenting suckage. I think it stopped working in Notes v7. Bastards.

There are IBM products that are worse than Notes and Websphere Portal; so bad that outside controlled conditions, no one can install them and find out just how bad they are.
posted by plant at 6:40 AM on November 25, 2007


About 15 years ago, I worked at IBM in Cincinnati. They forces us to use their operating system, OS2 Warp, and the Lotus office apps. Which worked okay for most of the office, I guess. But whereas most people I worked with were salesmen, I was a "graphics operator" Which means I made PowerPoint presentations (or, rather, their ilk in the Lotus clone of PowerPoint).

Companies that we partnered with constantly sent me files in MS Office format, and I couldn't open them. There was some sort of conversion process I could do, but the docs never came out right after going through it.

I remember spending a year trying to persuade them to get me a Windows machine with Office on it. By the end of my time there, I was head of my department, but I still didn't have the clout to get a Windows machine. I remember getting a memo from some high-up guy who acted all offended that I would want one, saying that I SHOULD be able to do everything on Warp that I can do in Windows. (By this time, Warp had totally failed in the marketplace and I think we were the only people in the world who were using it.)

Our whole office was filled with ancient, almost-broken equipment: photocopiers that constantly jammed and the like. I discovered that this was because it was almost impossible to purchase anything. If a department head said he needed a new photocopier, he had to first contact every IBM office in the world to see if they had a spare one -- even a spare one that was a decade old. Only after you'd exhausted all these possibilities could you possibly get permission to buy. So we had all this shitty, hand-me-down equipment.

There was one printer, and anything you sent to it would get stuck in a queue, behind all the other stuff other people sent before you. If you needed something in a hurry, you had to yell, "nobody print anything for a few minutes, okay?"

One time the printer stopped working, and we couldn't print anything for two days, until the union guys got there to fix it. We weren't allowed to try to fix it ourselves, because that would be a union violation. Turns out, it was unplugged.
posted by grumblebee at 7:57 AM on November 25, 2007 [1 favorite]


I was working for Arthur Andersen back when a 66mhz Pentium was as good as it got, and everyone was on Lotus Notes. It was a bizarre platform (inasmuch as it did forums and databases as well as email) that was surprisingly flexible and woefully insecure.

Surprisingly flexible, in that I was able to write a simple video game on it; I mailed the board to everyone (with pieces in current position) and after everyone mailed in their "turn" I calculated each person's moves and shots and then mailed out the results.

Woefully insecure, in that you could (and I did) send out a PowerPoint presentation set to automatically run as soon as the mail was opened, full-screen. It was right when PowerPoint started allowing sound clips, so I would send out mails to coworkers that blanked their screen and played loud obnoxious music that they didn't know how to turn off.
posted by davejay at 9:41 AM on November 25, 2007


For the record, I have nothing against "one class per tag." You could do cool things -- build a DOM-like tree or do data binding or put event handlers in 'em. His solution was not one of those cool things.

plant said: There are IBM products that are worse than Notes and Websphere Portal; so bad that outside controlled conditions, no one can install them and find out just how bad they are.

Oh, you can download UniVerse right from the IBM site. UniVerse is either a legacy non-relational database or an elaborate joke spanning decades.
posted by sdodd at 12:31 PM on November 25, 2007


In my experience, most large applications from any vendor are virtually impossible to install. They'll have a list of seemingly simple instructions, and it looks easy, but half the steps fail for some reason, especially if you don't have exactly the right pre-requisites. Then you spend a week working on it, and you write up the real instructions, and you never think about it again.
posted by smackfu at 4:43 AM on November 26, 2007


« Older Buy   |   Kasparov Detained By Russian Police (check) Newer »


This thread has been archived and is closed to new comments