Tag Archives: tech

Windows8-BSOD

The Coming War

I like to think of the various technology companies as being armies on a battlefield. This is inevitably going to be a really strained metaphor, as battles as typically fought between only two armies, but let me run with it.

Each army has some advantage, home turf it wants to protect. Apple sits in a curve of a river, defended by fast-flowing water. Google has a spot on a hilltop, with a glorious view. Microsoft has a pass through the mountains. RIM is lying bleeding in a ditch. And so on.

Inevitably, the way to find the company’s turf is to identify how it makes money. Google sells ads on search, Apple sells hardware, and Microsoft sells Windows and Office. Almost every other activity these companies engage in is a flanking offensive, designed to prevent one of their enemies from breaking through and hitting them where it hurts.

That’s why Google has things like Android and Chrome OS, and Microsoft has Bing, which are all absolutely haemmoraghing money. Bing exists to stop Google entirely flanking Microsoft on the web, Android exists to prevent Apple entirely tying up mobile, etc. They’re pre-emptive strikes, to act before it’s too late.

This, incidentally, is why Apple is so furious at Google; Google started the war by striking first at Apple’s home territory. I suppose Google would have been equally furious if Apple fired the first shot into ads or search (a business Apple still isn’t in).

So to understand Windows 8, you really have to understand how the generals at Camp Microsoft think; they have a damned good mountain pass, and so it would be great if their mountain pass could exist in more places, so they could expand their mountain-pass empire. Possibly they need new sorts of passes, because mountains are easier to surmount than ever before. And to be fair, I did warn you that the metaphor was going to get strained. The trouble with their strategy is it really is as stupid as it sounds, and it’s a really good example of that old war saying: “Lions lead by donkeys.”

For those of you who haven’t kept up with the Windows 8 hoopla, it’s going to have a full-screen touch-based UI (codenamed ‘Metro’), which is what you see when you first boot up your machine, and whenever you want to launch a new program. The pre-existing Windows desktop is something you can jump into from this new UI, and the start menu is gone, replaced with jumping back to the full-screen Metro UI.

Microsoft were loathe to admit it, but Metro is clearly a response to the iPad; especially as Windows 8 will run on the power-efficient British-designed (national pride FTW) ARM processors used by the current crop of tablet devices and mobile phones, as well as the Intel-designed processors in current PCs and laptops. The poor power efficiency of the Intel chips are the primary reason that your lap gets rapidly scorched by the searing heat put out by a laptop.

The thing about the iPad is it’s like how I imagine people felt when they first used text-interface computers in the 70s and 80s; right now, they may be difficult and limited, but you know that the descendants of this thing are going to be the future. There will always be a place for the PC as we know it today, just as there’s still a place for connecting to a terminal over ssh and using emacs to edit a cron job, but tablets and similar devices are going to take over an increasingly large amount of our day-to-day needs.

And the iPad is already selling like hot cakes, so Microsoft needs to flank Apple, and they do it the only way Steve Ballmer can comprehend how: make it so something iPad-like can run Windows.

And so Windows 8; a iPad-like touch UI jammed on top of a standard Windows 8 desktop, with ARM support. For Microsoft, it’s an absolutely instinctive response. It’s the reason that Windows Phone 7 is called that, even though it a) Isn’t based on the same code as desktop Windows b) Doesn’t even have windows in the interface. They’re bound, inexorably, to the idea and brand of Windows, even when it doesn’t make sense.

What they’re relying on is their backwards compatibility advantage. Why buy a device with Windows 8 on it? Because it’ll run all your old Windows programs. Because it’ll be familiar. Because, essentially, it’s easier than switching to Mac or Linux. This is especially prevalent for gaming, which is severely underdeveloped on those two operating systems.

The trouble here is threefold: firstly, old programs written for existing Intel-based Windows machines won’t actually work on the new ARM-based devices. Theoretically, they could be reworked and recompiled to run on ARM, but it’s currently unclear if this will even be allowed. Regardless, on Day 1 of Windows 8, hardly anything is going to run on the ARM-based iPad competitor Windows 8 devices.

