Monthly Archives: December 2010

Shit’s Breaking Everywhere, Captain.

So it turns out that my blog has been down for the last 2 days and I, in my infinite wisdom, failed to notice this. It seems like no matter how I set this thing up it will end up causing some problem that inveitably brings the whole server to its knees, killing it quietly whilst I go about my business. Now this isn’t news to anyone who’s read my blog for any length of time but it eerily coinciding with my main machine “forgetting” it’s main partition, leaving me with no website and a machine that refused to boot.

Realistically I’m a victim of my own doing since my main machine is getting a bit long in the tooth (almost 3 years now by my guess) but even before it hit the 6 month mark I was getting problems. Back then it was some extremely obscure issue that only seemed to crop up in certain games where I couldn’t get more than 30 seconds into playing them before the whole machine froze and repeatedly played the last second of sound until I pulled the plug on it. That turned out to be RAM requiring more volts than it said it did and everything seemed to run fine until I hit a string of hard drives that magically forgot partitions (yes, in much the same fashion as my current one did). Most recently it has taken to hating having all of its RAM slots filled even though both of them work fine in isolation. Maybe it’s time this bugger went the way of old yeller.

Usually a rebuild isn’t much of a hassle for someone like me. It’s a pain to be sure but the pay off at the end is a much leaner and meaner rig that runs everything faster than it did before. This time around however it also meant configuring my development environment again whilst also making sure that all my code didn’t suffer in the apparent partition failure. I’m glad to say that whilst it did kill a good couple hours I was otherwise planning to spend lazing about I have got everything functional again and no code was harmed in the exercise.

You might be wondering why the hell I’m bother to post this then since it’s so much of a non-event. Well for the most part it’s to satisfy that part of me that likes to blog every day (no matter how hard I try to quell him) but also it’s to make sure the whole thing is running again and that Google is aware that my site hasn’t completely disappeared. So for those of you who were expecting something more I’m deeply sorry, but until the new year comes along I’m not sure how much blogging I’m going to be doing. Let alone any well thought out pieces that I tend to hit at least a couple times a week ;)

Merry Christmas!

Just a quick post to send out seasons greetings to everyone who I won’t be able to see in person today. I trust you’re having a brilliant time wherever you are, enjoying the company of loved ones and indulging yourselves in the usual festive feasts. I know I’ll probably set for the next few days after 2 hearty family meals, I should probably skip breakfast just to make room.

So enjoy yourselves, take care and I’ll see you back here when I’ve recovered ;)

Slow and Steady, Windows Phone 7.

I’ll be honest I had to look over my past posts of Windows Phone 7 to figure out where I used to stand on Microsoft’s latest grab for the smartphone market. Initially I was sceptical, figuring that this was Microsoft’s extremely slow reaction to their competitors gnawing away at their market share. I acknowledged the fact that Microsoft has the power of numbers working for it with masses of developers poised to take advantage of a mobile platform but recognised the fact that if they were serious about the mobile space they’d be invested in it already. Finally I came to like the platform when Microsoft upped the ante with the default feature set, including features for free that their competitors had long been charging for. However after that initial glowing review I hadn’t heard a lot about the Windows Phone 7 had been a rousing retail success nor its dismal failure so I figured it was just going to fade off into obscurity, much like their Kin did before it.

Today however brought the first bit of news that I’d heard about the platform in a long time. Whilst there wasn’t a massive land rush to acquire Microsoft’s latest offering there was a respectable amount of sales:

Sales are ramping well as our reputation is growing for offering users a unique experience and are in line with our expectations – especially when compared to other new platform introductions. With a new platform you have to look at a couple of things, first of all customer satisfaction. As I mentioned before, we’ve seen great response on the complete mobile phone experience.

Another is phone manufacturer sales – phones being bought and stocked by mobile operators and retailers on their way to customers. We are pleased that phone manufacturers sold over 1.5 million phones in the first six weeks, which helps build customer momentum and retail presence.

