Must-have gadgets for every frequent traveller

I just read this article “Seven must-have gadgets for every frequent traveller” and while I quite liked it, I thought we could improve on it a little bit.

1. Universal Adapter Can’t agree more with this one. My personal choice for this one is the SKRoss World Adapter EVO USB.

SKRoss World Adapter EVO USB

SKRoss World Adapter EVO USB

I quite like their products, and this model not only provides 2 USB ports, but the base can be separated from the USB charging dock, giving you two separate devices. Very handy. I got this model from a duty-free agent, who represents SKRoss. So it was free too :-) Can’t beat that!

2. Wi-Fi Router and Ethernet cable

I don’t think so. I try to travel light as much as possible – on biz trips of up to a week I carry a single carry-on bag from Timothy Oulton. So I try to limit the number of items I take with me. And the wifi router is definitely not on my list. So far so good, I have been mostly in hotels that provide an ethernet cable (and free wifi to guests). What I usually do is enable Internet Sharing on my MacBook Air. I plug it in on the desk, start Internet Sharing, and my two phones have Internet. Zoowie. I do own a couple of retractable Ethernet cables (most of my cables are, including USB), and carrying one can’t hurt.

3. Extension Board I agree with the author that many hotels seem to have a very very weird idea of where to put electrical outlets. Or maybe the places they put them in originally are covered when they do their umpteenth remodelling. In any case I have struggled sometimes with awkward outlets placement, but having a power bank (listed below) beats carrying an extension board. One of my phones serves as alarm clock, and recharging it on the desk/near the TV is actually a good thing, as I have to get up to turn the gawdfershaken thing.

4. Noise-cancelling headphones This is something I have been thinking about recently. I live in one of the noisiest places in the world – Hong Kong – and I travel a lot in Asia. I usually deal with noise pollution with earplugs. But they don’t cut off all sounds. So I might splurge one day.

5. E-book reader Sure. That’s why we have Amazon Kindle reader for almost any platform. I have it installed on my main phone (HTC Desire 700), and my MacBook Air. One less device to carry…

6. Entertainment on the go That’s calling for a very bad joke. I’ll skip it and let you dwell in your own gutter :-) Instead of an Apple TV, I use an HDMI cable to connect to the hotel room’s TV. I carry 3 Thunderbolt adapters: one for the Ethernet cable, one for the HDMI cable, and one for the VGA cable (for presentations mostly).

7. Battery bank Oh yeah. A definite must. I use a slightly bulky one from SeeedStudio. 10,000 mAh, two USB slots. Good for a few charges. Bonus tip

If you fly quite often, ditch your 15-inch laptop and opt for something lighter like the 11-inch MacBook Air. Not only does that mean you are lugging around less weight (those kilograms add up very quickly), laptops this size (and smaller, of course) without a hard disk-drive will save you a lot of time and effort at airport security as you don’t need to take them out of the bag.

Well, while I agree on the advantage of having a MacBook Air (I went with the 13″),  the author and I obviously don’t frequent the same airports. I still have to take it out of my bag everywhere I go – which is Asia + France…

I have my own bonus tips.

  • Use the little pouches they give on Premium Eco/Business class to store loose items and cables. Efficient packing means you have to keep stuff well organised. Frequent travelers get upgraded from time to time, and that’s when you bring back these babies home.

  • If you use a Mac, get the World Travel Adapter Kit. You don’t have to carry all of them – just put in a pouch the ones you’ll need in your trip. It usually saves me from taking the SKRoss adapter. The MacBook Air has 2 USB ports, enough to recharge everything else.

The Frontier Closed Area

Recenty, I have added one more check mark to my bucket list — which is not publishable, for there’s stuff that some people may disapprove of :-) BUT. One thing that the HK government would disapprove of is the fact that yesterday I went to the Frontier Closed Area without a permit. And without swimming either…

The Frontier Closed Area is a strip of land in HK, along the border with Shenzhen, which is closed off to regular folks. Only residents and farmers, along with people with a “legitimate” reason to go (like people working in the border duty free shops, the MTR station, etc; families of residents; etc etc), are allowed to go. The trains station in Lowu and Lok Ma Chau, for instance, are inside the FCA. In Lowu, you can see stairs going down, right after the exit from the MTR, with cops guarding access to it. These stairs go to the Lowu area of the FCA.

If you have family inside the FCA, you might be able to get a permit, to visit your relatives. In the Sheung Shui Police Station, in Fanling, you can apply for a temporary permit, and some tourists may even get one, if someone in the village you want to visit signs the application for you. Good luck with that though. The FCA has been getting slimmer and slimmer, and many Hongkies would love to buy real estate there for it’s cheap and bound to rise in value when the FCA gets further reduced. So the government tries to keep influx of newcomers down…

Yesterday I went to have dinner with some mates. We were supposed to go to a friend’s in Taipo. Nopesies. Dude asks us to come to Sheung Shui, and he’d pick us up. He’s a very laconic dude and he just said “We’ll have dinner at my parents’ place.” Ok Sir, thanks.

