Making Progress

It’s hard to believe that it’s almost two months since I started my toilet project.  Yes I know.   However things are still moving in the right direction albeit a little slowly.  Most of the delay has been introduced – not because of a lack of time to do things but because of a lack of decision on some of the essentials and of course things take a lot longer than you imagine they will.  Flooring and tiling have to be chosen and ordered and it’s best to install both of these before hanging the toilet itself.  One can tile around the toilet afterwards but the effect won’t be as clean and I’ve no intention to cut corners on this job.

At least now the old toilet is out and the new frame is in.  Here is a work in progress from a few weeks ago.

Toilet frame

The Geberit corner frame is really simple to fit – four bolts hold it to the walls and floor.  The waste pipe is easily cut and snapped into place but one thing I overlooked was how the plasterboard would then attach to the frames.  Probably I was missing the Geberit rail system for this however as things turned out I had enough purchase with the existing insulation joists to make a solid enough fit for these thick panels.  As you can see though they are now on, the sink is in place, the walls are insulated and plasterboarded completely.

P1040329

Underfloor heating has been considered, discarded and considered again but it seems overkill so we’re erring on the side of an electric radiator for the room.  Once the floor is insulated (with the plywood subfloor you can see below) and the vinyl tiles we’ve selected glued down it should certainly be warm enough underfoot.

The next step will be to get some professionals in to plaster and tile the room.  The finish is important and I don’t want to mess up the finishing touches.  I have tiled before, and I am tempted to do it (and still may yet be) but like I say, the finish is important.

Then once we have a radiator I also have to fix up or replace the window in the room and also replace the glass above and in the door, then we can paint and we’re done.  Hopefully by the spring time..

I promised something to follow up on my post about one-man projects.  And I have a lot of thoughts on this stemming from both software and toilets, however, this post is going to have to wait a little longer.

Happy New Year to all those handy, software people out there.

Microsoft: Putting the User at the Centre

I’ve caught up with some of the Microsoft Build developer conference videos now.  Between the non-jokes about the weather in Seattle being bad but not as bad as it is back East and giving away oodles of hardware to attendees there were some pretty interesting things to come out last week’s meeting.  It was of course an opportunity for Microsoft to show off Window 8 and Windows 8 Phone along with some of the hardware that is available shortly.  A lot has been made of the Microsoft Surface (and touch interfaces in general in Windows 8) and of course WP8 but I think if we can take away something more fundamental about Microsoft from the themes running through this event.

At Build 2012, developers were told they should be excited about Windows 8 and Windows 8 Phone.  Since watching the videos I’ve come away with the idea that developers had better be excited because I believe this generation of software potentially changes everything for the user.  Indeed I’m pretty blown away by the joined up thinking going on in Microsoft land.  What Apple have been hinting at, Microsoft have just said “Screw it, let’s do it”.  Xbox gaming integration, Xbox music (which I love) even Live Tiles are all starting to make sense.  Suddenly I feel like my desktop PC is like an Xbox or like my PS3 – it is a game console with other capabilities.  Except now the sometimes clunky way that games consoles deal with personalisation and network integration is somewhat, hopefully, relegated to the past.

In existing mobile devices we have many apps and platforms providing some form of integration with other services – some of it ok (say iOS Mail for example) and some pretty terrible (too many to mention) – but what is clear is that there has been a lack of systemic thinking by software architects on what constitutes providing a service to the user rather than as a service to another piece of software.  A lack of clear thinking on user bound services has also been compounded by a tentativeness to execute on a totally user-oriented experience.  Microsoft have shortened the pipe between data and user giving less wiggle room, less API elasticity.  This can only be a good thing.  For example I have an iPhone but I’ve not had the need to get involved with iCloud as I don’t have a Mac.  I have Windows iTunes but I still need to plug my iPhone into it to upload my existing music (if I want to avoid buying it again from the Apple store).  Microsoft through Windows 8 is trying to change the linear approach to device management.  Windows 8 wants to better integrate devices that I already own rather than necessarily forcing me to buy new hardware to do cool stuff.  In fact this is where the underlying marketing strategies between the two companies perhaps differ – Apple say you’d better buy the hardware if you want our software to continue to work, Microsoft say you can have some great software which will work on your existing hardware and you can also buy new hardware later if you find it useful.

With Windows 8 and Windows 8 Phone the ability to share my account across devices is implicit.  As Microsoft themselves say – the user is at the heart of the experience – it’s all about personalisation on all your devices but doing this consistently.  While this sounds a lot like they are just paying lip-service to what everyone else has been doing badly already it seems however like they are actually trying to do this thing properly.  The cloud integration is seamless across devices and somewhat surprising – for example I notice I get my file view preferences taken across between W8 PCs without having to specify them on each device.  Of course apps-wise Windows 8 and of course Windows 8 Phone lag far behind and much has been made of the numbers in the various app stores.  What should not be underestimated is the amount of software already there in Windows 8 already doing most of the things you need.  Indeed until you link up your Facebook and your Skype accounts you don’t really understand what Live Tiles are about – but then suddenly you see that the experience is personal, and it’s personal across all devices and I can seriously consider logging into my desktop or my laptop in the same house and now having to worry about having all the documents I need being to hand (if I take advantage of Sky Drive).  I imagine I’ll be thinking twice before renewing my LiveDrive account next time around.

Slow erosion of boundaries between apps and services has been going on for a while but what Microsoft has done has said – ok you want a properly personalised experience on every device?  You can have it.  And not just through Microsoft services – you can have everything in one place and we won’t stop you integrating so the ability to bring Twitter, Facebook, LinkedIn and undoubtedly many others right on to your new look desktop directly without installing anything from a third party.  You don’t need to worry about putting a pretty picture on your desktop because the pictures are everywhere.

