» tagged pages
» logout
User:jerryk
Return to User:jerryk

Making Software And Related Things

(or Cancel)

(Editing anonymously: to be credited for your changes, login or register a new account)

other page actions:

Tags Applied to this Topic

1 person has tagged this page:

Making software and related stuff is one of the things that I do…

Tuesday, July 08, 2008

So... Difficult... to... bear...

When was it that 80% of computing became a swirling twit-verse of jejune Superman-could-beat-up-Batman debates?

Exercise to the reader: Go find any internet discussion of Spring vs. Guice for example and then write a psychology PhD thesis on what’s wrong with the people posting.

Tuesday, June 24, 2008

Newsflash: Not Actually Useful Service Apparently Too Heavily Used

Too much twittering, or twattering, or whatever the appropriate conjugation is…

Tuesday, June 17, 2008

Maven, I banish you back to the depths of 1982...

I’m not even sure you deserve to run here…

38,911 bytes free to BASIC… more than you’re worthy of…

Monday, May 19, 2008

Another New "Enterprisey" Design Pattern

Metastasis of Mechanism: Not noticing a common piece of functionality that recurs with only trivial variations across a system, solving the problem in an entirely different way in each location at which it appears, and then building an entire, half-baked, perpetually work in progress, idiot framework around a non-trivial fraction of each of these perversions.

Tuesday, May 06, 2008

Exciting New Java Design Methodology

I’ve been discovering this one in library code a lot lately: Race Condition Driven Design

Monday, April 14, 2008

From Some Otherwise Very Straight-laced Release Notes

This morning, I stumbled across the following while reading the otherwise straight-laced release notes in a README file for a project which had Mavenized its build a few versions ago, only to abandon it in a more recent release:

“Remove Maven pom.xml crap. Its a pile of dog shit. Don’t ever use it.”

I knew I wasn’t the world’s biggest Maven fan. That I have such eloquent competition in my smallness is wonderful.

Thursday, March 13, 2008

Cache Coherency, Memory Models and Related Things on Popular Architectures

Some references on cache coherency and memory models, that recently came up on the Java concurrency mailing list. The below is based on the original list is by Jaroslav Sevcik with slight additions…

Intel IA-64 (x86), AMD:

Java Memory Model:

Miscellaneous:

Sunday, September 09, 2007

From Roughly Drafted (or How I Love the Word "Decrepitude")

From a recent Roughly Drafted article:

Spreading fear, uncertainty and doubt by spewing ignorance and false information are efforts to keep the world stuck in the tech rut of the 90s, where no critical thinking was required. Lazy pundits like no possibility of being wrong, so working to keep the technology world enslaved to Microsoft helps them appear to be insightful when they prophesy that Microsoft will eventually come out with a copycat version of whatever anyone else is doing. Sure enough, it happens.

The same Mike Elgan wrote in Computerworld last fall that Microsoft’s Zune “scares Apple to the core,” and announced that Microsoft would “leverage the collective power of Windows XP, Windows Vista, Soapbox (Microsoft’s new “YouTube killer”) and the Xbox 360” to push Zune adoption. What a celebration of half decade old decrepitude and three new but clearly dismal failures!

It’s amazing how much lip service still gets paid to the interlocking Microsoft monopolies in spite of the fact that just about every one of their ballyhooed announcements of the last few years has floundered even with the potential lock-in and network effects that MS managed to exploit so successfully in the past. The old myth that “Microsoft always ships plague-infested rat turd in versions 1 and 2, and then it gets it right and conquers the world with version 3.0” that our management used to reassure us with internally seems to have become progressively more invalid as time has passed.

Unfortunately, from the inside, what the absorption of that myth seemed to me to produce was an intellectually slovenly and unimaginative engineering culture that assumed that pinching off a version 3.0 of something was a necessary and sufficient condition for market domination. This leaves the question of what the company is left with today? A horde of zombie troopers-based product development organization that strains and labors to produce a sub-mediocre product like Vista even after repeated delays and massive cuts of features, the feasibility and usefulness of which were often in doubt from the outset? An “enter new markets by acquisition” business development machine that shows up late to every game, buying the 4th or 5th place not-quite-also-run and then managing to use its boundless resources to make a market loser even more mediocre? An internal corporate culture of partners and plebeians where the latter are either disgruntled malcontents or naive and feckless n00bs, while the former continue to evolve into the near-looting kleptocracy that marks a large company that has passed from vigorous adolesence into senescence with only the briefest stopover at maturity?