I check out the road we’re driving on, it’s going north. “Dude, looks like we’re in the FCA! That’s what the sign says! Don’t we need a permit?”. Just then he takes a quick right, up a hill, and down an unpaved path. “Yes. My house is near the river. We’re taking a shortcut.” And by shortcut he meant a smuggler’s detour in and out of the FCA. Apparently, 30 years ago, Chinese people walked across the river around there, went uphill and downhill to Sheung Shui. And the locals apparently still use this path to bring in guests without the inconvenience of applying for a permit.

We had a great dinner, and walked around the place. So quiet. A few hundred meters away the “civilization” of Shenzhen. Dozens of cats running around. A big dog that barked a lot, but offered its paw as soon as you approached it. Guard dog my ass.

We left the way we came. Didn’t see a checkpoint, a cop or anything. I felt like a righteous bandit… :-)

Aside
a=document.getElementsByClassName('js-display-url'); j=a.length; for(x in a){ b=a[x]; if (b.parentElement!=undefined) { c=b.innerText; b.parentElement.href="http://"+b.innerText } }

Drawing images on an Esplora

Arduino micro-controllers have so little Flash memory and RAM that working with them after coding for so many years on computers with more RAM than we need (innit Bill?), I feel a little cramped. And considering that in an Arduino Uno or clone you have 28KB RAM and 2KB RAM, doing anything that involves graphics on the Esplora (which has a TFT screen with an SD card slot), is going to be an impossible task.

ImageArduino’s TFTBitmapLogo tutorial uses a 48×48 BMP image that’s less than 7KB and once loaded is probably right within the RAM’s 2KB limit. But try to load any image that’s bigger than that and you’re up a tree scratching your balls with acacia bark. I know how it feels because I tried. To load a bigger image, I mean. No go.

ImageI found this sprite file “somewhere on the intartubes’ — I didn’t even try to remember where :-) — and started slicing the different sprites of Mario into separate files. They were way too big, despite their microscopic size, to be loaded with .loadImage(). So I wondered how hard it’d be to hard-code the images as Arduino code. Each image has a green background — which means you don’t need  to draw these pixels.

ImageUsing Real Studio, which changed name recently to the (ill-suited in my opinion) Xojo, I wrote a small app that writes code for me. It’s basically a bunch of Esplora-specific primitives, EsploraTFT.drawPixel(), drawing the image, pixel by pixel, line by line. This worked, and I was able to write a sketch displaying Mario anywhere I wanted on the screen. But I still ran into Flash memory issues, as the code was too long to host all the images required to make Mario run, crouch and jump.

ImageLooking at the code I noticed that adjacent pixels drawn in the same colour could be drawn with on line of code with EsploraTFT.drawLine(). The first round of dieting worked, and Mario was happily bouncing around on the screen. I even had space for a tree. Zoowie. Then, with the help of a nifty little regex, I was able to squeeze a few more bytes out of the code. I noticed that in a few cases, I had two EsploraTFT.drawLine() primitives in the same colour around other drawing code in a different colour. So if I combined the two function calls in one, and then drew the pixels in between, I could save some memory. For the record the regex is:

EsploraTFT\.drawLine\((x\+\d+), (y\+\d+), (x\+\d+), \2, (\d+)\);\rEsploraTFT.draw.+\rEsploraTFT\.drawLine\((x\+\d+), \2, (x\+\d+), \2, \4\);\r

to:

EsploraTFT.drawLine(\1, \2, \7, \2, \4);\r\5

Using slimmed-down versions of the standard libraries (Esplora, SD, TFT), I reached just under 24K, leaving me some tiny space to code the beginnings of a game. Not much left though…

Binary sketch size: 23,966 bytes (of a 28,672 byte maximum)

“You can not opt out of t.co”

I just did, though… t.co is Twitter’s way of checking on what links you post — and keeping stats, tabs on you and your neighbours, etc. Which I don’t really like. And when the posted link comes from a link shortener, it bounces all over the web before being displayed. So I decided I’d opt out of t.co. Even if Twitter doesn’t offer me this option.

javascript:a=document.getElementsByClassName('twitter-timeline-link');j=a.length;for(x=0;x<j;x++){b=a[x];b.target="_blank";c=b.getAttribute('data-expanded-url');if(c!=null){d=c.indexOf("?utm");if(d>0){c=c.substr(0,d)}b.href=c;b.innerHTML=c;}}(null)

I put this Javascript code in a bookmarklet and Bob’s now my official !tco Uncle. I click this before clicking a link (as Twitter keeps adding old tweets as I scroll down, these newly added posts need to be cleaned up). The t.co cruft is removed and the real link is reimplemented.

UPDATE

Now with 1-second interval repeats. :-)  As long as I stay on the page I don’t need to click !tco again…

javascript:setInterval(function (){a=document.getElementsByClassName('twitter-timeline-link');j=a.length;for(x=0;x<j;x++){b=a[x];b.target="_blank";c=b.getAttribute('data-expanded-url');if(c!=null){d=c.indexOf("?utm");if(d>0){c=c.substr(0,d)}b.href=c;b.innerHTML=c;}};console.log('tco');}, 1000);(null)
Image

Departed (past) on July 4, 08:35am…

Departed (past) on July 4, 08:35am...

It’s only 5:30. Has China invented a time machine???

廣東話口語

一分錢, 一分貨  jat1 fan1 cin4, jat1 fan1 fo3
You get what you pay for.