Thursday, November 29, 2012

SITS StuTalk

SITS is a student record system. It contains details about students, such as the course they are on, grades, etc. We were using version 8.5.0 at the time of writing.

StuTalk is a web service interface to SITS. You can do a handful of things with this – the two main ones, for me, being to import and export data via XML Exchange Templates (XET).

The XET screen in SITS lets you create and edit XET templates that map the SITS data model to and from an XML file. You can use File > Import and File > Export from the main menu in SITS Vision (the desktop client) to manually import and export SITS data in XML format through the XET templates.

These even work for things like TUPs (SITS triggers) so I can export those from development, put them in source control and then import them in to live during a release.

It can also handle nested data and the XET screen knows about many of the relationships between entities so you can just add the entities and let it sort out the details most of the time.

A big plus about XETs is that they will trigger the SITS customisations (that is, your business logic) that you might have configured, such as TUPs. This obviously isn’t the case if you attempted to import the data directly into the underlying SITS database tables.

On the other hand this is slow. Attempting to export ~9k rows of data with a handful of entities took hours. After discussion with the vendor we learned that direct table access is still the recommended approach for pulling large amounts of data out in one go.

However, a more event-driven approach is possible which removes the need for a big bulk export. We use TUPs to raise events (such as a student enrolling to a course) and place these events onto a “service bus” (MSMQ message queues). Some custom code then processes these events, in some cases making a XET export request via StuTalk to fetch additional data out and then pass the resulting dataset on to another system, such as our VLE (Moodle) or maybe to more custom code to have an email account created or whatever.

A second “gotcha” is that XETs cannot import child entities if the parent is using auto-generated primary key parts. The example that bit us was with IPRs and IPRQs. We use these to import things like prospectus requests made over the phone or through our website. The TRAN process in SITS lets us match this new enquiry up with others so we don’t double-count our enquirers (they may have contacted us before). The IPR represents the enquiry and IPRQs are a way of defining additional custom data.

The XET template is defined such that it auto-generates a sequence number for the IPR. The child IPRQs need this sequence number as a foreign key so they are related to their parent IPR, but the XET import does not do this for us. The SITS consultants and helpdesk people first tried to tell us that this “just worked”, but this turned out to be because their training systems had IPR and IPRQ sequence numbers that happened to be in sync, so generated matching numbers by accident. Doesn’t work for us as our sequences are not in sync as we have real data not a static training set. We were then told we could achieve it by using some “registers” which are special data slots we can use during the import, but when we tried it we couldn’t get it to work. The SITS Helpdesk people then admitted the product couldn’t do this and closed the call.

To work around this deficiency of SITS we have a two-stage import. The first stage imports the IPR (and we include a key value from the source data in a user defined field of the IPR). A TUP fires and writes an event out to a table. This event includes the auto-generated sequence number that was given to the IPR by SITS during the import as well as the other key parts and the source key we imported (see above). Using the source key we can get back to the source data and pick up our additional data to import into IPRQs via StuTalk, using the auto-generated sequence number from the IPR to relate the IPRQs correctly.

Friday, November 23, 2012

Pulling a RAID drive

My development environment is a bunch of virtual machines (VMs) running in Hyper-V on a Windows 2008 R2 Server. The server is a Dell Precision T7600 (details in previous posts). It has a separate RAID controller card with a battery that’s started showing warnings about not charging due to high temperature.

The RAID has 4 SAS drives configured in RAID 10, so a single drive failure should be covered because each physical drive is mirrored on to another physical drive. So this consumes half your total drive space, but means you can survive a drive failure (in theory).

However, does it work? What would it even look like? Long story short: I just yanked a drive out while the host was still running.

Everything was smooth. The Hyper-V host didn’t event wobble. The MegaRAID software gave me an alert, so I launched the Storage Manager where it gave me a bunch a details. I pushed the drive back in and it began rebuilding the drive – presumably it’s copying the data from the mirror back over. It reckons this will take about 2 hours, but the system is still usable while it does this. Update: It actually took 9 hours to rebuild the array.