Secondly, backwards compatibility is a millstone. On a device like the iPad, the contract with applications is that they’re run in tightly controlled conditions; for instance the OS can kill them dead at any moment with little or no warning. The advantages of this are manifold; you’ve got massive security benefits, as well as improved battery life, etc. But you can’t impose conditions like this on applications retrospectively, at least not without enormous difficulty. Look at the kerfuffles around UAC in Vista, and that was merely enforcing what had been recommended practice for many years.

Thirdly, developers are lazy. They could write applications for the new Metro UI, or, they could write a standard desktop application that works on all versions of Windows. Microsoft are promoting a new framework for Windows development using the new Metro UI called WinRT, and it’s going to be a wonderful replacement for Win32, the old API, and it’s going to be wonderful and brilliant etc. etc.

Except that we’ve been here before. Windows codename ‘Longhorn’ was supposed to introduce a new platform for Windows development, called WinFX, which would be the foundation on which the OS rested. Longhorn eventually became Vista, most of the new framework arrived, although as a framework for applications, not actually used by the OS. Sure, some people are using it, I suppose. But it’s hardly taken over the world, and it was backported to XP so that it could be widely used. WinRT isn’t going to be backported at all, so it’ll be Windows 8 only. Incidentally, commenters, I’d be glad to hear of any WPF apps you know of; the only high-profile one I can think of is Visual Studio 2010.

Based on that history, WinRT is going to tank really, really hard. Why would you write an app using it, knowing that you’ll restrict yourself only to people running Windows 8?

Honestly, if I was in charge at Microsoft, I would spin off Metro into a serperately marketed OS. Base it on the existing Windows kernel, but totally rebuild the top layer to jettison Win32, then make Metro the best OS for touch devices it could possibly be, with no compromise to the old way.

Then make a Windows 8 that is essentially very, very dull. At this point, there’s not a lot of innovation to be wrung out of the desktop, so it’s really a polishing exercise. Microsoft mostly makes money by selling OEM copies of Windows anyway, so all it has to do to continue making versions of Windows which are good enough to stop people switching; this is a relatively easy job.

Mashing the two things together is the stupidest thing you could possibly do. You really risk angering people who really just want Windows with windows and don’t want to be using a mouse or trackpad with UI designed to be touched, and on the other side you’re going to do a half-arsed job of being a tablet.

For instance, I’m sure someone is going to try and build an Intel-based tablet, which will get hot, and have a fan, and terrible battery life. And poking desktop apps with your finger will suck, so it’ll include a stylus, which will get lost.

Maybe Microsoft’ll succeed with all this. Maybe. Honestly though, I think it’s going to be a failure. Possibly a failure larger than Vista, although they may have the sense to course-correct in time for Windows 9 so that they don’t permanently damage the dominance of Windows itself.

I think the engineers and designers have really done a remarkable job; honestly, reading about WinRT, and looking at the boldness of the Metro interface, they’ve really done themselves proud. It would have been really easy for them to do what others in the industry have done and just rip off the iPad, and that they’ve tried to reimagine the concept is commendable.

I suspect that the problem comes from the top; Steve Ballmer, the CEO of Microsoft, talks about “Windows everywhere”. It honestly doesn’t make any sense. There’s a reason that Apple didn’t put OS X on the iPhone and iPad, even though the foundation of iOS is the same. It’s a real shame that Steve Ballmer is too stupid to understand that.

And yes, I know stupid is a litte ad hom, but honestly, look at this video; you can’t get much more wrong than he turned out to be.

I Shouldn’t Be Allowed to Use a C++ Compiler

