Browser JavaScript Performance Shootout

Intel Core 2 Duo T9300 @ 2.50GHz, 4GB DDR2-667, NVIDIA GeForce 8400M GS
Windows 7 Ultimate x64 RTM January 2011 Updates
x86 Browsers, No Add-ons, No Plugins, Blank Profiles
Idle CPU, Browsers tested individually, Browsers re-opened after each run of a test

Mozilla Firefox 4.0 Beta 10, Mozilla Firefox 3.6.12, Opera 11.01, Google Chrome 8.0.552.237, Google Chrome 10.0.651.0, Microsoft Internet Explorer 8.0.7600.16385, Microsoft Internet Explorer 9.0.8023.6000, Apple Safari 5.0.3 (7533.19.4), Apple Safari 5.0.3 (WebKit r76750)

SunSpider

Kraken

V8

SlickSpeed

The Numbers

The point? Chrome is fast. Firefox 4 ISN’T slow. IE9 is actually promising.

,

Google Instant Sucks!

It’s true. It really does. It’s flawed. I like the functionality but part of the implementation is frustrating. Let’s face it, when I saw it for the first time I was like OMGWTFBBQ, but now, not so much.

Going Back

This one’s a simple matter of placing focus in the Search Bar. Often I find myself browsing a site, searching for a keyword, visiting a search result then going back to the site I was originally visiting. For example:

  1. Browse site A
  2. Search for “test test”
  3. Go to first result
  4. Go back to “test test”
  5. Go back to site A

This now becomes a nuisance with Google Instant. As soon as you go back from a search result you are focused into the search query box. You need to tab out or click the back button to actually go back to the page before your search results. Often you just end up deleting a character in your query.

Auto Completion

This is just silly. I thought the whole reason of Google Instant is to save time. Often Google’s prediction is pretty damn good. Now I find myself typing part of the search query (because Google already predicted it) and pressing Enter! Instead I find that I’ve ended up searching for my partial search query rather than the prediction. For example, searching for “google maps”:

  1. Type “google m”
  2. Press Enter
  3. Google Mobile?! BUT YOU AUTO COMPLETED GOOGLE MAPS. WTF?!

Instead, pressing Enter should use the autocompleted result (instead of me having to press Right Arrow THEN Enter). If you want to search for the query “google m” you press Escape. OR the other way around…Escape hides the Google Instant box and keeps it’s current prediction state and Enter searches for your incomplete query. Either solution requires just one button press instead of two.

I guess you could ask…why am I pressing Enter at all? If I type “google m” it shows me the results for the predicted text. Well, two reasons: a) I’m too damn used to pressing Enter after my query, and b) I want to get rid of the gigantic Google Instant box that hides at least 2 search results!

Take Me There

Complementing my previous problem (sort of). There NEEDS to be a keyboard shortcut to take me to a result. Be it the first result or result X on the page. So I could:

  1. Type “google m”
  2. Press keyboard shortcut to take me to first result

I propose ALT + x (x being the search result number). Time saving? I think so.

Browser Integration

Google Instant needs browser integration ASAP. No doubt Chrome will have some sort of implementation….but I don’t use Chrome, I use Firefox. A possible implementation? Well I’m glad you asked. Pretty simple:

Typing into the Firefox Search Box brings up a new tab with Google Instant results. Typing into the search box works exactly the same way as the Google Instant box….oh and it should have support for choosing a search result with keyboard shortcuts too :P

DOM Storage

Initially, Google Instant hated me. When it launched, I simply could not get it to work with Firefox despite disabling all extensions (Safe Mode), clearing cache and cookies! It turns out Google Instant uses DOM Storage. If you happened to use a Firefox extension named BetterPrivacy (which is pretty popular!) you ended up with a broken Google page. Even if you disabled the extension, you’d still have the problem since the extension is simply a frontend for changing a flag in about:config. Either way, why on earth does Google Instant need to use DOM Storage? There’s probably a good reason for this, but surely if DOM Storage fails they could revert to Cookies…or something.

Anyway, for those having this issue:

Error: Permission denied for <https://www.google.com> to get property Window.getComputedStyle from <http://www.google.com.au>.
Error: uncaught exception: [Exception... "Security error"  code: "1000" nsresult: "0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)"  location: "http://www.google.com/extern_js/f/CgJlbiswRTgBLCswWjgALCswDjgBLCswFzgHLCswJzgELCswPDgALCswUTgALCswWTgOLCswCjh_QC8sKzAWOB0sKzAZOCAsKzAhOD9AASwrMCU4z4gBLCswKjgLLCswKzgRLCswNTgELCswQDgTLCswQTgFLCswTjgGLCswVDgBLCswYzgALCswHThXLCswXDgXLCswGDgFLCswJjgOLIACGZACG/Veq5STkSvqE.js Line: 109"]

You can fix it by:

  1. Going to “about:config” in your Firefox address bar
  2. Search for “dom.storage.enabled” and set it to true
  3. Huzzah. Google Instant.

International

Why the hell can’t Google roll out Instant to international domains at the same time? I want Australian results! There is no excuse for this.

, ,

iOS4 Multitasking: Developer’s Hell

I finally got around to installing iOS4, so I decided I’d go ahead and investigate what it takes to update the Fresh app (streaming radio) to support multitasking. Currently, my conclusion is that implementing ANY of the multitasking APIs is 110% hell unless you’re starting from scratch.

First of all, your application has to play nice while it’s sitting in the background. This means that you’re basically required to implement a whole lot of “if backgrounded” checks, unless you want to soak up the battery. This involves stopping unnecessary timers, updating the UI when the application comes back to the foreground (rather than per a specific event), and saving non-critical alerts for when the user pops back into the application. This basically requires a crapton of refactoring…and we all love how that introduces bugs. If you have any sort of complicated app, you’ll be having to manage state saving so that fast app switching works nicely. Oh, and not to mention that iOS never guarantees that your application stays backgrounded. It can be killed depending on resource usage, available memory or even just idle time. Every task (other than a few specific exceptions) is time limited, so you are constantly having to check and request more time for your task.

