art, new portrait

301 Moved Permanently

It's been over six years since I opened this livejournal. At the time, it was the best option available to me, and a huge step up from my previous web presence, which was a geocities page which sat at the end of a 40 digit url.

The time has come for me to move again. is open, and this time it's going to stick around. The difference from previous incarnations? I finally found a webhost versatile enough that I had no desire to do anything impossible through their control panel--this means that instead of trying to be a server administrator, which I've never particularly enjoyed, I get to sit back and just use the site. I've gotten significantly farther in a day of configuration here than I have in months of configuration at previous attempts; far enough for me to consider the move well-advised.

My new blog is simply TRAC works fine, and if you really want, I can now get you write-access to subversion, though most people I know who'd want that have their own.

I intend to keep the livejournal around, if only for the purpose of making non-anonymous comments in other peoples' LJs. However, unless something entirely unexpected happens, this will be my last post. For syndication, please use RSS. If one of you with a paid account would set up LJ syndication, I'd appreciate it. Alternately, just friend the LJ feed at coriolinus_net (thanks, vereorc!)

In the meantime, please update your bookmarks. I'm excited about this.
art, new portrait

(no subject)

Guantanimo prisoner, whose case had already been dismissed in 2006, is back on trial under the Military Commissions Act.
But Hamdan's central question remained: "By what law will you try me?"

The judge responded with the only answer he could: The military commissions law passed by Congress in 2006.

"But the government changed the law to its advantage," Hamdan replied. "I am not being tried by the American law."
To me, this is an open and shut case: the constitution defines the legal system, and its fifth amendment reads in part: "nor shall any person be subject for the same offence to be twice put in jeopardy." The MCA attempts to sidestep that restriction, but that shouldn't work. America can only improve its relations with the world by returning to its former standard of conduct: well-defined, humanistic, and just. Justice would best be served if this case makes its way up the chain and ends up striking down the MCA.

I'm not sure that can actually happen; the court in which Hamdan is being tried is not technically part of the American legal system, being a military commission and all. Regardless, and no matter the crimes of which he is accused, in this case I am rooting for Hamdan.
art, new portrait

the blinkenlights in the dashboard are not just there to look pretty

Today was a pretty decent day to fly. There was some instances of heavy turbulence--at one point, I got a sudden descent of more than 1000 feet per minute for about ten seconds--but I thought things were going well. I was on short final, getting ready to land and switch out, when the "Main Gen Fail" light came on.

The only immediately obvious effect was that the air conditioner stopped working. It started again once we flipped the switch that started running the non-essential electronics off the main battery, at which point we discovered that the intercom in the back seat was also on that circuit. Other than that, the landing was very normal; it seemed odd to have to inform tower that we were declaring an emergency and that we were performing a precautionary landing.

As we weren't at the base field at the time, we had to get back somehow. Standard procedure is to send the medevac helicopter out to the site of any emergency declared, so I got to ride back in the side-facing seat of an open-door Huey.

This marks my third flight emergency in four months of flight. It is a lot of fun to be a pilot, but I'm glad I'm not (directly) paying for the maintenance and upkeep of these helicopters; they are very expensive.
art, new portrait

(no subject)

It seems that the ALSE people rock.

Aviation Life Support Equipment is a small, but heavily-trafficked office just outside the briefing rooms at the stagefield. Before every flight, one of the pilots goes to ALSE to check out life-support vests to wear in-flight. The vests are packed with goodies which are only useful after having been shot down. We wear them, even in training flights in the US, because the Army thinks it good policy that every pilot be thoroughly convinced that one simply doesn't fly without an ALSE vest.

They're also the people in charge of maintaining helmets. As I was returning the vests from today's flight, the ALSE guy noticed that my helmet had been issued to me last September, and offered to refurbish it.

About 40 minutes later, after the debriefing, I stopped by at ALSE and discovered that they had replaced and tightened all the moving parts, given me a new chinstrap to replace the old one, and replaced the microphone and speakers with newer versions. This kind of continuous upgrade service is astonishingly cool--if they serviced computers, the equivalent would be adding a gig of ram, upgrading the video card, and throwing another hard drive into the RAID. All of this, just because my helmet is six months old.

Sometimes, Army life is demanding. Events like this, though, make me feel like I have the coolest job in the world.
art, new portrait

