Saturday, October 3, 2009

Plug!

I've started an official blog for BioLogic! I haven't spent much time either blogging here or working on BioLogic (makes me wonder what I've been doing?), but that should change here. I'm very excited about BioLogic, and being excited about stuff also triggers the "writing hormones," as I like to call them. At any rate - anybody interested in the project need to go here to find out more.

Wednesday, September 2, 2009

The Challenger Deep

I spent monday coursing over bright shining oceans. They are the Seas of Source, and they are deep.

Having sounded the depths the day before, today I was ready to jump ship to find out what lurks beneath the waves. What manner of creatures might live in the baby-blue upper layers, where the water is warm and the light is plentiful? What lies beneath? How deep is the darkness below? What survives the cold and the black, the thousand atmospheres of pressure, the isolation, the test of time? Does it dream? Fthagn...


As I entered these vast waters, I had an idea of their true extent. Twenty thousand source files in four different languages, with currents and riptides streaming to and from other libraries, frameworks, and runtime environments at every turn. But without tasting the salty drops of Source for myself and personally sampling its silty bottoms, how could I code the bays and inlets that are to come? How can I sculpt new seas, where salty spray is blown over steel decks not yet conceived?


Into the source I dove!


The upper layer - the world of light and constant motion. The layer between the unfathomable depths of the sea, and the life-giving air on the surface, where users live their lives, sleep in their comfortable beds with their wives, eat breakfast on cold winter mornings, and - when the winds are favorable - design ships. A user interface written in Eagle; flexible, powerful, it soars above the waves with sharp eyes and claws honed to penetrate the surface and trigger the functions beneath.


In the shadowy layers beneath, silvery objects flit about. A C++ thermocline layer forms a public interface between the utter darkness of the deep sea and the friendly code above.


Below that is a body of C. Strange structures of impenetrable mystery, bioluminescent jellyfish, surprising unions of different creatures squeezing out a living by exploiting every possible efficiency to survive in these cold, dark, nutrient-poor waters. The creatures are small as plankton - small creatures for small footprints.

The sea floor is ancient beyond mortal comprehension - a thin layer of Fortran sediments from times long gone, in the process of subduction. The silty bottom slides ever so slowly into the crust and joins the mantle, forever removed from the code base. Centuries hence, only the memory will remain - perhaps traces of variable naming conventions may boil up from volcanic vents into the C region above, but the modules and the code will exist no more. Currently, however, Fortran is the sand and the dust, the layers of clay and stone, the eyeless crabs and bizarre invertebrates seen only at these terrible depths, which separates and forms the interaction between two vastly different landscapes - the ocean of source-code above, and the world below: a world of mathematics and abstractions, databases, file systems, a globe of molten metal and amorphous rock. Our world. The same world which we mine, from which we extract the iron and minerals that make up our steel ships, which we drill for oil, which we travel by ship and by train, for business, pleasure, and exploration. Our world.

From this perspective, this expanse of code – the Sea of Source – is a multi-tiered complex that connects the users on the sunny surface with the resources underlying ship design and construction down on the bottom of the abyss. The Sea is deep and vast, but penetrable; ultimately, its changing shorelines are finite and the deepest crevasse is measurable. Adding to it is certainly challenging, but not an impossible dream. Fthagn...



Monday, August 31, 2009

Well, there goes the neighborhood...

If you haven't seen this video yet, watch it. I'm a couple weeks late for having a timely reply, but I thought it would be nice to record my response for posterity.

Being someone who made similar little videos at my job, I can guarantee that this is 100% legitimate. Well, probably closer to 90% - I'm sure that robot hand doesn't always catch the phone.

Right?

Holy smokes, though. Imagine if the Terminator had this hand - just one - in the first Terminator movie. Sarah Connor would have been toast in a second! Add another couple of decades of development, make it two hands, and put SkyNet in charge. Then see what happens. Holy smokes.

I'm watching the US Open as I'm writing this. It's just the first round, but wow - Federer can do some amazing things! For all his strength, dexterity, innate talent, trained skill, the billion years of biological evolution, the thousands of years of technological development, and the hundreds of years of cultural background that has brought him to this point of history, I cannot help but wonder how long humans like him will remain the best on a tennis court. A decade or two? Maybe more?

It all depends on whether somebody convinces enough investors, universities, or government bureaucrats that a tennis-bot is worth $100 million or so to develop...

A general robot that could match Federer and do your dishes? Give it thirty or forty years. Not more than fifty, I would say. Ray Kurzweil thinks I'm a pessimist, and in this area I am. But that's because dealing with the real world is hard. Dealing with abstractions, logic, and ideas, however, is much easier. Considering this, I'd expect we'll have a robot that can match wits with Federer (or Hawking) within two decades. They already surpass us in so many ways, it's only a matter of time before we can consider them better in "most" ways.

Looking forward to it!

Tuesday, August 18, 2009

BioLogic: Logic Programming with Biological Parts

BioLogic is shaping up nicely.

Right now, I have a Perl program that takes all FASTA-formatted BioBricks provided by this page of the Parts Registry, scrapes additional information for each entry from the Parts Registry website, and puts it in a giant Prolog program.

When this program is loaded, you can query the knowledge base to get, say, the names of all the parts sharing the same part parameters as part with id number 9422:

?- parameters(Partname, Parameters),parameters(ThePart, Parameters),part_id(ThePart,9422).

Partname = 'BBa_I14016';
Partname = 'BBa_K0991107';
...
No.

Cool! From there it's only a small step to get additional information about the parts in question, pick the ones marked 'Group Favorite,' print out their DNA sequences, or get a link to the web page with information about obtaining the part (e.g. a page like this).

It seems to me this is already a neat tool that could help scientists interact and explore the parts database, based on their needs. Just a little work on getting it robust, opening web-pages in a browser window, and the nifty command-line tool is ready. Slap a UI on there (more work than it sounds, unfortunately), and it might actually be user-friendly.

But the real power of Logic Programming is not exploited with little steps like these. We plan on introducing rules into the program that allow it to reason about combining parts.

With just a few basic rules, it'll be possible to give the program a list of one or more parts we'd like to use, and have it return an entire ordered list of the parts and processes required to incorporate them. Several lists, in fact, leaving the final choice up to the scientist, but at least ensuring that - according to our basic rules - each entry in the list is possible.

Ok, so this step in the development of BioLogic is pretty neat - automating some of the reasoning the synthetic biologists need to do to ensure they end up with a functioning organism. Useful and handy, but not as far as we can push this technology.

By adding additional rules about the behavior of parts, the program will be able to generate a complete part sequence based on a list of desired behaviors supplied by a scientist. These rules would apply to what the program knows about each part - the semantic implications of different categories, the part parameters, etc. Specific rules applying to individual parts or part classes could also be added, providing even more detailed and subtle knowledge to the program.

Prolog provides two great benefits in addition to the core functionality described above.
One great thing about Prolog programs is that they don't simply return one "best" answer, unless you really want them to. They can generate a nearly limitless number of solutions, which in this case would give researchers ample opportunity to experiment with its answers and introduce rules to improve the program. The second great bonus is that you can ask Prolog to explain itself - that is, show its chain of reasoning. This feature can give greater insight into the program, how the parts function together, and any errors or limitations in the knowledge base. It also helps explain how Prolog comes up with surprising answers - which often happens, for better or for worse.

Most of this advanced work will have to be performed by synthetic biologists who understand the interaction between parts, chassis, DNA, and the enzymes involved. Anybody know someone who might be interested?

Wednesday, August 12, 2009

It's You! (How are you, Gentlemen?)

The number of cats in this neighborhood is absolutely staggering. I believe they outnumber us humans by a factor of two or more.

What happens when cats rule the streets? Who determines which cat goes where? What rules do they follow? Are there any rules? Who would enforce them? Why?

These questions continue down paths few people dare tread: why do we have cats in the first place? Why do they insist on our company, yet consistently refuse to obey our commands or indulge in our whims? What's going on behind those big green eyes?

That glint; the winking eyebrows, cheeky grin; what on God's green Earth could they be up to?

I'm not going to pretend to have any answers, but I've been around my neighborhood enough to have gained a little glimpse of understanding of their world. It works a little like this:

At the top, Boss Cat is boss. A giant one-eyed Persian, he paid our two young female felines a visit a week after their arrival in the neighborhood. Boss Cat waited for us to let them out, moved away to a respectful position, and observed - to see if they behaved like proper young cats. It appears both Anka and Izzy passed the test; he hasn't been back since, and they've been allotted our back yard. I'm not going to pretend our dog didn't have anything to do with it, but Boss Cat calls the shots.

Boss Cat has several deputies. One of the most notable is Highway Cat. He sits by one of the main passages between downtown Groningen and Beijum - a bridge over the ringway surrounding Groningen. Highway Cat performs two functions. The first (probably his primary) function is to monitor our comings and goings. Perhaps there's a Highway Cat at every through-way to Beijum. In any case, this Highway Cat is at his post at least three of every four times I pass this point. Of course - who knows if he's hiding in the bushes - observing in secret.

Highway Cat doesn't only work for the benefit of felines. I was biking home one time, coming at high speed down the bridge, when I noticed Highway Cat at his usual place. There's an intersection with a blind corner there, and I've always taken it on faith; there's not much traffic, so the chance for misfortune is small - usually. This time, however, he sat up, stared at me, then backed away in an odd fashion. I understood this to mean there was someone coming from the other direction, so I moved to the left lane in anticipation. Sure enough, a moped came cruising at high velocity! Had I not moved in response to the cat, I don't think that avoiding a collision would be possible.

There are other cats that fulfill some sort of function within cat society, but I don't really know what those functions are...

Creepy Cat, for instance. At first I thought he played a policing role, but it's just creepy... its teeth are large, yellow, and point in all the wrong directions. It eats like a fiend, looks totally emaciated, sits on garbage cans and bike seats, and its meow is like rubbing sand paper on a chalkboard. Perhaps he works as a scavenger of sorts - he loves to ravage garbage bags.

Love Cat is one cat I don't know very well. It seems that Love Cat has his heart set on Anka. Anka is certainly very beautiful - our little princess - but is entirely uninterested, due to some surgical intervention. Love Cat hates on Izzy, too, so perhaps Love Cat's purpose is to encourage some form of cat prissiness.

I'll add more cats to this list since I'm not home during the day, when all this drama is visible to humans. I'm finally on vacation, so perhaps I can observe a few more cats first-hand and see what they are up to, such as Gimp Cat and Mean Big Furry Black Cat, among others.

What's the lesson in all this? I don't know, but that's probably only because Boss Cat doesn't want me to...

Saturday, August 8, 2009

"My God, It's Full of Stars"

One day a couple of months ago, something wonderful happened. It was a friday; the end of a very long workweek. An arduous week - I'd been working overtime to get high-performance ALPR working in Australia (namely New South Wales, Queensland, and Victoria), the trains were not cooperating, and a lot of energy was spent trying to arrange to buy our house. It had been rainy and cloudy the whole month - not exactly a good summer. By the afternoon of that friday, I was beat. Spent. A lifeless husk.

Four o'clock finally came, so I grabbed a beer with my colleagues and executed a final superhuman effort to get the software written, vetted, and out the door before the weekend so that I could rest easy for a few days. I groaned and sweated as my fingers punched the keys, and I reached the last few keystrokes. Committed the code. Executed the build/release script. Hit 'Send' on an email to the guy who delivers code to customers.

Done.

When I exited the building the clouds finally broke, and the sun spread cheer across the village. I unlocked my bike, got on, and started rolling down the street. The clouds had turned to white wisps in the broad blue sky, and the sun was a bright lance high above. All of a sudden, I was surrounded by glittering light all around. Large shining drops falling in sheets around me. I spread my arms and soared through a great galaxy of shimmering diamond rain, weaving lazy splines over the empty village streets.

The moment, like all good things, ended without fanfare or tragedy. The rain diminished to a drizzle, then stopped, and those wispy clouds passed over the sun and unsaturated the early summer blooms.

I thanked the great cosmos for granting me this experience and for allowing me to appreciate it as a reward for a hard job well done, and continued to the train station to go home.

Friday, August 7, 2009

Flashbacks from the Great War

For some crazy reason that I won't bore you with, it became (in my mind) imperative to clean the little storage room next to the kitchen. It was around midnight, and I wanted to be done by mid-morning.

"No big deal," I thought, "I drank a lot of coffee, so I wouldn't sleep anyway. I'll just take care of it right now."

So I put Jessica to bed, piled all the cleaning supplies in our apartment in the bike trailer, and biked out to our new home. You see - it wasn't just a normal cleaning job.

The previous owners kept their cats in that room next to the kitchen. Apparently they didn't really use their litter box when they went number one all the time, so it smelled pretty bad. It had gotten worse since we got the keys, instead of getting better as it aired out, so it was best to get it cleaned out as soon as possible.

"No big deal," I thought, "the previous owners said they cleaned it up, so I'll just spray it down or whatever, and that'll be that."

0.30
Arrival. I open the front door and carry the supplies inside.
"Damn, I forgot the keys to the side door. It'll get kinda stuffy in the side room, but I should continue the mission." So I turn on the lights and enter the side room to form a plan. I study the contents...god, that stench...just some cardboard and newspapers...holy smokes, this is bad...and a couple of bins for recycling I gotta get out of here...

I estimate 5 minutes to move the stuff, 15 minutes of hard cleaning, 5 minutes of cleaning up, and 5 minutes of buffer space. I should be in and out in 30 minutes. Nice.

Ten minutes later I had already started cleaning, but I realized it was fruitless. The floor was covered with a thin linoleum-like sheet. The top was filthy, but I suspected something...worse.

I lifted the corner of the...oh my what is this? I pulled the sheet back further. It was wet. It was swimming in a pool of urine. It was horrible.

I managed to cover the floor through the house with tarp so I could pull the dripping tepid terrible mess out to the back yard without stinking down the rest of the house. It was heavy, like a corpse.

"No big deal, that must be the worst of it."

Right?


01.00
Returned to the side room, heavy-duty bleach spray in hand. Hmm? I ignore the nagging feeling, and get to work. The walls were painted white - not much of a challenge there. However, there is one ugly porous concrete floor, and 360 degrees of corner. I decide to start at the right corner of the side door and work clockwise. I'd be at the left corner of the door in gggheh? ten minutes.

"No big deal, just gonna hose it down with some bleach, clean it out, and I'll be out in 30 minutes."

So I start hosing. Spraying and spraying. Dousing the awful floor, destroying that terrible smell with pure, clean, aggghh bleach. Spritzing and pouring. My eyes felt dry and it became difficult to breathe.
I should have better ventilation for this. Bleach is kinda toxic. Listen! But I keep on going as hard as my hands can squeeze the bottle. Spraying and spraying. My eyes stung and watered, my lungs burned, and the back of my head was screaming for attention. Wake up, you fool! But I would not listen - could not stop - I had to finish the job. Spraying and spraying. Spritzing and pouring. All the way to the left edge of the side door. I can't even see anything anymore. I would scream to quell the stinging, but there's no air to carry the sound and instead I whimper pitifully. But I'm done.

01.30 I stumble out into the kitchen and lean out of the open window - try to breathe deeply. The tears instantly soothe my eyes, and my lungs ache for relief.

"What's going on? This is way beyond bleach," I think to myself, and finally listen to that little voice of reason that had been plaguing me the whole night...thank you! Finally, eh? About time. Right, so what's bleach? Sodium hypochlorite? Annnnnnd, what's that smelly stuff in your pee? I can see where I'm going with this... ammonia? Good! Put the two and two together! Hmmm, that's a little tricky... we'd get... some salts and water and... diatomic chlorine? Yup. Go take care of it.

"Shite. Chlorine gas. Fuuuck meeeee."

I go back to the room and find a spot that'll work for a test. A spot on the doorframe is a bit rotted, so I spray. I am simultaneously excited and horrified to see green wisps floating up from the doorframe when I spray it with the leftover bleach. Apparently I just experienced something minorly similar to some thousands of soldiers in the first world war.

03.00 I finally finish up and go home.

Epilogue A few days later I regained my full lung capacity. I can be a real dummy when I don't pay attention!

No kidding!

Tuesday, July 28, 2009

Brainstorm

Ok, update about irl stuff!

I'm in a period of change, renewal, and dynamic perspective shifts. Sweet! To me, it's all incredibly interesting, so I'll try to communicate to you not just the general facts, but hopefully also an intuitive sense of the events.

So: I'm on my last 3 days of work at my current job. Next week, I start as a software developer at Numeriek Centrum Groningen, developing some CAD software used in the ship industry. NUPAS CADMATIC, if you want to Google it; I found oodles of illegal copies of it to download, but not a single usergroup, email list, or active forum about it. Not sure what that means, but it's strange.

This doesn't quite seem an ideal time to work at a company such as this; the credit/banking pothole in the in the economy is severely affecting demand for transport ships - the lowest point of demand is expected sometime in 2010 - precisely at a time when the market is already saturated - flooded by an unprecedented boom that had been building for years. Why hire more engineers at a time when sales in the entire industry is going to crash? I'll tell you - it's a smart move when there's a giant list of new features you want to implement, when differentiating from competitors is key to making sales (new features == differentiation), and labor is cheap. Hopefully I will provide this shot of adrenaline. In the best case, the new job will boost my development skills in return, provide support in my extracurricular efforts, a richer social life, and unprecedented financial growth.

In the worst case, where the job isn't great, and the future is bleak, at least I got this: an 111% of my former salary, 150% of my former vacation time, 20% of my former commute time, and a local colleague/social network.

Increased vacation time and a reduced commute translates into lower stress and an ability to invest time and money into pet projects. <-- I need those.

It also swings me from doing automatic license plate recognition to CAD software. Great! It'll be refreshing! I received a book on "Ship Knowledge" to study up on the terminology and concepts relevant to the software (well, except for the C/C++, FORTRAN, and Python stuff, which I'm already familiar with...). A refreshed geest is more apt to spend effort on pet projects. <-- also needed!