Now, this particular application is meant to take advantage of the background audio multitasking API. Now, as an aside, Apple does not provide any “simple” API to stream audio. What they provide is a primitive and generic audio buffer/queue that suits both local files and network streams. Basically, this means that if you want to stream audio over the network, you have to implement the protocol, manually send the requests to get data (via HTTP for example), then feed that data into a buffer (where you have to handle the size of incoming data vs. the size of the buffer), THEN…play the audio from the buffer or handle any errors that occurred along the way. Now, in any half decent modern API, surely, you’d have a perfected version of the algorithm where you could simply plug in a URL and instruct a magical black box to play it. But alas no, each developer is to implement the over complicated, primitive audio queue… just for a streaming radio application. Now combine that with the following multitasking API, and you’re in developer hell.

One of the official pages on backgrounding is nearly impossible to find on the Apple site, so here it is: http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html Now, if you look closely, you’ll see that most sections are detailed nicely….except background audio, fantastic. So, taking a quick look at that section reveals that if you simply “flag” your application as one that streams audio, you’re good to go. Hooray right? Well, sort of, not really, no.

Hurdle 1: Hooking into iPod controls

Surprisingly, this is the EASIEST part of implementing background audio. It seems to “just work” as long as you have fairly simple start/stop/pause methods for your radio streamer. One gotcha is that state changes can now take place from both your play/stop button and the iPod controls… so, basically you should be using some sort of event system for state changes and to reupdate the UI whenever your app hits the foregound again.

Hurdle 2: Interruptions

Interruptions have existed since OS2. They cause your music to stop, usually when someone rings. However, now your application has to act more like the iPod application…except you can’t! Unlike the iPod application, which automatically restarts after you finish your call, the only way your application can automatically restart it’s stream is if the user brings it back to the foreground. Not only that, I’ve found that interruption events are very inconsistent. Sometimes they fire simultaneously with the interruption, sometimes they won’t fire until you bring the application to the foreground. On the times that they don’t fire with the interruption, I find that some sort of crazy auto deallocation of the streamer occurs which I can only fix with a terrible workaround. I am yet to find the actual cause of this.

Hurdle 3: iPhone Simulator

It sucks. Testing background audio with it is impossible! Even in the GM build, there is a bug that mutes all sound from your application when it is backgrounded. This makes it rather difficult to tell whether or not your application IS ACTUALLY SITTING IN THE BACKGROUND.

Hurdle 4: You’re free to do whatever you want…except when you need do something

So, as explained before, if you flag your application for streaming audio, your application can go ahead and play audio and do what it needs to do without any particular time limit or suspended state. Cool! Sort of like a free pass to do whatever the hell I want, right? Wrong. There’s a HUGE exception here: “if your application stops playing audio while in the background, your application is suspended.” Wow, that’s fantastic. So let me get this right…if my STREAMING AUDIO APPLICATION happens to need to BUFFER (i.e. STOP PLAYING AUDIO) while on a dodgy cellular connection, my application is essentially…fucked. Yes, that’s right. If you have a little bit of a network hiccup, and need to buffer, the user will need to jump back into the application to restart the audio stream! Not even the iPod controls (which are meant for external use) allow you restart the stream. I haven’t yet found a fix for this yet, but I’m assuming I’m going to have to go back to that mindfuck of a primitive audio queue to fill it with some sort of dummy audio while it buffers, so that iOS doesn’t fucking suspend my application in the middle of playing music. Doesn’t this found like fun?

Hurdle 5:Backwards Compatibility

Finally, as always, you need to aim for backwards compatibility. Apple claims to have completely culled OS2.x, but let’s face it, there are still 1st Generation iPod Touch users that DIDN’T pay the iOS3/4 upgrade tax, that want to use apps. You have to, at a minimum, ensure your application works on OS3 devices, which means making sure that some method calls, that are iOS4 specific, actually exist. Then using the simulator to test………. /facepalm.

FML.

, , ,

iPad: The Verdict

Originally I intended to buy a netbook for overseas travel. After searching through an endless amount of models there was nothing I saw that has decent specs and a long battery life.

Apple announced the iPad… At first I figured it’d be a useless heap of junk, but after thinking about it for a while, it seemed like a logical netbook replacement. So, I bought one. A 64GB WiFi+3G one…with accessories. Here’s the review.

The Hardware

You can tell the iPad is a first generation Apple device. The screen isn’t 16:9, it has no front facing camera, let alone any camera. I’ve also found that the iPad has only 256MB of RAM. It’s essentially a giant iPhone. However, the only significant flaw of these, is the RAM. I’m still experimenting but even without backgrounding apps, things start to get a little low and laggy. Maybe I just need another factory restore. On the upside, it’s pretty fast, the screen is bright, it’s perfectly sized and the battery life is fantastic.

Another flaw is USB charging. The iPad requires a full 10W of power to charge and unfortunately most USB ports don’t supply that much power. Only ports that implement a new USB standard can charge the iPad (currently only new i7/i5 Macs). This sucks. It makes it impossible to keep your iPad fully charged and syncable at the same time. The only solution is the Wi-Fi Sync jailbreak app (which is fantastic, by the way) so that you can connect your iPad via the power connector and still sync. Without the jailbreak, this would be a show stopper for me as I intended to use the iPad in it’s dock next to my current monitors. Thank god for jailbreaking.

The Accessories

I bought the case, dock and camera kit. You could say I went all out.

