jeff yen

14Dec/110

Hacked

Well, my site was hacked... over 3 weeks ago. I suppose it's a sign of how out of balance my life is right now, when my entire online presence can get taken over by some ridiculous hacked webpage, and I don't notice it for nearly a month.

At any rate, I'm restoring from old backups, ruthlessly wiping out whole swathes of directories on my server, and generally cleaning house. I suppose eventually I'll come back with a leaner, more secure web presence; until then this whole thing has just been a colossal annoyance.

9Nov/108

Android in China: A rant, and how to get the Market working through the GFW (Great Firewall)

Okay, this first part is a rant; if you actually want to get to the tech part of this post, go to the part with all the bold text and arcane codes. If you'd rather read me rave about protectionist policies and information control here in China, then by all means proceed.

[...] dictatorships were absurdly sensitive to the public opinion they continually outraged; they always had to be in the right, to be morally impeccable [...]

- Stephen Maturin, The Surgeon's Mate by Patrick O'Brian

The above quotation is from a passage about Napoleonic France, but it is fairly applicable to the situation I've been dealing with ever since I arrived in China.

The government here has a juvenile obsession with monitoring and regulating the flow of information within, into, and out of the country, to the extent that China's version of the Internet is just an enormous walled garden. Try to eat of the forbidden fruit and you'll be stuck looking at server error messages, endless waiting in vain for pages to load, and (apparently) timed lockouts to access if you attempt to search for certain forbidden words. Try Googling "freegate" from a computer in China and you'll see what I mean; whenever I do it while my VPN or proxy isn't active, I get locked out of Google for a little while.

In fact, navigating the Internet proper is virtually impossible without a proxy or VPN service to break through the government-imposed censors.

With Facebook and Twitter (both blocked) integration spreading like a particularly virulent strain of herpes into every nook and cranny of the Internet, and more and more sites embedding videos from services like Youtube, Viddler, and Vimeo (all blocked), even unrelated pages will take forever to load, as the browser waits for all of those connections to time out before displaying anything.

I say the Chinese government's attitude to information management is juvenile, because it is really only those with under-developed or otherwise sadly misshapen self views that are so insistent on trying to control others' perceptions of them.

This weblog, in fact, was blocked by the Chinese government last year shortly after a critical post about Shanghai, and I had to do an end-run through my host to have the IP changed so I could once again access it from inside the country.

After some Chinese censor bot or bureaucrat (essentially the same thing) gets a whiff of this post, I have little doubt that I'll have to do the same thing again not long from now.

This all rather supports my impression that many aspects of the Chinese government, much like many of this country's nouveau riche, have never really grown up. They are used to always having their own way, having their every whim affirmed by the people around them, and so have developed a profoundly warped world view.

It has often been said that China has never had an expansionist colonial period; and traditionally speaking, that is true.

However, it's my view that this country's interests have never extended to the rest of the world. The only reason China has ever reached out across its borders is to pull something in; silver, back in the days of the tea trade; status (or 'face'), ever since they were drubbed in the Opium Wars; and more recently, the global economy.

They see little need -- aside from ancient feuds, minor spats with adjoining entities, and outdated territorialistic urges -- to venture out into the cold wastes of international waters, there to expend fuel, ammunition, and tax funds to take over territory which, to be honest, has very little value to them that their existing lands do not.

I believe their form of colonialism is simply to sit around, and suck as much of the rest of the world in, while giving as little as possible back.

It is this, among several other reasons, which convinced me not to purchase property here. I cannot in good conscience contribute to a system that I feel simultaneously opposes my presence on a moral and political basis, yet welcomes it on an economic one.

In the end, it may simply be a matter of cultural transparency. While there are innumerable facets of the U.S. government with which I am profoundly dissatisfied, they are at least logical and fairly predictable in their patterns of behavior. China's government, by comparison, sometimes acts like a drunken toddler, reeling from one whim to the other with little to no warning, expecting everyone else to follow along, and throwing tantrums when they balk.

So, down to how this affects me (besides having to use one of several available proxy/VPN services to browse Facebook, Twitter, Blogspot, Youtube, Blogger, Tumblr, many Google sites, and countless other websites, including those that depend on FBCDN for content delivery... even those that just have a snippet of embedded code from any of the above and several other ever-more-omnipresent social networks):