Now I can combine all four ingredients necessary for a pet project: time! money! spirit! and... oh yea! SPACE!

Space is the fourth ingredient, which has also completely fallen into place. After years of renting and paying exorbitant sums to rich landowners and aristocrats, I connived Jessica(Bunneh) into looking at houses to purchase. In April we started looking, in May we finalized the arrangements, in June we moved in, and in July we finished getting it all nicely set up for a quality lifestyle. Still not quite done, of course - when are you ever? But I now live in a quiet neighborhood on the outskirts of Groningen, where I can bike to and from work and the city. The living room is a little bit Mediterranean-themed; the bedroom a cool Zen green; and we have a giant study with a 4-meter-wide desk that spans the room, custom hardwood shelves, deep brown walls, and a green leaf pattern as a border.

And we have the internet. Well - a connection to it, at least! Reliably 10mbps down, 1.5mbps up... not bad.

So even a place to work! Quite a shift from... everything I've had before, I suppose.

Alright - but what is all this I want to work on?
Good question! I'm really clueless myself at the moment (it's very late), so I'll just continue to stream-of-consciousness it out onto the blog.

First there's BookHarmony. I'd go into it, but suffice it to say that - once it works - Amazon, EBay, and Google would be interested in licenses. The idea is to match users with books they'll like by analyzing the contents of the books themselves. There's some swell clustering and other fun math in the scoring/matching algorithms, but the core of the development work there is going to be the natural language processing algorithms necessary for analyzing the books. Jessica is getting more involved with the Informatiekunde (Information Science/NLP) degree she's working on at the Rijksuniversiteit Groningen, so she'll do the brunt of the NLP work, I think. Boring parts of the project are: the website front-end, procurement of books and text, securing/licensing/business-i-fying software.

