All posts by Long Zheng


Hands on with Telstra TV: rebadged Roku for Aussies

When it comes to home entertainment technologies, Australia is playing a bit of a catch up. Netflix having just launched here less than 6 months ago and many new local streaming providers soon-after, Aussies are still finding their way around streaming entertainment services and devices.

One recently launched device is the Telstra TV, a rebadged third-generation Roku 2 set top box for Telstra’s Bigpond broadband customers.

There’s been some confusion to what Telstra TV actually is. It’s not a new streaming service (Telstra already has two, Bigpond Movies and Presto) and it’s not a replacement for Foxtel cable TV.

All it is, is a hardware device that connects to your TV and streams videos from third-party services. In fact, it’s a rebadged version of the Roku 2 standalone streaming player previously only sold in the US. Don’t worry, the little purple “Roku powered” tag on both the box and remote constantly reminds you in case you forget.

Out of the box, it’s a really simple product. It comes with a set top box, a remote, power plug, a HDMI cable and some very light reading material.

20151021_025838405_iOS 20151021_025943971_iOS 20151021_030125111_iOS 20151021_030243679_iOS


Since the third-generation Roku 2 (2720) was originally released in 2013 (and actually discontinued in April 2015), both the hardware and remote is starting to show its age.

The set top box is reasonably small, light and stylish enough to place on your TV which is very important since the remote is IR-based (not Bluetooth) so you have to point directly at it. It’s roughly the same size as the older Apple TV and a bit smaller than the new Apple TV.

Speaking of the remote, although I can appreciate its simplicity with only a handful of buttons but boy does it look dated. It’s shaped like a capsule which means it’s easy to spot and won’t fall into the abyss of the couch, but it also feels unnecessarily clunky.


Plugging in and setting up was surprisingly simple. After you connect to the Wifi network, you use a PC or mobile to activate your device and tie it to a Telstra account by entering the code displayed on the TV, saving you the pain of typing in emails and passwords with the onscreen keyboard and remote (never a good experience).

After activating you also get access to $15 credit on Bigpond Movies and 3 month subscription to Presto as a welcoming gift to stream some movies and TV shows for free.

20151021_031138369_iOS 20151021_031205203_iOS 20151021_080357038_iOS 20151021_080416843_iOS

A system update and a few app updates later, it’s all ready to go. From the home screen, you have access to the default apps including Bigpond Movies, Presto, Stan (coming soon), Netflix, Yahoo7, SBS On Demand, Channel 9 Jumpin and more.


Additional apps can be installed from the “Telstra TV Apps Store”. Unfortunately this is not the US Roku Store which has over 2500 apps and 60 games. At the time of writing, there were only 15 apps in the Telstra TV App Store which included YouTube, the Roku Media Player to access media on a USB device, TuneIn, Wall Street Journal Video, Vimeo, GoPro and etc. Useful third party apps such as Plex are notably missing. Telstra claims more apps will be coming however.




The UI is responsive and straightforward to navigate for a TV experience, but there’s not a lot of depth. Most apps lets you browse featured content on the home-screen, lets you find specific content in a search screen and browse for content by categories or genres.

Streaming video from Netflix and Bigpond Movies only took a few seconds to start but the quality is a bit jarring. Although the Telstra TV supports 1080p, videos from Netflix or Bigpond Movies didn’t look quite 1080p with subtle blocking and colour dithering. (I’m not 100% sure whether this is caused by the streaming services or the device)

In conclusion, Telstra TV gives you a simple and no-frills way to watch Netflix, Bigpond Movies, Presto, SBS On Demand and other popular Aussie streaming services on a TV, nothing too different from what most modern Smart TVs would already offer.

With the new Chromecast and fourth-generation Apple TV on the horizon, Telstra TV is unfortunately a generation or two behind in terms of the apps ecosystem and user experience.

If you’re getting Telstra TV free as part of a new Bigpond bundle contract, then it’s a good enough way to stream movies and TV shows on a TV without apps. But don’t go out of your way to buy one for $109.


Entering the cone of silence with Bose QC25 noise-cancelling headphones

I listen to a lot of podcasts, audiobooks and music on my daily commutes. I have been content with generic headphones for as long as I’ve owned phones and media players. I’ve always thought noise-cancelling headphones were a luxury only for long international flights, it never occurred to me just how big of a difference they can make even for a simple train trip.

I got my ears on a pair of Bose QuietComfort 25 Acoustic Noise Cancelling headphones for review a couple of weeks ago and now I can’t go back. The QC25 is like having my own portable cone of silence at the flick of a switch. (I’m a big fan of Get Smart)