class mesh_cell
{
double _x, _v, _P, _rho, _q, _e;

public:

// Defines that automatically write get/set accessors for me if I provide the variable names.
// Evil? Saves me writing boilerplate though!
#define var(i) double& i() { return _##i; }
#define get_var(i) const double& get_##i() const { return _##i; }
#define set_var(i) void set_##i(const double& var) { _##i = var; }
#define gs_var(i) var(i) get_var(i) set_var(i)

gs_var(x)
gs_var(v)
gs_var(P)
gs_var(rho)
gs_var(q)
gs_var(e)

mesh_cell()
{
}
};

I need help.

Spotify Post-mortem

For a while now I’ve had a Spotify Premium account, and since I told myself it was an experiment which I would then subsequently review, I really ought to actually do that rather than just letting it roll over and over each month.

I assume most of you are familiar with Spotify; if you’re not, then where the hell have you been the last year? It’s pretty much ubiquitous now.

Anyways, Spotify Premium is £9.99 a month, and that entitles you to higher quality music, offline mode, and use on mobile devices, like the iPhone. A full comparison of the different types of account is available on the Spotify website. The main thing that drew me to paying for premium was the use on mobile devices, like my iPhone, and I have used it pretty extensively.

And, based on that experience, I think I’m going to stop paying for it.

There’s a few reasons for this: the catalogue on Spotify isn’t as extensive I would like, and has a really large number of omissions, the software is occasionally unstable, etc. but the major one is mostly a strictly human limitation. I found myself just listening to the same set of music over and over, or I was undecided about what I actually wanted to listen to on any particular day, and Spotify just isn’t geared up to make it easy to browse to find something you want. The tools available for finding entirely new music on Spotify aren’t really very wonderful, either.

What I could do instead with my £10 is just buy a new album (or two) every month, add it to my collection, and then use tools like Genius playlists on the iPhone to listen to the whole damn lot in nicely selected chunks, which I find a really satisfying way of consuming music. This plan also has the advantage that I get to keep all this music if I every subsequently decide to stop paying monthly.

Anyways, I haven’t made any final decisions yet, so I’d be very interested to see what other people think about this, any tips/tricks or perspectives to share would be great.

(Coming up soon: a series of posts about my holiday to Ireland, and hopefully just more posts in general…)

The iPad

As those of you who follow me on Twitter will know, I took the plunge and bought myself an iPad, as a kind of post-exams, post-degree celebratory splurge.

I have to say, so far I’m really rather enjoying it. It feels like this slab of glass and metal has just arrived from the future; it has this sense of violating usual expectations simply by existing.

The screen is glossy and beautiful, and it feels dense and sturdy. It’s heavier than you’d initially expect, but certainly not uncomfortably so. I’m not exactly a bulgingly muscular he-man, but I don’t find it uncomfortable to hold. They’re not wrong about the keyboard being large, it’s actually pretty comfortable to type on with the iPad in your lap, and you can get a pretty respectable typing speed with a little practice.

Pages load fast, browsing is fluid, and video on sites like the iPlayer work great. I started watching a Bettany Hughes documentary on Atlantis earlier on here, and it was a very pleasant experience. YouTube videos too look great, and I just last night found a service (although I now remember being told about it by Will Otter) called TV Catchup that allows me to stream live TV directly to my iPad, which is pretty cool.

As apps go, iPhone applications look flat-out ridiculous on the iPad. There’s not really a way around that one. They run, but you have the choice of running them at normal size, isolated in the middle of your display, or blown-up to fullscreen where they really just look appalling, pixellated, only having the iPhone keyboard rather than the superior iPad one, etc. You’ll want to use dedicated iPad apps wherever possible.

The catalogue of available iPad apps is comparatively smaller than its iPhone stablemate but there are already some pretty impressive apps available, and the number will only increase as more developers make iPad optimised versions of their existing apps. For instance the brilliant Google Reader client for the iPhone Reeder should be releasing and iPad version soon, and I can only hope that the Twitter for iPhone app formerly known as Tweetie will too receive an iPad version.

