Musings
muse: to turn something over in the mind meditatively and often inconclusively
On covering songs

Why is it that when an artist covers another artist's song they'll happily go their own route with the melody or tune but seem disinclined to change the lyrics? And I'm not talking about the addition of spurious "yeah"'s or "oohooh"'s.


Posted at 06:38 PM

Working Title

Things have been quiet on this blog for a little while. That's not a particularly good reflection of my universe of late. Quite the opposite in fact.

But much of the past few weeks I'm not really in a position to blog about. In some cases its because it requires too much background. In other cases its because I'm still digesting.

In a nutshell though: we're racing towards (in fact we've raced past) a public beta deadline. We're officially under new management and he's facing the unenviable task of trying to get a handle on a rather complex project in a short period of time (peppered with public holidays, no doubt much to his frustration) having relocated from the US mere weeks ago. His approach to the project so far has been somewhat more hands on and it remains to be seen how that pans out.

So things are buzzing at the office but more often than not it's a similar sort of buzz you get when you narrowly avoid death crossing a busy road.

Rox went quiet for a bit but work has picked up there recently, largely as a result of trying to make it scale up even further. The next release will include the ability to share resource pools across multiple client or server instances. Resources include things like threads and connection pools. So it's possible to have a bunch of clients that are all talking to different remote servers share a pool of threads, and connection pooling. Sharing connection pooling doesn't seem to buy you anything here since they can't really share connections. What it gives you is a central location for managing limits on connection pooling. So you can tell Rox you never want more than a hundred open connections for a given resource pool and it will make that happen even if you have a dozen clients sharing that pool.

Keep an eye out for that release. Yeah, I know: you can't wait.

And I've been working my way through Practical Common Lisp and Structure and Interpretation of Computer Programs when I get a chance. But I haven't been pursuing Lisp as actively as I'd have hoped. My bad.

Posted at 11:45 PM

Testing

I stumbled across a link to some software for offline blogging (as well as richer client side blogging) that supported MT 3.2. So I figured I'd give it a try. I'm impressed. This is very, very cool:

It even includes a plugin that will record what you're listening to in Winamp. Witness:

[Listening to: Vincent - Don McLean]

Posted at 10:24 PM

In sickness and in health

Well, well, well. What a week. Monday saw me go deaf in my left ear and Claire step badly and hurt her previously injured knee.

Claire couldn't straighten her knee and after consulting her doctor it turned out she'd torn some cartilage and needed a arthroscopy. She went in today and everything seems to be sorted now.

My ear also came right today, but only due to an intervention. I suspected an infection initially since I've had one before with similar symptoms. And a sore throat the following day on the same side seemed to confirm that. And to top things off, yesterday I got home feeling fluish and sporting a stomach ache.

The "flu" seemed to abate overnight and my throat and stomach seem to be following suit. And the ear. Embarrassingly enough my "infection" was dislodged by a high pressure stream of water.

So domestic life this week has been somewhat strained, what with Claire unable to move and me (seriously) disclined to do anything other than sleep by the time I got home.

But we're on the mend and it's almost the weekend. Bring it on.

Posted at 09:36 PM

The time to tell

My grandmother is forever digging up old newspaper clippings. Yesterday she gave me a copy of one whose text is reproduced below. It's a letter to a publication (I don't know which one) written by my mother after she was diagnosed with terminal cancer.

I was an 11 year old boy when I found out my mother was terminally ill. At that age, and this seems particularly true for boys, she was still a very remote figure in the sense that I had no real insight into who she was as a person or what daily life for her really consisted of. She was my mother and that was enough.

I'd putting this up here essentially for archival purposes. Perhaps someone else will find it and take something valuable away from it. It was titled The time to tell.

In your recent February 1989 issue, one of your readers raised the question of whether a terminally ill patient should be informed. Here's my first-hand view:
I'm 34 years old and four years ago, I had a mastectomy. I have just been diagnosed as having multiple bone and liver secondaries. In theory, I am terminally ill with two young sons - a nine year old and an 11 year old.
If I hadn't known, I would never have been able to put my affairs in order. I don't think a doctor has the right to withhold information of this nature. Although you might not want to hear it, or accept it initially, you at least have the time to say things to people you may never have said. You have the chance to live each day to the full - Leslie Greenfield, Fontainebleau.