Here’s a screenshot of the Storage Manager during the rebuild (click to enlarge):

RAID rebuild following drive hot drive removal

Friday, November 16, 2012

Activating Windows 7 Enterprise

I added the Windows 7 Enterprise disk, from MSDN, to my Windows Deployment Server (WDS), so I could install a test client PC.

The first thing I learned is that a WDS (PXE boot) Approval or Rejection is for the device (not the attempt) and is remembered by the WDS server. So, having rejected the first attempt for laughs, it then would not allow the client PC to connect again via PXE. It won’t let me delete the rejection from the list via the UI and gives an error if I try to Approve a Rejected request.

A bit of Googling indicates that these will tidy themselves up automatically: rejections after 1 day and approvals after 30, but I want the rejection gone now. I used the command line to do this, however, right-clicking on Pending devices in the WDS UI shows built-in Delete Approvals and Delete Rejections actions (in Windows Server 2012 WDS at least).

I then installed Windows 7 but activation kept failing with “DNS Name does not exist”. More Googling reveals it’s probably trying to connect to a Key Management Server (KMS) as it’s the Enterprise edition. Control Panel > System > Windows Activation > Change Product Key lets me enter my MSDN key and activates successfully. Then there are ~100 Windows Updates to install.

Thursday, November 15, 2012

Auto-register AD DNS host name from CentOS

You can get a Linux (CentOS 6.3) server installation to automatically appear in a Windows DNS and Active Directory configuration (vanilla Windows Server 2008 R2).

At the Windows end, you first need to tick “Dynamically update DNS A and PTR records for DHCP client that do not request updates (for example, clients running Windows NT 4.0)”. I did this via Start > Admin Tools > DHCP > [server] > IPv4 > Scope > Properties > DNS.

You can check what the Windows DHCP server is up to by examining the logs which are in c:\windows\system32\dhcp. This was happening by default on my test rig. It starts a new log each day and keeps a week of history and also writes the status codes at the top of each file. I’m looking for DNS Update Request (30) and DNS Update Successful (32). You should be able to see these for Windows 7 clients (for example) and can generate them by doing an ipconfig /release and ipconfig /renew.

We then installed CentOS 6.3 via the minimal network installer image, which then drags down the bits it needs from the internet. We first set the VM guest to use the legacy network adapter for this, as the image doesn’t have Hyper-V Integration Services installed so can’t use the default one. We also set the memory to 1GB. At 512MB the installer didn’t give us the graphical install user interface.

During the initial phase we told it to use IPv4 with DHCP and disabled IPv6. It then needed a URL for the phase 2 image and a bit later it started a graphical setup user interface. We gave it the FQDN for this new host (newhost.subdomain.domain.com for example). At the bottom of this screen is a Configure Network button. We pressed this and edited eth0. IPv4 was set to Automatic DHCP and we set the DHCP Client ID to match the hostname given above without the domain (so just “newhost”).

Do the rest of the install and then reboot.

Next, enable DNS through the firewall.

Then you need to add an entry to a config file:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

There should be some stuff in here already. You need to add:
DHCP_HOSTNAME=newhost

“newhost” again needs to match with what you did before. Then “<Esc>:wq” to write and quit vi.

Then ifdown eth0 followed by ifup eth0. This should release and renew via DHCP so checking the Windows DHCP Server log should show the expected DNS update messages.

Back on the Windows Server, the hostname (newhost) should appear in the Name column in DHCP Address Leases and an A record should also appear in the DNS forward lookup zone.

Wednesday, November 7, 2012

Surface

I’ve had the Surface for a week – here are some thoughts about it.

WP_000153

The Surface is basically Microsoft iPad. Apple got there first and showed that there’s a huge market. Microsoft is a big ship and takes time to turn, due, in part, to carrying an enormous amount of legacy stuff, but appears to be sailing in the right direction again at last.