Android.

Life is hard being an Android user in China. I only bought my HTC Desire two days ago, and I'm already deeply familiar with the various issues affecting us.

The Chinese government has some kind of inferiority complex when it comes to Google; services go down, they come back up, then they go down again. The government here, unsatisfied both with Apple's hard bargaining and tightly controlled iTunes market, and Google's too-free-for-China Android Market and independent search policies, has decided to try its own route. They've created a new Android fork, called "oPhone" (original, right?), created a proprietary 3G standard, and are busily trying to corner the domestic market in protectionist ways that are a mind-boggling waste of time.

My HTC Desire came with a suite of apps preinstalled -- all Chinese -- and a link to something called "Go Market," which I can only assume is the local attempt at an equivalent to Android Market. It was at best a shoddy imitation, very much prone to the Chinese preference for overstated design and cramming as many features as possible into as small a space as possible.

I've seen how several Chinese online services operate, and to think how they might impact the mobile space just makes me shudder.

Aside from the fact that I would be locked into an incomprehensible market which had few apps, none of them of any use to me, many of the features the phone had by default simply didn't work.

So I wiped it, and reinstalled a popular custom mod (CyanogenMod). Voila; clean, functional bliss. I was even downloading apps from the Android Market, for about a day, until either the government caught on, or some kind of flag on my China Mobile account went up, and the downloads stopped.

Understandably, I am upset.

So here, for the edification of anyone in my situation, are the steps and alternative routes I've had to take to get the Market back up and running.

---------------------

Possibility 1: Get a VPN, and set it up on your Android phone.

This is likely the easiest and most effective way to get it done, aside from simply moving back to your home country.

Possible service providers are Freedur (Android setup info), Witopia (Android setup info), and 12vpn (Android setup info). I use Freedur, but fair warning, have not yet been able to get their VPN service working on my Android phone. The other two were mentioned in various Android support forums as being excellent and working fine with Android; I am currently in a customer support dialog with Freedur.

These three services are all available (i.e., not yet blocked) in China, and will all cost you from 3-5 USD per month. It is absolutely worthwhile to purchase a VPN service; besides being faster than free proxies, they are vastly more reliable and feature-rich. Most VPNs will also allow you to have simultaneous logins on a laptop/desktop and a mobile device, and most have clients for MacOS, Windows, and Linux in addition to compatibility (if not full-blown apps) for iOS and Android.

This will give you a secure connection through (usually) a UK or US server, meaning you have a little tunnel through which the real internet can leak through to your phone or computer.

 

Possibility 2: Use the Android Development Kit, various other hacks, and a VPN on your computer to download and install apps over USB to your phone.

This is really the only alternative I can think of if your phone doesn't support VPN, your VPN doesn't support your phone, VPN service isn't working for whatever reason on your phone, or you'd rather browse the Market in an emulator instead of on an actual device.

It is a hell of a hassle, and inconvenient, but it works, and is a decent stopgap until you get a working VPN or China and Google finally admit they love each other.

There are various helper apps that can help you out with this, but I'm going to outline the way to do this that depends upon the least amount of software.

NOTE: I do all this with the 1.5 version of the image, which IS NOT SUPPORTED by certain apps, such as Google Goggles. It would probably be safer to install the 1.6 version during Step 6, but I just found this out after writing up this whole piece of poop, so there you go.

I'm downloading 1.6 now, and will also be hosting it privately (a link is provided in Kumar Bibek's page, linked in the acknowledgments.

-----------------------------

1) First, you'll need to use a web proxy or a VPN to download the Android SDK (here), as anything related to Android development also seems to be blocked. If you have the option to, whitelist anything with "*.android.*" in a URL to go through your proxy. Any of the three VPNs mentioned above should work fine, along with software like "Freegate." As I assume this blog will get blocked by censors almost immediately after they find it, you'll be using one to see this anyway.

2) Once you download the Android SDK, extract the .zip somewhere convenient -- for the purposes of this tutorial I am assuming it will be on Windows, and to C:\android\ -- and run "SDK Manager.exe"

  • This will not work.
  • Don't worry.

