Monthly Archives: February 2011

Why Application Programming Sucks

You, the programmer, have a problem you would like to solve. This is what progammers do, but since it seems like a common problem, so you leap to t3h googles for a solution:
“Oh great google god, this lazy progammer beseeches you, find me someone who has already solved my problem”
and sure enough, within the first page of results, there is a promising function, DoWhatIWant(), in the magic library. This magic library must be common enough, since it solves your problem, so you hit the package manager (please tell me you are running a system with a package manager. If you have to spend hours tracking down nullsoft installers of patched second class citizen versions, you have only yourself to blame.) to find and install it.
$ sudo newpackagewrangler updatecommand
$ newpackagewrangler searchcommand magic

…10 hits, one of which is PROBABLY the one you intended…
$ sudo newpackagewrangler new-better-install-command magic2
Install:
Magic2 (150K)
Depends:
behemoth (75.3M), UglyTK (5.6M), libCuteName (200K), libalkjosaoifdnjg (547k)
Install (Y/N)?

Let’s take a moment to figure out what the hell just happened:

  • behemoth: It’s 75Mb of crap – included for a single function that could have been reeimplimented in less than 100 lines of code.
  • UglyTK: It’s the newest, greatest graphical toolkit, for an included example frontend. There are only 4 programs written with it, you don’t use any of them, and it won’t take the theme from GTK or QT.
  • libCuteName: Probably named for an animal or a color; at one point there was a clever reason for this, but it has since been depricated.
  • libalkjosaoifdnjg : It isn’t clear what the hell this does, and it appears the name was selected by placing a keyboard in a box of kittens. Thats fine because all editors support autocompletion, right?

Since Magic.DoWhatIWant() appears to do exactly what you want, the package manager can take care of it, and your system supports shared libraries, how bad could it be?
While the dependency pile downloads and installs, you take a look at the documentation, and find that Magic.DoWhatIWant() has 93 arguments.. and only 70 of them are explained. You think “Surely, such a useful function is used all over the place.” and return to the interwebs to find an example.
The example you find actually has 97 arguments, since the documentation is perpetually out of date, and they don’t appear to be a superset of the 93 from the documentation – But Magic.DoWhatIWant() calls to you, and you begin hacking away to make it work.
After some hours, you come upon a heated argument in the magic maling list archive, where one of the developers has declared one of the 97 arguments “bloated crap,” in the last release cycle and removed it, in the process making DoWhatIWant() sligtly less suited to your problem than it seemed – but now you’ve invested some effort, and it should still do basically what you need once you figure it out…
Typically, two days later, you throw up your hands, and, in about two hours, write a function in pure C that solves the problem – or notice that by preprocessing the input with a 10-line AWK script the problem can be avoided alltogether. Occasionally, again about two days later, you DO get it to work, but end up having to do about half the task DoWhatIWant() was supposed to accomplish yourself – and now have 80Mb of dependencies for your 75k program, meaning you will have to update it every time any of them changes.

I realize several of the issues I’m mocking here are contradictory – that’s why it is such a shitty situation. Also, I do mean to be singling out the “layers on top of layers on top of package managers that were shifty when they were written in the early 90s” package managers so many distributions cling to.
This post brought to you by the bitterness of another weekend spent spelunking around inside of LLVM.

Posted in Computers, DIY, General, Navel Gazing | Tagged , | Leave a comment

Book Movies = Hate.

Why do I ever watch movies made from books I liked? I finished reading Stieg Larsson’s Milennium Trilogy the other night, and decided to watch the movies for fun. The irritating, unnecessary plot changes, important removed scenes, missing characters, and general inferiority to the books are making me hate, even though they are pretty good movies in their own right. I’ve quite enjoyed some of the grapic novel derived movies of late (The Watchmen was excellent, if divergent, and Scott Pilgrim was honestly better as a movie), but novel derived movies are almost always irritating.

Posted in Entertainment, General | Leave a comment

Proto-netbook