I want to clarify that when I say something is boring, I mean it is uninteresting to me. That may be because it's genuinely mind-numbingly dumb, but most likely because I think it's hard and difficult to learn, and simply can't be asked.

Ok, then there's this thing I'm working on with my brother Marcus (QuantumTroll). We want to develop a system that uses AI techniques to develop a physics-based control scheme for use in simulations (or computer games). So when a bird wants to go "forward", it doesn't just "go forward" and animate the wings (possibly with inverse kinematics and other fancy techniques), but actually flap the wings, adjust the tail, and clench the little bird-feet in an effort to move itself forward through the air. By applying a generous helping of neural networks and genetic algorithms, we should be able to produce something pretty awesome. Possibly supporting dynamic models (say - the bird broke a wing), context-based learning, and other cool stuff. We'll see.

Next, there's a fairly recent idea hashed out in broad outlines with Jessica:
* Take the Registry of Standardized Parts.
* Flippin' a - toss the parts into a Prolog program. Why not? They're all nice and well-defined, and follow set rules...
* And then - who knows? - flip out and do something like:
?- creature(eat_oil,multiply,emit_raspberry_smell).

Could then buy a couple of kits and follow the instructions in the output, sell it to Shell so they can clean up their latest spill.

Another project I've considered (especially during the house-purchasing-and-moving process) is a little mapping tripod. It sweeps the room with a laser and a couple of cheap CCD cameras and stores the images on a memory card. Read the contents of the card into the software, and you'll be presented with a full three-dimensional depiction of the entire room. It sports a little GPS unit, so you can even take snapshots of several rooms, and the software will automatically stitch them together. The program provides output in various formats so you can do interior design work in Google SketchUp, for example. Now that I'm writing this, it strikes me - the CAD software I'll be working on supports transforming point clouds to NURBS or other three-dimensional digital information - perhaps it'll even be useful in industrial settings!