Tuesday, June 19, 2007

Version of the Beast

Today’s sulfurous check-in…

Saturday, June 16, 2007

"At Risk of Being Rude..." --- A Comment on DRM Protected eBooks

I was pleased when technical book publishers began making their products available as downloadable PDF eBooks. Having a PDF I can drop on my laptop, or a thumb drive, and take with me from place to place is exceptionally handy, since I spend a lot of time working away from where my paper book collection is stored. Carrying multiple printed books, especially with the industry’s trend toward selling bloated and overly padded phone book-sized tomes that crowd lesser competitors off of store shelves is unpleasant at best, and impossible in the common case.

One thing has started to gnaw my craw though: The appearance of DRM on these books. I’ll pay any reasonable price for the convenience of an electronic copy, but from this day forward I am not going to pay any price for any DRM-protected eBook.

Why?

Because they’re a pain in the ass. A horrible, burning, never completely scabbed over one.

One of the PDF eBooks I’ve purchased is so cleverly “protected” that when viewing it in Adobe Acrobat Reader the page forward and back buttons are disabled!

How do you page forward and back? Good f-ing question. I eventually found it explained in the release notes that if you open up the thumbnails view pane, you can click from page to page there… but the buttons devoted to page forward and back and their corresponding keyboard keys? Totally broken. Why? Apparently because this precious document needs to be protected from the nefarious and Mephistophelean buttons that allow one to flip pages. Good going, elite DRM developing ass clown posse!

As for the other PDF eBook that’s recently pissed me off… What crazy sequence of outlaw activities led me to ruin on it? Well… recently I bought an eBook. Then I upgraded my laptop. Although I get teased with the prospect of moving my book from the old machine to the new, the various sources on what the approved process for doing so is are vague and hard to find. I’m sure I could defeat the insipid piece of chimpanzee-written DRM crap with an hour or two in GDB, but since I’ve already paid for the book I’m instead inclined to offer a big sweet KISS MY SLIPPERY PALE ASS PRENTICE-HALL (with extra sugar on top) to the publisher. I paid for your product, and I’d like to actually get some use out of it, but I can’t without doing something that’s probably illegal, almost surely within my ability, but in any event a complete f-ing waste of my time.

So to all of you publishers out there who lie awake at night worrying that someone out there may be inappropriately fondling your content with the page-forward and page-back buttons, or who believe that the purchase of a new laptop should be celebrated by buying another copy of each and every piece of your shit that somebody was naive enough to buy…

Eat me.

P.S. Dear Prentice-Hall… the book kind of sucked anyway. I’m glad I didn’t contribute to the murder of any trees by buying a printed one.

Monday, June 11, 2007

System and Method for Generating Star Wars Cantina Alien Names

In the beginning they didn’t even have names, except for Greedo…

...and then George Lucas went unto Hasbro. And Hasbro begat the action figures. And the action figures begat the filthy lucre. And the filthy lucre was good.

And then they needed names… And so unto the production assistants a call for creativity was made… “Action Figure Man From Cantina #59” would not do. And so were born Feltipern Trevagg, M’iiyoom Onith, Smeggy Pupik, Leesub Sirln, and Nabrun Leids (exercise for the reader: guess which one I just made up).

This morning while building the R math libraries standalone, I found a new way to generate cantina alien names: Randomly concatenate the mangled names from the math library!

By no means are these names BLAS bad, where the 7 character Fortran identifier length limit required every name to be hideous, unpronounceable and baffling (although it’s unclear why this led to a total prohibition on the use of vowels), but many of them work well enough to yield Lucasian products like these:

  • Snorm Unif
  • Rpois Wilcox
  • Qweibull Sexp
  • Stirlerror Rnbinom

Give it a try with your favorite bad API names!

Tuesday, June 05, 2007

The Register: Microsoft threatens its Most Valuable Professional

I haven’t set foot there in years, and won’t pretend to understand the intricacies of what it takes to peddle Visual Studio these days, but I have to wonder…

What revenue or strategic business turf was obtained or protected with the useless, passive aggressive twaddle that pervades the mail threads linked to from the article? Is this stuff for real? Or is this just what Program Managers do these days to keep their cross group visibility sufficiently fluffed that at review time they can claw their way from level 63 to level 64 or some other similarly meaningless increment?

Monday, June 04, 2007

Good and Bad Open Source Smells

I like open source as much as the next guy, probably more.

