Melbourne Formula 1 Grand Prix

Last week my father and I went to the first round of the  2008 Formula 1 Grand Prix season in Melbourne.  I had a fantastic time watching the race and checking out all the off track activities. There was historic and modern car exhibitions  in the middle paddock which had cars such as the Bugatti Veyron, old Brabbham cars and a lot of others.

As they are planning to move the Formula 1 from Melbourne to another location, it was a great experience to see it live. I think the last race at Melbourne will be in 2010, and I’d definitely recommend it to anyone who follows F1, but hasn’t been to a race

I have posted my pictures to flickr, but you can also check some of the images out below.

jQuery fadeIn/fadeOut IE cleartype glitch

While using the jQuery  javascript library today at work, I noticed a glitch under IE7. When fading a html node with the .fadeIn() and .fadeOut() functions in jQuery, IE drops the windows Cleartype rendering; which results in very ugly text. This problem appears to be very common, but no one has a nice solution for the problem.

The most common way to solve this problem is by removing the filter CSS attribute. In normal javascript, it would look like this:

document.getElementById('node').style.removeAttribute('filter');

and in jQuery, it would look like this:

$('#node').fadeOut('slow', function() {
   this.style.removeAttribute('filter');
});

This means that every single time we want to fade an element, we need to remove the filter attribute, which makes our code look messy.

A simple, more elegant solution would be to wrap the .fadeIn() and .fadeOut() functions with a custom function via the plugin interface of jQuery. The code would be exactly the same, but instead of directly calling the fade functions, we call the wrapper. Like so:

$('#node').customFadeOut('slow', function() {
   //no more fiddling with attributes here
});

So, how do you get this working? Just include the following code after you include the jQuery library for the added functionality.

(function($) {
	$.fn.customFadeIn = function(speed, callback) {
		$(this).fadeIn(speed, function() {
			if(jQuery.browser.msie)
				$(this).get(0).style.removeAttribute('filter');
			if(callback != undefined)
				callback();
		});
	};
	$.fn.customFadeOut = function(speed, callback) {
		$(this).fadeOut(speed, function() {
			if(jQuery.browser.msie)
				$(this).get(0).style.removeAttribute('filter');
			if(callback != undefined)
				callback();
		});
	};
})(jQuery);

I have been informed by Steve Reynolds that the US Whitehouse Website is using some of the JS documented on this blog post. I would just like to say thanks to everyone who contributed in the comments. :)

Google Adsense Partner Meeting

Google AdsenseAs an employee of a high profile site, I was invited by my boss to attend the Google Adsense Partner Meeting at the Googleplex in Sydney. Unfortunately I can’t really talk about much that was talked about as we were all required to sign NDAs on arrival.

Overall, the day was a huge success. Very interesting developments within the world of Google that we can all look forward to (You didn’t need to go to know that already!). The networking was fantastic as there were a lot of other high profile sites invited too, such as drugs.com, ski.com.au, hotel.com.au just to name a few.

Continue reading

APML2JSON Script/Service

This script takes an APML feed, and parses it into valid APML-JSON based on the APML-JSON spec on the APML wiki. Instead of manually parsing the APML into JSON, I have used the XSLT file attached to the aforementioned spec page along with xsltproc to generate the JSON data. The idea behind this script is based on John Resig’s RSS2JSON script.At the moment the script is pretty hacky for release, so I have provided a REST interface that can be accessed via a GET request.

A request to the interface would take the following form:
http://bmn.name/examples/apml2json/?url=URL&callback=CALLBACK

The callback parameter is optional. If specified, the resulting JSON is wrapped in the callback for easy parsing at the client end, otherwise the resulting JS Object is assigned to a variable which can be accessed via JS. The results from the call are cached hourly to reduce the load on the server. :)

Example Interface call: http://bmn.name/examples/apml2json/?
url=http://blog.bmn.name/index.php?apml=apml&callback=parseFeed

For more information on how to use the resulting JS, head over to John’s RSS2JSON page as he provides some sample JS.

Blu-ray PS3 stuttering playback woes… Solved!

This blog post is for anyone who owns a PS3 and has discovered that *some* Blu-ray discs have stuttering/dropped frames playback.

I purchased a Playstation 3 back in April 2007, and received a free copy of Casino Royale on Blu-ray as part of a PS3 promotion. Needless to say, I opened the PS3 and stuck the blu-ray disc in to the drive to see what all the blu-ray fuss was about. The movie looked fantastic, even on my standard def TV. It looked even better on my brothers HDTV. Now you may be wondering why I’m saying this. Well, as I later found out, this initial experience was not indicative of the PS3′s blu-ray performance on every blu-ray disc.

Fast-forward ahead 8 months.

I decided to go halves in a brand new Samsung Full HDTV (1080p) for christmas. The picture quality of this baby is phenomenal on both HD FTA and PS3. As a present to myself, I went to JB-HIFI and purchased 3 blu-ray movies to try on the brand new tv. I bought Kingdom of Heaven, Gone in 60 Seconds and Behind Enemy Lines; all of which are fantastic movies. I tried out Behind Enemy Lines, and it looked spectacular. I then tried Kingdom of Heaven and had a similar reaction. Then, as you would have guessed, I tried Gone in 60 Seconds…