3) Once the initial download fails, go into "Settings," and change the "HTTP Proxy Server" and "HTTP Proxy Port" to match your VPN settings.

  • The Server should be "127.0.0.1" or "localhost," and the port varies depending on which VPN you're using (for Freedur, the default is 10174).
  • Also make sure to look down in the "Misc" section on the same screen and tick the checkbox for "Force https://... sources to be fetched using http://..."

4) Go back to "Available Packages" and click "Refresh," which should now work just fine.

5) Choose "SDK Platform Android 1.5, API3, revision 4," along with the Usb Driver package, and hit install. With a typical Chinese network, running through a VPN, you're in for a bit of a wait, so go have a sandwich or a cup of coffee.

Once it's done, move on to the next step.

  • If it fails repeatedly, change a VPN provider. Free proxy services like Freegate will generally not work properly for this, I believe because they periodically switch servers.

6) Download this file. I also have a local mirror on my personal server, e-mail me if the previous link goes down and I can send it to you. It should come down as "avd.rar" if you get it from the above link.

  • Extract the RAR file (using 7-zip or something similar).
  • Copy everything that gets pooped out into: C:\Users\[your user name]\.android\avd\
  • This should be one folder called "AndEmu.avd" and one file called "AndEmu.ini"

7) Open the file "AndEmu.ini" in Notepad and edit it like so:

  • On the second line, change the "path=" line to have the actual path to the AndEmu.avd folder, which should be: C:\Users\[your user name]\.android\avd\AndEmu.avd
  • Save and close the file.

8) Go back to your SDK Manager, or run "C:\android\SDK Manager.exe" again.

  • Click "Virtual Devices" -- there should be an entry named "AndEmu" in the list.
  • If there is a green icon that looks like a torn piece of paper, click the AndEmu entry and then click "Repair." Click "OK" to any notices. The icon should turn into a green checkmark.
  • Click "Start."
  • This will flash open a few DOS windows, then finally you'll be presented with a window containing a graphic of a red Android phone (a G1, by the looks of it), and a keypad on the right.

9) This is actually a fully functioning instance of the Android 1.5 handset operating system. I assume you already generally know how to use it, but a couple tips:

  • You can "flip open" the keyboard by using CTRL-F11.
  • You can type using your normal keyboard, don't bother with clicking the keypad.

10) Set up the phone just as you normally would; enter your Google account, or create a new one, and sign in.

11) Go to the Market, find whatever app(s) you want, and install them. Remember to keep your VPN on during all this, as the reason we're going through this whole circus in the first place is because you need a VPN to get to the Market from China, and you can't use one on your phone for whatever reason.

  • When you're done, go to C:\android\ and create a folder for your new apps, in this case we'll use C:\android\apks\

12) Once you have all the apps you want, open up a command prompt in Windows.

  • Start, search for Command Prompt and run it (or use Windows+R and enter 'cmd' then hit enter).
  • Go to C:\android\tools\ using the code:
    cd c:\android\tools
  • Now you need to find out the name of your virtual phone. You do this by using the command:
    adb devices
  • At this point there should just be one (if you have your actual phone plugged in there will be two, we'll get to that later), and I think the name will always start with the word "emulator." In my case the device's name is "emulator-5554."
  • Now, since the emulator wraps up all those precious little program files you just installed into a single image file, you need to pull them out. You do this by using the code:
    adb -s [your device name] pull /data/app c:\android\tools
  • It'll do some crunching, and when it's finished is when the real fun starts.

13) Open up your C:\android\apks\ folder and check out those names. You might be able to install them all in one go (I'm not sure but will include instructions for that in the next step), but since otherwise you'll be typing them one by one into the command prompt, feel free to rename them to something shorter.

  • I'll give out some free advertising here and use com.google.zxing.client.android.apk, which is the application "Bar Code Scanner" by ZXing Team. I just renamed it to "qrScanner.apk".

14) Now it's time to plug in your real phone.

  • First, make sure that "USB Debugging" is turned on.
  • This setting will be under Home -> Menu -> Settings -> Applications -> Development.
  • Then... plug it in. You should get a little notification on your phone that debugging is active.
  • Check to make sure there's a new device by entering "adb devices" in the command prompt again. Note the name. In this case we'll just say it's GFWYOUFACE