The Surface is a small, touch-screen PC, with good battery life, intended for basic stuff (web surfing, social networking, etc), but with more convenience than laptops or notebooks ever managed to provide. You can actually plonk one of these into your lap and do stuff, without the added “bonus” of ironing your underpants at the same time.

It runs Windows RT, a minimal version of Windows 8, fronted by the new Modern UI (the user interface formerly known as Metro) and its new apps model.

The main restriction is that the old-style Windows desktop isn’t really present. The basic tools & utilities are there and so is Office, but you can’t just install your old Windows applications – you need full Windows 8 on a desktop or laptop for this.

The new Modern UI is brilliant, in my opinion. The tiles are the right size to be easy to use with the touchscreen and they easily flow their layout to suit their environment, so you can use it in either portrait or landscape orientations, or snapped in (see below) or on Windows Phones. The tiles can update to show you status info (unlike old, dead desktop icons). The design also carries through inside the new apps and internal data items (such as a person or a sports team) can be pinned to the start screen, exposing the content that is important to you right at the surface of the *ahem* Surface. Common operations, such as searching and sharing, are also integrated so you no longer have to learn a new apps’ quirks to do basics (well, not so much anyway, hopefully).

This design is also already all over much of Microsoft’s websites so should quickly become ubiquitous and familiar. It’s also worth pointing out that Microsoft has quite a stable of products and services. They are all getting an overhaul and being integrated via Windows 8. Here are some obvious examples:

 

MySpace Social networking, like Facebook, Twitter
Xbox Music (was Zune) Pay-per-track (iTunes) or subscribe (Spotify)
Xbox Also does PC games (like Steam)
Skype Web-cam, like FaceTime
SkyDrive Online file storage (DropBox)
Azure Application development and hosting platform
Office 365 Office and business tools and collaboration, including SharePoint

Integrating that lot is going to be an on-going effort, I suspect, because that integration of services is going to be key. We increasingly have the potential to “do stuff” wherever we happen to be, but we want to be “doing the stuff” more while managing the toolset less (ideally not at all).

The Launch

The Surface & Windows 8 were both launched on Friday 26th October 2012. I pre-ordered my Surface a few days before the launch and was under the impression that it would probably arrive early so it would be with me for the launch. The Surface was not available in shops at that time and could only be acquired via pre-order from the Microsoft Store. I then received an email telling me that it would arrive sometime between the 26th and Tuesday 30th and giving me a £50 voucher at the Microsoft Store to apologise (not a refund of some of the actual, real money I gave them though, just a voucher and a bunch of restrictions including an expiry date). It actually arrived at 20:30 on Tuesday 30th. I’m not really into “launch dates” and stuff like that. It’s just marketing bullshit anyway. But, if you’re going to play those games, maybe getting the pre-paid punters their goodies for the launch would be a good idea, no?

Once up and running and connected via Wi-Fi it found updates for 15 of the built in apps. I confirmed the updates then swapped away to another screen. It wasn’t clear whether they were going in the background or not and when I swapped back it was stuck downloading part way through the first app, but it sorted itself out in the end. UX could be better.

The Touch Cover and keyboard

The Touch Cover keyboard is surprisingly good. The keys have no action so I can't really touch-type on it properly, but is still very usable. It’s the best compromise between portability and usability I’ve seen. It also has a USB port – I briefly used my external USB keyboard, which seemed to be working as expected.

It also snaps on magnetically (which was charmingly cool when I first attached it, although now totally ruined by the TV ad campaign), as does the power connector, although disappointing that it's another non-standard power connector – I’m not sure if the built in USB port can also charge the surface?

Visually the cover is underwhelming: it only covers the screen and the reverse side is made of the same material as the lining inside of my car's boot. I was expecting something in leather, which offered some protection for both sides of the Surface. On the other hand, the cover is so thin it flips over to the reverse side where it is out of the way for handheld use.

As an aside, the touchscreen interface also does handwriting recognition. Just draw words with your finger. Works well for what it is, but is of limited use to me given the touchscreen keypad and Touch Cover keyboard are both better.