On the topic of side projects that might behoove a work environment, I've been working on a program that trains a geometrical model of a type of license plate on the basis of measurements from thousands of images. I have designed an algorithm that'll be able to split sets of measurements into subsets - one for each type of license plate. That would save endless amounts of time, effort, and errors for Dacolian - now we have to do it by hand! But I haven't had the time to implement it. I'd still like to... and perhaps I can get paid for it. That'd be super - some money on the side. You know - for the drugs and hookers.

Now it gets really fun. Why don't we combine the projects? Some sample mashups:

BioProlog with LearnToWalk. Who knows what would happen, but the technologies can certainly work together. For example, taking the genetic algorithms and applying them to start and goal state descriptions instead of action sequences - here we might discover new types of things that we can make out of the parts. Types of things, like The Blob (which actually came from space), or something else entirely unimaginable.

LearnToWalk with BookHarmony. Anything is possible if we combine a library of literary analysis techniques (essentially all of state-of-the-art NLP) with a system that learns complex context-sensitive behaviors... perhaps it could work as some sort of editor for news or magazine articles - which often exhibit poor writing style. Combined with an information retrieval engine, it could perhaps even do rudimentary fact-checking - flagging suspect articles for a human to check. We are still the most intelligent beings on the planet.

NOTE: None of these project names - except for BookHarmony - are permanent (or even correct). They're just temporary nothings I used to refer to them in this post.