15) In the Command Prompt (you still have one open at C:\android\tools\ right? If not, open a new one), enter the following (one for each of the apps you want to install):

  • adb -s [your real phone's id] install [path and full name of the apk]
  • So in this example, I'd be using:
    adb -s GFWYOFACE install c:\android\apks\qrScanner.apk
  • It'll do some funky stuff, and should say "Success" then give you another prompt.

16) Check your phone; the app should be there.

I believe you can use this process to install any free/unpaid app from the Market. You can also use steps 14 and 15 to sideload apps that are not from the market, like... well, I'm not quite sure, but you can.

So, have fun.

------------

Now, there are several ways you can make this process go faster (.bat files and the like), and automate certain things for future use to make everything easier. I'm not going to deal with that, because I don't expect to be using this method very long, and to be honest I'm just too damn lazy to keep explaining this stuff.

That said, by no means did I come up with this on my own; this is simply a compilation of various sources of information around the web with the occasional injection of the word "poop," and a focus on the specific workarounds needed to get the Market working in China.

So, in case anyone actually reads this and finds it useful, I should give credit where credit is due. Many thanks to:

27Oct/101

Welcome to China’s broadband internet.

God, I hope the internet at my new place is better.

welcome

Filed under: Everything, Geekery 1 Comment
25Oct/1017

Phones, phones, everywhere, and they are all terrible.

I have fairly eclectic requirements for most every product I buy, particularly electronics. I am loath to part with my money unless I am faced with a product that does everything I expect it to do, or I can hack it apart to make it do everything I want it to.

This is the reason I don't have a "smart" phone yet. There are major problems with every single platform out there, and after a while I just get sick of running into roadblocks and give up in frustration.

My basic requirements for a phone are:

 

Communications
Making phone calls is naturally of the first importance. But, as this is supposedly a "smart" phone, I also need access to all the methods of communication I normally associate with my computer, available over Wifi or cellular. That is:

  • VOIP (Skype and/or Gizmo)
  • Email (POP, IMAP, and web)
  • IM (GChat, MSN Messenger, and AIm. QQ as a somewhat-necessary bonus).
  • Web browsing, on a modern browser.

I also need well-implemented GPS, and the ability to tether my laptop to the phone, in case I need emergency net access somewhere I can't get a wifi signal.

+ Nobody.
- Everybody. Android is probably the closest on this one.

 

Languages:
Being in China, having developed a rudimentary proficiency with the language, and most importantly, being in regular contact with people who have essentially no grasp of the English language, I need to be able to write, receive, and get help translating between English and Chinese.