The case is great, it adds a tilt that is great for movie watching and typing…but you can’t dock the iPad in it’s case. Not a huge deal, but it’s pretty hard to pull the iPad out of the case once it’s in it. The dock works okay too, but it has no weight, so you have to hold down the dock to pull the iPad out. It would be nice if the dock included some sort of TV out or way to connect both power and USB, but alas it doesn’t…but it does sit nicely next to my other screens. I haven’t tested the camera kit yet, but I bought this since there have been reports of connecting other devices to the iPad. As jailbreaking evolves, this seems like logical device to toy around with other peripherals with the iPad.

The Operating System

iPhone OS 3.2 seems like it was rushed. It works, but a significant amount of features are disabled from the operating system for no good reason. Upon booting for the first time I realized that there’s no Weather, Calculator, Voice Recorder, Compass, Stocks or Clock app. I can’t decide whether or not Apple rushed it out or if they wanted to leave it to the developers, but it’s rather annoying since some of these applications use a private API, only accessible to Apple (the alarm feature in the Clock app, for example). Either way, it’s a bit disappointing. The apps that Apple have ported are rather decent. The iPod app is like a miniature iTunes and Calendar app has a great UI.

Tethering is completely disabled. So is voice control, but at least the latter can be enabled with a simple hack. Since there is no camera, any application that has a camera feature often crashes since there is no check for the hardware. And hell, why isn’t there an SMS app or Phone app. They could have least enabled the API for developers.

Apple claims the iPad supports iPhone applications…and it does…but frankly it sucks. iPhone applications show up in small area of the screen…or you can use pixel doubling to make it look like an awesomely distorted JPEG image. If you think that you’ll use an iPhone app for something the iPad does not yet support, then you’re kidding yourself. Frankly, the iPad is only good for native iPad apps, iPhone apps are an absolute last resort.

Luckily, there’s a jailbreak solution, sort of. FullForce will force iPhone apps to the native iPad UI. Unfortunately, your mileage may vary depending on the app. It does however work well for the Facebook app, for which there is no native iPad app, yet. Keep in mind though, most applications are just mobile front ends to websites…and now that you have a giant screen, you can can get an excellent experience from MobileSafari.

Jailbreak users will be a bit disappointed, at least for now. There are several apps that simply don’t work with OS3.2. However, I spent some time going through jailbreak apps that I feel are 100% essential: ProSwitcher (Palm Pre style task manager), SBSettings (toggle pad that works in 3.2) and LockInfo (lock screen information). Luckily, at least ProSwitcher has active development. The github repository has partially working code for the iPad… And it’ll probably be ready soonish.

I feel OS4 will make the iPad shine. There are a couple of cool things in OS3.2 though: SpringBoard now rotates to landscape, there’s a rotation lock, and the keyboard is fantastically huge. Yes, I’m typing this article on an onscreen keyboard, and it’s actually productive!

The Apps

Even though the iPad has been out for a month or so, there is a lack of decent apps. No doubt, over time this will sort it self out. Also, you’ll find that app store prices are incredibly inflated at the moment. Angry Birds for iPad (a popular game for the iPhone) is 5, yes f i v e, times the price of the iPhone version…and to top it off, there are only 2 chapters in the iPad version vs. 4 in the iPhone version (say wut?!). Nevertheless, first I’ll go through some alternatives to the default iPhone apps (Weather, etc.) then I’ll cover some gems for the iPad.

Alternatives
Compass: Compass-HD
Weather: Pocket Weather
Stocks: Bloomberg (really informative on the iPad)
World Clocks: MyWorld Clock
Calculator: Calculator HD for iPad
Alarm: Weather Watch (has a fantastic UI that merges alarm clock and weather display)
Voice Recorder: Voice Recorder for iPad

iPad Gems
AirVideo: this application is one of the killer apps on iPad. It allows you to stream video from a computer to your iPad. It supports just about every type of video format as it transcodes on the fly using the server software you install on your computer (transcoding is done with ffdshow). The application just works. I’ve even used this with 3G by VPNing to home. Even with 256kbit upload, I was able to pull up a TV show with just 60 seconds of initial buffering. From then on in, the video played flawlessly. It automatically transcodes to an acceptable video bit rate depending on the amount of bandwidth available.

WunderRadio: this is also an iPhone app. It has a vast and extensive database of internet radio streams, including many of the Australian radio stations. Another app that just works.

iTap RDP: is a Windows remote desktop application. The 1024×768 screen of the iPad makes these applications shine. iTap supports a ton of touch gestures and has a few innovations up its sleeve to make it easier to use on the iPad. Unfortunately, it doesn’t support files on the clipboard, but that’s where the next app comes in…

FileBrowser: supports file sharing and SMB share browsing, so you can grab files and send files between your iPad and computer. It also supports an “Open With” function so you can grab a word document and open it with Pages.

iSSH: if you want VNC instead of RDP, this is where it’s at. It also supports SSH, which is fantastic for jailbreak users since MobileTerminal isn’t yet iPad compatible.

Sociable: while MobileSafari is pretty pleasing experience…sometimes it’s nice to have a native app. Sociable is a good alternative for the iPhone Digg or iReddit app.

Twitterific: this is where it’s at in terms of Twitter clients. Nuff said.

Beejive: while I was rather pissed that I had to pay another $8 for Beejive, since I already had the iPhone app, it’s a worth while purchase. It supports MSN, Facebook, AIM, ICQ, Gtalk, Jabber, MySpace and Yahoo!

TWiTPad: a fan of Leo? Then this is for you.

Quota: a usage tracking application that works for just about any Australian mobile provider and ISP. It has a pretty damned good UI.

GlobeConvert: everyone needs a unit converter. This one has a fantastic UI and selection of units. The company also makes WordBook XL, an excellent offline dictionary and thesaurus.

Bento: is hard to explain. It’s like a journal…a library of things. A database? I’m not sure. It has a pretty UI and it seems like a decent application to store some….stuff.