Posted at 05:01 PM

Marketing and time travel

In Seattle last week I kept passing a billboard advertising the 2007 Toyota Camry.

WTF? It's April 2006. I'm sorry, I'd like to call bullshit on this one.

Posted at 09:19 PM

Carmichael numbers: engineering vs mathematics

There's a footnote in the Structure and Interpretation of Computer Programs that complements much of what I wrote about in the previous entry.

It comes up in the context of testing for primality using a probabilistic algorithm. These types of algorithms differ from the traditional idea of an algorithm in that rather than providing a true binary answer (yes or no) the result is has a given probability of being true. In this case the algorithm discussed is the Fermat test for primality. You give it an integer and it tells you if it's prime. Or rather it tells you if it's probably prime. If it rejects the integer it's definitely not prime, but if it accepts it then there's a reasonably good chance that it is. But it's not guaranteed.

Another one which is a recent discovery on my part and which really appeals is the Bloom filter which is a kind of probabilistic hash table that can be used to efficiently (in the space sense) record set membership.

Many of these algorithms can be structured so that repeated iterations or more space can be used to increase the probability that the answer is correct. So you trade computing time and, or additional space, off against correctness.

Fermat's primality test has a bit of an Achille's heel though. There is a class of numbers, known as Carmichael numbers, that confound the test (other similar probabilistic primality tests are not fooled, but no doubt have their own weaknesses). But Carmichael numbers are pretty rare (aside: despite this it has been shown that there are an infinite number of Carmichael numbers).

Which brings me back to the footnote I mentioned up top. It runs something like this.

These numbers are sufficiently rare that the chances, when testing a large integer chosen at random, that said integer is a Carmichael number are smaller than the chance that cosmic radiation will interfere with the correct operation of a non-probabilistic algorithm. Considering an algorithm to be adequate for the first reason but not for the second illustrates the difference between mathematics and engineering.

Posted at 04:36 PM

Dusting off the cobwebs

theewaterskloof_open_road_small.jpg It's been waaaay too long since I took my bike out for a decent run. Beyond a few runs into the office I don't think I've used her for over a month.

I've said it before and, no doubt, I'll say it again. I'm always surprised by just how great it is to get out on the open road, open up the throttle and leave the humdrum of day-to-day living behind you.

The day, or rather afternoon, started out with Andy and I meeting up with the Pegasus crowd for a "cake run" out to Stellenbosch. Or rather that was where we thought we were going. It turned out to be a coffee shop in the middle of one of the (many, many) shopping centers that abound "up North". Given that we'd battled Saturday afternoon traffic and at one point stopped for almost 20 minutes in the blazing 30 degree Sun because the group was separated this was less than ideal. An effective 30 minutes on the bike is not what I was after.

Fortunately we'd anticipated (some of) this and had already planned to push on from there and try to squeeze in some more riding before the sunlight waned.

So we jumped onto the N1 and shot through to Franschoek, zipping over the pass, pausing briefly at the top for Andy to play porn photographer to his new toy, and finally stopping at the T-junction at the bottom to admire Theewaterskloofdam.

From there it was back home via Grabouw and Sir Lowry's pass. A round trip of the order of 200km, so not a particularly big run but long enough to rekindle our desire to have a crack at The Great Durban RunTM. This is a plan we've been hatching over the past few months to do an N2 round-trip run up to Durban over four (or five) days. The problem, as with anything, is that there's never a good time. Which is really just another way of admitting that I'm a huge procrastinator. So we'll see if we can actually swing this one. I think it would be incredible.

I'd also forgotten how much time for thinking there is on a bike. Just thinking. Random thoughts. It's interesting where random thoughts can take you. Today for example, after heading out from the coffee shop I noticed a buzz on my bike which I'm sure I've never heard before. Nothing seemed amiss though (amiss at 180+ km/h becomes obvious pretty quickly) so I left it. But it got me thinking about my general attitude towards things mechanical. I don't like them. Or rather, I don't like their imperfections and the way they let reality walk all over them. I suspect this is why I'm in software.

Mechanical things, indeed anything physical, is necessarily bound by the laws of physics. This means at least two things:

  1. They wear out, break, stop working, come to an end.
  2. They are restricted by physical limitations. Size. Weight. These things matter.