We know we have tough competition, and this is a completely new product. We’re in the race – it’s not a sprint but we are certainly gaining momentum and we’re in it for the long run

Some quick maths will tell you that 1.5 million handsets in 6 weeks works out to roughly 36,000 handsets sold per day. Whilst this pales in comparison to Android’s 300,000 activations and is a drop in the bucket when compared to Apple’s 230,000¹ it’s still a decent number considering the giants that they’re going up against. Since they managed to release well before the holiday buying period it will be very interesting to see how their holiday sales figures turn out as that will be telling as to how much momentum this particular platform has.

Still though for any developer looking to develop for the mobile world Windows Phone 7 is probably the last platform on their list. Developing for Apple arguably has the best potential for revenue generation from direct sales with Android providing better results from ad based programs and both of them have audiences much larger than Microsoft’s 1.5 million loyal fans. Whilst the barrier to entry might be lower for a long time Microsoft developer anyone really serious about mobile development will take the time to learn a more popular platform. The time invested in learning a new platform is nothing compared to the number of people you’ll be able to reach by developing on something other than Windows Phone 7.

Yet again I find myself back on the fence, unable to say with conviction how I feel about Windows Phone 7. In reality it looks like a solid product and the relatively decent number of sales in its first month and a half of life is definitely promising. However it’s coming to the party about a year or two late with Apple and Google both providing very mature platforms with a large, established fan base. I’d still love it if the platform became popular as it would reduce the amount of work I’d have to do but the harsh reality is that even if it does happen it’s a long time away and they’ve got a long way to go before they’re matching the numbers that Google and Apple have enjoyed for so long.

¹It’s now estimated at up to 270,000 per day, but I couldn’t find a source that states that directly.

Fast Scrolling UITableView: Updates for iOS 4.2.

I’ll be honest and say that most of the programs I’ve built have never really been that resource intensive so optimising them for performance really hadn’t been much of a priority. Sure there were the occasional thing that I’d catch and try to improve, like when an early copy of Geon had a dropped shadow around the map that inexplicably made it run like a dog, but for the most part I’d just code them up and leave it at that. Coding for the iPhone and other resource poor systems however does not afford me such luxuries and performance tuning the app has taken up a considerable amount of my development time, but the pay offs have been quite great.

After getting my first shot at the Lobaco app up and running I noticed there was considerable slow down when scrolling through the main list of items. Since I’m a big fan of the official Twitter app I knew that it was possible to have quite smooth scrolling even when you had multiple images and gobs of text on the screen. As it turns out I wasn’t alone with this performance problem with UITableViews (the class used for that main list display) and the developers behind it posted up some code to demonstrate how they achieved such fast scrolling.

If you follow that link you’ll notice that that particular blog post is now over 2 years old, back when the iPhone 3G was still the top offering from Apple. Whilst the code given in that blog post still functions I ran into a couple of issues implementing it in the latest SDK (4.2). The first issue you’ll hit when trying to use this code is the initWithFrame function, which is used to create your cell, is now deprecated. Whilst it should still function I could not get my code to work until I made the following change in ABTableViewCell.m:

// Copyright (c) 2008 Loren Brichter
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
//  ABTableViewCell.m
//
//  Created by Loren Brichter
//  Copyright 2008 Loren Brichter. All rights reserved.
//

#import "ABTableViewCell.h"

@interface ABTableViewCellView : UIView
@end

@implementation ABTableViewCellView

- (void)drawRect:(CGRect)r
{
	[(ABTableViewCell *)[self superview] drawContentView:r];
}

@end

@implementation ABTableViewCell

/*- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier
{
    if(self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier])
	{
		contentView = [[ABTableViewCellView alloc] initWithFrame:CGRectZero];
		contentView.opaque = YES;
		[self addSubview:contentView];
		[contentView release];
    }
    return self;
}*/

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
	if(self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])
	{
		contentView = [[ABTableViewCellView alloc] initWithFrame:CGRectZero];
		contentView.opaque = YES;
		contentView.backgroundColor = [UIColor whiteColor];
		[self addSubview:contentView];
		[contentView release];
    }
    return self;
}