1Password: sort of like Bento, but with security. This is a great app to store all your sensitive information. It’s pretty much a wallet.

Penultimate: if you have a stylus…or want a OneNote style application, this is it.

Magic Piano: this is from the same company that made Ocarina. Fun++

Star Walk: if you like astronomy, you might wanna give this a go. It has support for the compass and accelerometer so you can figure out where constellations are.

Atomic Web Browser: this is an alternative web browser with a Firefox-ish layout and an adblocker.

Korg iELECTRIBE: if you’re a DJ, this is fantastic. It’s an easy to use interface for loops. It has a pretty decent database of synths and effects.

InstaPaper & The Early Edition: these are two separate apps, but great if you like to read articles in a newspaper style. InstaPaper is able to save webpages for offline viewing and The Early Edition is a fancy RSS reader that lays out articles into a newspaper template.

The Apple Suite (iBooks, Pages, Numbers, Keynote): I was a tad pissed that these aren’t included on the iPad by default and that the prices of the office suite are in the $10 range. The apps however, are quality. Apple kept it simple and it worked. I would think that for people that read, iBooks is the killer app, but I don’t read…so I can’t comment on that.

The Verdict

I’m not quite sure I know the exact use for my iPad…yet, but I feel that once the apps evolve and OS4 comes out that it’ll be clear. If you haven’t yet got your iPad, and want one, I’d wait a month then test the waters. The few quality applications that are out nearly make it worth it, but somethings still need a bit of polish. If you do buy one, be prepared to change your work style for the iPad…as in it’s current state, I don’t think the iPad will influence the way you work. No doubt this is a luxury device, but I feel that Apple do have the price set a tad high.

Do I recommend one? If you have the money and you feel the iPad can fill a gap, then yes.

For now, I have tried to avoid using my laptop, and I’ve been fairly successful. The iPad can handle most of my day to day tasks…and if not, there’s remote desktop ;)

Sent from my iPad… (WordPress.app)

, ,

Facebook: The Reverse Lookup E-mail Directory

Today I noticed a significant privacy hole within Facebook. I always knew that I could enter an e-mail address into the Facebook search bar and it would search my friends or people with public profiles to bring up the user with those credentials. Today I received an e-mail with a bunch of e-mail addresses in the CC header. I had no idea who they were, so I went to Facebook to look them up. This is when I stumbled upon a rather large flaw.

Surprisingly, every single e-mail address I looked up returned a search result, even if the user was not my friend and their profile was private. I decided to use my dummy account, which has no friends and is not related to any network, to try the same thing. Again, Facebook returned the user given the particular e-mail address.

I tried a couple of experiments with my own account and the dummy account. I added an e-mail to my profile with the privacy setting of “Only Me” and then searched for it with my dummy account. Yup, it returned my profile relating my Facebook profile to the e-mail address that should never be seen publicly.

I then tried to guess the e-mail addresses of a couple of “web celebrities” (in particular, Kevin Rose and Alex Albrecht from Diggnation). Both users have strict privacy settings, however, using a little guess work  I was able to work out a couple of e-mail addresses that are related to their profile.

So, what does this mean? Well, a private e-mail on Facebook can be public. A little guess work can reveal any e-mail address specified on your Facebook profile. Not to mention you can use any of these e-mail addresses as the username to login to Facebook. Is this a flaw? I certainly think so. A little Googling didn’t bring up much, but Facebook did mess up on revealing e-mails recently. So, maybe you heard it here first.

The fix? If you don’t want your e-mail to be found, remove it from your list of e-mails from your profile. Your login e-mail will always be “guessable”, so change that if you wish too.

, ,

3D Movies? No Thanks.

I like pretty pictures. Today, I saw my first 3D movie, Alice in Wonderland. After seeing it, I have decided that anyone that says 3D is an incredible experience either a) has vision problems and/or b) does not appreciate a high definition image. By no means is a “2D” movie high definition (speckles and grainyness), but it does look decent for its size. “3D” is a step backwards in terms of quality.

Firstly, the glasses they give you have the same effect as wearing sunglasses. I’m sorry, but when did anyone wear sunglasses to a cinema? This significantly dulls the brightness and vibrancy of colour in the image. Throughout the whole movie I had the urge to remove the glasses to see the image with the brightness dial turned up. These 3D films, like Avatar, have “groundbreaking” CG. You would think that you’d like to view this image in it’s originally rendered, bright and beautiful colours, no?

The next complaint is about the focused portions of the image. Many will notice, when compared to the “2D” version, that a vast majority of the image is blurred to focus your eyes on the 3D portion. Although, this didn’t give me a headache (like some do suffer), I did find it very frustrating that I was unable to explore “groundbreaking” CG scenery. Instead, you are forced to focus on a portion of the image that, sometimes, isn’t even the character/object that is meant to be the centre of attention. To top it off, there are often objects that are presented in 3D but out of focus. Naturally, you are drawn to focus on that object but you become confused that the object looks both horrible and out of focus.

The movie was viewed at Hoyts Norwood (Adelaide, South Australia). The screen is most certainly not the biggest but it was the “Xtreme Screen” of the cinema. Now, I’m not quite sure if this is a 3D technology technicality or if it’s just how this movie was shot, but, the movie did not take up the whole screen (width wise). It was apparent to me that the curtain was still drawn over the edges of the screen. Firstly, this is supposed to be a spectacular image, why the hell isn’t it big? Secondly, this causes much disappointment when “3D” objects are flung off the side of the screen. Initially, the effect is cool, it looks like it’s coming towards you…but you are significantly disappointed when the border of the screen makes the image disappear and not the corner of your eye. Perhaps this would be more spectacular on an IMAX screen?