theewaterskloof_open_sky_small.jpg The former is something I find particularly distasteful in mechanical devices. Indeed, in anything physical. It annoys me that new clothes cease being new so quickly, or that my bike develops rattles and buzzes that weren't there when it rolled off the assembly line. But these things are inevitable and their designers must take this into account.

Software doesn't really suffer from this. Yes, you'll hear programmers talking about bit-rot, but that's really just what happens when code around the code that's "rotting" moves on. Code doesn't rot. Code doesn't change, or mutate, or develop weak spots (those are there from day one). The media the code is stored on might but that's a physical artifact. Code itself is the stuff of dreams. It's intangible.

As such, it's also not bound by the second point. Code, software, call it what you will, it's not restricted by the laws of Physics. Sure, we can only access so much memory, and storage is definitely finite, but these are limitations forced on us because the machines that execute our code are physical in nature. Take away the machine and you have something without boundaries (actually, you have a sub-branch of Mathematics but you know what I mean).

I think these two aspects of software are causing a lot of the headaches in the software world. We have something that never wears out which means we aren't as geared as we might be to maintaining it. We talk about maintaining code, but what we really mean is building on top of it. We have no really ingrained notion of running software day to day.

We also have something that isn't bound by physical limitations. Or rather, is relatively unrestricted (we do, after all, have to produce something that actually runs, which inevitably involves hardware somewhere along the road) which means we tend to aim much, much higher than we might otherwise.

If a team of 5 or 6 engineers took it upon themselves to pull a few all-nighters and attempt to build the Battlestar Galactica how would you rate their chances of success? And if they tried to convince you that a single operator could run it with a few days of training and access to the man page?

Funny, I thought you'd say that.

Posted at 11:54 PM

Gmail Talk

Google added in-browser chat functionality to Gmail a while back, but it's never been visible for me. I finally figured out why. If your locale settings are set to anything other than English (US) it appears you don't get the latest featureset.

In-browser chat is particularly useful if you need to punch through a corporate (or incompetently administered, often the same thing) firewall (since it tends to use HTTP as it's transport). Until now I've used Meebo which isn't actually too bad. But in-browser chat is always going to be a bit clumsy, so when possible I prefer to use the native Google Talk client (one of the slickest UI's I've seen in a long time).

Random info. Use it or lose it, I don't care.

Posted at 08:48 AM

Asynchronous conversations

The web, and in particular resources like Google and Wikipedia, are marvelous things. I've lost track of the number of conversations I've been privvy to, or even a direct participant in, where something has come up that I know little (or even nothing; it happens) about.

With an Internet connection it usually isn't long before I sound (superficially anyway) like an expert in the field.

This does have a tendency to draw conversations out. Sometimes they span days. But that isn't always a bad thing. It gives you time to mull things over.

Posted at 08:45 PM

What people will pay money for

There's this whole other consumer world that I occasionally catch a glimpse of but don't have the faintest idea how to relate to.

Ringtones and cellphone backgrounds to start with. I just don't see the appeal. Ringtones in general suck, regardless of how much you've paid for them. Ff your phone supports WAV, MP3 or a related format ("true tone" in said alternate reality) then find a friendly geek (or better yet figure it out yourself, it really isn't that hard) and get creative. The best ringtones I've heard have been home made.

As for cellphone backgrounds. I gave up on desktop backgrounds a long time ago and none even back then I didn't buy them. If I'm not springing for a picture at upwards of 1024x768 in 32bpp colour I'm certainly not forking out cash for something an order of magnitude harder to see. "Cool picture of a tiger ... er walrus ... er naked ... er right no, shit what is that?"

And speaking of desktop backgrounds. I've started seeing ads for animated desktop backgrounds. One that seems to come up repeatedly looks like a painted picture of a palm tree on a beach with white doves flying randomly from side to side. 15 seconds of that and I was ready to throw my laptop out the window. Can you imagine that as your background day in and day out?

Why do people buy this stuff when they could pay for something worthwhile? Like caffeinated soap or lip balm :-)

Posted at 08:26 PM

Proud new father

kawa_side.jpg Nope, not me (but I had you going, right?).

Andy mortgaged his house, sold several "redundant" organs and signed his name in blood this week. As a result he's the proud new father ... er ... owner of a new Machine Of DeathTM.

It arrived today.

And the forecast for tomorrow is
...
rain.




Posted at 10:58 PM

Essay questions matter more

I work with a bunch of colours. Okay, maybe not strictly speaking, but for the purposes of providing a vague form of anonymity, assume it's the case. It's only vague anonymity because of the guys I work with who actually visit this site there's no one I'd have problem discussing this face to face with. In fact I'm pretty sure most of them already know my position on this.

But I digress. Let's get back to those colours, specifically Mr Blue and Mr Green. Other colours may wander onto the scene as I write this (it's largely unplanned at this point).