Arrrgghhhh! What the hell did they do to make this movie so painful to watch? The movie started out fine, but after about 40 seconds, the video started to stutter. It appeared as though video frames were being dropped as the audio wasn’t affected.

I continued to watch once the stuttering had stopped to see if it was a once off. But I was disappointed to find out that it continued to do it every 1 minute or so for about 10 seconds. I became very frustrated as blu-ray discs aren’t cheap. So I went back to JB-HIFI and swapped the disc for another copy of Gone in 60 Seconds so I could work out whether it was a disc problem or a PS3 problem.

I slid the disc into the console and held my breath…

Right on queue, it started to stutter. Argh! At this point I was very angry. I decided to have a hunt around in the BD/DVD settings section of the PS3. One option I found seemed like it fit the bill.

“BD 1080p 24Hz Output (HDMI) – Sets the playback method for BDs recorded at 24Hz (frames/second)”

By default this option is set to ‘Automatic’, so I decided to fiddle with this setting and set it to ‘Off’. I started the blu-ray disc up again and held my breath…

40 seconds passed…. 50 seconds passed… 5 minutes passed…

Nothing! Not a single stutter or anything! The problem was fixed. There is nothing on the blu-ray disc cover to suggest that the movie is in 24fps, so I guess its trial and error for each disc. But at least you now know how to fix the problem!

I’d like to hear from other people who have had the same problem.

EDIT: I have found a few resources on the net of other people experiencing the same problem, so if you wish to know the exact reason for this stuttering – read this thread.

Photography… missing it badly

Over the last few weeks, I have been spending a larger than usual portion of my time browsing Flickr and other photography websites as a change from programming. I had forgotten how much I love going out with my 35mm Canon EOS SLR and spending hours composing photos. I am a big fan of traditional photography and refuse to use DSLR camera’s for photography as I feel photographers no longer spend the time composing the photo, but rather, snap a huge number of photos and pick the best one.

Expect to see more blog posts about photography and snaps I take.

In the meantime, here is a fantastic photo I found browsing Flickr. It is entitled ‘Nightdrive’ and is taken by c.zwerg in Tyrol. Check out the photo’s Flickr page here.

Nightdrive

Barcamp Brisbane

I attended Barcamp Brisbane today in East Brisbane. For those of you who don’t know what Barcamp is, it is “… an ad-hoc unconference born from the desire for people to share and learn in an open environment. It is an intense event with discussions, demos and interaction from attendees.”

Barcamp Brisbane

The turnout was fairly good, roughly 40 people there in total. The topics of the speeches didn’t really appeal to me overly, but I found them interesting nonetheless. They ranged from, writing unit tested code, open ID and its benefits, web standards, user interface design/experience and a few other topics I missed. Overall, the speeches were presented well, some of the presenters were a bit nervous and the speeches a tad under-prepared, but I know that speaking in-front of people can be a very daunting task.

If one word could sum up the general theme of the day for me though, it would be ‘startup’. Most discussions after presentations and during lunch sounded very startupish. Being in a startup at the moment, I found this very interesting as there are a large number of other likeminded people out there who want a piece of the web2.0 pie. But it got me thinking, we have a room full of able techies with a massive wealth of knowledge all itching to get into startup mode, but no one to harness the opportunity that they could potentially bring from a technical perspective. Are all these people going to waste because they aren’t business minded and have a hard time thinking of ideas and bringing them to market?

The problem for the techies is that in order to succeed and become a part of a startup, they need someone to take care of the financials and the marketing. Being a programmer myself, I find it unbelievably boring having to deal with financials and marketing. I would just prefer to do what I do as it interests me the most. I know that most programmers feel the same way, but don’t have a means of finding the other 2 thirds of the equation for an effective startup. Where do techies find the other 2/3?

It occurred to me that the ideal meeting for techies would be to place them in a room full of business people who have awesome ideas, but don’t know any techies to help get the idea off the ground (and believe me, there are a lot of people with really great ideas in this boat). So why not run an event where we combine, for example, the Youth Symposium of Brisbane and BarCamp Brisbane together. This way we are putting the people with the technical knowhow alongside people with great ideas. It would provide a great networking opportunity, and potentially a lot of jobs for people wanting to be in a startup.

As for the event itself, I would in-visage the first hour being a mingle of all people, followed by a few seminars targeted at different aspects of running a startup, including financials, marketing, development and bringing the product to market. The techies could learn about the ideal way of developing for a startup (ie, Agile/waterfall/XP), and the business people would learn about what running a start up is all about. For example, what are the pitfalls of running a startup? How do you secure funding during the later stages of the product development? What are the legal issues surrounding IP? And many more questions a lot of startups face during the initial phases of setup.

I’m sure an idea like this already exists in the world somewhere, maybe even in Australia. If it doesn’t then why not?

Up and Running

Well, it was a long time ago that I purchased this domain, and I’m finally making use of it.

I have spent the last 8 months procrastinating from writing my blog software, and decided it wasn’t going to happen any time soon. I then decided to install wordpress, and write my own theme as it was a quick means of getting up and running.

And here we are! This blog will contain little snippets of information I find interesting around the web, along with bugs I encounter during my daily programming tasks.

This website isn’t complete yet, but it is 90% functional.