Sunday, November 08, 2009

Ubuntu 9.10 +2 days

It's two days since I installed Karmic Koala Ubuntu 9.10.  Time for a progress report.

The OS is now looking lovelier than ever.  A quick trawl through the graphics options reveal even more flourishes, which work happily with the nVidia Quadro FX 1500M nestling in my M90.  Windows have an elastic effect when minimizing or maximizing, literally bouncing into shape.  Dragging a window around the workspace sees the bottom of the window belatedly following the top, snapping back into place when the window move is complete.

Apps-wise, I'm pretty much sorted.  The Ubuntu Software Centre ( as it is called in UK English ) is well-organised and pretty much foolproof.  Based off the dependency-aware apt-get, it'll go get whatever you need to make whatever app you're installing work first time.  True, you don't generally get installation problems on XP, but I have encountered the odd piece of software that needs a redistributable of some kind.  All dependencies are downloaded first here.

Rhythmbox deals nicely with my love of podcasts.  Instead of going through the iTunes store, you simply give it the XML feed URL of the 'cast you want to subscribe to.  It sorts out the rest from there.  Some may miss the convenience of the browsing function available in iTunes, but it's a non-issue for me.  I've never rated the iTunes podcast directory that highly myself, plus there are plenty of other sites out there that'll allow you to browse based on interest.

Transmission is the BitTorrent client that comes pre-installed with Ubuntu.  The mere fact that it's part of the default install speaks to Canonical's recognition of modern user activities.  Finger definitely on the pulse there. It's not as full-featured as Windows fave uTorrent.  If you're looking for graphs of who's providing which piece of which file, you're out of luck.  If you're simply after a quick download or two (million), Transmission is a good, functional client.

Video is being handled by the ever reliable VLC, as permissive on Linux as it is on any of the platforms it runs on.

I've had a quick look at Monodevelop, an IDE intended for developing .NET applications.  It looks good enough for what it is, but I'll probably still do all of my .NET dev inside a Windows environment.  Visual Studio may not be perfect, but I'm comfortable within it.

The one thing I haven't got quite sorted yet is DVD playback.  To be honest, it's something of a non-issue for me.  I have numerous devices capable of playing DVDs.  Pretty sure I could solve the problem if I put the time into it if I was so inclined, but for those who deem DVD playback a must - a little work will be required.  It won't work out of the box.

Another annoyance (although not Linux-related per se) is Zynga Poker on Facebook.  For some reason, some of the text won't display properly, making it difficult to pick specific sit 'n go games.  However, I think this is more of a Zynga issue than Linux issue.  I hope they sort it out.

Despite the couple of niggles, the overriding factor in all of this is how bloody fast it all is.  Switching between open applications is joyful, in stark contrast to XP, which acts like a man with a serious hangover trying to repaint the Sistine Chapel.  My machine is probably three years old at this point, and it runs beautifully.  First time in around 2.5 years I've been able to make such a claim.

The only thing I'm actually missing about Windows is the ease of installing Windows games. I've got an XBox 360.  I have a PS3.  I can live with that for now.  When the time comes (i.e. when Blizzard get around to releasing the bulk of their stuff) I'll get something worthy of doing the deed.  But if you want a computer just to be a computer, Ubuntu 9.10 is tops.

Friday, November 06, 2009

Karmic Koala Ubuntu

I installed Ubuntu 9.10 (Karmic Koala) this morning.  No half measures.  No dual booting.  Following a backup of precious artefacts, its a complete install, usurping XP as the sole operating system on the Precision M90.  I considered Windows 7, but it's 180UKP for the upgrade I'm after.  If I'm going to spend that sort of money, I'd rather spend a bit more and get an entire new lappy. Windows 7 pre-installed, naturally.  Still, that's enough about Windows.  Let's talk Linux.

Installation went very smoothly.  A console boot screen allows you to set your language and keymap before you even make the fateful decision to install.  These options are provided again when you hit the graphical part of the install process, along with a nifty time-zone selector.  Once you've decided how much of your hard drive you'd like to devote to Ubuntu, the installation proceeds accordingly.  In my case, I gave the entire drive - but this machine used to dual-boot Linux and XP just fine.