Anyway, so now I've talked about where I am, and what I plan to do. The story of where I was is even longer, so I'll save that for my book. Hey! It'd be cool to write a book! I should add that to my project list.

What I haven't done is tell any of the crazy stories of things that happened along the way. I'm talking near-fatal toxic gases, how the cat maffia operates in this neck of the woods, floating through a glittering galaxy of shining stars on the way from work, losing 750 euros worth of bicycles in a month, the role of the grotesque in my blog entries and art, what can happen when you decide to test bicycle brakes, a mysterious house party with a movie-level hangover, attempting to get internet access with KPN, lack of sleep and associated hallucinations, and my thoughts on the universe, time, infinity, intelligence, and purpose.

Although I live to help create a form of intelligence that will transcend our current capacity for thought far beyond into the unforeseeable future, these are the stories that make the hassle of life possible; that show that the presence of a self-aware entity - observing, considering its observations, and ultimately appreciating them - is worth something.

Monday, July 27, 2009

[\HIATUS]

I hereby end the hiatus!

Internet has been achieved, time has been booked... I have a lot to write about.

Thursday, June 4, 2009

HIATUS

*HIATUS*

I hate calling a hiatus so early into a project, but the fact is that the blog has been "hiated" for a few days already. Busy moving (and painting, adding trim, acquisitioning furnishments, ..., ..., ...)

