Thursday, January 17, 2008

Emerging from darkness, I dream in colour

No, it's not a clever reference to anything, just a phrase that popped in to my head. My first conscious thought when I awoke to my bus arriving at its last stop on the way to work this morning. So really, it's a genuine random thought.

But I've studied Freud, at least in passing, so lets pretend it wasn't "just a cigar".

Emerging from darkness
In light of the fact that I'm finally going home this weekend, Emerging from darkness could be a manifestation of my relief.

You see, after my last post, which was made the day after my son was born, life was good... for about 24 hours. And then things got ugly.. emergency room ugly. And now, 3 months later, I'm finally returning home.

Nurses
Where I live, an in-home follow-up is done by local home-care nurses after a baby is born, it's a great service really. In our case, I believe it is why my son is alive today. You see, the nurse noticed unusual twitching, which my wife and I did not, as new parents, think was unusual. Apparently it was the rhythm of the twitch that concerned her. She suggested we go to the emergency room as soon as we could to have it looked at. We were on the road within about 30 seconds, panic already setting in. I don't even remember what time that was, but I think it was early afternoon, around 14:00 by the time we got to the hospital.

ER
After some initial screening by the ER doctor, a pediatrician was called in. OK, so it's not a trivial problem, slightly concerning. Moved from triage to ER proper, tests, tests, and more tests. Then a C/T scan, slightly more worrying. Then we're told a transport with a team of specialists are on their way from BCCH (BC Chldren's Hospital). Hold on a sec, I think I skipped some details.. the key factor here was low blood sugar, and I mean ridiculously low. Way too low for a normal baby to have at 48 hours of age, even if it hadn't eaten that entire time. Somewhat troubling. OK, so we give him sugar and go home, right? I wish. Apparently it was low enough for long enough to cause some major problems. His blood had thickened to a near syrup state and there are a lot of other known complications. The C/T scan confirmed one of the worst of them, brain damage. I was "OK" up to that point, I think. Then some other stuff happened, but the emotions of the time seem to have caused a lot of details to be blocked from my memory. I do know that I drove us to the hospital, but that I wouldn't see my car again for quite a while after that. We were admitted to BCCH at about midnight, on the eve of Friday, October 26th, and my son was approaching his 4th day in this world. By this time he's receiving several medications by IV, which was originally used for a dextrose drip (sugar water).

Specialists
Lots and lots of specialists. I don't remember all of their names, but I know that there were more doctors in more fields than I'd ever seen. The immediately re-did the scan of his brain, since he wasn't sedated the first time and had moved around. Confirmed that it wasn't a blood clot in his brain, but cerebral edema. That is, swelling of the brain. We're told our baby's life is in danger and a counselor is brought in. That was the worst night of my life.

Machines
As in life support. Ventilator, feeding tube, monitors for more things than I knew could be measured. At one point before going to the hospital that specializes in children, Arland had a full set of adult size cardio/respiratory monitors hooked up to him. If you want to know what that looked like, watch the Matrix and fast forward to the part where they show a baby hooked up.

Get some sleep
The next day we got to meet "the team". They go over everything they know (way too much detail to dump here). They tell us Arland is going to live. My son is going to live. Then something about disabilities and complications and blah blah blah.. my son is going to live. I remember being aware of the looks of confusion on the faces of the doctors. I suspect they aren't used to tears of joy as a response to being told that your child is going to have learning disabilities and have "special needs". Looking back, I suspect they either didn't know we were told he might die, or my wife and I are exceptional in that we discussed the possibility of a special needs child long before conceiving. Arland is now stable, the doctors know enough to know that he's not going to die. The worst night of my life is over. My son is going to live.

ICU
Intensive care, where each patient has a nurse stationed at their bed, 24/7. ICU is a depressing place. I'm sorry to say that during our stay there, a young teenage boy who was in a coma was unplugged. The ICU is not a happy place, but we were happy he was there and not the morgue. Arland is on a steady dextrose drip and 3 different anti-convulsives (for preventing seizures), but he's finally getting some breast milk, fed through a tube that goes in to his nose and down his throat. I think we were in ICU for 1 or 2 weeks. I' not sure. Time passes differently when you don't sleep at night.

Vacation time
By this point I've used up all my vacation time and sick time at work. And since I'm paying $45/night for accommodations at this point (so I can stay with my wife and son), I have to go back. It turns out, commuting from the hospital isn't very different from my normal commute. It's going the opposite direction, but it's still a short walk, a bus, then a short ride on the train. Just under an hour each way, instead of just over an hour each way like from home. I adapt.

TCU
Transitional care, a bit of a half-way point for long term hospital stays. There are 2-3 patients per nurse here, and the mood is much happier. These are patients who are either on their way home or on their way to one of the "normal" hospital rooms in one of the wards. In our case, it was a stop over while we waited for a bed to open up in the Neuroscience ward. By this point, Arland is down to monitors, blow-by oxygen (no breathing machine), and oral meds and vitamins, along with his mother's milk. He's still got the tube for all his feeding/meds, but he's not half machine any more.

Goodbye BCCH, hello relatives
We finish off the duration of our stay at the hospital in the neuroscience ward. Arrangements are made for a nurse to visit once a week to change the injection device in his leg and several months worth of blood tests and pediatrician appointments are booked. We're referred to various "programs" for children with "difficulties" and we move in with a relative so that we aren't alone if something comes up. We start to get back to "normal". Well, as normal as a new born can be at least. Other than not being able to let him go more than 3 hours without feeding (yes, I mean 24/7), and having to give him injections and oral meds every 12 hours, life is kind of normal.. ish.

More normal
Arland improves dramatically now that we're out of the hospital. Arland continues his pattern of ripping things out of his face.. oh right, forgot to mention, he pulled out his own breathing tube.. that is, he was the one that took himself off the respirator. And ripped out his feeding tube several times too, while in the hospital. Well that continued at "home" as we've grown to call it. Of course, instead of pushing a button and having a nurse rush in, we have to take him to the ER to get a new tube put in. Once was funny. Twice made us think this might be an ongoing problem. Three times.. the bloody thing was only put back in 12 hours ago! Four times!?! We'd already discussed with the doctor how long it needed to be in, and decided not to replace it.

Rapid recovery
As they say, babies change very quickly. Arland's improvement went in to high gear once he finally succeeded in ridding himself of tubes. Checkups and tests all come back normal. The fact that nobody has been able to figure out why all this happened sits and festers in the back of my mind to this day, but I prefer to focus on how well he's doing now.

I dream in colour
This was actually the revelation I had earlier this morning, when my alarm woke me up. I'd just had a vivid dream sequence where I remembered brilliant colours. It had something to do with contact lenses and taking them out letting me see colours for clearly. But I suspect it reflects on how happy I am to be a father. Arland is doing brilliantly now, by the way. He recently had his first check up with the visual impairment people and they tell us that his vision appears to be normal and that he may not qualify for the program.. oh darn, he's too normal for them. Appointments with the pediatrician confirm he's growing and developing normally. In fact, the only thing that isn't normal about him seems to be his strength, which is apparently slightly above average. Well that's not so bad, right? Well, maybe if you don't have hair for him to pull :-P



All in all, Arland is doing very well and with any luck, he'll be down to only one medication soon. Things should get more and more "normal" now, whatever that means.

Wednesday, October 24, 2007

My Turn

In reference to this

A fairly universally accepted excuse for not blogging.. even though it is too recent to count. I now have a son. Queue the crying and forget the sleeping... GAME ON!!

Saturday, September 1, 2007

the little mole hill that could

In reference to this

I honestly thought this was over.. clearly I blinked.

To be fair, I stopped following it and then ignored most of the people who I disagreed with. To borrow a phrase from Linus Torvalds, "people who disagree with me are stupid and ugly." (I just recently watched his Google talk on Git)

I tried to be balanced and non-bias in my previous post, but I think I'll allow myself to weigh in with my opinion this time.

Theo started round two with a new thread on openbsd-misc. The bell was then echoed by kerneltrap.org and undeadly.org, which is where I saw it (with over 100 feeds, a local lug mailing list, and a couple others, I don't have time for openbsd-misc or lkml in the raw).

For the record, I completely agree with everything in Theo's post. Or at least, I agree with my interpretation of everything he said. I add that because of the large number of people who seem to disagree with things they think he implied. I saw no conflicting statements in his post, others did.

The real crux of the matter, as Theo pointed out, is the legal implications that are part of this "debate". These licenses are legal artifacts representing ideals. A copyright holder owns their work; it is their choice of how to distribute it. The license is that choice, put in pseudo-legalese.

I find law largely useless without looking at the intentions behind it. If we ignore the intent of the law and focus on the letter of the law... well that's like lawyers vs. judges. Lawyers try to use the letter of the law to their client's advantage, to make sure they get every right afforded to them by the law. Judges, on the other hand, have to decide whether or not the lawyer is applying the law in a way that is consistent with its intent.

When someone uses a BSD license for this, they are saying that you can use it as long as they get credit in the code and their license and disclaimer remain with their copyright notice. The GPL is very similar in this regard, just adding some further details about reciprocity, but I see them as largely the same.

They both have the same spirit of intent behind them: this code is free for everyone to use, please take it and make it better, faster, stronger, and if you can just contribute, that'd be great (sweet, Daft Punk reference and Office Space quote in the same sentence).

If I write a piece of open source software, my intent will be the same whether it is a BSD style or GPL style license grant. What I want is for anybody to be able to use my creation and help make it better. If I use a BSD license, I'm giving the licensee the chance to contribute back out of the goodness of their heart. If I use a GPL license, I'm making that social obligation a legal obligation (although the enforceability of the GPL is still widely debated).

I did a nice analysis of the different meanings of "dual-licensed" in my last entry. Well, I thought it was good, at least.

Anyway, my point is: removing license headers is wrong when the license says it must be included, unless all the involved copyright holders agree, OR if the licenses explicitly allow this (requiring the copyright holders to have agreed previously).

Wednesday, August 29, 2007

dual-licensed mole mountain

In reference to this

As is popping up in various places in my blog roll..

Someone proposed a patch on LKML that removes some BSD license headers and replaces them with GPLv2 headers. I've previously hinted at my licensing preferences, but they don't even come into play here, oddly enough.

I'll start with what I believe to be the logic of the people in favour of the patch. In code that is "dual-licensed" GPL/BSD, you must satisfy both licenses. Since the GPL is by far the most restrictive, the BSD license becomes moot and the code is essentially only licensed under the GPL because it's requirements are stronger. So removing the BSD license headers is basically like removing dead code.

The main opposition for this seems to be a bunch of BSD fan boys (as in a subset of BSD users) - and by that I mean they're the ones that are yelling loudest. This is probably how and why it spread so far, which is unfortunate.

From what I can see, there are some actual issues behind this though.

First of all, the word "relicensing" is really a bit of a misnomer in this context. Unless another individual is granted the right, through licensing, then only the original author can release their work under an alternative license. All of these licenses have one thing in common: they grant limited rights to the user of the code. Some think the BSD license is unrestricted, but the fact that you must include the copyright notice is actually a restriction. And contrary to some opinions, it doesn't give you the right to relicense the code.

Secondly, "dual-license" has different meanings in different contexts.

On the one hand, you have Qt and MySQL. Both projects are "dual-licensed" as proprietary code and under the GPL. In this case, "dual-licnesed" means that the original copyright holder (Trolltech and MySQL AB, respectively) offer their product under two distinct distribution models. You can use their product under the terms of the GPL, requiring all of your work be "infected" by that license, OR you can pay them a licensing fee so that you can use their product under the terms of their commercial licence, allowing you to do whatever you want with your source code without restriction.

On the other hand, you have code that was originally released under a BSD license by the author. This code is then extended by someone else. This second developer happens to like the GPL, so they tack the GPL on to the header, to cover their modifications. This code is now "dual-licensed" because it is covered by two different licenses. To use the code as it stands, you must satisfy the GPL AND the BSD licensing requirements, leading to my suspected logic described above. What really happens here is that the code becomes useless to a broad set of people because it is hard to separate the differently licensed code. You can't come along and relicense the whole thing as GPL without the permission of the original author who released under a BSD license.

And then on the third hand (yes, we're dealing with mutants), there is code that is explicitly "dual-licensed", where the file header has wording to the effect of "this code may be redistributed under the terms of the GPL OR the BSD license". This is the form of dual-licensing that actually works as people expect. You take the code, you modify it, and you release the derived work under your pick of the two licenses (or continue the dual-license trend), and everyone is happy. The copyright holder has granted you the right to do this.

In the end, the real problem is that the code in question is actually in two parts. One part falls solely under a BSD license, which can't be relicensed except by the author. Modifying this part in the Linux kernel and added a GPL header results in the second form above. The second part of that driver, however, falls under the 3rd variety (explicitly dual-licensed), and can therefore actually be relicensed as proposed.

In the end, what should have happened was something along the lines of:

"here's a patch to make some dual-licensed code GPLv2 only"
"hey, only some of that code is dual-licensed"
"oh? hey, you're right. my bad. fixed."
"cool. wanna grab a beer?"


Instead we got:
"here's a patch to make some dual-licensed code GPLv2 only"
"hey, that's not allowed! I'm telling!"
"oh? hey, you're right. my bad. fixed."
"too late, I've already told everyone on the internet and they're gonna come beat you up"


It even hit digg, so now we have a real party!

Assuming my post doesn't fuel the "debate", this should be over soon. As far as I'm concerned, the only result that matters is that it motivated me to write about it.

So go now and have non-discussions about this with your peers.

Thursday, July 19, 2007

Google, meet Pyro. Pyro, meet Google.

In reference to this

So, there's a new kid in town, Pyro.

New kid in the just born sense, new kid in the "hey, cool skateboard" sense, and new kid in the "looking for friends" sense. I'm sure there are more, but you get the idea.

Have you ever stumbled upon an idea that really catches you off-guard? A few (almost 5 actually) years ago I took a look at XUL and thought "damn, this is gonna change a lot things if it catches on." The ideas fade. Year or two later, OEOne (now Axentra) pops up and I think "finally, it's happening!" The ideas fade away again. Fast forward to a couple days ago when I stumble upon this blog entry in my daily feed cultivation.

"Cool!"

"Oooh, google apps on the desktop..."

"Third time's a charm, right?"

I've been processing the overwhelming cool for over 24 hours now, and I keep coming back to my disturbing addiction to all things Google. I'm really going to make a go at this. I've already started spamming (Google Mail) the mailing list (Google Groups) and I was already subscribed (Google Reader) to the blogs of the key people behind the magic. I really hope this is project gets the traction required to carry it over to a long-term project. There are so many potential benefits, I can't begin to describe them.. maybe I'll dedicate a future post entirely to the broad implications of various projects..

Gah! I can't stop thinking about this.. it's going to be a long day at work today. Must... make.. productive use... of excess.. mental energy.. (I'm suddenly reminded of Think and Grow Rich)

Mental note: respond to maddog's open request for cool projects in latest Linux Journal.
Mental note: the Internet is not a person, and if it is, why am I typing my internal monologue to it?

Friday, June 22, 2007

Have you cake and run windows too!

In reference to this

Some people are for porting Linux apps to Windows, some people are against. Pretty straight forward, right? Well I can't tell anymore. Take a look at Nikolaj's "rant", and then take a look at Aaron's rebuttal. I think they're both right, and I don't think that's a conflict. For anyone not following along, Nikolaj thinks porting Amarok to windows is good because of X and Aaron thinks he should be more concerned with Y.

I'm a Linux geek, and proud of it, but for some reason, I'm posting this from windows. Granted, I've got putty and an X server running, so I've actually got access to all of my linux/KDE stuff on my other workstation. I'll also ignore the part about me really wanting to use OpenBSD instead, but not having the guts to go all the way. There are a couple things I need windows for here at work, and they're non-negotiable and like a pizza special, there are no substitutions allowed (believe me, I tried). Damn I love pizza.. with mushrooms, and ham, and green peppers.. oh and the cheese all over the place.. wait, where was I?

Right, so what I'm trying to say here is that I want to be able to run KDE natively on windows because I can't run it natively in Linux, and X forwarding (especially across platforms) isn't perfect. This is a very practical reason to port Linux only apps to windows. Of course, Aaron is somewhat sidestepping (or maybe de-emphasizing is a better word?) the practicallity issue by taking the higher road and bringing ethics into the picture.

Finally, a chance to use one of my favourite movie quotes...

"Yeah, but your scientists were so preoccupied with whether or not they could, they didn't stop to think if they should."
I think that makes Aaron's point pretty well (and if I'm lucky, he'll confirm or deny that..).

Should people port Linux apps to windows to make my personal life better? Sure, why not? (hey, isn't that both Nikolaj's point, and Aaron's question?)

Should they do so at the cost of the whole open source movement? Ok, that's a bit dramatic, but it makes the point I think.

There sure seems to be more at stake here than just the apps. My question is this: are Linux and other free(dom) platforms really at risk as a result of this? Worst case, it stays the way it is - which some elitists would love. Well, I guess it could be worse than that, but the elitists would still love it. Of course, without money on the line, all we'll ever have is anecdotal evidence for or against that opinion. (And of course, with money on the line, we get skewed results.. damn)

To put it plainly, I don't think having all of KDE available to windows users will hurt Linux or any other free(dom) OS.

Personally, I prefer a vision of a future where the OS is a commodity, and what people really care about are the apps, or even better, the functionality of the apps. Give people the freedom to choose their OS with no strings attached (unless you're counting financial cost, in the case of windows). THAT is a noble cause, in my mind.

To put this in terms of popular licenses (disclaimer: I'm not trying to imply their license preferences).. Nikolaj puts forth a practical commercial license, and then Aaron rebuts with the GPL.. and now I raise them both, with BSD. As I've hinted at in a previous post, I tend to favour imperfect total freedom over perfect partial freedom. Especially in this case, where we're talking about either doing something, or debating at length why not to do something (while everyone sits around looking funny). I say just do it. If nothing else, it'll make for a great movie one day ;-)

And finally, to directly respond to Aaron's challenge to Nikolaj, "...provide some sort of game plan for how it won't." How about somebody good at planning come up with this plan, while someone good at programming comes up with a port. First one to finish wins.

If this is all too heady and philosophical for you (and because I have no other logical reason to point out this link), I suggest you do as Steve Yegge suggests, and go write your own compiler. According to him, it should take you a life time to finish. And in his usual style, it'll take you a while too read too. Sounds like a perfect distraction from "big questions" like these. ;-)

Thursday, June 21, 2007

That's what I call freedom

In reference to this

SQLite. I've known about it for a while, but never really looked into it or at it in any detail.

It's small, efficient, widely used, comes with gobs of automated tests, written in C.. a true thing of beauty. Oh, and apparently it's been public domain all this while, and I just didn't notice.

Very refreshing, especially in light of recent licensing "debates" between FSF members, Linus, and even Theo. From an idealistic point of view, I think I like the idea of public domain the most. From a more pragmatic point of view (as in something I'd use for my own code), I prefer the BSD style licenses. If I managed to make something so cool I just had to share it, I'd want to have my name all over it, as a matter of pride. Of course, the trick with licensing is you can only move to increasingly restrictive licenses unless you have permission from all of the contributors. And even then, it's really more of a fork.. anyway, not important.

I'll have to remember to make an effort to include SQLite in my projects.

Possible future topics in the same vain of praise for coolness: Open{BSD, SSH, BGP, CVS, etc.}, suckless.org, KDE, Qt, and many others I can't think of off the top of my head.