Mr Blue and I spent a chunk of time talking about a particular issue today. It related to how we manage our software and it's been kicked around the room a few times in the past. It's a Hard ProblemTM and like all such problems there doesn't appear to be an obvious win. We have a few options on the table, but regardless of which option we choose we're always going to have to give something up. So this becomes an optimization problem: give up as little as possible while gaining as much as possible.

It's actually only a small part of a larger problem in a similar vein. We've kicked that one around for some time too and have even about-faced in the recent past because after some time trialing our chosen approach it was clear it wasn't working.

Which brings me to Mr Green. When we first started discussing the latter (larger) problem Mr Green proposed an approach. In retrospect that idea turned out to be roughly on the mark. Now, there's no way to say this so that I don't sound bitter so I'm just going to say it: it grates me because his original reasoning was unsound. Or rather unsoundable: it was extremely shallow and I don't really feel that he had the requisite experience with, or understanding of, this particular problem domain. And of course his response to our about-face was "I didn't want to say I told you so, but ..."

So now, were facing with another possible change in direction. And this one relates to something he's spent a lot of time bitching about in recent history. And rather than feeling pleased that we have an option which might actually be all-win-no-loss I'm grating because he's going to drop another "I told you so" into the conversation. And I'd be fine with that if I believed there was even a remote chance that he actually understands why it's an appropriate solution.

It's like multiple choice questions. Individually they mean nothing. Having the right answer without providing reasoning to back it up means nothing until you have the right answer a hundred times, at which point I'd be inclined to trust your gut. A single essay question, on the other hand, usually stands alone because you have to back up what you're saying with some actual reasoning.

Perhaps it's a small thing. But it gets up my nose and I haven't had enough sleep in the past 48 hours so I reserve the right to be cranky and somewhat less tolerant than I might otherwise be.

Posted at 07:29 PM

Amsterdam in the morning

Okay, so that was one of the hardest flights to date. Various contributing factors. Two orthogonal sets of children alternating taking turns exercising their lungs. Pretty awful selection of inflight movies too.

I was vaguely amused at one point, however, when my in-seat video display promptly rebooted. Nothing fills you with confidence in the large metallic cylinder you've been squeezed into like seeing the message "Please wait while seat is rebooted". And shortly thereafter my neighbour's displayed "Pure virtual method called". If your seat rebooting doesn't send chills up your spine then knowing that at least one software component onboard was written in C++ should.

Random thought: why don't airlines serve soup as an inflight meal option? Frankly, it's one of the few foods I can stomach the idea of on long-haul flights. And it's much harder to screw up than the selections they do serve.

Posted at 08:22 AM

/dev/random

It's raining in Seattle. Not hard mind you, but sufficiently persistently so that I've come indoors for a bit. I stumbled onto Pike Place Market. But while markets like that are interesting they're almost certainly better visited with others, especially if you live in the area and can really take advantage of them.

It's weird how dead downtown Seattle is today. I guess over the weekend people flee to the hills. That or they're all indoors watching deeveedees on their aitchdeee teevees.

Traveling alone has it's pros and cons. I quite enjoy the freedom of being alone in a foreign city. Ever since my first organized school tour overseas where two of us would pair up (the buddy system was mandatory) until we were out of sight, at which point we'd go our own ways. We both just wanted to wander alone.

I've been trying to figure out why Seattle has made far less impact on me than say London. What's different about Seattle? That got me to thinking why my memories of London are so nostalgic. I long ago decided that I don't think I'm cut out for life in London. Melbourne currently tops my list of places I wouldn't mind returning to for an extended stay. But even Melbourne does't evoke such a strong sense of nostalgia.