- (void)dealloc
{
	[super dealloc];
}

- (void)setFrame:(CGRect)f
{
	[super setFrame:f];
	CGRect b = [self bounds];
	b.size.height -= 1; // leave room for the seperator line
	[contentView setFrame:b];
}

- (void)setNeedsDisplay
{
	[super setNeedsDisplay];
	[contentView setNeedsDisplay];
}

- (void)drawContentView:(CGRect)r
{
	// subclasses should implement this
}

@end

The main change is to replace the old initWithFrame with the new initWithStyle. This also requires changing the super call to the UITableViewCell class we’re subclassing, but apart from that everything else remains the same. Once I had that problem out of the way my custom cells were now drawing properly and appeared to be scrolling much more smoothly than they were before. However I was noticing another strange issue with my cells, they seemed to be displaying data at random from my data array. Try as I might to find the solution to this problem I couldn’t, until went back to the fundamentals of the UITableView.

You see creating cells with a UITableView is a pretty expensive process, just as it is for any system when creating new objects. This is even more pronounced with the resource limitations of the iPhone and so the iOS SDK employs a simple trick to work around this. Instead of creating and deleting a new cell every time one is needed it will instead reuse a cell that’s no longer in use, I.E. one that’s scrolled off screen. Since the cell will usually have new data in it at this point when it comes back on screen it should redraw itself to reflect this. However it seems that the ABTableViewCell class wasn’t doing this and the only way I could get it to update the data was by clicking on the cell, which caused a refresh.