But being open source, under whatever common definition of the term one wants to use, is neither a necessary nor a sufficient condition for something being good, or even adequate. Evaluating a given piece of OSS for use, especially when you’re in a hurry, can be tricky, and sometimes there are signs and portents that suggest more promise than is really present.

Things that Cross my Mind When I Look at an OSS Project for the First Time:

  • The presence of a vibrant and active community of contributors: It’s nice to see active discussion forums, wikis, bug databases, documentation updates and regular releases. If the activity isn’t all gnashing of teeth by plausibly competent people who are making credible and well supported arguments that things don’t work worth a damn, all the better.
  • Something that Builds: A source distribution should be as self-contained as possible. If there are external dependencies you must obtain separately, they should be clearly called out in READMEs, the documentation, the source and pretty much anywhere a user might be looking when one turns out to be absent. A credible, working and usable Ant or Maven build, or autoconf/automake setup, or whatever should be a requirement.
  • Crap that doesn’t build: No automated build? In this case why even consider it real software? It’s offered you no proof to the contrary. Are the build files or scripts full of hardcoded paths to ’/home/rjnutsack’, or anybody else’s home directory? Anathema. Did you get nothing more than a vague description of all the places in DevStudio, IntelliJ, Eclipse, Borland Power Snogger Mega Delphi Turbo Modula-2 Builder ‘99 or some other IDE that you need to click to have a prayer of seeing it build and run? The suxx0r! Any sign that the stuff hasn’t been built or run on any machine beyond that of the putz who apparently prematurely loosed it on the world falls in the no es bueno category.
  • Something with Good Tests: Are you going to use this stuff? Maintain it? Change anything and not to have to pray to Great Father Dagon that you didn’t just break or regress something in some way subtle or gross? No tests mean no confidence. Whoever put this thing out either didn’t test it, or did so in a non-reproducible, half-assed way that can’t be easily replicated by you and probably even them. It’s possible they had an all-singing, all-dancing, crap-of-the-world regression suite so clean you could eat off of it, but if they really had such a thing, why wouldn’t they be sharing it? Want to come over tonight and see the supersonic, lawn-clipping fueled rocket car I’ve been testing in the state of the art wind tunnel in my garage? Oh, sorry, I won’t be home. Maybe we can reschedule for some unspecified time in the future.
  • No tests of any kind, or obviously inadequate tests: Even if it builds, why should that alone make you consider it to be software of decent quality? It’s offered you no proof of that. So now you have no evidence that it works worth for poop, and no easy way to determine that it may have stopped working after you made your first trivial seeming whitespace change in a header file.
  • Bad Internal or External Documentation: If nobody bothered writing a single word about the stuff outside of the source code, and if the only comments in the source aren’t discussing the actual ideas and concepts that hold the whole thing together and rationalize its structure, but instead look like the following, it may be time to node, smile politely, and back away from the thing.


i++;  // increment 'i' (by one!)

And there’s more…

  • Puzzling genealogy: If the project looks like a mutant offshoot of a bastard child of some collection of other half-orphaned projects by quasi-alienated misanthropes whose working relationship fell apart before the project became valuable enough for someone well adjusted to keep it moving forward, what do you think the odds are that it’s in good hands now?
  • The Reputation of its Producers: Knowing the code comes from an organization that’s serious in its intent and scrupulous in its development practices goes a long way. On the flip side of this, some organizations tend to jump the shark with their projects living on long past the ability of the organization to do good work. This can happen through fatigue, attrition, too rapid of hiring or induction of new developers, bad luck, ego, vanity, sloth, pride the second system effect and a host of other factors. Things that call themselves “frameworks” tend to be particularly susceptible to this sort of failure mode since many framework builders have a tendency to restructure their entire intellectual universe around their framework, and assume that you’re not only willing but eager to do the same thing. You don’t want to use their stuff to make one of your problems go away. You want to use it so that you can worship in their gilded, rathole cathedral of self-indulgent, technical pretentiousness. Duh, of course. Once that’s started to happen the project is standing at the platform waiting for the next train to Uselessville Junction.

Sunday, June 03, 2007

Some Things Are Better Left Buried...

As I sit trying to get some work done in one of my favorite tea places, my ears are being assaulted by some horrible, instrumental re-mixed Phil Collins remix or retread of a bunch of swill from the Grim Epoch known to music historians and students of the unholy as “Phil Collins’s Solo Career” or “That Gawdawful Period When He Was in Six Bands or Duets and Thus On the Radio Constantly, Ia Cthulhu! Cthulhu Fthawgn!”