(no subject)

For the first time in weeks, I have woken up before my alarm on a work day. I seem, finally, to have internalized a sleep schedule. I would be more inclined to see this as a good thing if I still had to wake up at 3am.

I could not help but hoot out loud after seeing today's xkcd.
impassive, metallic

the below is 100% true

Last night I vomited on the inverter.

I was at a little traveling fair, set up in the parking lot of the local Walmart. It wasn't much of a setup; just enough in the way of rides and stands to get some money out of local parents who thought that it'd be fun for their children. I probably wouldn't have stuck around at all, but my date thought that having arrived, it was silly to leave immediately without at least trying a few of the more dynamic rides.

I have always liked carnival rides, rollercoasters, inverters; any machine designed to produce dizziness and disorientation has always seemed like a great way to spend my time. Growing up, my parents never seemed as enthusiastic as me for this, but I figured that they just had weak stomachs. Since the age of 10 or so, when I could go on the rides on my own anyway, it never really mattered. I figured that I was immune to all forms of motion sickness, so I may as well enjoy the opportunities that such an immunity afforded.

The inverter is perhaps the most basic carnival ride past a ferris wheel: A 15-foot pole rises from the center of the trailer. On the cap of this pole is mounted a motor and a short crossbeam. Long arms run out from each end of the crossbeam, parallel to the pole; on one end of the arm is a counterweight, and on the other is a cramped little car. The arms swing you up and about.

Having sampled each of the rides that seemed interesting, the inverter was the clear winner, so we decided to ride it once again before heading out. My stomach was complaining a little, but it'd been doing that all week. Ignoring it turned out to be a bad idea.

As we rose to the top of the swing, paused momentarily upside down, unsuppressable reflexes began to kick in. I knew that I had seen a movie at some point in my life in which someone vomits on a carnival ride, setting off a chain reaction of puking as it hits innocent bystanders. I wanted to avoid that, if possible, so I thought I would try only to release as we were on the downswing. Any ejecta would fall harmlessly to the ground, or so I figured. It doesn't take a lot of time to decide the best course of action in a bad situation, but there wasn't any time for examination of that plan to see if anything could go wrong.

As it happened, there was: I timed it late. I watched the stream flowing up into the night, and thought "At least that's over with now." Then we arced over the top, came down and accelerated through the downswing--and into the vomit, which fell with uncanny precision directly into our path.

I have never considered myself a master of romance. That experience, however, goes past any worries I had considered, into the realm of the comically awful. I can't prove that this was in fact the worst first date in history, but if any of you have ever even heard of a worse, I'd like to know about it.
art, new portrait

Engineered vs. Organic Code

The code I posted this morning is nothing I'd ever show to a prospective employer. It is sparsely commented, convoluted, and nearly impossible to expand. All I actually wrote of it last night was the part to prune down the source tree, so that the best-rated categories weren't being spammed out by a bunch of one-hit wonders while leaving good bands with average ratings in the dirt because of unrated songs. It was probably about 1k of new code, but it took nearly six hours to do. Half of those were just getting into the headspace required to understand the rest of the code, which was from sometime before last Christmas.

That code is organic code, in a nearly pure form. I sat down one day saying "I want to solve this problem, and as the sole owner responsible for this problem, I am willing to bear the risk that the resultant code will be oddly organized, difficult to expand, and probably incomprehensible to anyone who isn't me right now." Then I sat down and wrote, and knew it was time to stop when it stopped being easy to write.

If you look at the code as presented, I generate a complex, highly-interconnected data structure which perfectly represents the structure of my music library but is actually not so great for generating interesting statistics about it. I knew last night, once I had figured out how things worked but before I had actually started writing anything new, that I could probably have gotten the end results I wanted faster by scrapping everything. Throwing the data into an in-memory sqlite database, interfaced through SQLObject, would have made the problem of actually finding the relevant information trivial.

I chose not to do that, instead kludging a pruning system together that, though not particularly efficient, worked within the existing paradigm. Why'd I make that choice? I know full well what good software engineering is like, and how to do it. It must, therefore, have been a choice.