The older Windows voice recognition stuff is also present via the desktop, but I’ve not used this on earlier editions nor on Surface so have no idea if it works or not. The iPad’s “dictation” feature was semi-laughable in that it would have a go, but get most things wrong.

Integrated Social Networking

Windows 8 integrates social networking through a plug-in architecture, so you can tell it about your Facebook & Twitter accounts, for example, and it will download your friend’s contact information, tweets, pictures, etc and present them all together in the built-in People app. No more flicking between various walled gardens (although I expect some dirty tricks when vendors of said walled gardens realise their audience is no longer having to come and see their adverts to get at content).

RSS feed integration is conspicuously absent which is almost unforgivable to me. Ideally I would be able to pull from my Google Reader account but I’d even consider swapping to a Microsoft equivalent if it would push the RSS posts into the What’s New feed, but it doesn’t seems to be capable.

You can also post updates from Windows 8, but this is disappointingly limited at the moment. You can only choose one target at a time, so still have to multi-post, and pictures are not handled well. You can post them, but first I had to Share them to SkyDrive, then I can Share that uploaded picture, but the URL takes most of the 140 character tweet, making the feature stupidly long-winded, and ultimately pointless.

The Skype app is also ready for download via the Store. This uses the built-in webcam, mic & speakers so video-chat is doable without any additional hardware. I’ve only tried this over a LAN so far though so no idea how good it is “for real”. 

It also integrates my Xbox Live friends, but I can’t find a way to view or write messages. Seems like a weird omission and an obvious candidate for the plug-in architecture to me. The built in SmartGlass app lets me remote control my Xbox while at home, so I can play & pause DVDs etc, but it doesn’t actually send audio or video to the surface – it’s basically just a remote control.

Office 2013

Office is, traditionally, the killer app that underpins Microsoft’s success, and I think it’s a clever move for them to have bundled a version of it with Surface. It’s a “preview edition” of 2013, which will upgrade to the real version when it is released, however it’s the Home & Student edition, so probably has feature restrictions. So far it’s done all the basic stuff I require though. The Touch Cover is almost mandatory here as the Office apps are just updated desktop apps, not Modern UI apps, and so aren’t optimised for the touch-screen. It’s still usable, just harder to hit all the little desktop buttons with my finger.

The Desktop

The old-style Windows Desktop is available, even in Windows RT, but it won’t allow you to just install any old Windows apps. The Surface is intended for the new Modern UI apps, not to support old legacy stuff – you’ll need full Windows 8 for that.

The desktop that is included is used by Office and also includes most of the traditional Windows built-in tools & utilities. Notepad and PowerShell are there and so is Remote Desktop Connection, which worked as expected when I connected to a Windows 7 laptop via Wi-Fi at home.

Old-school windows updates are also included. There were four ready for download on first use.

Networking

The Surface has Wi-Fi and Bluetooth, but no built-in mobile network access. Presumably you could turn your mobile into a Wi-Fi hotspot and use that for data on the go or tether it to a mobile, possibly via the Bluetooth connection, but I’ve never had any joy with this stuff – it always seems to require stupid-expensive contracts, or in my case, for Microsoft to not allow the phone operator (Orange) to veto the feature despite it being supported by the phone. Bastards. I’ve got Wi-Fi at home and work so am covered as much as I need to be.

Devices

The display is very nice. While it might not be as good, technically, as the super-hyped Apple “Retina” marketing gimmick, it’s still a lovely thing to look at. I’m not sure having more pixels would actually improve it, in the same way that high-definition telly doesn’t actually make films any better – a shit plot isn’t going to be rescued by high-res graphics.

The two built-in cameras’ quality isn’t very good, although I can forgive it a little as the Surface’s form-factor isn’t really great for photos anyway. Your phone is almost certainly more convenient to hold up and snap with and if you’re serious you’ll have a proper camera. I guess it’s really meant for web-cam stuff. On the other hand, it weakens the deal for fans of the current trend for sharing endless baby photos via Facebook.