The headphones come in a carrying case, two colors (black and white) and two models: one made for Apple devices; and another made for Android devices. There’s no difference except the inline microphone & remote are optimized for each platform. In fact I suspect because it uses a standard 3.5mm TRRS conductor, it should be cross-compatiable with any modern smartphone.

The design and build of the QC25 feels solid and sturdy but weighs just 200 grams. The retractable headband is easy to adjust and holds its place firmly with thin etched slots. The rotatable hinges that allow the headphones to be folded into itself is metallic and covers the cord so it can’t be damaged. I throw these in my computer bag without the case day after day and they still look like new.


The QC25 is one of the most comfortable over-ear headphones I’ve ever tried. Whereas some over-ear headphones I’ve tried actually clips my earlobes (and bruising them after extended use), the QC25’s elongated oval cups cover well-over the entire ear. The thick leather cushions form a tight seal around the ears, but it’s soft enough it doesn’t feel like it’s pressing hard against you.

As a subtle design touch, the letters “L” and “R” is textured on the fabric inside the cups making it dead simple to identify the correct orientation. (No you can’t wear it backwards)

I don’t claim to be an audiophile so I won’t bother with making up words to describe the bass, treble or any other technicality of sound, I’ll just say it sounds pretty good to me. What’s more important however is what sounds are not there, and that is where this headphone really shines.

Turning on the active noise cancellation is as simple as the flick of a switch on the right cup and it momentarily disables sound output, but the effect is instantly noticeable even without any audio being played.

Gone are the thumps of train wheels on train tracks, the high-pitched whine from electric train inverter, the over-enthusiastic passengers who love to chat and the roars of a diesel engine on a bus? Gone. You can still make out beeps of a train door closing, someone talking directly to you and the barks of a dog, but it’s significantly quieter. This headphone has been systematically rated as one of the best noise cancelling technologies available today and I don’t doubt that.

It’s not so much music or podcasts sound better with noise cancellation, but it’s all the extra details you hear when there’s no noise covering it up.

As a weird side effect, the pounding sound of your feet hitting the ground walking or running is accentuate so I don’t think noise cancelling headphones are ideal for jogging. The wind blowing towards you into the noise cancelling microphones also make for an unpleasant buffer sound.

Thankfully the headphones can be used like a normal pair of headphones if the battery runs out or you simply don’t want noise cancellation. Each battery is rated for 35 hours of noise-cancelled listening and so far I’ve only drained one by leaving it on overnight which can be a bummer.


The worst thing about the QC25 is the unnecessary long cable – it’s roughly 50% longer than Apple’s Earpod cables. I know it’s an odd thing to say about a pair of headphones, but the dangling cable is a real nuisance. It flails about when I’m walking and I have to tuck a good portion of it in my pocket where the magical knot-fairy does its best work. There’s scientific proof longer cables have a higher knot probability.

In conclusion, this pair of headphones is a sizeable investment at a retail price of AUD$399/USD$299.

If you do a lot of listening out and about on public transport and especially on planes, the QC25 seems to be the state-of-the-art for active noise cancellation. Other reviews seem to suggest there are higher quality sounding headphones at this price range on the market, but I’ve fallen in love with listening in peace.

Disclosure: Bose provided the QC25 headphones for free as a gift.


Hands-on with the Sea-Doo Spark: the more fun and less cost jetski

I haven’t had so much fun and muscle-aches reviewing anything before.

I don’t normally review jetskis but I couldn’t pass on the opportunity to check out the Sea-Doo Spark, a new affordable entry-level jetski half the price of most personal watercrafts on the market. Don’t let the size and price fool you though, it’s as much adrenaline rushing fun as the big brother, if not a little bit more.

I’ve actually owned a Sea-Doo GTX 215 jetski for about 2 years. The Spark caught my attention because you could buy two for price of a bigger one, and jetskis are always more fun to drive than ride.


Compared to a typical Sea-Doo jetski, the Spark is around 25% smaller and 50% lighter. This is made possible by a new composite polypropylene and fibreglass “Polytec” material. It’s so strong and durable the entire frame and hull is just two moulded pieces held together by a set of bolts, similar to the unibody concept for laptops.

Powering the Spark is a new fuel efficient engine available in 60 and 90 horsepower variants (I tested the 90hp model). Even though this is only half the horsepower of traditional jetski engines, the incredible power to weight ratio means you actually get better acceleration than bigger brothers. It’s like a Tesla of the sea.