Engineered software is modular, expandable, full of interchangeable components which use well-defined interfaces. It's not all that difficult: simply stating the problem properly implies the solution, which may be complex or broad, but is rarely actually difficult. For a problem like extracting statistics from my iTunes track ratings, it takes only seconds to see how to do it, but in order to see any results you have to put in an hour or two of implementation which is pure boredom.

Organic software, on the other hand, just sort of grows into place, channeled into a certain design more through the accidents of iterative bug fixing than through any sort of pattern. You get to skip all the planning and jump directly into implementation, which invariably leads to a long sequence of ever-less-plausible logic puzzles which must be solved. Eventually, everything is in place, and you have a Rube Goldbergian contraption in code which may or may not work properly. You flip the switch and see it chug along and it either explodes spectacularly or somehow produces the expected results. In the first, more common case, you are now faced with a new logic puzzle. In the latter, you've won, as the work is now complete.

That whole process is a surprising amount of fun. When it comes right down to it, I don't need or really care about knowing these statistics. However, the process of discovering them was enjoyable. Like the guy who built a steam-powered walking robot, the point isn't really to produce a viable mode of transportation. It's to enjoy the building of the thing.
art, new portrait

because i'm a nerd, that's why

I've been dutifully putting song ratings into iTunes for years now, rating each song individually according to its merit. iTunes actually died a while ago and forced me to start the entire rating process over again, but I still hope that one day I will have a fully rated music library.

While I can set up smart playlists within iTunes to get a good mix of music, it's more interesting to have data that I can visualise. Naturally, I wrote a program to gather and interpret that data for me. Collapse )

Because I am a good person and like you, Collapse )

I encourage you to post your own results.
art, new portrait

Hypothetical Question Time

Say that you are buddies with a top computer scientist. He has been working for DARPA on an AI project. He succeeds! True AI! Over the period of a few months of shakedown trials and training of the new AI, you befriend it. This time ends when your buddy announces to DARPA project success, so they immediately install it into a robot chassis and start sending it on very tough missions. Missions so tough, they might be called suicide missions. Eventually, the AI gets tired of sending off instances of itself to die, so it performs a murder/suicide on your buddy and destroys as much of his research as it can get to. Unbeknownst to it, you run a little personal server, which among other things, has been used by your buddy for off-site archival purposes. You have the recipe for fully-functional AI on a hard drive you own, and nobody else knows about it.

What is the correct ethical option here?

Collapse )
art, new portrait

(no subject)

Everyone has heard of holding patterns. They are those little racetracks in the sky that aircraft fly around while waiting for space to clear up so they can proceed with what they want to do, which is nearly always to land. Until quite recently, I hadn't put any thought into exactly how pilots maintained those patterns; if it wasn't just looking outside at the ground, it was probably something high-tech and cool, like a GPS system integrated into a heads-up display that projected little 3d hoops as references for the pilot to fly through. That's how video games handle the problem of having unskilled people not fly into mountains, at least.

As it turns out, it is not like that at all. That would be way too easy. Instead, there is exactly one fixed reference point in the traffic pattern: an arbitrary point in the sky located at the intersection of two bearing lines from radio navigation aids. The rest of the pattern is performed as follows: fly directly at that fix, correcting by guesswork and control feel for the wind. Take a note of precisely how much wind correction, and in which direction, was necessary. Once you've overflown the fix, turn until you're opposite your previous track, then add triple the correction you had on the inbound leg. Fly a minute. Turn again, and repeat. On subsequent laps, vary the length of the outbound leg to try to pin down the inbound leg at one minute long, and vary the angle you fly outbound so the heading you end up flying inbound stays relatively constant.

In other words, far from following a neat racetrack in the sky, my traffic patterns currently look like a plate of spaghetti. Far from some high-tech, intuitive interface, I'm flying along looking at a compass and a stopwatch and using a guess-based heuristic algorithm to correct for unpredictable and variable wind effects. That's fine, I'll learn it, gain skill, and end up not thinking about it anymore.

However--and this is what was bothering me today--this isn't an artificial technique used in the training environment to teach us the basics. This is what real pilots do. When you're 30,000 feet in the sky with 500 other passengers waiting for clearance to land, imagining the pilot cool and competent in the cockpit, he is up there with a stopwatch and a compass, trying to guess what the winds are doing right now.

The safety record of commercial flight gets more impressive to me on a daily basis.