While rooting around one of the labs to clean up for E-Day earlier, I ran into the pile of old Compaq Aero 4/25 subnotebooks the group has never disposed of, and played with one for a few minutes. Here it is next to my current machine:

Aero 4/25

A Compaq Aero 4/25 next to my T510


These charming little things are the forerunner to the modern netbook, and, like many of the early subnotebooks, have something of a following. These particular examples spent much of their lives as The TTL Papers Microcluster, and are hence in surprisingly good physical condition for 15 year old hardware. They are set up to dual boot the tweaked MS-DOS/Windows 3.1 environment they ship with, and, unless interrupted, automatically continue into Linux via loadlin, an arrangement I suspect has to do with the lack of an obvious user-accessible BIOS layer. I once coaxed the PC Compatibility card in a Powermac 6100/66 to boot Linux, this appears to entail similar acrobatics, with “quirky” hardware and a bizarre boot sequence.
The machine is remarkably usable and responsive, especially under Linux, despite the fact that the “4/25” in the name refers to the 4Mb of RAM and 25Mhz 486sx that form its tiny little heart. It makes a terrible reminder of how bloated software has become. Someone clearly put some care into the OS on ours around 1997 and built a pretty nice system, with a 2.0.27 kernel, reasonable selection of utilities, remarkably attractive monochrome DIR_COLORS (which I spirited off), GCC, and Vim, in addition to the AFAPI/PAPERS materials. There is no X server (which is to say, the installer wasn’t obviously insane), but there is also no screen or workalike I could find. I don’t see much evidence of any distribution I know was around at the time, and the kernel is clearly custom built, so it may well have been a fully hand-rolled system. The fact that the internet is full of stories about how uncooperative Aeros could be, and that the leading digits of the kernel version being “2.0” strongly suggest it is a seriously, incompatibly old-school setup, indicate that while it would be fun to tinker with, it probably isn’t a good idea.
The little machine brings home the point that a keyboard, a screen, and a roughly POSIX-like environment in a portable package is, was, and will continue to be most of what a portable device needs to be a desirable thing.

Posted in Computers, DIY, General, Objects, School | Leave a comment

Millennium Trilogy

I’ve been reading Stieg Larsson’s Millennium Trilogy in the evenings for the past few days, and completely understand the excitement they generated – the writing is EXCELLENT, with voices so distinct that the many unmarked jumps in the narrative are a feature rather than a problem (think Faulkner, but more accessible), and a wonderfully complicated story, with none of the “How many pages will it take me to correctly surmise the entire plot” property of other recent pop literature (I’m looking at you Dan Brown). Thus far they powerfully remind me of William Gibson’s Bigend books, which I really liked as well, but with vastly more, more complicated characters.
EDIT: Just after I wrote the post I found the first irritating mistake among the sea of intriguing gratuitous detail: One of the characters threatens another, very specifically, with a Glock. About 10 pages later, a third character takes the gun and “flicked off the safety”- Glocks conspicuously don’t have manual safeties. Interesting that that is the first detail in 370 pages that I noticed a problem with, particularly since many of the others were about computers and other topics I’m more familiar with.

Posted in Entertainment, General, Literature | 1 Comment

HAK Wired

To follow up the previous post, the group finished wiring HAK Friday afternoon… and into the evening. About 480 runs of Cat5 for both the FNN and a separate network for monitoring and provisioning. It’s an interesting looking network; because of the way it was designed, it is unusually symmetrical for an FNN, so the core has trunks for the rack-crossings on each network, and is therefore rather neat:

Unfortunately, this does mean that all the cables in each wing are passing through the small slot in the center… which looks about like you would expect from the back:

It should produce some interesting results.

Posted in Computers, DIY, General, School | Tagged , | Leave a comment

HAK Wiring