The built-in speakers are OK – better than the usual junk I get on laptops. Not good enough to actually enjoy music though – I’d use headphones or an external amp for that, but fine for Skyping or showing video clips to a friend, for example.

It also has built-in Flash support, so video clips just work. I know this was a minor sore point with the iPad. I respect Apple’s decision to stick to principles and advance the speed of HTML 5 adoption, but I also respect Microsoft’s decision to bundle tools for which it feels there is a market.

Basic Touchscreen Stuff

This stuff is covered elsewhere in detail, but I thought I’d provide a summary of the basics. Much of this is common across the Surface (and similar on Windows 8 with a mouse).

The start button, in the middle, under the screen, will get you back to the start page.

Swiping your finger in from off the left of the screen and releasing will flick between the open apps.

Swipe in from left and hold your finger on the screen, then drag back to left, to see list of open apps to choose from.

Swipe in from left, hold as above, but drag to the left or right quarter of the screen to snap the app into a partial split-screen mode. The smaller app will lay itself out so you can still use it even though it’s got limited space. You can snap the People > What’s New app in and keep tabs on updates while still doing other stuff in the main part of the screen, for example.

Swipe in from the top or bottom to get management and app-specific tools. In Internet Explorer, for example, this will give you a list of open tabs at top of screen. It will also show sites you visit frequently. Within IE you can swipe from inside the left edge of the screen to go back, but be careful not to swipe in from outside the left edge as this will switch to a different app (see above).

Swipe in from the right for the Charms menu, which includes settings and integrated search. You can search across multiple sources in one place so this is a good one to remember.

Protip: WinKey+X works with the Touch Cover keyboard, which gives you an instant “cheat sheet” menu of all the common Windows administrative tools.

You can take screenshots by pressing the start button (the Windows logo under the screen) and the volume down button at the same time. The screen will dim for a moment to show it took and the photo will be in Pictures app > Pictures Library > Screenshots. I intended to do some for this blog post, but it’s already become a monster.

Logon

Typing a complex password, with case changes and symbols, is a pain on the touchscreen. You can, however, set a PIN number as well and/or define custom gestures over a photo for a better touchscreen sign-in experience.

Xbox Music

Microsoft had their own music player (iPod equivalent) called Zune. I’ve never actually seen a device, but the Windows client could be installed, like iTunes, to manage, buy and play music on PC. You can buy tracks or take out a subscription (a “music pass”). The pass works across a limited number of devices, so you can’t share an account between friends, but can use it on Xbox, Windows, Windows Phone and Surface, for example.

The first time I used this via the Music app on Surface I was listening to music then inserted my headphones, also for the first time. The music stopped. Error message. Will not play again. Keyboard clicks were coming through the headphones OK. I restart (it’s not my first Microsoft experience). It spends 5 minutes "configuring windows features". The headphones work OK after that. Poor. Very poor.

The Music app is good, better than the older Zune app, on which it’s based. It’s quite pretty. It will import playlists (I’ve not tried), and will sync them across devices from now on (also not tried). A shame there isn’t an update to Zune to migrate existing users’ playlists.

The music playback slowed down when I left the Surface unused for a few minutes. I’m not sure if this is going to be common when entering low-power modes or whether it happened to be doing something else in the background, but it doesn’t bode well for using this as a portable music device.

I’m not convinced the store integration is fully-baked either. I added the 28 Days Later theme tune to my music. The track is called “In The House-In A Heartbeat” and I found it on an album called The Definitive Horror Collection by London Works Music and added it to my music collection. At the time I noticed some other tracks on the album that looked interesting, but then, whenever I searched for the album, it would only show me the one track from my collection - I can't figure out how to view the other tracks on the album. This has since “fixed itself” somehow. Not sure if bugged or whether the UX was tricking me into looking at the wrong thing.

The music app interface also suffers, as the Zune one did, in that it's quite hard to actually browse music without accidentally playing a track, interrupting your current play queue. It's also hard to move around and browse. If it shows me an album and I click it I expect to drill-down to the album details, but quite often this either isn't possible or it does something else, like starts to play the album.