3D does, however, work in some cases. I found that when there is only one character on the screen, it worked well (an example in Alice in Wonderland is Cheshire Cat ). Also, ambient effects, such as smoke and fireflies, would add depth to the image. Fast moving objects, such as falling or flinged objects can also work, but I found that the fast moving object would often be blurred making it look very gimmicky. In Alice in Wonderland, I found that “real life” scenes were only partially in 3D and that the effect on “real life” scenes were underwhelming. CG generated scenes took more advantage of the 3D “technology”, significantly.

For non-glasses wearers, such as myself, these things are uncomfortable. I don’t choose to wear glasses for a reason and I’m pretty sure that most people that wear glasses only wear them because they have to.

For all this, you pay an extra AU$6 (Student). What a jip. Now, I understand that the technology to shoot the movie costs more, but I’m fairly sure the cinema does not need to purchase new projectors to show the film (I could be wrong). Why am I paying extra? New movies continuously use new and more expensive technology and we generally don’t pay extra. I can go see this movie in 2D and pay the normal price. Gimmick? Yup.

Where’s my damn hologram.

, ,

PC Media Centers: A journey of pain, hurt and frustration.

Putting a PC under your TV to play your pictures, movies, and all that jazz, sounds like an excellent idea until you actually try and implement it. I’ve been using a full blown PC since 2004 to record TV and stream media from my server….but it’s been hell.

Problem #1: Choosing the right hardware
Back in 2004, I thought that putting a PC under the TV to play media would be a fantastic idea. I started to plan a bunch of parts and on paper, it looked great. Being slightly more clueless than I am today, I didn’t do much research….which led to me buying a P4 LGA775 (the hottest of all Intel processors) processor and a set of loud components.

The TV tuner card (a Hauppauge PVR-MCE-350) was also very average. It’s an analogue card, but the quality of video it outputs is significantly worse than plugging it directly into the TV (via the same connector). Fast forward to today and I still use the same card. It works OK, but in the world of digital, the card needs updating.

The leads us to the next problem. Working with a FOXTEL box. In 2004, FOXTEL digital was introduced. Ironically, the set top box provided by FOXTEL does not output any digital video (only audio). FOXTEL boxes have only recently outputted in digital with the introduction of FOXTEL HD channels. That brings up a new problem. It’s impossible to create a “purely digital” media center PC…where there’s digital input and digital output. Why? Well firstly, HDMI and Component are protected by HDCP (and any capture cards to bypass HDCP are “illegal” or need heavy licensing fees). Secondly, it takes a beefy PC to capture and view HD video at the same time. Currently, the only way to capture HD video from FOXTEL would be via analogue component inputs. Capture cards that do this are reasonably expensive…$300+ The alternative is CableCard. A technology that has never taken off despite it being amazing and around for several years.

There’s also the problem of IR blasting. This isn’t FTA Digital/Analog, where you tune into a frequency depending on a channel, the capture card sees FOXTEL as a singular channel. Every time you want to change the channel you must blast infrared out to the FOXTEL box. I’ve found that this can often be inaccurate and laggy.

Problem #2: Choosing the software
Now the software. Generally, you’d use Windows Media Center. It comes with Windows. For a simplistic Media Center, it works pretty well. However, it’s hard to extend and skin. Windows 7 media center is particularly average when it comes to UI.

The alternatives? MythTV. XBMC. MediaPortal. MythTV is out, fuck Linux. XBMC is out, no capture card support. This leaves MediaPortal. An open source media center that’s highly extensible and skinable. MediaPortal, by default, looks like balls but it has a ton of cool features. Adding the StreamedMP skin and a couple of plugins makes MediaPortal look and feel like XBMC. It has excellent UIs for TV Shows and Movies (with a bit of work).

The downside? It’s buggy as fuck. Firstly, the StreamedMP skin doesn’t support 4:3. I guess this isn’t a big deal for most, alas, the parents refuse to venture into a world of new technology. This means you have to do a crapton of skin modifying to fit things on the screen. Secondly, I had to go ahead and check out the source from SVN to determine what was hanging MediaPortal for 2 minutes. It turns out there was no such timeout for devices like card readers. If there’s nothing in the card reader, there’d an extended I/O timeout which would hang MediaPortal. It’s an easy source fix, but there’s bugs like this that just make MediaPortal very unfriendly (without a helluva lot of work).

There’s also a problem with timeshifting. A feature that allows you to pause and rewind TV. With FTA, this is great. With FOXTEL, this is absolute pain. The way timeshifting works is that the capture card is saved to a temporary file before it is viewed on the screen. This means there’s usually a 3-4 second delay. This delay makes using onscreen components for the FOXTEL box (such as TV guide) impossible. Unfortunately, both MediaPortal and WMC do not allow you to disable timeshifting.

Finally, EPG (programme guide) data is nearly impossible to get for FOXTEL. There are sources such as OzTiVo, but it is often incomplete. In the end, I ended up writing a parser for YourTV (which has relatively complete FOXTEL data). It’s a very highly customized solution mainly because there is now “raw” data feed (such as XML). I have to parse HTML pages to get meta data. Each day downloads approximately 50-75MB of data (when parsed it’s only ~4MB, 600KB zipped)…which means I have to run this on my overseas VPS. Basically, the stars have to align to get any sort of consistent EPG data.

So, in conclusion?
a) If you want a purely digital media center: you’re going to have to use FTA Digital. You can use analogue component for FOXTEL but it’ll cost you.
b) EPG data for FTA is great! FOXTEL not so much.
c) FTA works great for timeshifting. You’re probably going to want to connect FOXTEL directly to your TV and capture card, so that when you need to record, you can.
d) Buy and research silent, cool and compatible hardware components.
e) 4:3 is out. 16:9 is here. Don’t even bother if you have an old TV.
f) Be prepared to pull your hair out.

You can probably tell this is just a spill of my brain. I haven’t gone in to much detail…but I’ve finally finished the rebuild project of my media center.