What it gains in acceleration it loses slightly in top speed. I peaked at about 80km/h (50mph) whereas the bigger ones can do 100km/h (65mph). Of course unless you’re racing jetskis, your arms and legs will fatigue out much sooner than the jetski.

The engine is also more economical, using less unleaded petrol than the bigger models going the same distance. It takes about $40 to fill up a full tank and I only used half a tank for roughly 3 hours of riding.

Unfortunately something’s going to give with compact size and comfort isn’t a strong point of the Spark. Whereas you’ll find wide cushioned seats on larger jetskis and even active suspension to soften out the bumps, the slimmer and firmer seat on the Spark makes rough waves and landing those high jumps a lot tougher on the bottom. That is if going slower isn’t your thing.

The Spark also comes in 2-seat and 3-seat models that vary slightly in length (I tested the 3-seat). Even though you could fit 2 full-size adults on the 3-seater, it’s not the most comfortable ride for the passenger at speed. The Spark is most fun with just one.


Sea-Doo has also made available the latest jetski technologies in the Spark: fly-by-wire throttle control, GPS speedo, closed loop cooling. The most important of which is Sea-Doo’s intelligent brake and reverse (iBR).

By a simple squeeze of the brake lever on the left handlebar, you can come to a dead stop from top speed in about 2 seconds. What’s a safety feature is also quite fun – the G-force from 80km/h to 0 on water makes a bit of a splash. The same function also allows you to reverse making it as easy to maneuver as a tiny car, super convenient for docking at the boat ramp.


Speaking of maneuverability, the Spark’s agility is hard to beat. Using the Sports throttle mode, you can make turns so sharp and accelerate so quickly that you can quite easily throw yourself off if you’re not gripping firmly. And in the event you do fall off, the Spark clip-on key will detach and automatically turn the engine off.


Simply put, riding a jetski is some of the most exhilarating fun I’ve ever had. With the Sea-Doo Spark, it’s now more affordable than ever to own one. Starting at a base price of AUD$7,850 going up to about AUD$10,000 if you add the higher-performance engine and brake system (a must in my opinion), it’s a great little toy for any revheads on water and now more affordable than ever.

A lot of water was splashed in the making of this review.


Microsoft .NET’s JPEG encoder makes crappy JPEGs

Microsoft .NET has been making quite a bit of headway in the developer community recently with both the open source efforts and the upcoming ASP.NET 5 modern web framework. With so much attention on making .NET a “hip” platform (and hopefully breaking into the startup ecosystem), I would like to draw attention to a very frustrating problem that I hope the .NET team can address, .NET produces pretty poor quality JPEGs.

Now if this were some obscure .NET function that hardly anyone uses I wouldn’t care as much, but JPEGs are an integral part of most desktop, mobile softwares and web services today. Granted PNGs and SVGs have become common for UI graphics, but JPEG is still the leading compressed image format used in uploaded avatars and photos (I look forward to the day WebP and BGP is the norm).

I like paying attention to detail, so it horrifies me just how much detail is lost through the Microsoft .NET JPEG encoder. There’s no better way to explain this than to show examples.

I first ran into this problem a few months ago when I was working with images in a podcast RSS feed. I was simply grabbing an online image, resizing it and then saving a JPEG file for local caching. A simple image optimization workflow that almost every modern app will do.

This was the image I was working with. (PNG lossless, 147KB)


And this is what happens after I save it as a JPEG in .NET. (JPEG 100% quality, 70.2KB)


To the untrained eye, they might look not too different, but I invite you to look closer especially around the letters. Here’s the two side by side zoomed in.


Now I know what you’re thinking. Surely that’s just JPEG compression right? Well Photoshop’s JPEG encoder handles it fine. (JPEG 100% quality, 83.7KB)


The thing about JPEG encoding is that it is all proprietary. You can encode JPEG many different ways and it will produce different files or varying fidelity and compression size. Yes they all have a “quality” parameter, but the same “quality” across two apps won’t produce the same result. (In my own testing, the Adobe Photoshop JPEG encoder seems to be the state-of-the-art.)

To cut a long story short, my workaround was to save the file as a PNG (which .NET is quite capable of) and then use the ImageMagick Windows command-line executable to convert it to a JPEG file. The result is worth the hassle. (JPEG 90%, 38.5KB).


Here’s the before and after comparison between .NET’s JPEG and ImageMagick’s JPEG with a 55% size saving (38.5KB vs. 70.2KB). I don’t think I need to tell you which one is which.