If you’re not using this class then you’ll probably never encounter this issue and I believe this is because of the way ABTableViewCell does it’s drawing. You see in order to get the performance improvement you’re basically bypassing the regular way of drawing the cell and doing it yourself. This has enormous performance benefits since you’re not doing any unnecessary drawing, but it appears that the UITableViewCell class doesn’t call the drawContentView function as part of its normal drawing routine anymore. Thankfully this can be solved with a one liner in your UITableView controller class by letting the cell know it needs to redraw itself with setNeedsDisplay:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";
	int nodeCount = [displayItems count];

    LobacoTableCell *cell = (LobacoTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        //cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
		cell = [[[LobacoTableCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell...

	if (nodeCount > 0)
	{
		Post *post = [displayItems objectAtIndex:indexPath.row];
		cell.post = post;
		if (!post.profileImage)
		{
			if (self.tableView.dragging == NO && self.tableView.decelerating == NO)
			{
				[self startImageDownload:post forIndexPath:indexPath];
			}

			cell.image = [UIImage imageNamed:@"Placeholder.png"];

		}
		else
		{
			cell.image = post.profileImage;
		}
	}
	[cell setNeedsDisplay];
    return cell;
}

I do this after I’ve done all the reconfiguration of the cell so that it’s drawn with all the correct information. The image code in this part will also trigger a redraw of the cell when it’s finished downloading the image (in this case the user’s profile picture) ensuring that it’s displayed immediately rather than when the drops out and comes back into view again. With all these fixes in place my new custom UITableViewCell works perfectly and the scrolling performance is glassy smooth.

All of the above issues I encountered after I upgraded my Xcode installation to iOS 4.2 and despite my intense Googling I couldn’t find any real solutions to these problems. If you’re a budding iPhone developer like me struggling to figure out why some things just aren’t working the way they should I hope this post gives you a little insight into what was going wrong and ultimately how to fix it. It’s these kinds of curious problems that frustrate the hell out of me when I’m in them but they’re always quite satisfying once you’ve managed to knock them over.

Procrastination Takes Many Forms.

I really can be my own worst enemy sometimes. It’s been almost a month since I got back from the USA and despite the best of intentions I haven’t really done that much work on Lobaco apart from a little work on the API and web UI. Whilst I was pretty sure I wasn’t going to hit the code hard immediately after touching back down in Australia I still thought that after maybe a week or two of lazing about the coding bug which had firmly bitten me before I left would take a hold once again, pushing me to build on the momentum I had set up. Sadly it wasn’t to be and instead I just resided myself to feeling guilty about what I should’ve been doing and pulling the meter tall weeds that had grown in our front yard.

Partly to blame is that sense of perspective I get whenever I take time away from a project to work on something else or to just have a break. Usually the first thing that pops into my head is “why the hell should I bother” and I’ll spend a good chunk of time focusing on the negative aspects of whatever I’m doing. After a while though I’ll just try to do a feel small things, a few quick wins to get me back into the mindset of getting things done. After that it’s usually pretty easy going (this usually takes about 2 weeks) until I hit a wall again or I feel like getting my weekends back for a while so I can relax and get my head back together. The last few iterations of this cycle are what lead to the 3 major revisions of what is now Lobaco.

This time however was different. After being back for 2 weeks and being firmly thrust back into the world that had barely changed since I had left (even though I expected it to be wildly different,  for some reason) I still really couldn’t get into coding without feeling like I should be doing something else. My usual routine of getting a couple quick wins with the API and web UI didn’t translate into jumping back onto my MacBook and smashing out some iPhone code. Instead I started wondering whether or not a native client was the way to go and the possibility of doing a web based client for the phone itself. I had been down this road before and ultimately found that whilst iPhone programming was a world away from I’d done before the progress I had made with only a couple weeks of effort was far more encouraging than the same amount of time spent trying to wrangle HTML5 and Javascript into something workable.

Then along came Sencha.

I was going through my 700+ post backlog of Techcrunch articles when I came across this one about Sencha, a web startup that just released their Touch framework which provides the basis for building native looking applications in HTML5 and Javascript. Thinking this might be my salvation to writing native clients for all handsets I quickly downloaded the framework and started hacking around to get something workable. I was able to get the example running in one weekend and made a few modifications but I didn’t get into the real meat of it until last Friday night. After managing to replicate the UI I had built in objective-c within the Sencha framework I uploaded it to my web server to see what it would look like on the iPhone and instantly I realised what was wrong.

This client was just an elaborate way of procrastinating.

Now whilst the client looked decent and didn’t take too much to set up it didn’t look anywhere near as good as my native app nor could it hold a candle to its performance. Sure my hack job probably ensured that the performance wasn’t as good as it could be but in comparison to the native client hack job I did it was pretty stunning. After coming to that realisation I booted up my MacBook to start getting acquainted with Xcode again and spent last weekend coding up some performance improvements¹ for it which I had put off before I left for the USA. I’m sure this won’t stop me from looking at going down that path in the future but I can at least rest easier now that I’m feeling the urge to program once again.

It’s been a weird learning experience for me since I’m usually pretty good at knowing when I’m procrastinating. Usually I have a good reason for it (like having 1 bit of work to do and not doing it since it’s not due for months) but this is the first time I caught myself doing something I thought was useful when really I was just making excuses for doing the work I knew needed to be done. With a good week of holidays coming up over the Christmas/New Year period this realisation couldn’t have come at a better time and I’m looking forward to making the most of my time off with the hope that the momentum will carry me on into the new year.

¹I’m going to do a big post about this hopefully tomorrow. I hit some really, really esoteric problems getting everything to work but I have and the results are, to put it bluntly, bloody amazing.

2 Years and 2 Days On: A Look Back at The Refined Geek.

I’ve never been one for making a big fuss about milestones on this blog, apart from that one time when I hit 100 posts (now well over 450) and unleashed Geon into the world. Indeed as the title of this post suggests I even managed to let the 2 year milestone slip by for 2 days before realising that I had been at this blogging thing for quite a while, nearly double the time of any job I’ve held in the past 6 years. So since I don’t have anything else interesting to post about today (more on that later) I thought I’d take some time to reflect on what this blog was, where it is and where I think this thing is going in the near future.

As anyone who’s made the journey into the archives section of this blog will tell you I initially started blogging as a knee jerk reaction to being roped into the No Clean Feed movement here in Australia. In all honesty I’ve never really been that much of a writer nor anyone who you would consider as a public face for something. Still my ego is large enough to support that idea so when my long time friend Hannah asked me to be the media representative for the Canberran branch I didn’t hesitate to say no. What followed was a brief stint in the public eye with me doing a couple radio interviews and doing a speech in the middle of Canberra. Thinking that this would lead onto bigger and better things I thought it would be time to get my online personality into shape and started this blog to chronicle my thoughts and misadventures whilst fighting against the Australian Internet Filter.

The name was something I thought up with a night of googling through dozens of possibilities before I found one that didn’t have any meaningful search results for the title. I always had the theme of something debonair but also wanted to keep true to my geeky/nerdy roots and “The Refined Geek” seemed to fit the bill. Funnily enough not too long after starting this blog and buying the domain name did I come across Refined Geek, another Australian based blogger who shares some of my passions but who’s writings are worlds away from what I write here. I still drop by there from time to time as he’s quite a good writer, preferring to post less often with much more well formed posts than my usual one post a day scatter gun approach.

I can’t remember exactly when it happened but I do remember making the commitment to writing at least one post a day sometime back in the beginning of 2009. Mostly it was because I felt this blog was languishing in the dark recesses of the Internet, garnering only one view a day for the first 3 months or so. After integrating my blog with Twitter and Facebook that increased traffic ten fold but my presence outside my social circle was still quite minimal. Still as I developed a large backlog of posts on varying subjects the traffic started to climb, peaking at about 20 visits a day by the end of 2009. 2010 however really has been this blog’s year with 80~100 people visiting this blog per day looking for all sorts of weird and wonderful things. I’m still surprised to see some of my old articles popping up in the stats, it always brings a smile to my face.

Initially I started out with the idea that this would be my professional presence on the web, demonstrating my professionalism and expertise on certain subjects. However, as most amateur bloggers find, the stories that do well are often those that come with a personal aspect to them and I always found those the easiest to write. Over time I let go of the idea that people would come here like they do for the other big blogs, instead preferring to just write about what I’m passionate about and seeing where the chips fall. Most recently this has taken the form of not trying to force out a post every day (although my OCD keeps bugging me to) instead hoping that I can just let the topics come to me and write when the moment strikes. Most recently I took to blogging my exploits through the USA which was an interesting diversion away from the usual game/tech/space focus that I usually take. I think that was the final nail in the “this isn’t my personal blog” idea’s coffin (all the other nails were put in a long time ago, however) and I’ve wholeheartedly resigned myself to not thinking about The Refined Geek in that way again.

As for the future of this blog? I’m not really sure where I want to go with it. Spending an hour or two here every day writing a post is still feels like part of my morning routine so there’s no doubt that I’ll be continuing to post here for the foreseeable future. However there have been many times when I’ve considered moving it to a better domain (I happen to own www.davidklemke.com, which would be very suitable), revamping the site with a new theme or even starting anew with a better focus but with all my other exploits at the moment I can’t see many of them happening soon. So for those long term readers of mine can rest easy in the fact that I’m not going to start changing things now that I’ve hit the terrible twos but with change coming my way in the real world soon I can see this blog shifting in unison as it has done so over the past 2 years. Whether that’s anything I’ve just predicted is anyone’s guess, but I’m not one to be comfortable with the status quo.

I mean really, when was the last time you saw me write about finance? ;)

Were Casual Games Always This Good?

As a rule I used to avoid any games that were labelled “casual” as they were usually aimed at the bored housewife, cube dwellers on lunch break or those who wouldn’t identify themselves as gamers. Additionally they tended to be of very low value game wise deriving their replayability from pseudo-random puzzle generation or simply luck based game mechanics. Still when my copy of Half Life 2 came with a free (albeit gimped) copy of Peggle I decided I might as well give it a go, I didn’t really have anything to lose. I must say it was pretty enjoyable despite the short length but my stigma about the casual game scene remained in tack and I left them to whom they were built for.

Fast forward and the game has changed significantly, so to speak. Whilst just 3 years ago it was nigh impossible for a lone developer to build, distribute and profit off a game they built today there are a multitude of platforms that enable them to do just that. For the most part games made by independent developers would fall into the casual genre (although there are many notable exceptions to this), usually due to the fact they don’t have the time or resources to develop anything more in depth. What that also means is that the indie/casual space has seen an explosion of titles over the past couple years giving those typically non-gamer gamers a whole wealth of choice that they just didn’t have previously. For someone like myself who used to shun the genre I’ve found myself playing quite a few more examples from this fledgling genre and I have to say I’ve been surprised with how enthralling they’ve become.

Whilst I snoozed on the Humble Indie Bundle I was intrigued by the idea and kept my eye peeled for any other deals like it that might cross my path in the future. After buying a couple indie bundles on Steam (mostly for a single game out of the lot) I eventually came across the Bundle of Mega Love from Cipher Prime Studios which I snapped up since I had been meaning to buy at least 2 of the games on the list already (World of Goo and Captain Forever) but I figured that the others would be worth the price of admission, and boy were they ever.

The first of the unknown lot that I got into was Eufloria a sort of colony simulator where you direct your little flying “seeds” to inhabit other worlds, turn into trees and fight other colonies vying for the same habitats. I think I lost 2 hours in it initially, losing myself in the tranquil music and muted colour palette. What kept bringing me back was that most levels could be done in 10~20 minutes but there was still a real sense of completion afterwards, something I had found lacking in many of the other casual games I had played previously. Flush with success from playing one of the unknown games I set about looking for another and I eventually settled on Auditorium, an online light and sound puzzle game.

The concept of Auditorium is pretty simple, a single source of particles that when passed through the meters starts a music loop playing. You’re given various implements which can redirect the stream in certain ways and there can be a multitude of colours in one level. Since each of the meters plays a different loop the full song develops right in front of you as the puzzle progresses, hopefully culminating in your success. It’s absolutely addictive and the possibilities of emergent game play are quite spectacular. There have been many times when I’ve managed to complete a level in a completely random way by some random interaction between the modifiers that would not work if any one of the pieces were a fraction away from their positions. It has the added bonus of really annoying anyone who isn’t playing it, especially if you’re stuck on a single level for more than 30 minutes (ask my wife about it ;)).

I guess it just goes to show how powerful these platforms are at enabling those with a desire to create to have that work made available for the world at large. There’s some amazing stuff coming out of independent studios these days and in a world where the major titles will set you back $100 or more here in Australia the mere pittance that they ask for their wares is far beyond the value that they deliver. You can then imagine my excitement when I learned that one of my good friends started up his own independent games house, TOME Studios, and is currently working on his first title Lost Company. Whilst I might not have made the cut for an alpha tester I’ll more than happily shell out for a copy of the game once it’s released just so that he and people like him can keep doing the great work that’s kept me away from the 2 other major titles I have sitting by my desk, waiting to be finished.

SpaceX’s Falcon 9 Creates Orbital Dragon and History Once Again.

6 months ago I wrote about SpaceX’s historic flight of their Falcon 9 rocket and how much it meant to us space romantics. Their tentative schedule had me all aflutter with the possibility of seeing not one, but two more flights of their flagship rocket within this year. It was looking entirely possible too as just on a month later they were already building the next rocket and there was even a hint that I might get to see it take off on my trip through America. Whilst I may not have gotten to see the launch for myself SpaceX is not one to disappoint with them launching their second Falcon 9 rocket earlier this morning carrying a fully fledged version of their crew and cargo capsule, the Dragon.

YouTube Preview Image

The launch itself didn’t go by without a hitch though with some bad telemetry data causing the initial launch to be scrubbed and rescheduled for about an hour later. However once they were past that minor hurdle they were able to continue with launch preparations and launch without incident. This is testament to their ability to rapidly troubleshoot and resolve problems that would likely cost anyone else at least a day to recover from. Elon Musk is definitely onto something when he thought about running a launcher company as a startup, rather than a traditional organisation.

The mission profile was a relatively simple one although it represents a giant leap forward in capability for SpaceX. The previous launch of the Falcon 9 carried with it a Dragon Spacecraft Qualification Unit, basically just a shell of a full Dragon capsule designed to be little more than a weight on top of the Falcon 9 rocket. That capsule lacked the ability to separate from the second stage of the Falcon 9 it was attached to and was also designed to burn up on re-entry. The payload for this mission however was a fully functional Dragon capsule with the full suite of avionics, support systems and the ability to return to earth from orbit. It was also carrying a small fleet of government owned CubeSats that were launched shortly after they achieved orbit. Approximately 3 hours after the Falcon 9′s launch the Dragon capsule returned safely to earth, splashing down in the Pacific Ocean.

I, along with every other space nut out there, are incredibly excited about what this means for the future of space. Not only has SpaceX managed to successfully launch a brand new rocket twice in 6 months they’ve done so with an almost flawless record. The pace at which they’re progressing is really quite astonishing considering how small they are compared to those who’ve achieved the same goals previously. The team that Elon Musk has assembled really deserves all the credit that they get and I now I wait with baited breath at their next launch as that will be the first private spacecraft ever to visit the International Space Station.

It’s really quite exciting to see progress like this in an area that was once considered only accessible by the world’s superpower governments. Whilst we’re still a long, long way from such technology becoming an everyday part of our lives like commercial air travel has the progress that SpaceX has made shows that the current cost to orbit can and will come down over time. This also gives NASA the opportunity to stop focusing on the more rudimentary aspects of flight that SpaceX is now capable of handling, leaving them to return to what they were once known best for: pushing the envelope of what the human race is capable of in space. So whilst we won’t be seeing another Falcon 9 launch this year as I had hoped all those months ago this perfect flight of the first fully functional Dragon capsule signals that the future of space travel for us humans is not just bright, it’s positively blinding.

014

MacBook Pro Review: It’s Apple All Over.

I’ve never been that much of a fan of laptops mostly for 2 reasons. The first is that it’s not particularly feasible to build one yourself should have the desire to do so and for someone who’s hand built every PC he’s ever owned this was a bit of a sticking point. The second was that I never really had a use for an on the go computer that lacked the power of my home PC, apart from those times beloved LAN parties where I’d lament hauling the heft of my PC around. Still I’ve been the owner of several of these devices for various reasons, most of them work related unfortunately,  so it’s not like I haven’t had experience with this platform. However I found myself in a rather peculiar situation where I was in need of an Apple computer and a portable device for travelling. Whilst I didn’t rush out and buy one right away it did finally come time for me to bite the bullet and purchase an Apple product and thanks to my contracting company’s financial arrangements the 15″ Macbook Pro was the same cost as Mac Mini with all the required trimmings. So I ordered myself one and just on a week later it arrived at my door in all it’s Apple splendour¹.

As always Apple is the master of utilitarian packaging with the box containing nothing more than what’s required to use the machine. Honestly after being showered with with miscellanea from all the computer bits and pieces I’ve bought for machines it’s always a bit of a shock just how little Apple includes with their products, even the really expensive ones. Still apart from the adapters and possibly the free games I’ve never really used most of those things, but it’s still nice to be lavished with “freebies” when you’re shelling out this amount cash. Hell even my $800 Gigabyte T1028 came with a free carry case.

The laptop itself is very easy on the eyes with Apple’s distinctive industrial minimalist design philosophy distilling away any unnecessary aspect. Even with the entire main body being machined out of a single piece of aluminium it still has a decent heft to it weighing in at about 2.5KG. The keyboard (whilst it takes a little getting used to if you’re used to more traditional laptop keyboards) is well built, backlit illuminated and has a good feel about it. I had no problem bashing out 1000s of words on it over the course of the past month and have yet to meet any sticky or unresponsive keys. The screen is quite nice and whilst I was initially going to go for the matt screen my game developer friend convinced me otherwise. It has given me some trouble in high light situations but it hasn’t been as bad as I had thought it would be. Overall the Macbook Pro gives a very solid first impression.

However it’s not all roses with the new Macbook pro. The first thing I noticed was the power brick. Now whilst I like the magsafe power connection (saved me a couple times from dragging the brick along the ground) the power brick itself is made in a way that you can’t use standard figure 8 cables with it thanks to an in the way connector. It’s mostly an aesthetics thing as the supplied connectors (a direct wall plug and 2m cable) serve to complete the power brick’s shape. Similarly there’s a distinct lack of interconnectivity ports with only the bare minimum being provided. Sure it’s adequate for the most part but there have been several times when I’ve wanted to plug in more than 2 USB devices (thumbdrive, iPhone, camera) and had to store things temporarily on the hard drive in order to get what I want done. Still both of these are minor complaints compared to what I consider the biggest flaw of them all: the aluminium body.

For the first month or so it’s life my Macbook Pro sat on top of my regular PC where I’d remote into it to get any work done. There were only a few times when I actually used it as a laptop and never for extended periods of time. However when travelling there were many times I’d be in front of it for an hour or so and that’s when I started to notice just how sharp the edges are on the bottom half of this laptop. After a while of using it I noticed just how much they were digging into my arms and any further use just made it worse. The only solution I’ve found is to use it on your lap with the keyboard angled down about 45 degrees so that my arms don’t touch it. This also brings with it the problem of it heating up your nether regions to ungodly temperatures making a cushion or laptop stand mandatory.

On the specification front I’ll admit that I was expecting a lot when I bought the Macbook, considering I shelled out for the fastest 15″ model with a 2.66 i7 and a NVIDIA GeForce GT 330M. Being as I received this laptop during the height of my Starcraft 2 addiction I decided I’d install said game on it to give the graphics card hardware a workout. The game plays buttery smooth on my nearly 2 year old main PC so I had thought it would be cake for my shiny new Macbook. Unfortunately at the same settings the framerates I was getting was almost half of that of my aging rig² even with the newest drivers from NVIDIA. A few tweaks later had it running better (definitely playable) but it still paled in comparison to the machine it sat atop of.  I had also copied across my World of Warcraft installation but since my account is currently inactive I’ve yet to give that a go but I’d hazard a guess that it would be quite playable.

Battery life is actually quite astounding, especially when you’re using OS X. With mild usage I was easily able to get 6~7 hours on a single charge and even with 1080p video playing I was still able to eek out just under 4 hours, enough for 2 movies on long flights cross country. Strangely enough even a base configuration of Windows with all the Bootcamp drivers struggled to get close to half that, although I think that’s related to Windows not being able to switch to the low powered graphics as the native OS X does.

The Macbook Pro is everything I’ve come to expect from Apple. It’s well designed, minimalist and over all expensive when compared to similar offerings from other companies. With size, weight and battery life being  critical factors for many it unquestionably excels in these areas. However it is marred by it’s high price, underwhelming performance and lack of interconnectivity options. Still the trifecta small size, comparatively light weight and uncanny battery life do make the laptop suitable for a wide range of people and I can’t deny the build quality that’s gone into this Macbook Pro. So if you’ve got the cash to burn or can swing a finance deal like I did the Macbook Pro will do you well, just don’t expect it to perform on par with it’s similarly priced cousins.

¹Just in case anyone was wondering why I’m doing the laptop review separate to the operating system review it’s because they’re 2 very distinct products and warrant being investigated on their own merits. Plus the Macbook can run Windows so there’s no real reason to lump it in with OS X.

²It’s specs are Core 2 Duo E8400, 4GB RAM and a Radeon 4870 just so you know :)