, ,

Oh Ubuntu, how must thee suck so much?

Exams and honours being over, I decided to revisit my multi-boot (7, SL, Ubuntu) and give it an upgrade. Ubuntu 9.10 “Karmic Koala” had been released but at the time I was too busy to upgrade (Windows being my main operating system).

I don’t use Linux too much. I’m proficient at it to get around, compile, install, even mess with kernel compilations, but I only use it when I really have to test something out. I had 9.04 installed; it was fresh, untouched, the only thing that had been installed is the proprietary NVIDIA drivers. Instead of doing a full reinstall, I thought I’d take the easy way out and use the GUI update manager. Huge mistake. After downloading about 700MB of packages, the installation began and failed approximately half way through. A completely optional component, OpenOffice, was able to bring the installation script to its knees with an error that said something along the lines off – Failed to install <insert random OpenOffice component here>. Your system may be in an usable state – Yes, such a minor package was able to cause such a gigantic problem. I attempted to re-open Package Manager and even tried apt-get…neither worked. Needless to say, rebooting resulted in an unmountable mounts. I am baffled as to how a clean 9.04 install failed to upgrade.

Instead of messing around in recovery mode I decided to chuck in my 9.10 DVD and go for the install….since I had nothing important installed anyway. Installation seems to take a lengthy amount of time, and to this day the Ubuntu installer STILL makes no logical sense. Seriously, why is an installer removing packages when installing the operating system for the first time? I don’t care about the technicalities, this is NOT good user interface design.

At the time of installation, my disk configuration looked something like this:
Boot Priority 0: DVD Drive
Boot Priority 1: 160GB Ubuntu Drive
Boot Priority 2: 300GB Windows 7 RAID0
Boot Priority 3: 250GB Mac OS X Snow Leopard Drive

During installation I chose to install Ubuntu to the Ubuntu drive (funnily enough). This drive at the time was set to the highest boot priority. Alas, after installation, Grub seemed to have made itself on to the Windows 7 drive (for no particular reason) AND the Ubuntu drive. I mean what the hell? This drive had nothing to do with the installation and the Grub installation on the Windows 7 drive kept on failing with “File Not Found” errors. It’s almost as if the Ubuntu installer goes something along the lines of:

foreach (Drive d in drives) {
if (windows_installed(d))
// Make Windows partition unusable to piss off Microsoft fanboys.
// Who needs Windows anyway?!
install_broken_grub(d);
}

I decided to go ahead and reinstate the 7 MBR, disconnect all drives (except the Ubuntu drive) and do yet another install. Hoorah! We’re in. Straight off the bat, X-Fi Digital Out no longer works (it did in 9.10). The ALSA mixer seems to have disappeared and whatever the hell the new sound configuration manager is, it does not allow 5.1 Digital Out. Attempting to install the proprietary Creative drivers fails due to missing includes. OK, no problem I’ll solve that later.

Instead I decided to go ahead and update Ubuntu and install the proprietary NVIDIA drivers. All done via the Ubuntu UI. What seems to have been success turned into utter failure upon reboot. I was greeted by a constantly flickering console screen. Booting to recovery mode revealed that apparently “the NVIDIA drivers do not support the GPU at PCI0:0″. For the record, both cards are relatively new (GTX 260 and 8500GT) and worked perfectly in 9.10. OK, so, why the hell hasn’t the generic driver been reinstated so the GUI is accessible? It actually turns out that Ubuntu had installed version 173 of the NVIDIA driver rather than 185. Why? (you might ask) Well, it turns out that upon being prompted to install the driver, the default selection is version 173, even though the one tagged as “[Recommended]” is 185. Why the hell isn’t the recommended selection the default?! Why the hell doesn’t Ubuntu gracefully recover on such a catastrophic failure. Surely this is simple to detect. Either way, I am now at the point at which I’ve installed version 185 and rebooted to find Ubuntu is freezing on boot (every time).

After several forceful reboots, Ubuntu decided to boot….and hoorah, wobly windows. Now to fix the X-Fi.

After an hour or so of tinkering…I did three things…who knows which of these actually made the thing work, but here goes (X-Fi Digital Out on Ubuntu 9.10):

1. Open sound preferences, make sure the hardware configuration for the X-Fi device is set to analogue 5.1 out + analogue stereo in. (This makes a lot of sense, right?)
2. Make sure the input and output device are set to the X-Fi device (and not some integrated sound card)
3. Open up a Terminal window, type alsamixer. Scroll left (with the left arrow) till you find “Digit-IO”. If it’s Off, toggle it to On by pressing ‘m’.
4. You might have sound now…you might not. The only other thing I did was install the Creative X-Fi drivers. Note: These don’t compile by default on 9.10!

So here’s how to compile them:
1. Download them here: http://support.creative.com/downloads/download.aspx?nDownloadId=10792
2. Extract them to your desktop
3. You’re going to modify two files, let’s start with ctatc.h
4. Look for the line “#include <sound/driver.h>” and comment it out like so: “//#include <sound /driver.h>”
5. Now the next file, xfi.c
6. Again comment out “#include <sound/driver.h>” like so: “//#include <sound/driver.h>”
7. Now look for the line: “card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0);” and replace it with:
“snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);”
8. You can now follow the README included with the drivers….sudo make, sudo make install, sudo reboot :)

Frankly, this user experience is pathetic. Something needs to be done. The Ubuntu team need to stop wasting their time thinking up obscure codenames and ripping off the Windows 7 pulsing logo. Quality control is much to be desired.

, ,

My Windows 7 Backup & Restore Experience