I think part of it is the age of the city in question. London has had far longer to soak up the lives of the people living there. And it shows, in some intangible way. This goes some way towards explaining my reaction to Seattle (as an example), and perhaps even Melbourne. But I don't think that's all there is to it. Most of my travel has been work related. This means that most of it has been solo. And it's the trips that haven't been alone that I've enjoyed most. Bangkok with Shaun and Tony, Melbourne with Simon and Pete, and London with too many people to name.

So London has a lot of "personal history" attached to it. From my stay in the dead of Winter with Clare, to a weekend road trip through the South East of England with Gerhard. From Toga parties in Wimbledon and a crazy couple of weeks with Andrew, to the most recent trip to see Norma and Oscar. London is bound up with people and I suppose at the end of the day memories filled with the laughter of friends are the ones that really matter in the end.

Posted at 09:25 PM

Still going to Hell

Contrary to all outward appearances I have not handed over the (much sought after) subdomain james.cshons99.net to the Christian Light Association (or whatever they were). Nor have I repented my many (many) sins.

Regular visitors may have noticed that this site appeared to have been replaced by one with a somewhat more overt religious theme. Gremlins.

What happened (those have no interest in knowing this can stop reading now) is probably something along these lines. This box is hosted behind an ADSL connection. ADSL works something like dialup in that your machine is always assigned a dynamic IP address, which changes periodically. This presents a problem as far as serving DNS goes, since you kind of need a static IP if you want to tell people what your IP address is. Enter the world of DDNS providers like ZoneEdit, who offer this service (in many cases for free, bless their souls) to the world.