My advice to any .NET developer is to avoid the built-in JPEG encoder – the quality is worse and the file size is larger than what it should be. Combined with the fact that almost all .NET best practices and image processing libraries (including the cool relies on the .NET JPEG encoder, I imagine this to be a pretty widespread issue.

I’m actually not the first person to notice this. A StackOverflow answer and blog post (images no longer work) by Chris Moschini also refers to this issue.

Perhaps with a bit of encouragement the Microsoft .NET team can fix this for .NET 2015 (it is not fixed in .NET Framework 4.6 Preview). Won’t somebody please think of the pixels?


Escaping my first escape room: a real life point and click adventure

Escape room games seems to be popping up everywhere around the world. In Melbourne alone there are at least half a dozen companies now offering one or more puzzle rooms. Some appear to be horror themed while most take the premise of a detective story.

Recently I was invited by Escape Hunt in Melbourne to check out what the hype around escape rooms was all about.

When you think about it, escape rooms are kind of weird. You voluntarily pay money to go inside an enclosed space with the sole purpose of trying to come back out. Having said that, for the same reason why “escape the room” computer games are entertaining, it’s the process of some 60 minute of puzzle solving that’s actually very rewarding.

Graveyard WIP-2

A group of friends and I attempted “Abduction in the Graveyard”, one of the three puzzles available. We were provided a brief backstory together with character names and roles based on the world of Sherlock Holmes.

It’s a lie as good as Santa Claus – all pretty much useless but all in good fun.

Before going in, sixty minutes in a single room didn’t sound challenging enough, but when the LED clock high in the ceiling starts ticking down, there’s actually real pressure in the group to save the fictional girl from the kidnapper who threatens her life. Admittedly in this particular story there’s no real reason to “escape”, we’re just very financially-attached detectives.

Puzzles led to clues, clues led to more puzzles. This process repeats over and over, becoming more elaborate and integrating more game mechanics that you pick up over time. (Just like the difficulty progression of a computer adventure game).

The puzzles and props included but is not limited to physical, auditory, visual, mathematical, and it would be criminal not to have a UV puzzles. If only the kidnappers actually invested their money instead of buying elaborate combination locks, maybe they wouldn’t need to abduct people for ransom.

While we conquered many challenges in a reasonable time, a small handful actually challenged the group’s collective problem solving. In two occasions, a well-timed hint from the intercom with the game master (spectating through CCTV cameras) was necessary to steer us in the right direction. In the end, our group’s first ever attempt took 63 minutes, a tad slower than average.

I must admit there were real moments of frustration but also real moments of accomplishment with your friends. The price is admission is a bit higher than your typical casual entertainment, say the price of a movie ticket, but it was a much more memorable experience.

I can’t wait to get locked in another room.

Disclosure: The game my friends and I participated in was provided for free by Escape Hunt Melbourne.


A week with Android Wear: Moto 360 & LG G Watch R

I haven’t been so excited about watches since the last time I wore a watch about 15 years ago was when all the cool kids in school had one. Since then I have found it hard to justify a small obstruction on my wrist for the value of reading time at a moment’s notice or the materialistic symbol of fashion and prestige.

That is until I could read my email and Twitter messages on my arm.

I was finally able to get my hands on two highly anticipated round Android Wear smartwatches last week, the Motorola Moto 360 and the LG G Watch R. I put down my iPhone and dived head first into the world of Android & Android Wear for a full week to see if technology can convince me to strap on a watch again in 2015.





The Moto 360 was infamously the first round smartwatch on the market and it still is the most elegant Android Wear watches available today. The large 1.56″ inch glass display enclosed in a thin stainless steel case looks stunning both screen on and off. Since wearing it I’ve received nothing but compliments on just how beautiful it looks.

The tiny bezel comes at a cost of a thin slice of the display at the bottom is cut off (nicknamed the “flat tyre”) which I didn’t actually find as big of an issue. When the screen is off, you can’t see it at all, and when the screen is on you’re too busy paying attention to the gorgeous display to care.



The LG G Watch R is the only other round Android Wear smartwatch, but makes a different tradeoff. It sacrifices a thicker bezel decorated by non-rotatable time markers for a perfectly round display. The screen is also marginally smaller at 1.3″ achieving a slightly higher pixel density which results in slightly crispier text and icons if you pay enough attention.


Both watches have vibrant colors and very wide viewing angles, but what sets the LG apart is the POLED (plastic organic light emitting display which has an “always-on” mode that changes the watch face display to a simplified black-and-white version when the watch is inactive. The benefit of this mode is that notification text still appears.




On the wrist, the Moto 360 is lighter (49 grams) and more comfortable to wear. The underside is covered by smooth circular plastic shell which sits firm against the skin.

The LG G Watch R is heavier (63 grams) and extends the size of the backplate far beyond the size of the front bezel and uses a slightly coarse and hard plastic material which presses firmly against the skin.



Thickness wise, both watches are about the same height. Both watches also ship with standard leather straps which do a good job of keeping the watch tight around the wrist, even my twig-like arms. Motorola does offer optional stainless steel bands and LG owners have successfully switched out custom bands as well.

Both watches are also waterproof which is handy if you’re taking a swim. (But capacitive touch will not work if there’s water on the display.)

Android Wear 5.0

Already in it’s second major update, Android Wear 5.0 is a very simple and pretty effective wearable operating system with a few rough edges and a little bit crashy – on rare occasions opening settings or apps require two or more tries.


The watchface home screen is now officially customizable with third-party apps, which sits alongside the dozen or so OEM provided watchfaces. There’s a good mix of elegant, practical, fancy, nostalgic and funny watchfaces available now that should suit most tastes. Some (not all) contain complications which can be configured to display things like calendar, different timezones, steps and weather. (My favourite is the 500px watch face which shows a new photo every time it wakes)

wear screens

Out of the box there’s a good mix of practical functionality including notifications (more below), caller ID, music player controls, Google Now, steps and heart rate tracking via Google Fit, alarm, calendar and stopwatch. Of course this can be extended with third party Wear-specific apps or Android apps that includes Wear extensions.

It all comes together with swipe gestures, up and down to scroll through notifications in time descending order, right to see more details and actions, left to dismiss and close. I did occasionally confuse my gestures in the minimalistic UI, but fortunately the platform is quite forgiving. For example if you accidentally dismissed a notification you didn’t mean to, you can undo within a few seconds.


The de-facto “Ok Google” voice commands which can do Google searches, send text messages and start apps work surprisingly well in crowded and loud areas. Having said that besides demoing the watch to others, in practice I’ve never actually used voice commands in public.

Performance on the Moto 360 is noticibly worse compared to the LG G Watch R. The transition from screens aren’t nearly as smooth (especially side to side). The tilt to wake gesture is also a little bit slower to respond on the Moto 360 which makes me wonder if the OMAP processor is slightly underpowered.

Android Wear notifications


The killer feature of Android Wear is notifications. Natively it displays all Android notifications from any application. Messages, emails, updates and events can all appear as notifications on the watch. (You can also block specific apps from appearing on the watch.)


Apps which have been optimized for Android Wear notifications including but not limited to Facebook Messenger, WhatsApp and RunKeeper enables more detailed views, custom actions and also spoken text replies. Apps like the camera also extend special functionality like a remote shutter trigger, convenient for selfie-takers.

Since no Android Wear watches have a speaker, a subtle vibration (light enough not to be heard but strong enough to feel) alerts you of new notifications. Intuitively, a setting on the Android Wear companion app will allow you to automatically mute notifications on the phone if the watch is connected, preventing duplicate notifications.

As someone who has a love and hate relationship with notifications, I have found it invaluable to quickly peek at which app the notification is from and the first single line of text. This allows me to identify the “I must respond”, “that’s good to know” and “I don’t care” notifications so I spend less time distracted in conversations and on the go.

And in the cases I actually do want to act or respond, a quick swipe to “archive” email and the “open on phone” button wastes no time getting you to the relevant app and message on the phone.


In fact this was one of the killer features of Google Glass, but now it’s available in a much more discreet and socially acceptable form factor.

Battery life


Battery life on the Moto 360 and LG G Watch R have both been impressive, lasting a full day with some juice to spare with a constant stream of notifications and a high brightness setting.

Of course this still means you definitely have to charge the watch every night, but it’s rather quick painless, especially in the case of the Moto 360 whereby the wireless charger also doubles as an elegant nightstand clock.



If you already use an Android phone, Android Wear watches are definitely ready for prime-time. If you have any interest in a wearables for either fitness tracking or notifications, then Android Wear is one of the most capable multi-function wearable platforms out there today.

If you prefer form over function, the Motorola 360 is a amazing piece of crafted technology that looks amazing and works well. On the other hand if you slightly favor function over form, the LG Watch R is probably one of the best functional Android Wear watches on the market today that still looks good on any wrist.