I'd fill in the blanks, but I don't have the time!

*HIATUS*

Friday, May 29, 2009

Universal Serial Bus

I have strange dreams sometimes. And sometimes I even remember them, at least long enough to retell. In those cases, I like to relive the dream as often as I can, so I won't forget it. A sad (?) side-effect of this procedure is that the dream gets twisted - parts that are forgotten need to be filled in with new inventions, in an attempt to keep the dream cohesive.

On my previous blog, I wrote about a couple of dreams of that sort. Here is another, which I just dreamed last night:

I wake up on a gurney, rolling through a hospital. BONK squeak squeak BONK squeak squeak squeak BONK squeak squeak squeak... rolling through dimly lit hallways, bashing through the double doors. People on both sides, whooshing by in a blur - passing too quickly to distinguish doctor from patient; friend from foe - I was dying.

Catastrophic heart failure. There are no transplants available; the Netherlands has focused more on medical technology than on altruistic behavior like organ donation. There is only one solution - an artificial heart.

The gurney slows to a stop. The walls close in. Silvery metallic - an elevator? Lurch in the stomach - is it the medication, or are we descending? Down, down, down, down, down, down, down down down we go...

Darkness...

Operating room lights, bright and blurry filling my view. Greenish-blue shapes of surgeons moving through the haze. What's going on? Oh yea, the surgery - confusion of the anesthesia, fades back to oblivion.

At this point of the dream it switches from the first-person crazy-view to a documentary television show. It also stops making sense.

After being told about his condition, the patient decides to attempt an experimental procedure. Since the surgeons would already open up the chest cavity for an extremely invasive operation, they might as well take the opportunity to install a device.

The device consists of a high-fidelity patch of electrodes connected to a serial bus. The bus connects to a control circuit on the artificial heart, allowing the brain stem and hypothalamus to adjust the heart rate and diastolic pressure naturally. This small but significant signal doesn't come close to saturating the pipe, though, so the project is brought a step further: a large data-port is installed in the front of the patient's chest.

The data-port enables electronic devices to read signals from the nerves in the spinal chord, enabling everything from cybernetic powered exoskeletons to computer interfaces, GPS and GSM devices to access the peripheral nervous system. The patch also channels received signals into the nervous system, allowing these same devices to provide data for access by the central nervous system. After a short learning process, the patient should be able to fuse seamlessly with the internet and any device connected, directly or indirectly, to the data port.

At this point I realize I'm actually half-awake and thinking more about the possibilities of the technology than the dreaming about the experience of having it, which was a little sad. At any rate, an interesting night, indeed!


Like my momma said to me: "Don't listen to them baby... They just some hatin' ass bitches... that's all..."

Sunday, May 24, 2009

Graveyard Duty

Sleeping with the windows open is living poetry. The sound of rain, pigeons cooing, crows calling in the night; helicopter returning to the hospital - it's definitely not lupus - while an ambulance rolls past in silence; cold sweet air flows in through the window and drops to the floor, the smell of wet compost follows it in and clings to my nostrils; cats arguing about territory or mates, a lonely dog barks in the distance.

Nothing really compares.

But the smell of compost isn't the only thing that follows the cold sweet air into the room - mosquitoes also find their way inside. Once they make it past the spiderwebs, there's nothing stopping them. Nothing, that is, except the loafer. I think I crushed about a hundred mosquitoes last year, perched upon my walls and ceiling. Usually it was dark, very late, and I was very very tired, so I generally didn't bother to scrape their little twisted corpse off the wall. Something I'd rather do in the morning.

