Olog (formerly, AILogger formerly OKtrace, formerly text field on stage..) is a logging utility I have been using since the early days. The previous version, AILogger has been the most feature rich to date. But over the years a need to rewrite the whole thing has been growing more and more urgent. It actually started life as an AS1 text field on stage, and was then made into an AS2 class which was then refactored for AS3. But after a while it became evident that it had been patched up too many times to do new things and was in desperate need of some overhaulin’.
It’s about time it took its name from its father as well, so I’m abandoning the scheme of naming it after my employer. (OKTrace = Okular, AILogger = Allegro Interaktiv). It has always been my pet project, so I’m taking it with me everywhere I go from now on. I also wanted a short name, seeing as I’ll be typing it a lot, so Olog it is (the “O” from Oyvind).
So this time it’ll be different, I promise! Olog 0.9 is actually AILogger 1.2 and then some in terms of features, but the first step in making it was “File > New”. It’s completely rewritten, and no copy-paste this time. It has been tagging along during my latest project and so it has seen plenty of action already. I’ve tested it quite thoroughly, but it’s hard to say what happens when you try to live on your own for the first time. That’s why I have humbly versioned it 0.9b for now.
New features
Here are some new things you might like:
Full featured window interface. Minimize/maximize/close buttons, double click on title bar to minimize. Moveable and resizable.
Selective line numbers, time-since-movie start and clock time for each line. These can all be turned of or off during run time.
Filtering of log levels. Pressing number keys 0-5 filters the log to show only those severity levels (color). Esc to escape.
Automatic update check. Olog will check for a new version once a week if you let it and notify you if there’s a newer version.
Save log to text/XML.
Persistent window state. Position, size, minimized/maximized state is remembered so you don’t have to keep moving it out of the way each time you compile.
Run time markers. Set a new named point-in-time marker, which you can later complete to display load/execution times.
Support for AILoggerEvents, but Olog has it’s own OlogEvent as well for loosely coupled logging.
aXbo is a bio-rhythmic Sleep.Phase.Alarm.Clock promising to revolutionize the way you wake up every morning. Put simple, it works by identifying the different phases of sleep in your sleep cycle based on your amount of body movement. It then wakes you up at a time of light sleep, when you are most likely to feel well and rested. Two months ago I got a new job that requires a two hour commute, which means getting up at 6.30 three days a week. After being a tormented B-person all my life, I decided to buy this device i’d heard about in an attempt to make my mornings easier. I have now used it for a few days, so here’s how it’s working so far.
In practicality
First things first: This is a pricey product, costing just shy of 200 euros for the two-person edition. You buy it from www.axbo.com, an Austrian website which in—typical German tradition—defaults to German. Mine was delivered in two weeks “due to strong demand”. The initial experience was somewhat limp in my case because it wouldn’t charge properly. After some time of emailing with their support people, it seemed that there was a problem with the power adapter/cable. Hence I ripped the front plate off, cut away some purposeless plastic thingies, extracted the three AAA batteries and let them charge in a normal battery charger. That worked while I waited for a new power adapter to arrive in the mail.
Setup is done though the menus on the clock with a couple of buttons and a scroll wheel on the side. Pretty standard stuff. My version is made for two people, and any time you do something relating to only one of them, the corresponding icon is displayed topmost in the LCD (see article image). You get a range of six different wake-up sounds, all surprisingly “alarm-ish” for a device that’s comes across as very gentle in all other aspects. I opted for the chirping birds and went to sleep.
While you sleep—some theory
A wristband is what enables the clock to register body movement. They come in man- and lady-size, one of each in my delivery. Inside it is a removable sensor, and the Austrians are very specific about wearing it the right way on your left arm.
aXbo wristbands used for recording your movements during sleep
As explained thoroughly and way better on the aXbo’s own website, you move less in deep phases of sleep and more in the light ones. The scientists illustrate sleep cycles with a “hypnogramme”, so I thought I’d give it a shot.
In order to avoid copyright infringement, I drew you the illustration to the right. It’s not accurate in any way, but it gets the job done in explaining that you first enter a long, deep sleep phase, followed by waves of gradually shorter and lighter ones. This typically goes on for a period of 7-9 hours for a normal adult.
Waking up
If you wake up remembering your dreams, you most likely woke up from a REM-stage. This is better than waking up from deep sleep, but still not ideal. What you want is to wake up from the lightest sleep stage possible, shown as peaks in the hypnogramme. The aXbo predicts your next light sleep phase and wakes you as close as possible within a 30 minute window. Should your sleep cycle be out of sync with the alarm time you’ve set, the alarm will go off at that time. The same goes for if you forget to wear the wristband, or if the batteries are too drained to safely spend them on the sensing.
One thing I particularly like about the aXbo is your lack of choice when it comes to it’s core features. The wake-up window is 30 minutes, and that’s that. No configuration for a two hour snooze. And speaking of fans of the snooze button (we know who we are!), you won’t have much luck here, because there isn’t any. But what you do get is a button on the wristband that lets you turn the backlight on during the night to check how long you’ve gone without falling asleep. And more importantly, it is also used for silencing the alarm after it goes off . I usually feel a little woozy just after waking up (who doesn’t), so I like to sit upright in bed for a couple of minutes before putting my feet on the cold floor. This might be disobedient to the recommendation in the manual that says to get up immediately, but it works for me.
The aXbo glows when you push the button on the wristband (firmly)
So how does it feeeel?
I’ll be a little cautious for now since I’ve only used it for a few days. But to me this seems like a step forward. The aXbo has yet to wake me up at the precise time I set it to, which can only mean that it has found a better time for me to get up. And so far I have not felt broken and beaten at that time like I usually do. Some mornings however, I have had the pleasure of experiencing something which is a bit of a rarity for me: The feeling of being ready to get out of bed. I suppose it is a little early to attribute it all to the clock, but I’m definitely thinking that there might be something to this device.
I will try to write some more about my experiences with the aXbo after having used it for a month or two. In the mean time, if you want to read up about sleep cycles, sleep phases and what not you probably know where to look.
PS. There’s also free data collection and analysis software for both PC and Mac available from the aXbo website if you want to get utterly German about your sleep. And also, writing the aXbo name with a lowercase “a” and a capital “X” is really not that cool, but apparently that’s its name.
Ads
I just had to link up these hilarious TV ads for the aXbo. I hope their sleep research is better than their metaphors (and the voice actor’s English):
In my continuing effort to track down a particularly nasty case of internal build error/classes must not be nested in Flash Builder. I ran a regex to find empty switch statements. These are notoriously known for causing this error, so in follow up to my post about regex for finding unterminated lines (another possible culprit), here is a RegExp that matches empty switch statements:
items[i].x // Slow
Sprite(items[i]).x // Slightly faster
var item:Sprite = items[i];
item.x // Twice as fast as items[i].x!! http://twitter.com/nordhagen7 hours ago
@malteburkhardt Fo shizzle! I think the key is to view it as a separate query language and write every segment on its own line with comments http://twitter.com/nordhagen2010/03/09