Phil Collins just shouldn’t be mixed with anything.

Except maybe CORROSIVE LYE.

Thursday, May 31, 2007

Agile Tardwatch, Installment #238,661,891

Check this out.

  • Then you go agile and start shipping every six weeks or so. You deliver value on a regular cadence, respond quickly to your customers’ needs and are suddenly nimble enough to leapfrog your competitors. But being agile has one Achilles’ heel – it’s hard to know when to celebrate.

Wow… when you’re so 733t and your breath smells so good and your teeth are so straight, it’s hard to know when to celebrate your wondrousness! Life must be pain for these folks, living as they do under the supernova-like radiance of their futures so bright that they need to wear #14 welder’s glass shades.

Seriously though, Agile clearly has some things to recommend it… I love test-driven development to pieces, although in saying that I’m assuming that they still claim that as one of their distinguishing marks even though they clearly didn’t invent it.

On the other hand, 2001 was a while ago and maybe it’s time for a new fad.

If “Agile” was the software development pet rock of the early to mid 2000s…

...and Gang of Four Patterns were the hula hoop of the late 1990s (even if most of their contribution to the field was an utterly soporific book that appeared to be more an utterly unwitting and pathologically un-self-conscious apology for C++’s wet, sloppy, poop for brains type system and object model (I can’t say I’m sure because the universe doesn’t contain enough carbon to produce sufficient crank to enable me to get through the thing and Yog-Sothoth knows that I try to read it roughly once a year…

...and UML was the glorious panacea in an extra fancy and really expensive patent medicine bottle of the early 1990s…

...then I don’t quite know where we’re supposed to go next. I could channel Steve Yegge and his statement (really almost a theorem I fear) that if you add enough Hormel canned chili to dog shit, it will eventually taste like chili, but that would lack originality, and I would feel crippled by guilt at such a monstrously shallow and droll recycling of somebody else’s hard-won and richly earned cynicism.

Really, though, I think it’s time for something like UML, the Rational Urinary Process (that was what it was called wasn’t it?), to return, bottomless hat in hand, like a half-witted, threadbare messiah…

...and if it can bring along with it a cottage industry of charlatan consultants, books that make Nostradamus look like the pinnacle of intellectual integrity and scientific rigor and a vast armada of tools whose actual value is inversely proportional to the number of digits after the dollar sign on the price field in the Programmer’s Paradiso catalog then all the better!

Sign me up for some of that! See you at my first workshop on the JACKSMACK methodology… it’s $1000 a head for the one day seminar, but don’t worry… you get a healthy portion of the finest chocolate dipped strawberries the soulless Courtyard Marriott near the highway on-ramp has to offer.

Thursday, May 31, 2007

Are Skydiving Accidents Poisson Distributed and Can I Even Tell?

It’s too bad that a certain constraint on the version of the experiment that I can reasonably perform using myself makes the experiment a bit vacuous.

Wednesday, May 30, 2007

Peeve of the Week, Installment #5,772,156

Claims, benchmarks, or (even worse) “research papers” claiming to compare the performance of two things, usually making some definitive, strong and universally quantified statement in favor of one or the other despite:

  • Making totally irrelevant apples to razor blades comparisons;
  • Showing total statistical illiteracy in the analysis of results (two distributions with the same mean are obviously the same right? There are no other interesting moments to consider);
  • Using one of the systems under comparison in such an inappropriate, unnatural, or bizarre manner that only a huckster or complete numbnuts would contrive to do so (quite deliberately in one case, quite mouth-breathingly in the other);
  • More than one of the above.

Usually the inanity of these pieces of work is rivaled only by their smugness, something that would be hard to sustain if what one was saying was more obvious in its isomorphism to:

  • “I mowed the lawn with my Porsche and it made an awful mess… clearly it’s a terrible machine relative to my Toro Lawninatrix 2000.”

or…

  • “I tried brushing my teeth with a Husqvarna chainsaw and the results were clearly inferior to those obtained with my Sonicare.”

or…

  • “Wow this supposed to be real-time, 3D, ray traced first person shooter I wrote in Prolog really sucks—-what a stupid language.”

One of these crimes against reason can be remedied by taking to heart some of the advice here. The cures for some of the others are less obvious, but it’s possible that chainsaw would come in handy.

Monday, May 28, 2007

Today's Google Search Surprise

As I looked for material to answer a question that was critically important, I googled for:

shittiest supervillains

The “Did you mean” suggested respelling was:

hottest supervillains

While admittedly a topic entirely worthy of study in its own right, this doesn’t currently help me at all.

Monday, May 21, 2007

Return to C++

I programmed in C++ regularly for years. I tried dutifully to steer clear of the horrible parts of the language… the error prone, the unportable, the misleading, the maintenance nightmare-promoting… and all of that.

Overall I never much liked the language. Kernighan and Ritchie said that C was “not a large language” and that it was “not served well by a large book.” As such between the K&R book, and perhaps a slightly weightier reference like Harbison and Steele, (both excellent books BTW) you could feel you had a manageable amount of stuff upon which to gain and maintain a grip. The universe of massive C++ tomes that’s since belched forth from some unholy dimension of tree killing, crappy book forming horror, seems to ominously murmur an opposite lesson about that language.

As C++ grew between my first real exposure to it around 1989, and 2001 or so when I stopped using it on a daily basis, I wasn’t sure I liked much of what I saw… New problems seemed to arrive to stop you from stumbling into the old problems. The language expanded. The semantics grew more byzantine and blurry, coming to comprise a cognitive burden worthy of a Lewis Carroll logic puzzle. A syntax that polluted C’s terse but mercifully small one, a semantics that contained sufficient flexibility and subtlety that the meaning of a given piece of user written code was often only discoverable by reading someone’s source code or stepping through in the debugger (with very likely a different answer on any platform you compiled on), and an endless nesting of verbosely expressed exceptions to exceptions brought tedium and even pain.

At some point writing the code equivalent of “the day before two days after the day before tomorrow is Tuesday,” when you could have just said “Monday,” really stopped being fun or productive. Somewhere in the neighborhood of that point the compiler stops finding it fun as well, and ends up throwing potential optimizations to the wind because such things as the type, value, memory layout, and potential aliases for an object under consideration have fallen into the GORK category at compile time.

In the last couple of years I’ve been largely spared needing to work on C++ systems of any particular size… for low level junk I’d often lapse down to C, and at a higher level, Java gave me most of the data structuring facilities I’d want at an acceptable level of performance.

Recently, I’ve returned to C++ to do some small and medium-scale pipefitting work between things. Why C++ and not C? Years have passed since you couldn’t get the same piece of trivial template-based code to compile on any two compilers, or even any two successive releases of a single compiler, and you found this situation routine. That passage of time led me to think that perhaps the STL would give me quick and easily re-used maps and other containers that would accelerate some of the scut work in the task I was performing. If that had turned out to be true, STL would have been a nice way to quickly bang out the simple caching scheme I needed to implement under some Java code.

Sadly, STL really isn’t much more fun to use than I remember it being. It’s still easy to write buggy trash whose hideous wrongness can’t be caught at compile time. The semantics of some things is stupefying. How operator[] got overloaded the way it did for assignment in a map staggers me, since it forms an inside joke that is sure to bite the first poor soul to come from just about any other language or library with an associative-array like container class expecting it to do something sensible.

It’s like going back to the bad neighborhood you grew up in. You’ve forgotten the names of some of the creepy people on the block, but they’re still there… a bit older, and less recognizable, but not much less malevolent.

What does the future hold? Nothing great, I fear. A lot of the traction Java has picked up in the last decade surely stems from it backing off of some of the aggressive suck of C++ . Maybe Java has produced a generation of developers who have a dimmer understanding of how things work, but C++’s requirement that you constantly be face down and wallowing in that understanding with painstaking debugging and compulsively defensive coding practices doesn’t seem like the right answer to me.

Not everybody should be, or wants to be, a systems programmer. Utter cluelessness about low level details leads to people who suffer the old Lisp programmer’s curse of “knowing the value of everything, but the cost of nothing,” and should be shunned and remedied wherever possible… But every graduate of an MIS program who’s just going to write thin front ends for some database backed hoodabooda probably doesn’t need to become a vtable manipulation Ninja.

As for some of the things we get teased with in the future of C++... a standard garbage collector? Given that the language already has memory management mechanisms that provide “automatic” memory management to the language in roughly the way one would provide an automatic weapon to a toddler, my hopes aren’t terribly high…

We now conclude this un-premeditated, stream of consciousness diatribe. I have some bugs to fix.

Page 1 | Next >>
Username:
Password:
(or Cancel)