The file copy process is the longest part of the install, with Ubuntu flashing OS features at you during the process.  It finished up in less than half an hour.  Very first impressions were ok, but not as flashy as I'd like.  However, Ubuntu tells me that I can get better graphical fidelity if I download a proprietary driver.  I'm ok with that, so a quick download, install and reboot later - we're back - and we're looking spanky.

I never installed Vista, so the jump from XP to Ubuntu was something of a giant leap.  The taskbar is very functional, even compared to XP.  The rest of the OS shimmers.  Browsing is a delight due to some beautiful anti-aliasing, which I would actually rate above Mac OS X.  Just as smooth but not as heavy.  Gentle gradients seem to constitute most of the GUI's look and feel.

I did have some initial problems with Wireless.  There was no indication that a card was present, and no auto-scanning for networks occurred.  I ended up having to manually enter the SSID, and even then I had to resort to setting all the IP4 settings manually.  No problem at all with a wired connection, which came in handy as I desperately Google'd for answers.

Another immediate proprietary install was Adobe Flash player, which happily launched a game of Zynga Poker within Firefox.  Sound worked out of the box, although it doesn't seem to get the same quality of sound out of my laptop speakers as XP managed.  Sounds fine when connected to speakers, tho'.  I had to download quite a few plugins to get all of my formats to play, but this took less than ten minutes to accomplish.  Rhythmbox, the pre-installed music player, doesn't look as good as iTunes, but then, if you're spending your life looking at iTunes, you probably need a new hobby anyway.

Overall though, I'm genuinely excited to be playing around with a new OS, even if it is one I've encountered before.  Despite the initial problems, everything is running lovely now.  Desktop Linux has definitely come a long way.

Tuesday, September 22, 2009

The Great Laptop Swindle?

Around 2 years ago, I was introduced to the wonders of the Dell Precision M90.  Quite a famous machine in its day, largely because there was a much publicised story about Michael Dell running Ubuntu on his own M90.

Let me be the first to confirm.  It does run Ubuntu very well, and for the most part, it’s no slouch on XP either.  The problem you were probably anticipating, is support for its graphics card – an nVidia Quadro FX 1500M.

To texture this emerging backdrop, the primary reason I bought the M90 was for solid, reliable development.  A laptop designed for engineering – it’s a sturdy box for any developer.

Still, there are the evenings.  All work and no play makes Paul a dull and unhappy boy.

I value graphics highly on any machine.  I don’t think that there is a PC I’ve yet owned that hasn’t been asked to play a demanding game at a demanding resolution.  That said, laptops are not ideal gaming machines. I knew this going in. 

What I didn’t expect was a complete lack of driver support for the built-in nVidia Quadro FX 1500M after early 2007.

nVidia have washed their hands of the card.  Goodness knows why, as it cannot be that different from the Quadro FX 1500 ( note, no M ) or the Quadro FX 1600M ( it’s one hundred louder! ).  Any search on their site for a fresh driver redirects you to your OEM.

     The manufacturer of this system requires that you download the driver for your GPU from their support site.

The GeForce M series and GeForce Go series notebook GPUs use drivers that have been customized by the notebook manufacturers to support hot key functions, power management functions, lid close and suspend/resume behavior. NVIDIA has worked with some notebook manufacturers to provide notebook-specific driver updates, however, most notebook driver updates must come from the notebook manufacturer. Additionally, the desktop GeForce graphics drivers will not install on Geforce M series and Quadro M series notebook GPU's.


Back on Dell’s site, you’re told that your driver is “up-to-date”, even though two years have elapsed and Valve’s Steam service is imploring you to upgrade your graphics drivers.

Desktop users buying laptops know the score.  We accept that we’re locked into relative solid-state hardware as soon as we splash the cash.  We know we’re probably not going to be able to run Crysis, and that we’ll be stung again in a few years. 

Manufacturers know this too, but should at least commit to providing driver updates for hardware we cannot change.  You’ll get your money eventually, Michael Dell – but in the meantime – at least allow us to get full use out of your products.

Fortunately, I am not the only one that thinks this.  Over at LaptopVideo2Go, I managed to snaffle not only a spanky new set of drivers, but also a modified INF file to tell my computer that these drivers are ok to use.

And guess what?  Everything’s working great, and I’ve seen a considerable jump in frame-rate on Counter-Strike Source.

