Wednesday, December 24, 2008

Thanks to the unique way the BBC is funded...

... their lead Technology story today is that "people in remote locations, across the world, can use technology to get their Christmas messages back home to Britain."

Oh, really?

Thursday, December 18, 2008

We're doomed

After its success on the USS Yorktown, the Royal Navy have decided to run their nuclear submarine fleet on Windows.

The Register summarises:
But we just might, if things go wrong, be looking at ... British sailors of the future staring helplessly at what would shortly be literally a blue screen of death, as the shipkillers bored in without response.

Tuesday, December 16, 2008

Wednesday, December 10, 2008

On leading and serving

Things aren't perfect.

OK - hopefully that wasn't news to you. The question I pose to you is: when things aren't perfect, something goes wrong, or something is not done that needed to be - how do you react? I've seen about three different approaches recently, and I think it's a matter worthy of comment.

Take this scenario: at work (I work at a software firm) someone makes a commit that sets the build on fire[1]. Thanks to the wonders of version-control and continuous integration software, you can see exactly what set of changes was made, and who made them, to break the build.
At this point you have three options: you can leave it, and hope that someone else picks it up - or maybe somebody else is assigned to that area of the code, so they'll pick it up instead. (Fair enough, particularly at work.) Or, you could run an svn blame and find out who 'owns' the line responsible, then shout across the office, "${name}, you set the tree on fire!"

Maybe, and this is your third option, you could find out how the build is broken, fix it, then commit that fix (and receive the adulation of DeciBot[2] when it announces "All watched trees are now green").

Put like that, I guess it's reasonably apparent which is the best of the three options to take. But so often - and now I'm not just talking about work - people pick the wrong one!

I was reading Joel Spolsky's blog the other day; the entry entitled "My Style of Servant Leadership". In it, Spolsky tells a story from his time in the Israeli army:

Anyway, on my first day of work for the sergeant major, I didn't know what to expect. I was sure it was going to be horrible, a suspicion that seemed to be confirmed when he took me to the officers' bathroom and told me I would be responsible for keeping it clean. And then he said something I didn't anticipate.

"Here's how you clean a toilet," he said.

And he got down on his knees in front of the porcelain bowl -- in his pressed-starched-spotless dress uniform -- and scrubbed it with his bare hands until it shined.

To a 19-year-old assigned to clean toilets, which is almost by definition the worst possible job in the world, the sight of this high-ranking, 38-year-old, manicured, pampered disciplinary officer cleaning a toilet was a shock. And it completely reset my attitude. If he can clean a toilet, I can clean a toilet, I thought. There's nothing wrong with cleaning toilets. My loyalty and inspiration from that moment on were unflagging. Now that's leadership.

Those that know your Bible will already be thinking of Jesus' words to his disciples, after an argument breaks out over which of them is the greatest. Get this:
"If anyone wants to be first, he must be the very last, and the servant of all." (taken from Mark 9: 35, NIV)
Those words from Jesus - the very instrument of creation, the incarnate God of the universe, who washed his disciples' feet.

You can try the ostrich approach - that is, bury your head in the sand until it (hopefully) passes. You can take the "assertive" approach, and bang some heads together until (hopefully) everyone sees things from your point of view (or at least are speaking to each other again). Or, you could step out, and do something to serve them. There's truth in the cliche that actions can speak louder than words; how different things would be if, instead of shouting matches with harsh words thrown in both directions, we all opted for serving matches, both sides wanting to do things for purely the other's benefit?

That's both simplistic and idealistic; in truth, even in the best case it's rarely two-way, at least not straight away. But, leaders, persevere - not just because it's effective (it actually works!), but because it's the right thing to do, out of love for those you are serving. And it's not an easy road - because to serve others is to necessarily sacrifice some of your own ambitions and plans. Then maybe, just maybe, for the briefest fraction of time, you'll get a glimpse of better things to come. And when you get that glimpse, don't stop there - keep hold of it, keep "cleaning toilets", and perhaps you'll get there in the end.

Perhaps, God willing, we will.

[1] Note to non-software engineers: this essentially means 'someone breaks the program you're all working on'
[2] A friend of your friend, the DecisionSoft Continuous Integration watching IRC bot

Tuesday, November 04, 2008

US Elections: BBC News live feed

The BBC have their own Twitter-like feed of US election titbits. But I didn't want it in a browser... so I wrote myself a little Bash script to do the job for me. Run that through (say) watch:
watch -n 30 elections.sh
and Obama's your Presiden... I mean, Bob's your uncle.

I've a small window pinned to my screen with that in. Hooray for distractions from work!

EDIT: 11.55pm - At some point they changed their format slightly and it confused my regexp. Updated version for download now, same location.

Monday, November 03, 2008

On F1 2008, James Allen and the end of an era