Over here, any $50 Nokia cell phone has this capability, and I find it shocking that so-called "smart" phones generally lack this capability. The only phone OS that has excellent built-in support for this is iOS, which includes Chinese character handwriting recognition. Android basically has nothing that I can find or care to investigate further (everything I've found has been on the order of, "Oh, this project looks promising, you should try it out"). Maemo5 (for the Nokia N900) support, much like the expected longevity of the entire ecosystem itself, is laughable.

I want supported, retail-release-quality, first-party software. Right now only the iPhone has this that I can tell. The iPhone, and the $100 phone from Nokia I'm currently using.

Pathetic.

In an excellent illustration of what drives me further and further away from FOSS communities on a daily basis, one article, entitled "Full Chinese Japanese Korean (CJK) input on Nokia N900," recommends installing GNU Emacs, a full-featured text editor, typing the Chinese text in there, and then copy-pasting it anywhere you need it to. That's not a solution, that's a workaround, and a terrible one.

+ Apple.
- Everyone else. There are about 3 million third-party apps "in progress." None of them are good.

 

Battery life:
I need a phone that can, at minimum, last a full day of heavy use on a single charge. What genius thought it was a great idea, in this day and age, to build a cell phone that only lasted 3.5 hours on a charge? When my 3-year-old dual core laptop with a 14" screen lasts longer on one charge than your cell phone, then you have made a TERRIBLE CELL PHONE. If you have a giant screen on your phone, put a bigger battery in it. Nobody cares that it's super-thin and sexy if you can't take it anywhere because it's constantly having to be charged.

I have a cell phone that lasts up to 3 days on a single charge, with regular voice and SMS use. It can also play and record videos, and plays MP3s with very nice sound quality. However, I still use my 5-year-old, AAA-using, Creative Zen Nano Plus MP3 player instead.

You know why?

Because, if I were to miss even the most trivial of phone calls, message, or meetings because my phone's battery was dead, I'd feel enough of an idiot without having to explain that it was because I was listening to an endless loop of Baby Got Back while looking at kitten pictures on Facebook.

My cell phone is an important communications tool. If the battery's dead, I can't reach people that I need to reach, particularly since I haven't memorized a single telephone number since the advent of the contact list.

So, seriously. If you put a 4" screen and a 1GHz processor in your phone, put in better than a 1500mAh battery or bundle an AA charger with it.

+ Nobody.
- Everybody.

 

User-serviceable battery:
If the battery in my phone craps out, I want to be able to put a new battery in it. I have three, count 'em, THREE, Nokia batteries for my current phone.

The reason I have three? The first one died on me, so I bought a second one. The second one worked fine, but was a cheap knock-off, and was dropping in capacity, so I bought a new branded retail unit. After some time, I found the original and decided to try it, for shits and giggles, and it works perfectly. So now I have three Nokia phone batteries, each of which is able to power my phone for 48-72 hours without a break or a charge. I carry the two spares fully charged in my bag. They each cost less than $10 US.

They are also usable with about 90% of the Nokia phones I run into on a daily basis, so for example, if a friend's battery dies, I can lend him/her one of mine.

If I owned an iPhone, in the above scenario I would now have two spare iPhones in my bag.

- Apple. Fuck Apple.
+ Everyone else.

 

Expandable memory:
If my phone's memory is full of Lady Gaga music videos and Snuffleupagus porn, I want to be able to throw in a microSD card so I can continue stockpiling digital perversions of questionable legality. When that card fills up with dolphin snuff films and movies painstakingly tailored to induce grand mal seizures in dogs and small children, I want to be able to swap another one in... and so on.

If I take a whole series of pictures of homeless people selling me a dead dog, and my subsequent Thanksgiving dinner spread, I want to be able to pop out the SD card, throw it in my laptop, and copy the files over at full USB speed instead of having to fuck around with idiotic proprietary software and wifi or Bluetooth transfer speeds.

Most people are pretty good about this. Of course, by "most people" what I really mean is some Android phone manufacturers, and Nokia.

Windows Phone 7 lets you add an SD card... once. It is then rolled into the internal memory as a single integral file system. If you take the card out, it won't work anywhere else. This is basically so the music and movies industry won't take their balls (tiny and withered that they are) and go home. Thanks, DRM.

+ Everybody but Apple, and Windows Phone 7, with some exceptions based on phone model and OS.
- Apple, and Windows Phone 7.

 

Finally, a word on functionality. Phone and mobile OS developers: right now you are doing everything you can to make cell phones into little portable computers and entertainment media centers.

This is fine.

It's also monumentally stupid.

I know that's what sells units; I understand your average consumer loves to see little shiny UI elements fly around on their screen, spends hours playing Plants vs. Zombies while calls go to voicemail, and uses their monthly data transfer quota more for downloading Youtube upskirt video archives than sending and receiving communications with actual people.

I'm just saying, enough is enough.

Your phones all play music and video through painstakingly thought-out, beautifully designed, and precisely tuned interfaces, and have giant glossy screens and slide-out surround-sound speakers. You've spent countless man-hours developing the absolute best-looking way to have a UI element fade off screen after being dismissed, and different algorithms to index and search MP3 files on a memory card.

Fine.

Wonderful.

Just please, please spend some time now working on stuff that actually lets people get things done.

3Oct/100

Body Parts ‘n’ Crafts

I went to IKEA today to pick up some more coffee, having drunk (drank?) the last of mine yesterday. I'm down to finishing the espresso Christine left in the freezer. She thought it was instant coffee... connoisseur that she is, she enthused about the taste but declared it was strangely gritty.

Cowboy coffee made with espresso grounds is actually not that bad, especially if you're patient. The fine grounds eventually settle to the bottom of the cup, where they form a thick muddy paste that is reluctant to budge even when you're tipping the cup back for the last dregs of -- admittedly sludgy -- coffee. Yes, I am actually too lazy to decant into another cup. Nevertheless, effete as I am, I prefer normal coffee grounds that I can put through my Swissgold filter to effect that marginal, but essential, degree of separation that keeps me just above "hobo" status.

IKEA, being fairly nearby, stocking halfway decent coffee grounds, and not least having 3RMB hot dogs that are actually discernibly made of Meatâ„¢ rather than the slightly gluey, spongy concoction that normally passes for sausage filling around here, was the natural choice.

Incidentally, I still haven't been able to figure out what's inside the Chinese version of hot dogs. The flavor is not unlike an American hot dog of the lowest possible order, but the sensation is acutely peculiar. The entire experience is somewhat like eating a wet, hot, Saran-Wrapped, meat-flavoured sponge cake. I have also seen lifelong vegetarians (a couple of whom who are vegetarian for religious reasons) tuck into these with aplomb, which just adds to the mystery. But I digress.

I hopped the subway, worked my way through the crowds, got some coffee, a couple of kitchen implements, and a hot dog. Perfectly normal, aside from the 300,000 or so Chinese shoppers who accompanied me on my expedition; which, this being a Shanghai IKEA, does not quite lie outside the norm.

So, nothing special.

Fairly ho-hum.

Outside, on my way back to the subway, I walked past some guys crouched on the sidewalk, selling feet.

vlcsnap-2010-10-03-16h17m49s50This is also not actually an unusual occurrence, given certain specific thresholds of unusuality and foot origin. Feet are a regular appearance on menus here, and chickens, ducks, and pigs regularly sacrifice their lower extremities for the ravenously snackaholic Chinese public.

These, though somewhat dessicated, were the size of saucers. They had large, black claws, along with some patches of dark fur and stringy-looking flesh. There were three sitting there on a yellow towel, one just a stub with all of the phalanges missing.

I glanced briefly at them and moved on, not really registering what they could be. Then, halfway across the street, I stopped and thought for a moment, then turn around. Pulling my camera out of my backpack, I started recording video and held it casually as I walked back towards them.

Sadly, there were now a couple of cops approaching as well, and the men were being harangued by a guy in a slightly pink shirt, possibly an incensed citizen or some kind of official in plainclothes. The paws had been packed up, and the men were looking distinctly shifty and eager to get away.

vlcsnap-2010-10-03-16h18m11s239The policemen seemed uninterested; I am willing to bet all the coffee I have in the house that the poachers were simply lectured for a while longer by the Man In The White Shirt That Was Washed With A Red One By Accident At Some Point, and then skulked off to find some other Scandinavian big box home goods store outside of which to vend toes.

I made two passes with the video camera and walked away; I didn't get any good footage, but I was able to pull a couple of barely usable stills.

So that was my weird story for today; i.e., I'm Pretty Sure I Saw Some Guys Selling (Panda?) Bear Feet Outside IKEA.

----------------------

When I'm not coding all night and sleeping for two hours and then coding all day, or surreptitiously videotaping poachers, I have to occupy my time. My latest little obsession has to do with my Kindle 3, which has arrived thanks to the good graces of my parents' friends, who were kind enough to bring it in their carry-on luggage from the States.

My obsession is actually not with the device itself. While I'm happy to be able to read long-form documents in comfort again, what I'm actually obsessing about is the fact that it didn't come with a case.

Even my old Sony Pocket Reader, which I partly picked because it was the cheapest reputable one I could find, came with a basic but perfectly serviceable neoprene slip cover.

The Kindle, despite supposedly being a "premium" reader, comes with nothing. I suppose this is in order to help defray hardware costs by way of increasing sales of their self-branded covers, which by all accounts are satisfactory in that they perform the function they are meant to, but provide little in the way of real value to justify their cost. They're also fairly bland, and have some serious flaws; for example, you can apparently crack your Kindle if you try to open the cover the wrong way.

So, even though I'm using (and quite happy with) my velcro wrap for the time being, I decided I wanted to try and make my own cover. I mean, I have an entire fabric market next door, complete with two tailor friends, and I just met a custom leatherworker down there the other day.

Making a case should be the easy part; I've made some cardboard cutouts from the Kindle box for the covers, and have mocked up a basic pattern already. I just need to set the measurements, ask the leather tailor to make a rawhide back and a suede inner, and stitch them together over the cardboard. Believe it or  not, the Kindle box was the stiffest cardboard I could find; 'hard-back' books and journals here are about as robust as an unwrapped Kraft single, and I can't find classic 3-ring binders with chipboard inserts anywhere, they're just sheets of semi-rigid plastic.

The conceptual problem I've been having is how to attach the Kindle itself to the cover. Most commercial solutions I've seen use elastic bands, but I feel like they're kind of flimsy, don't hold the device in place very well, and cover up parts of the interface. Plus they look kind of ugly.

Most DIY solutions I've seen just make a big pocket for the Kindle to slide into, which is even worse, since it covers up most of the keyboard and all the ports/switches/buttons on the bottom. And it's hideous.

Up till now, the front-running candidate for me was adhesive velcro strips; stick one side to the back of the Kindle, stitch or stick the other side onto the case, and you have a velcro-attached Kindle. The problem is, that glue is industrial strength, and I'm not at all sure I want a permanent velcro strip on the back of my Kindle. There's also no telling how well the glue would hold on the suede inner, and the solution is far from elegant.

Other options seemed unlikely to be effective and/or outside the scope of my capabilities. Ryan C. suggested fabricating some metal pieces, but I seem to have temporarily misplaced my metal shop. I briefly thought a grippy silicone back with retaining tabs and snap fasteners would be perfect, but of course I don't have any silicone, molds, or knowledge of how to even begin going about anything like that. Most other options would have required drilling holes/notches/grooves/slots in the Kindle, at which point having some permanent tape on the back of it started looking pretty attractive.

Today, walking through the supermarket, I think I found my answer. It was so simple, I was shocked it didn't occur to me earlier:

Baoke brand "Sagacious" ballpoint pens.

They have 0.5mm tips, black gel-based ink, cost 4.9RMB per pair, and they're made in Shantou City, Guangdong. Appropriately for their stature, the words "FINE PEN" are etched into them in no less than two places. They are, by far, the pinnacle of gel-ink based writing technology that can be had for 4.9RMB at the Nanpu Bridge branch of HaoYouDuo Supermarkets (a Wal-Mart company) in central Shanghai.

Yeah, I don't care about any of that. I just want the pocket clips. Note the little plastic bumpers on the end, those are important too. Maybe. I originally bought these because the standoffs would help prevent scratches, but now I think I may remove them and epoxy on a piece of rubber to help grip the Kindle in place, or cover the whole thing in leather or fabric and stitch/glue on some kind of grippy surface.

I bought a pair of pens (5RMB), long-nose pliers (10RMB), and shuffled off home to... actually screw this, I'll just post a few pictures, this should make sense:

image001 image002 image003 image004

I was initially pretty dumb about bending the clips, I didn't realize how difficult it would be to get the right kind of leverage. Luckily, the bottle opener on my Gerber Curve ended up being the perfect size and shape for the task.

I'll eventually need six of these for a secure fit, two pairs on the sides (I may Dremel two clips short to fit in the pre-cut slots on the Kindle's left side) and one slightly off-from-center pair for the vertical. I'll have to sacrifice use of either the USB or headphone port while the case is in use. Since I don't intend to use the headphone port, that's probably what will get blocked.

Then I'll find an old seatbelt (or a new one, it's not like anybody uses them here anyway) or some kind of good strappy material, and cut it up to make straps; cut slots in the suede inner, ask the tailor to put buttonhole stitching around the slots for reinforcement, and thread the straps through them. Attach the straps to the clips, slide the Kindle onto the clips -- which I will also wrap in something for appearances/scratch proofing (heat-shrink tubing would be perfect, if I could find it), and that should do it.

Anyway, I mostly posted this part for Ryan to see, since he wants to copy me.

Nerd love, bro.