So tell me Dell and HP.  Is the 1500M really that different from the 1500 and 1600M, or are you just trying to cannibalise your existing market and whip up your sting cycle?  And nVidia?  Is this card so different that your unified driver package can’t handle it, or are you just rolling over in bed for the big boys?

Monday, January 21, 2008

For anyone who misses my code...

protected void Select_Changed(object sender, EventArgs e)
// Which checkbox dares to interrupt my slumber?
CheckBox myOriginator = (CheckBox)sender;
// Who's your daddy? It's a table row, here represented as a HtmlControl

HtmlControl myDaddy = (HtmlControl)myOriginator.Parent;
// Who's your daddy's daddy? Why, it's that fine fellow, Mr RepeaterItem.
RepeaterItem myGrandpa = (RepeaterItem)myDaddy.Parent;
foreach (RepeaterItem myItem in PeriodRepeater.Items)
CheckBox myBox = (CheckBox)myItem.FindControl("Select");
if (myOriginator.Checked)
// Your ancestry is weak, old man.
if (myItem.ItemIndex != myGrandpa.ItemIndex)
// Mwah!
myDaddy.Visible = false;
myDaddy.Visible = true;

Thursday, January 03, 2008

"That'll do" won't do

Cheryl, and passing the bar
Cheryl has been a profound influence on the way that I conduct my professional life. She isn't a coder. She isn't even someone who you'd say had a high-powered job. She works at Liverpool University Guild of Students - in the shop during the day, and in the bar on weekend nights. This is where we met.

I worked at the Guild of Students for around six years. I kept the job up long after I'd graduated and found proper employment. Cheryl was my supervisor in the downstairs bars. During my first year of working there, I was haphazard with certain tasks - putting beer bottles on the shelf, for instance. The bars we worked on looked like a piece of shit. The students were snapping them up in droves. The average life expectancy of a bottle of the proto-alcopop Hooch was about three minutes. My particular crime was failing to ensure that the labels on the bottles faced front. The reprimand came swiftly.

That'll do won't do.

Cheryl, said - before straightening all the bottles herself.

I thought it pedantic at the time, but came to realise that the pursuit of excellence, in any field, is always worth striving for. In a busy bar when you're grasping for things like an over-stressed octopus, the last thing you need is to have to twist several bottles just to fulfil an order.

Programming principles

I was cured of such cavalier approaches very quickly, and have taken Cheryl's words into my software development career. Some readers will have heard them come from my own mouth on more than one occasion. My utterance of the phrase is not an attempt to pay something forward. It's my solid belief that if you are capable of doing a job well, you should do it.

You'd think that programmers, having trained for several years to do what they do, wouldn't need telling. The reality is somewhat different. Generally, there is a profound lack of love for the things that we do, and it needs to change.

Let's cut to the chase. Programmers are paid to come into work and solve puzzles.

It is a great job by default, a fantastic one if you're into it. If the solution of puzzles is not your thing, do not apply.

Too many coders cut corners. Too many coders bow to pressure and come up with a "quick fix". Too many coders come up with a "quick fix" to fix the "quick fix". Once you enter that domain, you're into a world of pain.

Pressure is a bitch, but one we can tame. Most of us have run into the situation where a client or stakeholder assumes that "just because we can conceive it, it must be possible", and you know what?

It probably is.

That doesn't mean you should sacrifice decent Software Engineering principles to achieve it. If your "quick fix" will cause more trouble than relief, more maintenance than instant satiation or more workarounds than can be easily documented, fall upon Cheryl's advice.

That'll do wont do

You won't go far wrong.

Wednesday, December 12, 2007

Moving toward the darkside

A salient characteristic of my career at design agencies was a precise cherry-picking of the Microsoft .NET Framework. Mature assemblies, and the benefits they would afford, were totally pickable, therefore becoming a key part of any development strategy. Enterprise Library, a mature collection of libraries for getting things done quickly, was also quickly absorbed. The presentation layer was always the area of conflict. When you're being fed beautiful CSS and markup from designers, the last thing you want to do is mess it up. Hence, every server control apart from the Repeater and the Literal was out, ViewState was a no-no and postback was the devil himself aiming his pointy stick at your arse.

Thankfully, I'm living in a decidedly more secular environment, and developing for a consistent platform that you know everyone will have. Rapid project delivery is key, and a lapse back into MS Space on the presentation layer has been required. Necessity may well be the mother of invention, but it also allows you to re-evaluate approaches that you have abandoned in the past.