Windows Phone

My Samsung Omnia 7, running Windows Phone 7.5 “Mango”, will plug in via USB and charge, but under PC Settings > Devices it's listed as USB Composite Device and is shown as "Not compatible with this version of Windows", so I guess I won't be using it to sync my music from Windows 8 to my phone, which is a shame as this was supported under Windows 7 via the Zune client software and let me take music from my music subscription on the move with me via the phone.

Email

The email app is fine. Basic, but does the job. Presumably Outlook will come along eventually (for a price) and provide all the advanced stuff your average business user might be used to.

Junk-email handling is missing, which is a shame, but automatic conversation ordering is there, which I like.

At work, I cannot use personal email accounts directly, via POP3, SMTP or IMAP as they are blocked by our firewall, in case a rogue machine spams and causes our IP to be blacklisted. So I can't get at personal email in the mail app while at work. However, hotmail / outlook.com can ingest email from other accounts via POP3 and can then deliver them to the Surface email app, presumably via a web service over HTTPS, so it gets around the blocked ports.

Emails sent from this account go via an auto-generated account name @live.com on behalf of my personal email (so replies to that email go to my personal address and not back to MS)! Cool.

Except it doesn’t seem to work reliably. I tried to alter the settings at hotmail so it would deliver the email into my inbox instead of a sub-folder, but the setting change won’t take – hotmail is “unavailable right now, very sorry, please check connection, etc”. I suspect it might also only pull unread email and as my Surface and Windows Phone both can get at the account via IMAP, at least some of the time, they might be confusing things. Or could just be broken – I’m not sure I care enough to find out.

Apps (from the Store)

I’ve heard some drubbing going on about apps. Apparently Surface has only a few whereas iPad has 250k+. Ok, but I bet you couldn’t get me to install more than a handful. From what I’ve seen so far most of these apps, on both platforms, are rubbish. Rubbish games or rubbish attempts to sell you content that the vendor stole from the internet anyway. Or rubbish utilities. Or sad marketing “apps” that are just glorified adverts for some crap they want you to buy.

The Skype app, granted, is an exception. But then it fronts an actual, real, service that’s useful. See also: the Kindle app.

The vast majority of the rest you can keep.

It’s Not Perfect

It’s not all good though.

Setting up a second user from scratch, for my wife, was a bit pants. It will let you have multiple accounts, but it wasn’t clear if entering Facebook details had worked or not. It eventually downloaded contacts, following a reboot. More feedback on the status of asynchronous tasks needs to be made a priority.

I also mistyped the outgoing server name when setting up personal email in the email app. It got emails down but couldn’t send new ones. I fixed the server name, but it was still giving an 'unavailable' error message when I asked it to sync email. Another reboot fixed it.

Mouseovers don't work well in IE, so getting at scrollbars in Google Reader is impossible with the touchscreen, for example. You could use the mouse in the touch cover of course, assuming a desk is handy to put it on.

Touching a tile or item usually invokes it - files in SkyDrive will open, for example. To do other things, such as delete a file, you could right-click with the mouse. With the screen, touch and hold. After a second it should dip down a little and show a tick box. If you now drag down a little and release you get a blue bar at the bottom and the item you selected will have a blue border. Repeat on other items to multi select. Repeat on same item to unselect. Then Manage > Delete to delete the selected items. This isn’t really well thought-through. I had to Google to find it and the ticking mechanism is half-baked.

Going back in to apps from the start screen switches back to where they were if they were already open, instead of going in at the “top” again. This is sometimes useful and sometimes a nuisance as I’m stuck with having to figure out how to navigate back “up” to the top of the app.

The People app > What's New tends to refresh itself every few minutes, which makes it jump back to the top of the list, which is very annoying as I then have to flick through again to get back to where I was at. It also freezes occasionally and sometimes some of the tiles are empty. If you swipe in from the bottom while What’s New is “synchronising” it restarts the app.