Of course, when the morning finally came, I'd wake up late and rush through shower and breakfast, to then race through the streets of Groningen and (hopefully) catch the train at the last second. Ooops - I forgot about the mosquitoes again. I'll clean it up when I get home.

Of course, when I came home after a long day, I had some dinner and relaxed, and only when it was very late did I even think about what the bedroom was like. By then the room was again filled with mosquitoes for me to find and execute, and the cycle continued.

The room became a grotesque graveyard - bodies of the fallen were scattered over the walls, windows, and ceiling. A three-dimensional display of torn and shattered corpses, gruesome poses mimicking their past lives, unidentifiable smears left by bodies long gone. The mosquitoes along the window frame have been taken over by mold - green and blue and black and gray.

Yesterday graveyard duty finally arrived for real - some potential new tenants are coming to view the house tomorrow, so it needs to be clean. A sponge and some soapy water, and the deed was done; headstones removed, memories erased, conscience cleaned.

Saturday, May 23, 2009

Smart Cat, Dumb Cat, Fart Cat, Crumb Cat

I don't constantly want to write about things in my life - I generally dislike that kind of blog. But things have been happening that spur my imagination, so I just write what I want. Today's episode: cats.

One of my kittens is very intelligent. As a result, she's afraid of everything. The dog, people, movement, sounds in the night... even her shadow. She apparently has an overactive imagination, too. This is fun(!) because she'll run around trying to escape unseen foes, or catch imaginary prey. Sometimes we'll find her staring down at the ground, pawing at nothing (something?). After achieving no success, she'll change her angle of attack, but ho! her target moved! That's when we realized she's attacking her shadow...

The other kitten is very much the opposite. I'd like to say "dumb as rocks," but rocks are comparatively intelligent because they can't get squished by doors, poisoned by buckets of dilute bleach, or catch on fire.

I lit some incense the other day to mask a bad smell from the kitty litter, and I thought of a little experiment. I took the smoldering stick and held it in front of Izzy, the smart one. "Oh shit oh shit oh shit! It's glowing!" she mewled and hid. A little bit later she came out and approached, having realized it wasn't going to chase her down. *sniff sniff* "Oh shit! It's smoke!!!" Rinse and repeat. But after a while, she figured it out, didn't like it, got bored and left to go play with her little demons.

That was neat - I wondered how Anka would fare. I took the smoldering stick and held it in front of her. "OOoooOOoOOooOoooO! Neat!" and before I could react she ran up and touched the glowing orange tip with her pink little nose, then ran into a corner to hide, face all scrunched up and licking her nose. Dumb cat!

EDIT: 29-05-2009
I retried the experiment (to gather more data, of course) with some mints. These are strong mints, meant to keep fishermen's nostrils clear when they're pulling in tuna or salmon in the North Atlantic. The active ingredients are eucalyptus and capsicum.

Holding it in front of Izzy, she was at first curious, but fearful. Eventually she approached and sniffed in the general direction, decided it was very unzesty, and moved on. Another data point for Izzy - very consistent with expectations.

Holding it in front of Anka, she immediately descended upon the mint, rubbed her pink little nose on it, then backed off three steps and scrunched up her face. Further testing immediately following the experiment were inconclusive, because she backed away from it in mortal terror. Apparently these mint burn about as bad as ... fire. Another data point for Anka - surprisingly consistent!

A free bonus: now I have a cheap and effective Anka repellant. I can just scatter some mints on a table and there is no risk that Anka will jump up and knock over the flowers...

Thursday, May 21, 2009

In sickness and in health...

So my fiance is lying on the floor, recovering from being very very sick. She's been sick for a week; we went to the doctor yesterday, who diagnosed her with food poisoning or intestinal infection. Doctor's orders: starvation diet and rest.

I think it was some bad tofu - I made a stirfry with some flavored tofu strips. The strips smelled suspicious, but I blamed it on the seasoning. Poor choice!

This was in the middle of last week. On Friday, we were running low on money, so we said "hey, let's get some dirt-cheap vodka and see what happens!" What happened was that I spent the better part of Saturday expelling the contents of my digestive tract in every imaginable way. The hangover passed, and time flowed into next week (which is this week). Jessica started feeling worse and worse, while I was just fine. And I'd even had more of the tofu as leftovers the following day!

The only conclusion I can draw here is that the bottom-shelf vodka and the quarter-bottle of Jagermeister that was left conspired to save me from this intestinal infection of doom. Jessica, exercising self-control and moderation, was not quite so lucky...

Tuesday, May 19, 2009

Career Highlights, Continued.

What the hell?

I haven't actually updated the "Career Highlights" entry. Just my contact information. I thought my profile was sufficiently funny to leave it up for a bit.

It's about 10am in the morning, and I've already gotten 3 phone calls, one LinkedIn invite, and one scheduled interview.