I have a bunch of scripts set up which monitor the IP address and as soon as it changes they leap into action (they're very enthusiastic) and issue updates to our DDNS provider (ZoneEdit) which publishes the changes to the world. That's why this site is occasionally unavailable. DNS update propagation is a bit ad-hoc so it can take a while for changes to become visible, depending on how much local caching your ISP is doing.

So what happened yesterday is that our IP changed but for some reason the updates to ZoneEdit didn't complete properly or didn't propagate quickly enough. Our old IP was obviously assigned to someone else, in this case someone who happened to be hosting their own site (said religious group). So james.cshons99.net (and indeed, all sites hosted here) resolved to the old IP address which they were now in possession of.

There's a lesson in here but it probably involves static IP addresses and a whole bunch of money, so I'm going to ignore it for now and get back to BSF services and Brazil configuration files.

Posted at 06:45 PM

You know you're in the zone when ...

... the motion sensitive light in your office switches off with you at the keyboard.

Posted at 02:54 AM

Amazon's take on pets

When Amazon negotiated their lease for the PacMed building, one of the requirements was that pets be allowed in the building.

It seems like every second Amazon employee has a dog (or dogs) and brings that dog into work with them. It adds a little bit of (entertaining) chaos to the workplace. Every now and then a voice will echo through the corridors shouting something along the lines of "No!" or "Come here!" or "Bad dog!". And it's rather disconcerting to step into a lift only to realise that you're standing next to a large Alsation.

It works for me though. I quite enjoy the presence of animals and, for whatever reason, they seem to get on with me. It's a pleasant distraction to have something small and furry sprint past your office door, screech to a halt and bound in to say hello, tail wagging at close to the speed of sound.

Posted at 06:58 PM

Sushi at Shiro's

I took a long(ish) stroll last night into Belltown to see if I could find Shiro's. His was one of two sushi restaurants I was told I must visit while I'm here. The other involves a ferry ride so we'll see what we can do. And after conversations with some of the other guys floating around I've had to add a third to my list.

Shiro's was terrific. I hate eating alone when I travel like this. It's usually just depressing. Last night was entirely different. Shiro himself was making the sushi at the end of the sushi bar I was seated at and he's very talkative and extremely entertaining. He has a pretty wicked sense of humour. A few locals also chimed in from time to time and I quickly forgot that I'd rocked up all by my lonesome self. The beers probably didn't hurt either.

Rather than choosing a set meal off the menu I let Shiro choose what I ate. A bit risky perhaps (especially in a sushi bar) but he didn't disappoint. His selections were interesting and I thoroughly enjoyed everything he put in front of me. It also made for a very slow, relaxed dining experience because most of the people sitting at the sushi bar were more than happy to let Shiro choose what to feed them next. So he rotated from one person to the next, placing freshly made delicacies of all shapes and colours in front of them and returning to them only when they were finished.

Dinner included a very spicy tuna sushi salad to start, followed by (in no particular order, my memory failing me as it so often does): albacore (a kind of tuna), a seared fish who's name I can't remember, Geoduck (pronounced something like gooeyduck; a clam on steroids), sweet shrimp, prawn tempura (one of the locals referred to it as Japanese french fries).

The albacore was interesting. Although it's a tuna the texture of it's flesh is completely different to the yellowtail we get back home. Much, much softer. The sweet shrimp was also pretty novel, especially since it involved the tail (Shiro reminded me to chew for a while before swallowing) and it was alive when Shiro started preparations. The same was true for the Geoduck. It's a little disconcerting to eat your sushi while it's still alive. The Geoduck is a kind of monster clam. Apparently it's local and they can live for up to 120 years.

All of the items were presented in a form I'd call nigiri, but they were billed as sashimi (which I know from back home as raw fish sans rice of any sort). Shiro's explanation was that the "right" way to eat sushi is as a balance between fish, rice and wasabi. Balance, he said, is an important theme in Japanese culture and extends to include sushi.

By this stage I'd already managed to locate the wasabi he'd "hidden" inside each piece. For a while I was sure it was mixed into the soy sauce but in fact it was stashed between the fish and rice. Nothing like a large swab of wasabi to blow your hair back (fortunately some of us don't have that problem).

Shiro also had a bunch of questions about Cape Town. Did we have sushi restaurants? How many? Did I eat sushi often? What was my favourite sushi restaurant? Maybe I'll go back and see if I can convince him to set up shop back home. That would be pretty cool.

All in all an extremely pleasant evening and if you're in downtown Seattle then I'd definitely reckon a visit to Shiro's.

Posted at 05:27 PM

Amazon Inc, Seattle

seattle_from_pacmed_small.jpg After a moderately long and challenging walk, and after hanging about waiting for an ID card I'm finally hooked up in an office somewhere on the 7th floor of the PacMed building.

I haven't got the entire story straight but it seems that Amazon either bought, or are leasing, an old Medical Facility (PacMed == Pacific Medical) as their "primary" campus. There are a bunch of other Amazon buildings scattered around downtown Seattle but this one seems to be the main one. There's quite a view from some of the offices up here. PacMed itself is on a hill overlooking Seattle. Said hill is in fact one of the primary "challenges" of the walk. Amazon run shuttles between here and downtown Seattle but I couldn't find them yesterday (I was hardly firing on all pistons to begin with) and it looked eminently walkable.

Office number three had a live network point and a bit of jiggery pokery got me connected (I'd forgotten exactly how to set up the Amazon provided hardware VPN device required on this network).

So I'm just sorting through my email and getting everything set up so when I sit down with the AWSP team in about an hour I'm ready to go.

Oh and after sitting down and looking at the rear of my backpack it seems I was blissfully unaware at some point on the walk just how close I came to having a bird crap on my head. Thanks, Seattle, thanks a bunch.

Posted at 07:27 PM

Good morning Seattle

I've been in Seattle for all of 6 hours. I'm slaughtered. The only thing worse than a 10+ hour long distance flight is two of them back to back. And I mean that literally. I stepped off the plane in Amsterdam and minutes later was queuing to divulge any and all personal details to an American rubber glove.

First impressions of Seattle? Hard to say, especially given that it feels like Sideshow Bob's hairdo is wrapped around my brain. My laptop clock (which is still confused about where it is in the world) says it's 6am (it's actually 9pm the evening before). Almost time to get up ... er ... go to bed ... ah shit.

I took a stroll earlier. Spent about an hour trying to figure out why I couldn't find the street I was looking for. Turns out there's a very good reason. It doesn't exist. Or rather it does, but not by the name I was looking for. User error. But with a little help from Google Maps I think I know where I'm supposed to be tomorrow morning.

  • The hotel has free wireless. Yay.
  • But you have to sit downstairs to use it. Boo.
  • There are a bunch of open access points visible from my room. Yay.
  • But I can't get a connection to most of them. Boo.
  • I did connect to one and even managed to use it. Yay.
  • But it has scary "we'll eat your children's children" legalalese warnings all over it and it was suspiciously easy to get onto. Boo.

That's about it for me. I'm off to bed. No doubt I'll be up again in a few hours. Jet lag sucks.

Posted at 06:05 AM