At one point the SkyDrive app just showed a blank white screen. Nothing doing. Reboot = fixed.

Sharing a map location was also bugged. Its another great feature and demonstration of how cool the integration would be in that I stuck a pin into the map and hit Charms > Share > Email and should have just entered a recipient’s email (which searches contacts and autocompletes, so is super easy), except the touch keypresses weren’t going in. Hiding the on-screen keyboard made the keypresses appear in a weird, slow, one-key-at-a-time motion replay style, but wouldn’t then let me actually send the email. I tried again later and it worked fine. The email gets a little map thumbnail image embedded and the recipient can click through into the map to get it to open in the browser to interact.

There is no built-in to-do app (and is also missing from Outlook.com). Now, I partially agree that to-do lists are a bit lame – I rarely actually do the things on them, but at least it gets them out of my head so I can safely forget about them. I prefer to actually schedule the item in the calendar but then I’m stuck with pushing them all ahead of me when I don’t actually do them when I said I would. Ideally I’d like a list of initially unscheduled items (a traditional to-do list) which can then be scheduled, but also stay on the list until I say they were done.

It occurs to me that this list would be super-interesting to companies in a wish-list kind of way. I’m basically declaring things I might want to do or acquire or need to acquire related things in order to do, which is a golden sales & marketing opportunity if there ever was one. Hell, it’s also a social networking thing. Maybe “learn piano” is a thing to do or “see a band live” or “get fit”. You can probably sell me stuff related to these desires, or put me in touch with like-minded individuals.

Google StreetView doesn’t work either. It links to some help explaining how to make it work on Windows 8, but I couldn’t get it to work on Surface.

Offline Use

I’m undecided about how the Surface handles offline use. There’s too much “I’m sorry. I can’t do that right now because you are not connected to the internet” going on. OK – so cache it and forward it later. While network connectivity keeps getting better, it’s still a long way from 100% in the UK.

The obvious basics are covered though – you can listen to your stored music while disconnected and can work on Office documents which can sync to SkyDrive later on, although even this is flaky. An Excel worksheet opened from SkyDrive, for example, would not open as the Wi-Fi connection was poor. Just open the cached copy you stupid thing.

Conclusion

Pros

Usability – the size, weight, battery life, keyboard, touchscreen and Modern UI all meld together to provide a very nice, handy, usable device. As Jeff Atwood has said (several times) this is the end for laptops. The Surface does the basic stuff that you need most of the time. For anything specialist (your day job) then you’ll need something chained to a desk anyway. Laptops were never really portable enough to be useful to me, and phones, while portable, aren’t usable enough. This hits the sweet spot in the same way I’m sure an iPad would.

Built-in Skype support.

Cons

No built-in RSS feed support. This is a shame as RSS is pretty much the best thing ever. Seriously.

Half-baked built-in social network support. This stuff absolutely has to sing and sizzle and zip and ping, aaaaaaaand it just … doesn’t. Everybody is Facebooking the shit out of each other and for the Surface to take with 90% of the population it has to nail this stuff. I honestly couldn’t recommend the Surface to most of my friends and relatives as they would just shrug, use Facebook in the browser, and claim it’s no different to what they already had. The weak camera is also a bit of a problem here.

Flakiness. Quite often I’ll hit the start button and the Surface will vibrate to show it registered the hit, but does nothing. I have to press again to actually get the start screen. Most of the built-in apps have crashed or wobbled at some point (see the rest of this post). This all spoils the overall experience and feeling of quality. Instead it’s just the usual half-done junk we expect from Microsoft. It’s OK I suppose, and that’s actually a problem.

“Broken” headphones experience on first use.

Summary (TL:DR)

I really want to like it and it’s really close to being a great device. It’s just a shame that the usual Microsoft low-quality and lack of attention to detail are present. I’ll put up with it, but I’m not sure I’ll really love it. On the other hand, it’s only just been released and most of the minor quibbles above can be fixed via updates if Microsoft has the will to improve it.