I’ve spent a good fraction of the last several days helping with the preparation and assembly for a cluster the research group is building from 96(+4) old Athlon XP nodes to conduct network research on. The machine is named HAK for “Half-powered Athlon cluster in Kentucky, referring to the fact that every pair of nodes is sharing a power supply (notice the flipped cases). This design is both to save power (switching power supplies are most efficient when heavily loaded), and save power supplies, since that is the part that has had the highest failure rate in the pool of machines used to build it. After a couple passes of repairing nodes, homogenizing network cards and the like, we got to the photogenic part today: attaching the network. In the picture, there is a standard tree topology 100Megabit Ethernet network across all the nodes (the yellow and pink wiring), which will be used for administration and provisioning, and began sticking a full FNN (the bundles of red cable snaking around… those are the first 3 sets of 32, the other 9 are the colored bundles on the floor). That machine is set up to have it’s network swapped out with a FFNN (Fractional Flat Neighborhood Network) and SFNN (Sparse Flat Neighborhood network), but requires this initial fully populated Universal FNN as a baseline for comparison.

Posted in Computers, DIY, General, School | Tagged , | Leave a comment

Nokia Plan B

To follow up the last post, this is pretty cool – a shareholder driven concept for a slimmer, more directed Nokia that remains in control of their core platform. I’ve read through and am in near complete agreement with their plan, and it sounds a lot better than “Become the next Kin.” I don’t directly own Nokia stock (apparently I do indirectly hold some through mutual funds), but I would be seriously considering it if I did, and I hope they succeed. I’d also like to add a proper citation for the previous claim that Microsoft’s mobile partnerships are a string of painful failures.
In more pleasant news, some users have hacked together another new patch set for the Diablo/OS2008 maemo release the n810 runs, and now that I’ve got a new battery and rid myself of the BME bug I hope to play with them. I’m thinking I’ll be a little more cavalier with my use of alternate OSes and software on my n810 now that it is getting problematically obscelescent.

EDIT: It was a hoax.. The issues are real though.

Posted in Computers, DIY, General, Objects | Tagged , , | Leave a comment

Nokia + Microsoft = Fail.

This morning Nokia announced a partnership with Microsoft, and a transition to Windows Phone 7 for their high end products. Why they were incapable of learning from Microsofts many successes in the mobile space, and quality mutually beneficial relationships with partners isn’t clear. The fact that Stephen Elop (current Nokia CEO) came from Microsoft last September could be related. The reason I care is that Meego (successor to maemo) was the only mobile platform I was in any way optimistic about fulfilling the promise of “Computer in your pocket,” and it just became a second-class citizen with a limited lifespan.
Continue reading

Posted in Computers, Entertainment, General, Objects | Leave a comment

Moco Loco

Two food posts in a row, because my hobby time for the last few days has been squandered on a Minecraft addiction. I made myself Moco Loco earlier tonight, as a planned consolation prize for the shitty weather. This is both the first time I’ve had it come out really well, and the first time I’ve managed to get a photo that looked reasonably appetizing.

Moco Loco is contemporary Hawaiian food, and is very much the modern follow-on to “Things that used to be peasant food are delicious;” as the story goes it was created as a cheap lunch for local boys at a cafe in Hawaii, and spread on it’s own merits. Strictly, it consists of white rice, topped with a grilled hamburger patty, a fried egg, and brown gravy, but I’ve rarely seen it served without fried onions, which I’ve always included in my attempts to make it. Aside from being tasty, I get a kick out of how much (possible) kaona there is in the name. It is also a sort of one-shot explanation for weight-related health problems being so endemic among Polynesians…

Posted in FoodBlogging, General | Leave a comment

Chicken Nyumen

I’ve made myself spicy chicken Nyumen a couple times this week, and decided it was photogenic.

Nyumen uses the same thin Japanese wheat noodles as the better known somen, but is a hot dish. It is really easy to make too: boil a pot of water, throw in some trimmed vegetables (Radishes, red onion, and mushrooms are particularly tasty), let them blanch, and pick them out. Then, throw a bundle or two of somen noodles in for a few minutes, and dip off some of the vegetable infused water to make a broth; I’ve been using a little bit of bullion and a small blob of Guilin Chili Sauce to make a nice spicy base. I also made myself some chicken pieces fried in a generic Asian sort of seasoning, and threw some in each bowl.

Posted in FoodBlogging | Leave a comment