The in-built apps all look and work great, and one thing that surprised me was that even on the wifi-only model, location still seems to work fairly accurately, if not pin-point. I thought there was no GPS hardware, so I suppose it’s doing a trick using wifi hotspots to figure out my location. Whatever it’s doing, that’s quite cool.

I have a feeling that i’m going to change my habits quite a bit having this. I’ve already been tempted to impulse-purchase a movie from iTunes, and the iBook store would look terribly appealing if I didn’t already have a backlog of physical books (currently going through Neverwhere by Neil Gaiman) and I can see a lot of sitting in bed, browsing, tweeting and reading email in my future. Apart from high-powered hard-core gaming and writing code, there isn’t a huge amount of reason to go turn on my PC any more.

Anyways, I really like it, so there. This post was entirely written on the iPad.

Google and Wifi

So Google are in a bit of trouble because they captured a bunch of data from open wifi access points using their Street View cars.

Personally, I’m going to apply Hanlon’s razor to this: “Never attribute to malice that which can be adequately explained by stupidity.”

Google were collecting wifi data for the purposes of performing rough geolocation without the aid of a GPS module; if you collect the approximate position of a wifi access point (identified by its SSID and MAC address), then you can later calculate the location of a mobile device by cross-referencing with what wifi access points it can see. This is perfectly legitimate — all this data was being broadcast in the clear into public areas, it’s not personally identifiable, and Google were never going to disclose it directly anyway; only the results obtained from the use of the data.

The contentious bit is that they hoovered up payload data as well as just SSIDs and MACs. This means emails, web pages, downloads etc. etc. This isn’t too horrendous as anything actually important and sensitive e.g. financial stuff,  is encrypted at the transport layer by SSL anyway. The collected data could potentially be compromising and embarrassing however, and it is legally very dubious to collect and store.

Given that it’s a PR disaster and potentially illegal, I think the most plausible explanation here is cock-up. Somebody on the Street View team got sloppy and used some code from another part of the company without asking too many questions about what that code did, over and above what they were going to be using it for; said guy is now probably getting one hell of a bollocking.

Adobe vs. Apple

Apple and Adobe have been having a rather public tiff about the use of Adobe’s Flash on Apple’s mobile platforms, the phenomenally successful iPhone and iPad platforms. I’m going to have to split my response to this into two logical parts:

1. The Web

Flash is predominantly used as a container for video content, Flash-based games, and the occasional little widget. Almost every other use is a disaster; I’m sure we all have horror stories of terrible Flash-based websites.

Apple’s argument in this space is one I completely agree with: letting one company, with one proprietary implementation, control several important classes of web application is just wrong. Emerging standards like HTML5 video and canvas tags, and support for them in all the major browsers (Chrome/Safari, Firefox, IE9)  mean that we have no need to stick to Flash. Even if we were to assume that Flash was high-quality, secure, performant, and stable, which it isn’t, letting it have total control of web video would be an incredibly bad idea. The sooner it dies a miserable death, the better for all of us.

2. For The Writing of Cross-Platform Apps

This one is somewhat more of a grey area.

First off, let’s be honest; Flash doesn’t help you build cross-platform apps. It helps you write apps that run on Adobe’s platform. They want you to write Flash-based apps for the same reason that Microsoft wants you to write Windows apps, or Apple wants you to write iPhone OS apps, or Valve wants people to use the Steamworks APIs: they want you locked to their platform, for their own business reasons. There isn’t any altruism here, no matter how much Adobe wants to play the martyr.

This is why Apple is refusing to let apps which target Adobe’s platform to run on their OS. Adobe are making a power-play to subvert Apple on their own platform, and Apple are rightly telling them to go fuck themselves. It’s not an unreasonable position, even from a user’s perspective. One of the reasons that Windows is a cluster-fuck is that fundamentally Microsoft lost control; they need to keep backwards compatibility with almost every Windows app ever written, even the ones that don’t play by the rules and call undocumented APIs in broken ways. That’s a millstone around their neck, preventing them from ever moving quickly. That situation is good for nobody; it hurts application stability, and it hurts innovation.