Intranet development is an odd thing. It's easier, because you do not have to pander to every potential browser out there, but it's also harder, because the requirements you gather tend to be a lot more involved. Pretty much every project I've been involved with is critical, in that if it does not work correctly, hundreds of millions of dollars could be lost. That's the size of our operation, and it is increasing every day.

As a consequence, I've found myself using a number of MS's proprietary tools - with much success. First up, the AJAX .NET implementation has been a key inclusion with my recent work. Sure, it's a little bloaty, but when you've got an extremely fast internal network, it doesn't matter as much. At it's simplest level, it's postback without the page refresh - on any controls you wrap inside an UpdatePanel.

The other thing that I've been incredibly impressed with is SQL Server Reporting Services. The Business Intelligence Studio that ships with > Express versions of SQL Server allows you to create powerful reports that clients love. I know for a fact that it'd fit every eCommerce site I've ever worked with before. Producing useful reports is damned easy, while the subscriptions component is the icing on the cake. Top, top stuff.

I'm aware that with my puritanical adherence to web standards in the past, many of my former colleagues may have barrack-guns at the ready. They would be wrong to pull the triggers at this point. My new discoveries amount to little more than technical Darwinism. If you're aiming for the entire Internet and therefore, implementing the tenets the W3 lay down and trying to maintain a respectable page weight, you can't go near .NET Server controls for client-facing software. In an environment where you know what you're going to hit, know what you're going to hit it with, you'd be a fool to ignore the tools at your disposal.
Technical darwinism == Adapt and thrive.

Monday, July 09, 2007

Dominion by stealth

Now that Safari has joined iTunes on the Windows platform, it's increasingly likely that Mac OS X is going to be available on most Intel machines, whether it sports an Apple logo or not. Apple will (and indeed, have ) deny it strenously, but I'm left with little doubt.

iTunes on Windows was all about pushing the sales of both the media player and the music store. The port of Safari is a different matter. Some analysts say it's all about getting extra market share, and crucially, revenues from the built-in search bar. Others point to the iPhone, pointing out that Safari is a key part of the applications suite.

I'm inclined to think a little bit bigger.

Apple kit is nice, but it's not special, and it certainly isn't required to run OS X. In fact, the most striking feature of Apple hardware is its relative uniformity.

While not quite on the scale of a solid-state games hardware, OS crafters at Apple have long been able to target a relatively tiny collection of components, knowing that they will exist on the target machine. Some might argue that this is a reason that OS X will stay on Apple hardware, but I disagree. The transition from PowerPC to Intel has given Apple a great deal of experience with hitting diverse kit. The company is still committed to providing PowerPC support, even though it is no longer producing PowerPC machines.

On the PC side of the divide, hardware seems to be less diverse than it was a decade ago. If you're out to buy a graphics card, chances are you'll go for nVidia or ATI. While I'm reluctant to enumerate every component you could possibly have in your PC, it's a markedly less crowded market. A lot of companies have gone under. The few that are left occupy powerful positions, able to create money through iteration before the next revolution.

It makes absolute sense from a financial perspective. Mac operating systems have rightfully garnered excellent word-of-mouth at a time when many consumers are extremely wary about being blindly led into Vista. Even if you don't own a Mac, you know someone who has a Mac, and you know this because they have told you. Numerous times.

I don't know what margin Apple makes on its hardware, but I do know that hardware costs a lot of money to develop, produce and distribute. As a developer I do know that software costs money to develop, but production ( burning DVDs and printing manuals ) and distribution ( moving DVDs and manuals ) is a comparative cinch. The bottom line is that software produces a better bottom line. There's a reason Sony and Microsoft are selling their hardware at a loss, and it isn't because they've been consuming questionable mushrooms ( really Nintendo's thing ). Real money is made on software. Apple knows this.

So, back to Safari on Windows. When using Safari to browse the Web and listening to music through iTunes, you're looking at a desktop that looks remarkably like a Mac. I think that's the point. Safari on Windows may be about increasing ad revenues, it may be iPhone inspired, and it may be an attempt to acclimatise Windows users with Mac OS fundamentals at a time when many are least happy with Windows. I suspect it is all three.

Apple are about to take over the world. You heard it here first.