Apparently building houses for the poor and organizing a recycling program in my appartment are highly desirable skills? Perhaps it was writing for an environmental column in a progressive newspaper that convinced them?

Man, fuck this yuppie shit - I'm gonna be a hippie from now on.

Monday, May 18, 2009

Career Highlights

You know those job search websites? Like... Yahoo! Jobs... and Monster.com?

Well, Monsterboard.nl is a very popular site in the Netherlands. They're pretty cool - lots of features, resumes posted online, people go looking at them...

One of the coolest things is that they regularly update their website. More features, slicker look and feel, faster response times.

It's friggin' sweet. Like a racecar that just gets faster and more comfortable! It doesn't even tell you when it updates - it just happens! From one day to the next, it could get fitted with rocket boosters, or improved stitching on the seams in the leather seats. The best part is that I got an incredibly awesome job through it! Holy shit! Can it get any better?

Of course! Upgrades kept happening while I lived life and advanced my career. While I developed modules for detecting and decoding license plates in a dozen countries around the world, the developers at Monsterboard.nl kept just as busy. I haven't been back to the website since - haven't needed to. Why look for jobs when satisfied with the one you have? Well, my girlfriend posted a new resume, and was happy to report she got like 50 views in a day. So I'm thinking, "hey, my resume should be up there still, I wonder how many views I've gotten."


36 this year.


"Ummmmmmmmmmmmmmmmmm"

So I looked at the new "Profile View". A slick overview of who I am, my accomplishments in career, education, and free time. My interests, wishes, dreams. My life in a nutshell; the page that HR managers across the internet use to see if I'm a winner or a loser, a productive software professional or scruffy basement hacker, a potential hire or a neglected file in the browser cache.

This is the section at the top of the page, highlighted for readability and optimal visibility:


Carrièrehoogtepunten:
* Coordinated recycling program in my apartment buil
* Worked building houses for the poor.
* I write the environmental column for a progressive
* I'm working on an application that matches users a


Carrièrehoogtepunten = Career highlights

fml

Sunday, May 17, 2009

Euclid's Vegetables

I thought I'd explain the title a little bit.

A couple of days ago I was coding up some graph making algorithms to visualize the automatic geometry deriver I'm working on at work. I should maybe explain (for those who don't know me) that I work on automatic license/number plate recognition (ALPR/ANPR). Part of it is to check whether the registration number we THINK we read actually makes sense, and part of THAT is to check whether the numbers and letters we think we read are located in the correct spot relative to each other. That's geometry checking, and it's not easy. The difference between some guy in Alabama getting a $20 ticket and some guy in New Mexico getting it can be down to two pixels... and multiplied by tens of thousands of passages per day ... you probably get the picture.

I digress.

Where I was going is that I wanted to draw a little box around the standard deviation on the histogram of errors that our derived model produces in the learning process. Then we can visualize how quickly it learns in a nice, comprehensible way, while it's busy doing it's thing.

Standard Deviation is, of course: SQRT( SUM_OF_SQUARES / NUMBER_OF_SAMPLES ). Easy enough, right? So I type it in, compile, and watch the value explode waaay off the scale. Huh-whut? It turns out that our C library thinks that SQRT(x) is actually x*x...

So, that got me on a train of thought that started with square roots, rolled along the etymology of "root", entered a tunnel containing the life and times of Euclid of Alexandria and his book about geometry and the properties of squares, and exited somewhere in the neighborhood of variance squared.

In other words, I went beyond square roots, all the way to... Euclid's Vegetables.

First Post

Right, so I had this blog a few years ago, bla-bla-bla, and it turns out that everyone who read it likes what they saw. Even better, I really enjoyed writing the entries!

So I really want to return to it, but I haven't been able to. Time goes on, etc etc etc, so I can't just pick up where I left off. Furthermore, that thing was kinda just a dumping-ground for all the weird shit that piles up in my head on a daily basis - and far from everything was actually "post-worthy".

I've therefore made the decision to archive the old blog, consider it a "prototype" or "alpha-version" of the "TheWalruss Blogosphere Phenomenon" (or TWBP), and to make a new blog. A "production" blog, so to speak. One which I wouldn't be embarrassed to show my parents, employers, or up-tight "friends."

Not that it'd be any less weird, but - hopefully - just less amateurischschsch.

With that, I christen the new blog: Euclid's Vegetables!

To Boldly go where no Root has gone before!

...

No, that doesn't work...

Taking Square Roots to unprecedented levels!

...

Darn, I thought this blog title would lend itself effortlessly to snappy slogans. Let's try again.

Eratosthenes would never have seen this coming!

...

Hmmm. I'll have to work on this one...
Suggestions for a subtitle, anyone?