Of course one question that pops up is how this level of integration will work when it comes to security.  The paranoia exhibited by all presenters at Build when they were saying “I’d better lock this as it’s my actual device” is probably as much a testament to how much of their lives are on that device (or at least the services to which it interfaces) as it is to corporate sensitivity.  If all of your accounts are at the mercy of your single Windows Live sign-on then you’d better be very careful with whatever devices have access to it – longer term this could have serious implications for security officers everywhere.

Many other questions still remain of course not least over the newly released Windows Phone 8 SDK.  A requirement on using 64 bit hardware only for developing is a shame and there is a lack of clarity on the purpose of the bundled XNA 4.0 among others.  What is clear however is that with Windows 8 and Windows Phone 8 Microsoft have delivered a big bundle of software to play around and have fun.  The results from devs will come in over the next few months to years.  As an enticement there is a stack of engaging hardware to play around with this stuff on.  Putting the user at the centre of the experience is something that only developers can do – Microsoft can only go so far with their intentions – and as the phrase has it, the market ultimately decides.  However I know I can’t wait to get my hands on some proper Windows 8 and Windows 8 Phone hardware to see, and also to try and deliver, the fully integrated experience that people have been waiting for probably since the invention of the Smartphone.  Maybe it won’t be this iteration but by betting this big, Microsoft are getting mighty close.

Software as a Fashion Statement

If you believe some of what you read then the Microsoft hardware and software launches are all about blurring lines. Lines between leisure and business, lines between gaming and working, lines between using a computer and having fun with a gadget. We are being sold a tablet that is touted to be as useful as a laptop, we are being sold a development platform that is somewhat consistent across consumer and business desktops, laptops, tablets and also mobile technology. As technologists we have no idea if any of this will work yet as developers we are enthralled but slightly scared at the consequences of these fundamental changes, as realists we doubt that Microsoft can pull it all off but as historians we we can be sure that things have now changed forever in the consumer electronics marketplace. Gone are the days that we would agonise over the specs and wonder about the longevity of our hardware devices be they desktop, laptop or mobile. We no longer care much for battery life, for upgradeability, for the number of ports it has got, for the extended warranty. We, as computers users, as smartphone users, are now software consumers. As consumers we demand fashionable gadgets that can display our fashionable software fashionably. And once our hardware has died or is too slow we will buy the next one and either transfer all our software or, possibly preferrably, just start from scratch accumulating more software on our new gadget.

Perhaps you’ll give your old gadget to the kids and they will be happy enough with while it can run the fashionable software they want it to run and after that, pass it on. The software creators in this world are vastly outnumbered by the consumers – so if you really want to reach out in this gadget obsessed age – try a little creativity.

Another Rabbit Hole

The last few days have involved all sorts of user interface ridiculousness.  WPF, .NET, Java, Swing and Eclipse and then back to .NET and then on to C++ and then back to .NET again.  It’s nice getting on top, underneath, beyond, behind and inside of things sometimes and then it’s also nice to hear something like this announcement and just think – Ok perhaps this is where I should be going now.  Stop running around like a headless Christmas Chicken.

MonoGame is doing what Unity and GameMaker Studio and and Xamarin and all those other platforms are doing – they’re allowing you to target multiple systems (iOS, Android, WP7, XBox etc) with one codebase utilising a clever framework.  What MonoGame does differently though is that it builds on something that is already there and established (i.e. XNA) and it targets all those platforms from pretty much the same codebase (they say) and it’s open source and it intends to stay that way.  The others are going to charge you money to do this – a lot of money.   The paid-for ones have fancier tools but they all essentially do the same thing.

So I now have something new to look at.  After a year of XNA fiddling with Friendlier and having made progress with Android and OpenGL development I feel I can have an objective look at something like MonoGame without feeling that I’m taking the easy way out.  I’m already writing a framework, I should understand their framework.  And this might be a good opportunity for a little decluttering of the projects that have built up over the last year…

Platform Transform

I’ve been burying my head in Brazil – the framework – over the last few weeks.

The first step was taking Friendlier and making it work as an API. Cutting vast blocks of functionality (which forshame resided mainly in one or two huge files) into firstly addressable chunks and then to plump out this component based API with blocks that would equate to finer grained control with subsequent apps.

To whit – I parcelled up the old stuff and kept it working while creating new things that had a cleaner and therefore more reusable interface. The output of this phase of work was a half completed game called Paulo. This is what Christmas Chickens is turning into. A 3D XNA game written using Brazil.

So once I had satisfied myself that the framework was usable I set about moving it immediately on to another platform. Why not finish the game? Well my goals are bigger than ‘just’ writing games and also not limited to one platform. I could just write a game in XNA if I wanted to target that platform. I wanted to see if this framework would translate to another platform – and I didn’t want to wait any longer to test out the theory.

Next stop – Eclipse, Java, Android OpenGLES. Big change from the (yes) cosseted world of Visual Studio and XNA 4.0.

Select java version, install java SDK, get Eclipse (or another IDE), download the Android SDK and virtual device (AVD) manager, then select and download target Android SDKs, integrate the Android and Mercurial plugins for my IDE and fire up a new Android project.

Then on to the OpenGL integration. Subclass the Renderer object and port my existing C# framework into Java. This bit is relatively straightforward as C# and Java share a great deal of syntactic similarities. The larger challenge is working out how much abstraction to keep in Brazil for Java. OpenGL is a lower level API than XNA is therefore the choice is to bind directly with it or introduce some XNA like helper components such as Vector3s and BoundingBoxes. However, so far so good. I have a working Java framework and a working application and I’m able to fire up a virtual Android device and see the app working.

Next steps will be Paulo for Android and then I tackle the next platform. I’m documenting this transformation here and also over on the xyglo site where you can see code examples.