(I can't sleep... so time for a brain dump!)

A few hours ago, some British bloke called Hamilton - heard of him?(!) - became the youngest ever Formula One world champion. He did it by about 5.4 seconds. In the very last corner of the very last race of only his second season in Formula One.

It's certainly the most exciting climax to a season in recent years, and certainly the most open championship in a long while. And yet it was so close to being remembered for all the wrong reasons... when even F1 greats like Niki Lauda call foul of the stewards, there's clearly something amiss.

At the very least the stewards have been horribly inconsistent (for example, awarding Massa a fine but no race penalty for unsafe release from his pit box... then a few weeks later for the same offence - when it wouldn't affect his race outcome - correctly awarding a penalty). At worst they've been outright opposed to anyone not in a red car - like Bourdais' penalty in Japan for, evidently, being driven into by Massa. And, of course, Lewis's penalty at Spa for, um, overtaking Raikkonen. Who then promptly drove into a wall. Wonder why there's not as much overtaking in F1 as people would like?

The officials in F1 seem to have a history of blatant bias in their decisionmaking. This year, it was all against Hamilton; but, not so long ago, it was all against Schumacher. Remember those days? The bias is always there; but, like the bias of a car's brakes, it does get adjusted back and forth from time to time.

Yesterday was the end of an era in Formula One in more than one way. It was David Coulthard's final race, having announced his retirement a few weeks ago. In keeping with the rest of his season, he got himself involved in a crash almost straight away, ending his race. (There must surely have been some races this season where DC wasn't involved in at least one incident... but I can't recall any of them right now...) It's not been a great final season for a man who, at his best, surely deserved more than the 13 victories by his name.

Thankfully, Brazil 2008 also sees the end of the grooved tyres introduced back in 1998. They were designed to reduce the car's grip and thus its speed, in the hope of both increasing the safety of the sport and (by limiting the speed difference across the field) give more overtaking. The actual result was pushing more of the car's grip to depend on aerodynamic downforce, triggering an increasingly complex array of appendages to spew from the wings and sidepods of just about all the field. This created such a "dirty air" effect behind the cars, that (you guessed it) overtaking became a whole lot harder - as you lose so much downforce travelling close behind the car in front.

As part of a plethora of changes for 2009, slick tyres are being reintroduced, together with restrictions on the rear wings designed to reduce the dirty air effect. Other changes include a "kinetic energy recovery system" (KERS) - which converts kinetic energy to an electrical store when braking, and can release that energy for a short horsepower boost when required. Alternatively, it can cause fires and electricute your mechanics. We'll have to see on that one...

There's talk of the FIA imposing a standard engine package for F1 cars, to reduce costs. F1 has always been, and should always be, the pinnacle of motorsport in both skill and technical prowess. It'd be a real shame to turn F1 into a more-hyped version of some of the lower formulae that use a same-engine (or even same-chassis) setup.

The 1997 season was the first time I watched a Grand Prix. I must have started watching halfway through the season, but my earliest F1 memory is Schumacher vs Villeneuve in Jerez, the title decider... that race said just about all you needed to know about Schumacher, and I loved it.

1997 was also the first season shown on ITV; 2008 is the last. Next year the sport moves to the BBC, along with commentator Martin Brundle. (I hope they don't keep interrupting it Grandstand-style for live "action" reports from Miscellaneous Golf Tournament. Though I'm told Grandstand is now, much like sport on the BBC in general, deprecated.)

Brundle's commentary counterpart, James Allen, has come in for a lot of stick from a vocal bunch of people. He took over the lead commentator job from the legendary Murray Walker at his retirement; to Allen's credit, he knew he couldn't fill those shoes and he didn't try. Instead he made his commentary his own; Yes, he could be repetitive on occasion - and, no, he could never be the next Murray Walker (could anyone?) - but Martin and James did a damn fine job, thank you. Please try and place the criticism where it's really due... after all this time, I still have yet to identify a single useful contribution from Mark "I Like Ferrari" Blundell. At least Tony Jardine sounded intelligent!

So we enter the long, cold and dark winter of the Formula One night, not quite sure what the 2009 season will look like. We have a new world champion, a new set of rules, yet more new circuits (that never approach the atmosphere of a Monza, Spa or Hockenheim), a new TV crew...

29 March 2009, Albert Park, Melbourne... bring it on.

Wednesday, October 08, 2008

Oxford At Night

Oxford awakes from its summer slumber
Youthful blood courses again through ancient streets
Yet still the city is steeped in darkness
With empty hearts following empty desires,
Lustfully pursuing the self-gratifying thrill driven away by the morning.
The blood of ten thousand pumps through cobbled veins,
Each one searching, and each one choosing not to see
Yet still, amongst them the dreaming spires point up out of the black
To the light that they once knew, and loved
And yet this light will reach down through the darkness
So this city will shine brightly again

Tuesday, September 16, 2008

I won't do it...

When you send me an E-mail with an attachment you want me to look at, why do you want me to pay circa £300 for the privilege? If your software is defective and can't save in free, open file formats that everyone can read, replace it. It won't cost you anything. It will save my time - that you've already asked me to spend doing a favour for you - because I won't have to spend twenty minutes looking for websites that can have a stab at converting it for me. Useful as they are, I have no clue if the end result I look at has any resemblance to the way it looked from within your proprietary prison.

Yes, I'm talking to you.

Sunday, August 31, 2008

Much to update... but for now just a code snippet...

A lot's happened since my last post - but for now I'd just like to share this line of JavaScript I came across a moment ago. It even comes with a helpful comment!
// Please, don't change below this line

// ----------------------------------------------------------------------------------

var menus=[],TMg,TM09=['click','mouseout','mouseover','mousedown','hide'];function TM0A(TM0B){for(var i in menus){if(TM0B&&menus[i].TM0C&&!menus[i].TMc)menus[i].TM0C.TM0D.menus[i].TM0E();menus[i].TM0E();menus[i].TM0F=true}this.TM0G=true}function TM0H(TM0I){var TM0J;if(this.width!=(TM0J=this.TM0K(window))){this.width=TM0J;TM0B=TM0I=true}if(this.height!=(TM0J=this.TM0L(window))){this.height=TM0J;TM0B=TM0I=true}if(this.TM0M!=(TM0J=this.TM0N(window))){this.TM0M=TM0J;TM0I=true}if(this.TM0O!=(TM0J=this.TM0P(window))){this.TM0O=TM0J;TM0I=true}if(TM0I){this.TM0G=false;this.TM0E(TM0B)}}function menu(TM0Q,TM0R,TM0S){this.TM0Q=TM0Q;this.TM0R=TM0R;this.TMh=[];this.TM0T=[];this.TMT=[];this.exec=TM0U;this.hide=TM0V;this.onhide=TM0W;this.onclick=TM0X;this.onmouseout=TM0Y;this.onmouseover=TM0Z;this.onmousedown=TM0a;this.TM0E=TM0b;this.TM0c=TMM;this.TM0d=this.TMd=this.TMQ=0;this.TM08=function(){};if(TM0S){this.TMQ=TM0S.zIndex||0;this.TM05=TM0S.onexpand&&typeof(TM0S.onexpand)=='function'?TM0S.onexpand:null;this.TM0e=TM0S.oncollapse&&typeof(TM0S.oncollapse)=='function'?TM0S.oncollapse:null;if(TM0S.wrapper&&typeof(TM0S.wrapper)=='function')this.TMp=TM0S.wrapper;this.TMc=Boolean(TM0S.frames);this.TMd=TM0S.popup?-1:0;this.TM0f=Boolean(TM0S.showroot);var TM0g=TM0S.frames;if(this.TMd){this.TM03=TMy;this.expand=TM04;if(document.images[TM0S.popup]){this.elements=[document.images[TM0S.popup]];this.TM07=TM0h}else this.TM07=function(){}}if(TM0S.forms){this.TMJ=TM0S.forms;this.TM08=TMF}}if(!this.TMp)this.TMp=TM0i;this.TM0j={'width':100,'height':20,'block_top':null,'block_left':null,'vertical':false,'expd_delay':0,'hide_delay':100,'table':[0,0,0],'css':{'table':'','inner':'','outer':''}};this.TMR=-1;this.TMP=this;this.TMV=function(TM0k){return this.TM0j[TM0k]};if(!TMg){TMg=new TM0();TMg.TM0l={'x':0,'y':0};TMg.TM0m=navigator.userAgent.indexOf('Gecko')>-1;TMg.TMm=TMenu_path_to_files+'pixel.gif';if(TMg.TM0n){document.write('<div id="TMAnchor" style="position:absolute">.</div>');TMg.TM0o=TMg.TM3('TMAnchor')}if(!TMg.TM0p)TMg.TM0p='onload';TMg.TM0K=window.innerWidth!=null?function(w){return w.innerWidth}:function(w){return w.document.body.offsetWidth};TMg.TM0L=window.innerHeight!=null?function(w){return w.innerHeight}:function(w){return w.document.body.offsetHeight};TMg.TM0N=window.pageXOffset!=null?function(w){return w.pageXOffset}:function(w){return w.document.body.scrollLeft};TMg.TM0P=window.pageYOffset!=null?function(w){return w.pageYOffset}:function(w){return w.document.body.scrollTop};TMg.TM0E=TM0A;TMg.TM0q=TM0H}this.id=TM0S&&TM0S.key?TM0S.key:menus.length;menus[this.id]=this;this.TMY=[];this.TMt=this.TM0Q.length;this.TM0r=Boolean(this.TM0R[0].block_top==null&&this.TM0R[0].block_left==null);for(var i=0;i<this.TMt;i++)new TM0s(i,this,this,i);this.TM0c(1);this.TMe=this.TMf;for(i=0;i<this.TMT.length;i++)this.TMT[i].TM0t();if(top!=window&&(TM0g&&(TM0g+'').indexOf(',')>-1||!TM0g)){TMg.TM0u=TMg.TM1||(window.opera&&document.appendChild)||TMg.TM0v?top.document.body:top;if(window.frameElement!=null)TMg.TM0L=function(w){return w.frameElement.offsetHeight};if(!top.TM0w){top.TM0w={'TM0y':[]};var TM0x,TMb=TMg.TM0u[TMg.TM0p]?new String(TMg.TM0u[TMg.TM0p]):'';if((TM0x=TMb.indexOf('{'))>-1)TMb=TMb.substring(TM0x+1,TMb.lastIndexOf('}')-1)+';';TMg.TM0u[TMg.TM0p]=Function(TMb+'top.TM0w.TM0z()')}if(!top.TM0w.TM0y[this.id])top.TM0w.TM0y[this.id]={'TM11':0,'TM0g':[],'TM19':[],'TM12':[]};if(this.TMc&&!top.TM0w.TM0z){top.TM0w.TM0z=function(){for(var TM10 in this.TM0y){if(this.TM0y[TM10].TM11<2){this.TM0y[TM10].TM12[0].TM0C=null;return this.TM0y[TM10].TM0g[0].setInterval('TMg.TM0q()',500)}for(var TM13 in this.TM0y[TM10].TM0g)if(this.TM0y[TM10].TM0g[TM13]&&this.TM0y[TM10].TM0g[TM13].TMg)this.TM0y[TM10].TM0g[TM13].TMg.TM0q()}setTimeout('top.TM0w.TM0z()',200)};top.TM0w.TM14=function(TM15,TM16,TM17){var TM12=this.TM0y[TM15].TM12;for(var TM10 in TM12)if(TM12[TM10]&&!TM12[TM10].TM0T[TM16])return setTimeout('top.TM0w.TM14("'+TM15+'","'+TM16+'",'+TM17+')',100);for(TM10 in TM12)if(TM12[TM10])TM12[TM10]['on'+TM09[TM17]](TM16)}}var TM18=this.TM0C=top.TM0w.TM0y[this.id];if(TM18.TM19[name]==null){TM18.TM19[name]=TM18.TM11;TM18.TM11++}TM18.TM0g[TM18.TM19[name]]=window;TM18.TM12[TM18.TM19[name]]=this;if(this.TMc){TM18.TM0D=window;this.TM0g=[];for(i in TM0g){this.TM0g[i]=[];for(var j in TM0g[i])this.TM0g[i][j]=eval('top.'+TM0g[i][j])}}window.onunload=function(){for(var TM10 in menus){if(menus[TM10].TM0C){menus[TM10].TM0C.TM0g[menus[TM10].TM0C.TM19[name]]=menus[TM10].TM0C.TM12[menus[TM10].TM0C.TM19[name]]=null}}}}else if(!TMg.TM1A)TMg.TM1A=setInterval('TMg.TM0q()',200)}function TM0b(){if(this.TM0C){this.TM0g=this.TM0C.TM0D.menus[this.id].TM0g;if(this.TMc){var TM1B=0,TM1C;this.TM0C.TM1D=[];for(i in this.TM0g){TM1C=0;for(j in this.TM0g[i]){if(!this.TM0C.TM1D[this.TM0g[i][j].name])this.TM0C.TM1D[this.TM0g[i][j].name]={'x':TM1C,'y':TM1B};TM1C+=TMg.TM0K(this.TM0g[i][j])}TM1B+=TMg.TM0L(this.TM0g[i][j])}this.TM0C.TMe=TMg.TM4(this.TMe,this.TM0C.TM1D[window.name].x-TMg.TM0N(window),this.TM0C.TM1D[window.name].y-TMg.TM0P(window),TMg.TM0v)}else{TMg.TMB(this.TMe,{'x':this.TM0C.TMe.x-this.TM0C.TM1D[window.name].x+TMg.TM0N(window),'y':this.TM0C.TMe.y-this.TM0C.TM1D[window.name].y+TMg.TM0P(window)});if(this.TM0f)TMg.TM8(this.TMe,1)}}if(document.layers)for(var TM10=0;TM10<this.TMt;TM10++)this.TMT[TM10].TM00(0);else if(TM1E&&!TMg.TM0n)for(var TM10=0;TM10<this.TMt;TM10++)this.TMT[TM10].TM07()}function TM0U(id,TM17){if(!TMg.TM0G)return;if(this.TM0C&&TM17){top.TM0w.TM14(this.id,id,TM17)}else return menus[this.id]['on'+TM09[TM17]](id)}function TM0V(){if(this.TM0d>0||!this.TM1F)return;if(this.TMI)this.TMI.TM03(this.TMd);this.TMI=null;if(this.TM0e)this.TM0e();if(!TMg.TM2&&!TMg.TM0m)this.TM08(true)}function TM0W(){if(this.TMI)this.TMI.TM03(this.TMd);this.TMI=null;this.TM0d=0}function TM0X(id){var TM1G=Boolean(this.TM0T[id].TMq[1]);if(TM1G&&this.TM0C)top.TM0w.TM14(this.id,id,4);return TM1G}function TM0Y(id){this.TM0d--;this.TM0T[id].TM00(0);if(this.TM1H)clearTimeout(this.TM1H);this.TM1F=setTimeout('menus["'+this.id+'"].hide()',this.TM0T[id].TMV('hide_delay'));if(this.TM0T[id].TMh.sb!=null)top.status='';if(this.TM0T[id].TMh.oo!=null)this.TM0T[id].TMh.oo(id)}function TM0Z(id){if((TMg.TM0m||window.opera)&&this.TM0T[id].TMx==1)return;this.TM0d++;for(var TM1I=this.TM0T[id];TM1I!=this;TM1I=TM1I.TMs)TM1I.TM00(1);var TM1I=this.TM0T[id];clearTimeout(this.TM1F);this.TM1F=null;if(TM1I.TMh.sb!=null)setTimeout('menus["'+this.id+'"].TM0T["'+id+'"].TM1N()',10);this.TM02=TM1I;if(TM1I.TMh.oh!=null)TM1I.TMh.oh(id);if(TM1I.TMs.TMT[0].TM1J<0)return;if(TM1I.TMs.TMT[0].TM1J)this.TM1H=setTimeout('menus["'+this.id+'"].TM0T["'+id+'"].expand()',TM1I.TMs.TMT[0].TM1J);else TM1I.expand()}function TM0a(id){this.TM0T[id].TM00(2);if(this.TM0T[id].TMs.TMT[0].TM1J<0)this.TM0T[id].expand()}function TM0s(TM1K,TMs,TMP,TM1L){this.id=this.TM1K=new String(TM1K);this.TMs=TMs;this.TMP=TMP;this.TMr=this.TM1K.split('_');this.TMR=this.TMr.length-1;var TM1M='';for(var i=0;i<=this.TMR;i++)TM1M+='['+(Number(this.TMr[i])+(i?3:0))+']';eval('this.TMq = this.TMP.TM0Q'+TM1M);if(!this.TMq)return;this.TMh=this.TMq[2]?this.TMq[2]:[];this.TMP.TM0T[this.id]=this;TMs.TMT[TMs.TMT.length]=this;this.TM00=TMw;this.TM1N=TM1O;this.TM07=TM0h;this.TMp=this.TMP.TMp;this.TM0c=TMo;this.TMV=TM1P;this.TMX=TM1Q;this.TM0t=TMv;this.TM03=TMy;this.expand=TM04;if(!TM1L){this.TM1R=this.TMs.TMh.bt||this.TMV('block_top');this.TM1S=this.TMs.TMh.bl||this.TMV('block_left');this.TM1T=this.TMV('top')<0;this.TM1U=this.TMV('left')<0;this.TM1V=this.TMV('width');this.TM1W=this.TMV('height');this.TMu=this.TMV('vertical');this.TM1X=this.TMV('wise_pos');this.TM1J=this.TMV('expd_delay')}var TM1Y=this.TMs.TMT[0].TM1V,TM1Z=this.TMs.TMT[0].TM1W;if(this.TMs.TMT[0].TMu){if(this.TMs.TMh.bw!=null)TM1Y=this.TMs.TMh.bw;if(this.TMh.sh!=null)TM1Z=this.TMh.sh}else{if(this.TMs.TMh.bh!=null)TM1Z=this.TMs.TMh.bh;if(this.TMh.sw!=null)TM1Y=this.TMh.sw}this.TMs.TMY[TM1L]=this.TM0c(TM1Y,TM1Z);this.TMt=this.TMq.length-3;if(this.TMt>0&&this.TMq[3]){this.TMT=[];this.TM1a=TMM;this.TM06=TM1b;if(TM1E&&!document.layers){this.TM06();this.TM1c=this.TMR==0&&this.TMP.TM0r}}}function TM0i(TM1d){return TM1d}function TM1b(){this.TMY=[];for(var i=0;i<this.TMt;i++)if(this.TMq[3+i])new TM0s(this.TM1K+'_'+i,this,this.TMP,i);else this.TMt--;this.TM1a();for(i in this.TMT)this.TMT[i].TM0t()}function TM1O(){top.status=this.TMh.sb}function TM1P(TM0k){var TM1e=null,TM1f=this.TMP.TM0R[this.TMR];if(TM1f)TM1e=TM1f[TM0k];return(TM1e==null?this.TMs.TMV(TM0k):TM1e)}function TM1Q(TM1g,TM1h){var TM1i=this.TMV('css'),TM1j=TM1i[TM1g];if(typeof(TM1j)=='string')return TM1j;for(var TM1k=TM1h;TM1k>=0;TM1k--)if(TM1j[TM1k])return TM1j[TM1k]}function TM0h(TMC,value){if(this.TMt>0){if(TMg.TM0n){TMg.TMB(TMg.TM0o,{'x':0,'y':0});TMg.TM0l=TMg.TM4(TMg.TM0o,0,0);TMg.TM0n=0}var TM1l=this.TMT[0],TM1m=TMg.TM4(this.elements[0],(this.TMh.bl?this.TMh.bl:TM1l.TM1S)-TMg.TM0l.x,(this.TMh.bt?this.TMh.bt:TM1l.TM1R)-TMg.TM0l.y,this.TM1c);if(TM1l.TM1U)TM1m.x-=TMg.TMD(this.TMf);if(TM1l.TM1T)TM1m.y-=TMg.TMD(this.TMf,1);if(TM1l.TM1X&&!this.TMP.TM0C){var wise=TM1l.TM1X,TM1n=TMg.TMD(this.TMf,0),TM1o=TMg.TMD(this.TMf,1),TM1p=TMg.TM0K(window),TM1q=TMg.TM0L(window),TM1r=TMg.TM0N(window),TM1s=TMg.TM0P(window);if(TM1m.x+TM1n>TM1p+TM1r)TM1m.x=(wise==1?TM1p+TM1r:TM1m.x)-TM1n;if(TM1m.y+TM1o>TM1q+TM1s)TM1m.y=(wise==1?TM1q+TM1s:TM1m.y)-TM1o;if(TM1m.x<TM1r)TM1m.x=TM1r;if(TM1m.y<TM1s)TM1m.y=TM1s}TMg.TMB(this.TMf,TM1m);if(this.TMn)TMg.TMB(this.TMn,TM1m);if(TM1E&&!document.layers)for(var TM10=0;TM10<this.TMt;TM10++)this.TMT[TM10].TM07()}}var TM1t=navigator.appVersion.split('MSIE '),TM1E=window.opera||TM1t.length<2||parseFloat(TM1t[1])<5||(navigator.appVersion.indexOf('Mac')>-1&&navigator.appVersion.indexOf('MSIE')>-1)||navigator.userAgent.indexOf('Konqueror')>-1;document.write('<scr','ipt language="JavaScript" src="',TMenu_path_to_files,'menu.',(document.layers?'lay':TM1E?'opr':'dom'),'.js"></scr','ipt>');

In order to preserve the layout of this page, I've added line breaks; that was, literally, a single line of code. A single, 9,911-character, line of code.

And that just about sums up the state of the codebase for this particular website...

Saturday, August 16, 2008

Goodbye, Stargazer

"General Stargazer" is a man I knew through Eve. The character name might be made up, but the illness very sadly is real

The HMS Horizon was taken out for her final flight today to meet up with the HMS Burning Sun in honour of the loss of General Stargazer, a long standing member of Eve University for the past 4 years. It is with great sadness to report that the General has been inflicted with an illness that has been reported as life threatening, and although a cure is possible, the chances for survival are low. This very untimely and unfortunate loss coincides with a number of other high profile losses within the corporation and has deeply affected all of those involved.

The Generals benevolence and kindness is known throughout the University. In one last act of tearful kindness has seen the donation of a number of Carriers to it's cause; to give selflessly without expectation or compensation. General Stargazer embodies both the spirit and inspiration for which the University was founded and still thrives on to this very day. It is men like these who's personal struggle for their own life do not even take them away from their own dedication to serving others. It is men like this who make us strong, proud and free to survive in the harsh realities of New Eden. Men like this are rare, often true and seldom glorified in their humbleness. It is men like these who we all look up to with pride and honour. It is men like these, who all other men wish to become. It is men like these who brings great sadness and tears for their loss.

It is with these values and many more, that his brother, Super General, saw out the final flight of General Stargazer with Eve University. With an escort fleet comprised of current and ex-E-UNI members, the group travelled to Maila in The Forge, where the General Stargazer swapped to the HMS Burning Sun.

The fleet then witnessed the final jump activation of the dreadnaught, as it left for destinations unknown, beyond the edge of charted space.

In memorial,

-- M. Dawn, EUNN
From Maila local chat:
[ 2008.08.16 19:57:19 ] EYEDOLL > o7 GS, you'll be missed..
[ 2008.08.16 19:57:22 ] Aurea SIbylla > YAAAARRRRRRR!!!!! o7
[ 2008.08.16 19:57:24 ] Muscaat > o7 General
[ 2008.08.16 19:57:27 ] Racki Dumatre > 07 GS
[ 2008.08.16 19:57:32 ] Karii Ildarian > o7 General
[ 2008.08.16 19:57:33 ] Vor Kosegan > o7 GS
[ 2008.08.16 19:57:36 ] Kaldor Mintat > o7 General
[ 2008.08.16 19:57:38 ] Theon Aidelius > o7 General Stargazer!
[ 2008.08.16 19:57:40 ] Eleasan > o7 GS
[ 2008.08.16 19:57:40 ] MGMT > 07
[ 2008.08.16 19:57:40 ] Kelduum Revaan > o7 General Stargazer, you will certainly be missed.
[ 2008.08.16 19:57:41 ] Korr'Tanas > o7 General Stargazer
[ 2008.08.16 19:57:41 ] Silvey Vorick > o7 General Stargazer
[ 2008.08.16 19:57:42 ] Xar Khan > 07 GS
[ 2008.08.16 19:57:44 ] Oli Geist > o7 General Stargazer. Fair winds and following seas.
[ 2008.08.16 19:57:50 ] Ceragor > o/ General! Really appreciated the time with you!
[ 2008.08.16 19:57:52 ] space gator > o7 GenStar, will never forget o7
[ 2008.08.16 19:58:01 ] Kawasemi > o7 General Stargazer
[ 2008.08.16 19:58:11 ] Freyr Bibhorr > O/ GS! good speed
[ 2008.08.16 19:58:18 ] Lorl Rofeller > o7 general
[ 2008.08.16 19:58:33 ] Icchan > /emote salutes > G'bye Gens
[ 2008.08.16 20:00:19 ] Kasandra Mae > o7 General
[ 2008.08.16 20:08:27 ] Karii Ildarian > o7 General Godspeed
[ 2008.08.16 20:08:56 ] Acacia Incana > Bless You GS <3
[ 2008.08.16 20:09:06 ] Dee Carson > o7 General!
[ 2008.08.16 20:09:10 ] Muscaat > Goodbye, General
[ 2008.08.16 20:09:16 ] Aurea SIbylla > o7 General!
[ 2008.08.16 20:09:37 ] Kaldor Mintat > 07
[ 2008.08.16 20:09:38 ] EYEDOLL > o7 GS
[ 2008.08.16 20:09:50 ] Kelduum Revaan > fly safe, General Stargazer.
[ 2008.08.16 20:10:57 ] Silentbrick > 07 General and Godspeed
From Eve University corp chat:
[ 2008.08.16 19:47:52 ] Ceragor > i wanna see a SALUTE for GS in chat!!!
[ 2008.08.16 19:48:04 ] Ceragor > SALUTE
[ 2008.08.16 19:48:04 ] Erhina Asseba > 07
[ 2008.08.16 19:48:04 ] Mackers UK > o7
[ 2008.08.16 19:48:07 ] Trell Bruntelan > o7
[ 2008.08.16 19:48:11 ] Karma > *salute* o7
[ 2008.08.16 19:48:15 ] T'Alana Ferri > o7
[ 2008.08.16 19:48:15 ] Shadow Prowler > o/
[ 2008.08.16 19:48:16 ] Ceragor > o7
[ 2008.08.16 19:48:16 ] Cambata > o7
[ 2008.08.16 19:48:17 ] Trachnar > o7
[ 2008.08.16 19:48:19 ] Talisma > o7
[ 2008.08.16 19:48:20 ] SZ Rota > o/
[ 2008.08.16 19:48:23 ] Ivaanette > o7
[ 2008.08.16 19:48:25 ] MGMT > o7
[ 2008.08.16 19:48:26 ] Yosihimoto > /emote salutes sadly 07
[ 2008.08.16 19:48:28 ] Zarici > 07
[ 2008.08.16 19:48:31 ] Aelia Aelita > o7
[ 2008.08.16 19:48:38 ] Vor Kosegan > o7
[ 2008.08.16 19:48:47 ] * Hiroyuki Fujita spins up the Rokh for a 8 railgun salute
[ 2008.08.16 19:48:50 ] Freastro Comfix > o7
[ 2008.08.16 19:48:53 ] Kasandra Mae > o7
[ 2008.08.16 19:49:17 ] Khalidos > o7
[ 2008.08.16 19:49:26 ] Trian Kalart > 07
[ 2008.08.16 19:50:26 ] Lecctin Gor > o7
[ 2008.08.16 19:50:36 ] Muscaat > o7
[ 2008.08.16 19:50:36 ] Oli Geist > o7
[ 2008.08.16 19:50:36 ] Lorl Rofeller > o7
[ 2008.08.16 19:50:39 ] Karii Ildarian > o7
[ 2008.08.16 19:50:39 ] Korr'Tanas > o7
[ 2008.08.16 19:50:41 ] Xar Khan > 07
[ 2008.08.16 19:50:41 ] Spellcheker > o7 GS
[ 2008.08.16 19:50:41 ] Eleasan > o7
[ 2008.08.16 19:50:42 ] Theon Aidelius > o7
[ 2008.08.16 19:50:45 ] Aurea SIbylla > o7
[ 2008.08.16 19:50:46 ] EYEDOLL > o7
[ 2008.08.16 19:50:48 ] Racki Dumatre > o7
[ 2008.08.16 19:50:49 ] Kasandra Mae > o7
[ 2008.08.16 19:51:01 ] Kelduum Revaan > o7 General Stargazer
[ 2008.08.16 19:51:18 ] Kaldor Mintat > o7 god speed
[ 2008.08.16 19:51:27 ] Freyr Bibhorr > O/ GS
[ 2008.08.16 19:51:39 ] Freyr Bibhorr > fly safe
[ 2008.08.16 19:51:39 ] space gator > o7 my friend - you were the first person to help me in UNI o7
[ 2008.08.16 19:51:53 ] SZ Rota > o/ o7
[ 2008.08.16 19:53:53 ] Silvey Vorick > o7 GS was always kind and was always willing to help you out. You will be missed
[ 2008.08.16 19:54:41 ] Holub > o7 General , first person to invite me to a fleet
[ 2008.08.16 19:54:53 ] Gavinvin1337 > 07
[ 2008.08.16 19:54:56 ] Ceragor > same for me :(
[ 2008.08.16 19:56:22 ] PewPew Stew > he was awesome, he talked to me for a couple hours one day just answering my questions

The fleet was some thirty strong. Eve might be an internet spaceships game, but the Eve Uni family is real.

Fly safe, General.

Thursday, July 31, 2008

A new member of the family is en route...

My new baby... Just ordered one, and it should be arriving tomorrow.

Suggestions for names (to fit in with my canonical naming scheme using names of Imperial Star Destroyers) welcome!

Tuesday, July 29, 2008

29th July: Virgin Media won't give us a phone line

Well, many things have happened since the last post on this blog. I'm no longer an Oxford student, for one! In fact, I'm now living with three good friends a short walk from the centre of Oxford and from the software company I now work for. But all that can wait...

For pretty much the last five weeks, we've been trying to persuade Virgin Media to install our phone line as we asked them to. The story here is copied/pasted from our house wiki.

Installation

Originally scheduled for 22nd July, this was rescheduled and took place on Saturday 28th June. Two engineers came to install cable TV and internet access, but had not been briefed to install a phone line. I was assured they would check this for me (separate installation is not uncommon). They left with a big hole in the wall between my room and the living room (with co-ax through it).

Initial Contact

Sent via their web form 07/07/08 19:06:
Hi, I recently ordered your 3-for-£20 offer. Broadband and television
were installed without problems (though I was left with a sizeable hole
in the wall) but I haven't heard anything about when the phone line will be
installed. Please could you verify that things are correct at your end, and
confirm when the phone line will be installed?
Thanks in advance.
First Reply

Received 10/07/08 17:18
Our reference:
Account Number:

Hi James,

Thanks for your email to Virgin Media about your services.

I do apologise for the delay replying to your query and any
inconvenience this may have caused.

I do apologise but we have a record that everything was completed on
28th June. Can you please advise what part of the telephone was not
completed. Do you have telephone sockets in the house, is it the inside
or outside part of the install that wasn't completed?

I hope this helps, but if there's anything else we can help with, please
send us a letter, email or call our team free on 150 from your Virgin
Media phone. Or on 0845 454 1111* from any other phone. You can call us
Monday to Sunday from 8am to Midnight.

Kind regards,

Becky Devoy
The Customer Concern Team
Virgin Media
Second Contact

Thinking I'd then be corresponding with Ms Becky Devoy I addressed my reply to her...

Sent 10/07/08 18:48
Hi Becky,

The engineers that came round said that they had not been asked to
install a phone line, just internet and TV connection points. There is a
single co-ax cable running through the house branching to the modem and
to the set-top box for the TV, but nothing phone-related at all to my
knowledge. There are no sockets (of any kind, as it happens) but just
the single co-ax.

If you need any more information from this end to figure out what's
going on, do let me know!

Yours,

James
Second Response

...but I figured not for the IBM KANA system... Received 14/07/08:
Our reference:
Account no:

Hi James,

Thanks for your email to Virgin Media about Telephone line installation.

We can make the changes to your account or can provide any account
related information only when we receive the correct customer
verification password (CVP) from you. But don't worry -- to get things
moving as quickly as possible, just resubmit your enquiry by clicking on
the link below. Then simply enter your password again, send us your
question, and we'll get straight on the case:

[long URL snipped]

You can find your CVP on the Virgin Media welcome letter or on the
Digital Service Agreement (contract copy).

You can also call our 0800 183 1234*. We’re on hand from 8am to 8pm,
Monday to Friday, and from 9am to 6pm on Saturday, from 10am to 4pm on
Sundays.

If you've forgotten your password or cannot find your CVP on the above
mentioned documents, just send us a letter signed by you or call our
team free on 150 from any Virgin Phone. Or on 0845 454 1111* from any
other phone. You can call us Monday to Sunday from 8am to Midnight.
We'll ask a couple of quick security questions and reset your password
for you.

Kind regards,

Sonali Yadav
The Customer Care Team
Virgin Media
Incidentally, the link (as you'll note) points to a page that no longer exists, and none of the literature we have received even mentions the initials "CVP" much less gives one...

Calling Customer Services

26/07/08 17:20 - After being bounced from "customer care" to "faults" and back, Gary from India arranged for someone from the "tolls" department to call back within 48 hours... Call lasted 10 minutes on 0845 454 1111.

First Bill(!)

29/07/08 18:46 - Well, no phone call from Virgin but instead a bill for £41, including at least £11 (likely £22) for phone line rental that we are not receiving. (2 months at £20/month clearly = £41 in the Virgin Book of Maths.)

My next actions? I'm phoning my bank tomorrow to instruct them not to pay the bill, and as soon as I can (realistically Saturday) I'll be paying their new Cornmarket store a visit.

What about the services we have received so far? Well, the internet access has been decent enough (though the upstream bandwidth is pitiful). We haven't yet received a letter from them accusing us of being criminals, which is nice. The TV - well, it works. iPlayer on your actual TV is remarkably useful, even if the video is compressed to death (even more than the regular channels - admittedly I notice these things more than most, but next to the Freeview picture on the laptop courtesy of MythTV, the difference is striking). However, we're not prepared to pay £22 of line rental for a line that we don't have.

Watch this space...

Tuesday, June 03, 2008

7th Week: XP Service Pack 3 and IE7

So, I finally got around to updating my seldom-used XP installation to Service Pack 3 (which took about twice as long as upgrading my laptop from Gutsy to Hardy). Microsoft are now pushing Internet Explorer 7 as a "high-priority update" for SP3, and it will install itself the next time you do an Automatic Update.

Here's the supplementary license blurb:
PLEASE NOTE: Microsoft Corporation (or based on where you live, one of its affiliates) licenses this supplement to you. You may use a copy of this supplement with each validly licensed copy of Microsoft Windows XP SP2 and Windows Server 2003 SP1 software (the "software"). You may not use the supplement if you do not have a license for the software. The license terms for the software apply to your use of this supplement. Microsoft provides support services for the supplement as described at www.support.microsoft.com/common/international.aspx.

Hmm, what's missing from that? Could it be, um, Microsoft Windows XP Service Pack 3? Are Microsoft pushing out an update that they themselves have disallowed? Or could it be that actually, nobody pays the least bit of attention to these EULA-like pieces of crap - not even the software companies themselves?

(This reminds me of when Apple released Safari for Windows before realising it was against license terms to install it on anything but an Apple...)

Oh yes, and exams are happening.

Monday, April 21, 2008

1st Week: Java VM for Palm

A couple of months ago Palm stopped offering the IBM Java VM for Palm OS devices. Irritatingly, this happened the day before I had to hard-reset my device...

Anyway, cut a long story short: I see nothing forbidding me to do this, so you can get a reasonably recent version of the VM here.

Monday, March 10, 2008

9th Week: Audacity, ALSA and Ubuntu

So, the Aldate's Student Weekend (powered by Linux) had one technical problem: Audacity refused to work on my laptop. Looks like the culprit is something to do with the version of portaudio that Audacity was compiled against; changing the settings to use Jack for audio IO has solved all our problems. If you're getting "Expression 'ValidateParameters( ... ) failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1142" then, until someone gives a better answer, install Jack and use that to talk to ALSA.

Wednesday, February 20, 2008

6th Week: A stream of consciousness on hunger and chains

What does it mean to be hungry for something?

OED: "Having or characterized by a strong desire or craving [for something]".
And craving, "Urgent desire; longing, yearning."

If, in a room full of hungry people, you announce a feast, the expected response is one of elation.

If you claim that you are hungry for something, yet let that very thing pass by with barely an acknowledgement - are you really hungry?

If not - why not?

"Through Christ Jesus the law of the Spirit of life set me free from the law of sin and death" Romans 8 v2

To borrow rather heavily from Mary Mary: the shackles have been taken off your feet. Why do you choose, rather than dancing, to continue shuffling in lines like prisoners?

Monday, February 11, 2008

5th Week: Learning a New Language

"And afterward, I will pour out my Spirit on all people. Your sons and daughters will prophesy, your old men will dream dreams, your young men will see visions. Even on my servants, both men and women, I will pour out my Spirit in those days." -- Joel 2:27-29, The Bible

I've been running visuals for the Late Service at St. Aldate's. In an "ordinary" service this would mean getting the words of songs on screen at the right time, and keeping the speaker on-camera - straightforward stuff and all things I've done so often, they've become reflex. (Watch me during a service I'm not on AV, if you don't believe that...) The Late Service has gone beyond that, using video backgrounds behind the song words to aid the worship.

"Uh-huh, what's so special about that?" you may (or may not) ask. There is the ever-present danger of doing it for the sake of doing it, for the technical challenge, or even to "liven up" the worship - to which you might well reply "So what?". Background visuals can be just a "nice touch" but I always strive for more than that; to become as much a part of the worship as each instrument in the band, as each heart of the congregation. What I do behind the sound desk is my worship to God, my offering laid out on the screens that everyone can see. (That, by the way, is why it upsets me when I have to put up things that I know are low-quality. I want to give God more than that.)

Tonight, as Owen was playing and singing "For greater things have yet to come, and greater things are still to be done in this city" I felt God say, "Look outside. Outside the doors." Outside? How could I do that? The collection of loops we have is limited and there wasn't what I wanted to show. I went for the only "outside shot" I had available to me: across the entrance foyer and out through the front doors. And someone promptly walked across the shot and out of the building.

It struck me (as I walked to hand in work to the comlab at 1.15am) that what I was doing was learning a new language. As with any language, when you start you have a limited vocabulary - and when you want to express a specific thing, you can be scrabbling for words, hoping vaguely to get your point across. Here, the language was pictures, the point was God's heart, and my attempts to communicate were in desperation the closest thing I could get to the picture in my head. But that's OK - any language takes time to learn. And I know the point was gotten across (thanks Emily).

I really want to develop this further - I want to take a camcorder out and just walk around Oxford for a day, for one. The more words you have in your vocab list, and the more you learn them, the more expressive you'll be in the language. And the more new words you add, the less likely you are to fall back to the very basics - "Bonjour, je m'appelle James, j'ai vingt ans, j'habite a Oxford..." has a certain equivalence with those time-lapse clouds. They have a place, but there's so much more to French (right, Jenny?)

Oh, go on then.


And as for my vocab list? It'd be really useful if the thumbnail menu we have actually linked in with VLC to select what video was playing. And seamless looping in VLC would be nice, too... The former, at least, I've already prototyped.

Saturday, February 09, 2008

4th Week: Space is a harsh mistress

It was only a machine.

No - it wasn't even that. It was a computer simulation of a machine. A machine, created by a machine. How perverse.

It was just a lump of Tritanium (which doesn't exist). It didn't even have a Tech-II tank.

But we went through some good times. It never let me down. Even that time when I left a mission in 20% structure, hull on fire - it kept going, it got out at the last minute, to fight another day. We've been halfway across the Eve cluster together. On war operations with Eve Uni. Even (on the test server, anyway) to 0.0 space.

Last night was just too much... Warp-scrambling frigates and jamming cruisers conspired to trap me in a mission I couldn't tank. Eventually it lagged out so much that one frame, I was just in structure; the next, I was in a pod staring at the remains of the Anakin's Fall.

50 million ISK later, its Tech-II-tanked replacement (which I named the Vader's Fist) is flying... but it's not the same. It just feels... different. Sure, it can take even more punishment. Technically it's handling is the same; same speed; same everything. And yet it's different, somehow.



2008.02.08 17:39:00
Victim: Muscaat
Alliance: Ivy League
Corp: Eve University
Destroyed: Drake
System: Poinen
Security: 0.6
Damage Taken: 70334

Involved parties:

Name: Juggernaut Torpedo / Guristas Pirates (laid the final blow)
Damage Done: 70334


Destroyed items:

Small EMP Smartbomb I
Scourge Heavy Missile, Qty: 1262 (Cargo)
Shield Recharger I
Warrior I (Drone Bay)
Heavy Missile Launcher I, Qty: 5
Type-D Power Core Modification: Shield Power Relay
Scourge Heavy Missile, Qty: 150
Hammerhead I, Qty: 2 (Drone Bay)
Local Power Plant Manager: Reaction Shield Power Relay I
Invulnerability Field I
Hellhound F.O.F. Heavy Missile I, Qty: 100 (Cargo)
R.S. Officer's Passcard (Cargo)
Advanced 'Limos' Heavy Missile Bay I
Exotic Dancers, Qty: 10 (Cargo)
Core Defence Field Purger I, Qty: 3

Dropped items:

Shield Recharger I, Qty: 2
Heavy Missile Launcher I
Havoc Heavy Missile, Qty: 388 (Cargo)
Large F-S9 Regolith Shield Induction, Qty: 2
Type-D Power Core Modification: Shield Power Relay
Scourge Heavy Missile, Qty: 24
Local Power Plant Manager: Reaction Shield Power Relay I
Kruul's DNA (Cargo)
Thunderbolt Heavy Missile, Qty: 962 (Cargo)