After two years of putting up with failed Raptor drives from Western Digital, I have finally convinced them to send me Velociraptor replacements of the same 150GB capacity. My 7th Western Digital gave up 2 weeks ago after reformatting and attempting to install Windows 7. For those that have kept on telling me that I have some sort of power supply problem or that Raptors need a better supply of power, no, that isn’t the case. This same PC has been home to older 36GB Raptors and numerous 7200 RPM drives without a hitch, click, or bump. The 2007-2008 150GB Raptors are just crap. Absolute junk with a short MTBF. There is no excuse for a drive that can’t put out 24/7 use over 6 months.

Anyway, obviously sending both drives back means I need to image my current install and restore it to a spare drive. Usually, I had used an application by Runtime Software called DriveImage XML (free/closed source). The application created an image of the drive using Windows’ Volume Shadow Copy service while Windows was still running. The application worked perfectly on XP x64, but refused to detect the Shadow Copy service on Windows 7 x64. DriveImage XML worked perfectly for my needs. It would create an image, and even a human readable XML file of all meta data for the image. You’d then use Windows PE (or BartPE) to create a boot disk and restore the image. The only drawback was that you needed to restore the image to a drive of the same size or larger, otherwise, you’d need to specifically select the files you wanted restored to a pre-made empty partition. The problem with that was that NTFS permissions would be reset and it seemed that attributes on files, such as SYSTEM (+S) and HIDDEN (+H), would be cleared. Not a huge deal for me, but you’d often restart and see Windows’ Thumbs.db and Desktop.ini meta files all over the place.

So, enter Windows 7. I figured I’d go ahead and check out 7′s revamped Backup and Restore center. At first it looked pretty impressive. It offered to image my whole OS drive as well as add in separate files to the backup. Cool, sort of what I wanted. I went ahead and created my first image and saved it off to my NAS. Took about 4 hours for about 100GB (over GbE). The end result is a weird file structure which is handled nicely by Windows Explorer (in 7 anyway) and a VHD file, the same image format used for hard disks in Microsoft’s Virtual PC.

Now to restore that VHD. You can either chuck in your original Windows 7 install disk or create a repair disk from within Windows. I recommend using your install disk as you have an easy way to create and delete partitions with the setup GUI. I also found that the repair disk seemed to refuse to start if it didn’t find a partition with Windows 7 on it. This meant that when I had pulled my old drives, it became impossible for me to use the repair disk. What the hell? Why should I need my old drive to repair my PC. This instantly sounded alarms to me. I started to doubt the process and I thought that maybe Windows 7 would only allow me to restore the VHD to a drive that was the exact same capacity or something along those lines. The first few times I attempted to restore to another drive, I was told that the restore utility failed due to not being able to find an eligible drive (or something like that) BUT it turns out this message is just incredibly misleading. To fix it, you MUST connect the destination drive to Master Channel/Port 0. This basically means….SATA Port 0 for SATA drives or IDE Port 0…for IDE drives. The drive must also be the highest priority drive in the BIOS’s boot priority list. Once you’ve done this, you can restore the VHD to any hard disk you want.

I, for example, restored my 90GB VHD (which was a 150GB partition) to a 250GB drive. After restoring it, the partition created by the utility was 150GB (and not 250GB). I had to enter Disk Management and resize the partition to max out to 250GB. I have a feeling that the restore utility will fail with a drive smaller than 150GB (but maybe not if you’re lucky, maybe one day I’ll test). If that’s the case, you can always install Virtual PC 2007 and mount the VHD then copy all the files to an empty drive. That’s the long way around and you’ll probably lose NTFS permissions and/or file attributes. Time taken to restore? Just under 45 minutes for the 90GB VHD (again, over GbE). I’m now writing this from my imaged Windows 7 install….on 4 year old 250GB drive (which happens to only lose 0.4 experience points when compared to the Raptor, gg).

Edit: I probably should also mention that the step just before re-imaging seems to select ALL attached drives to be reformatted and repartitioned (at least I’m pretty sure). This made me scratch my head. The option to exclude drives from this is a tad hidden. Even USB Drives (ones that are Removable Drives, not Removable Hard Disks) were even selected for reformatting (I had one attached for networking drivers that I ended up not needing). So…watch out for that.

, , ,

What I Hate About 7

So, I received replaced Raptor from Western Digital on Friday and decided that instead of just restoring my image, I’d start fresh and install Windows 7 Ultimate to a fresh RAID0 array. Installation was partially troublesome. The installation would stall at the “Installing Updates” stage, but I fixed this by installing the ICH10R drivers before starting the install. That’s sorta weird because Windows already detected the drives fine….clearly generic drivers fail. Upon the first restart, I was greeted by “A Disk Read Error Occurred. Press CTRL+ALT+DEL to restart”. Oh joy, I thought. Forcing another reboot I find that the other Raptor in the RAID0 (not the one I just received back from Western Digital) has had a S.M.A.R.T error. Yes, my 6th Raptor died during the Windows 7 install. Anyway, I ripped out the failed drive and continued to install 7 to the working Raptor. Huzzah, it boots.

So, I’ve installed all my junk and messed with it. For the most part, the operating system is great. No doubt the performance is significantly improved from Vista. You can tell by smaller number of processes, RAM usage and CPU usage, as well as the fact that the Desktop Window Manager (DWM) no longer increases in size with number of windows open. Cool. 7 successfully detected all my devices upon first boot, except my Creative X-Fi, which amazingly Creative has working drivers for. Even though everything worked, I went ahead and installed non-generic drivers for everything that I have. Also, huge success.

All my applications work too. I had only one compatibility problem. I did find that .NET Framework 1.0/1.1 does not seem to be included. Did Microsoft end support for this?!  If you ever get an application asking for MFC71.DLL, it means it uses .NET 1.0. I only had one application that needed it and it wasn’t a huge deal for me not to have it. I tried installing .NET Framework 1.0, but it failed with no error. I’m sure this is probably because of some sort of OS check and I’m sure there’s a workaround that I’ll work out later