On the other hand, Apple are keeping control with an iron fist, in a fairly velvety (albeit thin) glove. Call undocumented APIs, don’t natively target Apple APIs, you get bounced out. On the other hand, it means Apple can keep nimble. They know that because all their app developers are playing by the rules, they can change things rapidly. Change CPU architectures? Boom, most apps will just recompile without needing changes. Stick a third-party toolchain in there, and you get unpredictable effects; every app using that third-party system could stop working.  What if Apple want to add new features? If Apple exposes a new API, native apps can start consuming that API straight away. They don’t have to wait for a third-party platform to figure a way to pass through that API, if they ever do. They don’t have to worry about developers only targeting the minimum common feature set.

It’s a Faustian pact. Nobody is denying that. If you don’t like Apple’s strategy, you don’t have to buy an iPhone OS device.

For the moment, I’m happy with the trade-off. When I decide on my next phone, you bet I’m going to look at Android. But I’m happy right now, and I quite want an iPad…

Anyways, if you really want to write cross-platform code, you do it the same way we’ve always done it. Write core code in C++, staying agnostic as possible to the real environment you’re running in. C++ pretty much works everywhere. Hooray for open standards! Also, on another note, I also think that half the time the FSF is full of shit. Or to be less inflammatory, they’re so committed to their ideology that they’re blind to reality. But that’s a story for another day.

iPhone Macro

I’m about to express an unpopular opinion, so I’m just going to come out and say it: I really want an iPad.

Yes, yes, I know, early adopters always get screwed, it’s locked down, doesn’t multitask, there’s no camera, there’s no Flash,  etc. etc.

Sorry, I just don’t care. It’s thin, it’s light, it’s a goddamned multi-touch tablet that’s going to have awesome third-party app support on launch (not only running legacy iPhone apps, but I bet there are going to be dedicated iPad versions of the best apps, e.g. Tweetie) and with a UX that’s pretty much second to none.

The web-browsing experience on it looks phenomenal. I already browse a lot on my iPhone, and being able to do the same on a screen that size? That’s the stuff tech dreams are made of. I’ve been wanting a device like this for over a decade, and now it’s here I’m not going to get sniffy because it doesn’t have a camera. Can you even imagine taking a photo with an iPad? It’d be horrible!

Honestly, I can see something like the iPad quickly becoming my go-to computing device. Need to look something up on Wikipedia? Want to book some train tickets? Quickly checking email? Want to show a friend a YouTube video? You bet you’ll be reaching for an iPad rather than trudging to a desktop or even a laptop computer. It’ll also be great for stuff like iPlayer, Facebook, Twitter… The experience on offer here is already worth the price of entry, no matter what features they’ll put in the second gen.

The one thing that seems like a missed opportunity with the iPad is that even if you get the 3G version, which presumably has all necessary radio-gubbins, it doesn’t support making phone calls or sending SMS messages.

Now, I can almost understand the justification for not supporting phone calls; there’s a real risk of looking somewhat like a 21st Century Trigger-Happy TV sketch, holding a giant iPhone up to your ear.

That problem could be entirely avoided though if it was mandatory to use some kind of hands-free kit to make calls.

The perfect scenario would be Bluetooth; your iPad could sit in your bag, month-long standby life only somewhat curtailed by being connected permanently to a phone network with the Bluetooth radio powered up. All the necessary interaction with the iPad required to make and receive calls could be made wirelessly via a Bluetooth headset. Heck, it would finally validate the existence of the bloody things.

Then I wouldn’t need an iPhone any more; the only time I’d miss it would be those times when I really need portability, like looking at a map while walking about on foot – mostly using iPhone apps while walking is a bad idea anyway (not that’s stopped me walking and tweeting, I might add). This is entirely counteracted by the much better battery life and superior usability afforded by the larger screen.

It seems like such a good idea I’m surprised they haven’t done it.