There’s a ton of new features, specifically, the brand new SUPERBARRRRR (i.e. Taskbar and OSX Dock all-in-one). Just like my iPhone review, I could go over all the new shiny features, but that’s be useless. There’s tons of reviews out there for that. Here’s what bugs me:

White Line – Boot Failure

I have a feeling this is caused by the NVIDIA Windows 7 drivers, but I’m yet to figure out what it is exactly. Sometimes on boot, just as the video drivers are initializing and just before the mouse pointer displays on the screen, Windows will lock up and show a white line (on black background) across the top of the screen. Nothing else, pretty random occurrence. Most of the time it boots fine, but I’ve had this once or twice.

Aero Shake

Who the hell uses this junk? This new feature allows you to shake a window (while in a dragging state) to minimize all other windows. You then shake it again to bring them back up. You’d think the problem with this is that Aero Shake would be too sensitive, randomly minimizing windows when you don’t wish for it to, but it’s quite the opposite. It takes a helluva lot of shaking to get the feature to work, which makes this feature completely and utterly useless. I could probably minimize all my other windows just as fast as trying to get the thing to recognize I’m shaking the window.

Snapping to Compare with Multiple Monitors

Another new feature allows you to drag a window to the side of the monitor for it to take up half the screen and become maximized. For example, you could drag one window to the left and one to the right for a side-by-side comparison. Cool feature, unless you have multiple monitors lined up in a row. This feature refuses to work on the borders of the monitor if you have another monitor next to it. So say you have 2 monitors, you’d think you could drag 1 document to the left on the 1st monitor, 2nd to the right on the 1st then 3rd and 4th to the left and right on the 2nd monitor, but no, you can only drag the 1st document to the far left and the 2nd document to the far right, leaving a giant empty space in the middle. Fail.

Maximize Vertically

Now we’re really turning OSX. If you want to maximize a window and double click on the very top edge of a window it will only maximize vertically, instead of the usual vertically and horizontally. I guess this feature has its uses, but I haven’t come up with one situation where I’d want to maximize only vertically…and the only time I have maximized vertically is by accident.

Superbar Grouping

The new superbar is a cool concept but depending on what you’re doing, it’s very possible that you’re going to take longer to perform your average task. Since items are grouped, you will often find yourself having to click the application’s icon and also clicking the window of the application you want. Two clicks instead of one.

You’ll probably also be irritated by the fact that if you have an application open already, and you go to click it again, it won’t open another instance of the application. Take Firefox for example, if you don’t have Firefox open and you click the Firefox button, Firefox opens (good). If you have one Firefox window open and you click Firefox, Windows activates your currently open Window (bad). If you have two windows open, you will be shown previews of the windows you have open (OKish). So, how do you open a new Window? You have to right-click then select the application’s name. More clicks than it was previously.

Also, due to grouping, how the hell do you know what you have open? When multitasking with multiple Windows Explorer windows, this can be rather annoying as you must look through windows listed via Aero Peek (which makes every other Window invisible upon hover, especially annoying when watching video on another monitor). But the situation where this bugs me most is with Instant Messaging. For example, Windows Live Messenger, the icon will turn orange upon a new notification but I don’t know who this notification is from till I break what I’m doing and move my mouse over to check the Aero Peek previews.

XP Mode

XP mode was introduced for maximum compatibility with Windows 7. It is essentially Windows XP Pro SP3 running in Microsoft’s Virtual PC. It allows you to install applications within the virtual machine then use them within Windows 7. Sort of like Paralells and VMware Unity on OSX. Cool feature, but it basically requires you to boot up the VM,  drag in your application and create shortcuts in the Start Menu. This feature would have been waaaaaaaay cooler if you could simply right click an executable and “Run in XP Mode”. For extra cool points, XP mode should have handled 16-bit executables on x64, so that you could simply double click your old favorite DOS game and launch it in XP mode.

Breadcrumb still fails to recognize the CTRL modifier

What do I mean by this? Well, if you go back to XP, you’d find that holding CTRL and pressing “Up”  would open a new instance of Windows Explorer in that folder. Alas, ever since Vista, the breadcrumb completely ignores this. You’d think that CTRL click on a crumb would open that folder in a new Windows Explorer window, but no. To do so, you must CTRL+N then select the folder you wanted to browse to.

Incompatible Applications, Codec Crazyness.

One application that I did come across as “not working as intended” was Winamp. I love Winamp due to its extensibility, sexy looks, intuitive interface and integration of both audio video in a fairly lightweight package. However, if video is playing and Aero is enabled, Winamp will start using approximately 1 whole core of CPU usage (i.e. 100% on a one core system, 50% 2 core, 25% 4 core). This results in sometimes-choppy video, which is rather irritating. For now, I have to go for a combination of Winamp, for audio, and VLC for video. I’m fairly certain this problem also occurs in Vista, so I don’t expect it to be fixed anytime soon in for 7.

Also, codecs in 7 are a bit weird. For the average user, 7 is great. It includes a ton of default codecs that play most formats out there, but for the graphics-whore these codecs seem to produce a less sharp image on compressed video formats. You can definitely tell the difference between the default and ffdshow. Also, the installation of ffdshow (by the usual codec packs) seems to fail. ffdshow will install, but will not become the default codec until you start messing with settings. I have a feeling this is to do with the default codecs having a high “merit”, which is basically a priority for codecs.

Office 2007 in Windows 7

Technically, Office 2010 is meant to be paired with Windows 7, but it isn’t out yet. Office 2007 for the most part works great, but for some weird reason, I find that pressing TAB on a bullet point, no longer indents to the next bullet point type. Instead, it inserts an actual TAB character, as if you writing a normal paragraph. To get the next “level” of bullet points you must reach up to the ribbon and click Increase/Decrease indent. The same occurs for Shift-Tab. I wonder if this is just me?

, ,