How to make your own buttonhook cheap

When working a while back on my private tactics compendium, I summised that we probably call the Button-hook technique after the use of a real buttonhook. Well, my new work shirts are a pain in the ass to button at the collar, so on the way to the office this morning, I thought about how to make one. Yes I’m cheap and I like solving problems here and there lol.

Unfold a paper clip like so:

And you have yourself a buttonhook for like a penny versus $5-$15 out of a store!

Plus if you push the little end closed, you have an ear clip just like my father would make. Those are the most awesome way to clean ear wax out of your ears—qtips are no good.

Playing with linpack and power save modes on my prime

This is what I’m getting with basically just a few web pages open in Opera:

  • Performance mode: up to 90-125 MFLOPS. Usually in the one hundred and teens.
  • Balanced mode: averaging around 75-115 MFLOPS. Most often between 90-110.
  • Power Save mode: averaging around 50~70 MFLOPS.
Every test was in multithreaded. The first anandtech review of the Prime has a good stack of stuff in it, I’m just fiddling around out of curiosity, not profiling :-).On the TF101 which has no power save settings in the stock ROM, and I believe my notes are recorded here.

Argh, sometimes technology just makes me sick!

Recently, I updated my journal about the repairs I tried on Sunday, well yesterday I started breaking in a TF201 and working on the epoxy trick. No luck but hey, ICS is really freaking awesome and my Prime is solid, even if I still prefer the TF101’s build.

Now today, I just threw my hands up. I was jugging things getting data transferred and the like, well, I accidentally added an icon on my TF101’s home screen and instinctively tried to remove it with my finger, before I could realize which tablet I was touching. Guess what? I got the long tap event in ADWLauncher Ex but couldn’t drag it. I got the bloody touch event in the dead area of the screen, where haven’t been able to get touch invents without using the docks touch pad! But no dragging or sliding stuff would work and the touch events would only work every few taps…than suddenly the mother fucking thing just started to work PERFECTLY until it crashed toggling the screen. Now it works perfectly.

I guess maybe whatever component got jarred just a smidge loose to cause that, must have somehow got pressed back in without me trying to do it manually, well, trying successfully, since I couldn’t get it open again… :-/. All I know is that sometimes technology makes me fucking sick!!!

*kicks the air* I’m really glad it works (for now) but I hate it when stuff like this happens o/.

My summery of Android versions

  • 1.0.
    • September of 2008.
  • 1.1.
    • February of 2009.
    • General software refinements, which I’ll usually omit below.
  • 1.5 Cupcake.
    • April of 2009.
    • Third party (custom) keyboards are now possible.
    • We got widgets!
    • Bluetooth A2DP and AVRCP profiles (think stereo).
  • 1.6 Donut.
    • September 2009.
    • Voice I/O.
      • Voice input (Speach to Text).
      • Multi-lingual voice output (Text to Speech)
    • Apps can make their data available to search results.
    • Better support for gestures.
  • 2.0 – 2.1 Eclair.
    • 2.0 in October of 2009, 2.0.1 in December of 2009, and 2.1 in January of 2010.
    • Support for multiple accounts in sync.
    • Exchange account support for email.
    • Camera app sucks much less.
  • 2.2 – 2.2.3 Froyo.
    • 2.2 in May of 2010, 2.2.1 and 2.2. in January of 2011, 2.2.3 in November of 2011.
    • Dalvik VM gains Just In Time (JIT) compilation.
    • Exchange support becomes USEFUL.
    • USB and WiFi tethering. (Use your phone as a bridge between your laptop and your data plan.)
    • Now have the option to DISABLE mobile data.
    • Apps can now be installed to external memory (e.g. MicroSD card).
  • 2.3 – 2.3.7 Gingerbread.
    • 2.3 in December of 2010, 2.3.3 in February of 2011, 2.3.4 in ???, 2.5 in July of 2011, 2.3.6 in September of 2011, and 2.3.7 in ???.
    • Native support for SIP VoIP.
    • Selecting text to cut/copy/paste actually works.
    • Text input cursor can now be precisely positioned.
    • Ext4 replaces YAFFS(2) as standard file system.
    • Native support for more sensors; gyroscopes, barometers, etc.
    • NFC support.
  • 3.0 – 3.2.2 Honeycomb
    • 3.0 in February of 2011, 3.1 in May of 2011, 3.2 in July of 2011, 3.2.1 in September of 2011, 3.2.2 in August of 2011.
    • Notification bar moved from top of screen to bottom corner.
    • On screen software buttons (back, home, multi-task, menu, …) and the action bar.
    • View of recent apps can be snap shots (multi-task button) or existing icon view (long press physical home button).
    • Browser UI becomes more like Google Chrome.
    • Browser can now sync bookmarks with Google Chrome.
    • Apps are now commonly multi-pane, e.g. message list and message body on one screen.
    • More hardware acceleration.
    • Support for multi-core CPUs.
    • Encrypting user data.
    • USB devices now work as expected, e.g. flash drives, game pads.
    • Proper support for Bluetooth keyboards, gamepads, etc.
    • Stock launcher now allows widgets to be resized.
    • WiFi performance can be maintained when screen is off (WiFi locking).
    • Apps designed for small screens can be zoomed or stretched to fit.
      • this Android 2.2 feature is a really good thing and makes many reviewer’s complaints about Honeycomb less of a big deal for normal people.
    • Screenshots (or was this just a TF101 thang?).
      • Previously required a custom ROM like Cyanogen Mod.
    • Pasting integrated with 2.3.x selection UI.
  • 4.0.1 – Ice Cream Sandwich.
    • 4.0.1 in October of 2011, 4.0.2 in November of 2011, 4.0.3 in December of 2011.
    • Small screens get traditional (1.0-2.3.x) UI, large screens get tablet style (3.x) UI from Honeycomb.
    • On screen software buttons (from 3.x) now work on phones.
    • Stock launcher catches up to common features of custom launchers.
    • Access apps from lock screen.
      • Previously required custom ROM/UI (e.g. Sense; Cyanogen Mod).
    • Unlock your phone by taking a picture of your face.
    • New Roboto font.
    • Can now monitor data usage without requiring third party apps (or custom ROMs).
    • Camera app sucks less.
    • Basic photo-editing.
    • Much stronger NFC integration, alternative to Bluetooth data transfer.
    • Yet more work on hardware acceleration.
    • WiFi Direct, a form of Ad-hoc WiFi networking and bridging.

Attempting to fix my ASUS Transformer TF101’s blank screen

Been a while but finally I’ve got a moment to update my journal, lol. Saturday night, Andera (my TF101-B1) slid off the mattress and ended up with a blank screen, and briefly some green garbles. The backlight was still working and my tablets survived the same and worse landings unscratched so, plus I know what kind of guts these things are made out of, so I knew it couldn’t possibly be hardware failure. The photo’s I took are all captioned and in an Album here.

Determined, on Sunday I went out in search of a torx screwdriver. As it happens, Fry’s didn’t have any T5’s left, just T6’s and the threads over at xda-developers said T5. So I spent the worst $10 of my life, on one of these. It’s a real piece of shit beyond the driver bits. Turns out though that some joker decided to stuff a Phillips PH000 in place of a Torx T5, and not include the T5 anywhere o/. Fucking bastards! But on the upside that was the right size for the Phillips screws I had to work with.

So I ended up undoing the torxex on the bottom (by the docking port) with a T6, and left one of them stripped by the time I was done. After that it was time to pry off the bezel, which I did a dandy number on; when putting it back on resulted in a barely working power button,I pryed it  up and used gravity to fix the power button before snapping it back in. What I found was that it’s a lot easier to pry off from the back end, YouTubest be damned.

There are three screws on top and bottom, and two on each side. I kinda missed the top three taking off the back plate so it might be good that it’s just cheap plastic.

Getting the base plate on/off was easy. Also under the metal plate that goes over the battery, is an empty space that looks like it is where you would install the 3G modem on a TF101-G.

Most of the connectors are the ugly ribbon goes into stupid pin slot with flip holder kind of Flexible Flat Cable thingy. I hate those and don’t know why they are so popular, but alas, I didn’t build the darn thing or design it. So next up I had to figure out which one is the one I needed, I tried all of them that were readily accessible just to be safe (bad idea).

In my poking around xda-developer’s I found a link to somewhere that sells replacement screens, that told me where to find it. There is even a YouTube video on the whole procedure (I’ll edit in a link from my browser history later). I personally found it easier to remove the power connector so I could access the video FFC better:

To be sure I was right or would more likely figure out what it does (in case of gross ID10T error on my part), I pulled it and reseated it very firmly.

Fired it up and voila! The touch screen was working. So I studied how much I fractured my bezel and put it back together, note carefully that the holes nearest the docking port are for the TORX screws that go in LAST!

On boot up, everything went perfectly well until I noticed that back and home didn’t work. A little bit of testing showed that entire portion of the touch screen is not getting any touch events :'(. I’m not sure if it’s another ribbon out of place or just that I missed a couple screws on the back plate (d’oh). But since I  have the dock, I’m pretty much able to use it. The one torx is now too stripped to drive, so until I figure out a solution to that, Andera is missing touch input on the left most (view able) inch of the screen.

I don’t have a drill or I would just hit the hardware store for a drill bit to get the sucker out, and trust me,  my trusty awl doesn’t seem to one to carve a slot in it. Don’t have any rubber bands good enough to try, so I’m thinking about grabbing a tube of epoxy on the way home from work and see what happens….if I can fix it, I’m gonna fucking fix it! In the mean time, I’ve ordered a Transformer Prime / TF201-B1, because the best I can get here is a TF101-A1; and I’m already using over 10GB on my TF101-B1, so $400+whatever memory card Best Buy has, is not worth it. Like wise, if I’m getting stuck spending so much money, may as well buy the prime instead of a later version of TF101-B1 (mines a B50 with no Q/C issues). I’m very partial to my mid-generation TF101….

Oh, btw don’t forget to put the screws in the back plate if you try this at home.

Well, I suppose all awesome footwear must wear out eventually, such is the nature of the clothes you love. On my way to visit my girl friend and her family over the break, coming through security in Calgary, while I was putting my boots on I noticed a nice hole in the lower port, inward side. It’s about large enough to put a finger through. I don’t know when the breakage happened, never noticed it before; leaving Atlanta I was a tad to pre-occupied with getting to my gate to notice.

While I was in Canada, I showed this to my Firefly and she noticed that the outsoles were also dead on arrival.

I should probably have noticed this myself, once I started to note unusual traction loss and “Sliding” around the past few months. I looked up what it would cost for having them resoled with vibram

My boots outsoles are pretty cheap, clicking through the picture in this journal entry links to their page at Rotcho. Actually, I think everything they make is pretty cheap but the quality to cost ratio is reasonable enough in all the cases that I’ve tried. These boots are Pretty Damn Comfortable and the material is sufficent for my environment, now if I was jumping out of air planes for a living or a park ranger, I might decide otherwise.

If it wasn’t for the hole in my port boot, I’d likely try to have them resoled. That would probably cost more than my boots are worth, or at least with something like a vibram outsole. Maybe that’d still be like putting lipstick on a pig, but I really like my boots lol. Bet a decent shoe repairer could even fix the hole.

So, bit of a debate: just buy a new pair or invest in something better. I’m thinking that if I bought a new pair of Rotcho 5057’s, I’d may as well buy a new pair every 8-14 months; however long it takes to wear out the outsoles. I’m not really convinced that even e.g. a vibram outsole is going to offer /that/ much greater life, but hey, if you’re gonna spend the $ to resole boots, may as well have a quality boot worth more than the resoling cost, eh? In looking around, I’m thinking about Belleville 790’s or 795’s. The former is unlined like my Rothco 5057’s, where as the latter has almost half a pound of insulation. My feet don’t really get very cold, at least not under socks and inside my boots, even when we were walking out in -8C/+18F kind of temps with ice/snow, I was perfectly warm of foot. In particular I like the look of the Belleville’s construction versus the Rotcho. What I don’t like, is there is NO one here that sells the darn things, so the only option is online.

Of course, if it doesn’t work out, I could always get up early one Saturday and take a drive over the Bear Paw Army & Navy in Griffin, and see if they’ve got anything I could use.

Dropbox 2.0 for Android: fixing your folder

I don’t get why so many people are pissed at this. The old folder location was at ${sdcard}/dropbox. This is really good for an app like Dropbox and I wish they would have kept it, but to be honest, it does technically belong in the new location of ${sdcard}/Android/data/com.dropbox.android/files/scratch. Although I would’ve used dropbox or cache instead of scratch but whatever.

Don’t like it? Well guess what, fix it yourself. Open a terminal emulator [0] [1] and do the following:



example# ln -s /mnt/sdcard/Android/data/com.dropbox.android/files/scratch /mnt/sdcard/dropbox

If you get an error about no ln command being found, you should install busybox and add it to your $PATH.

If you’ve got a real MicroSD card, you may get an error about the operation being unsupported (etc). In which case you either need root or you need to use a file system that supports symlinks. Which means probably reformatting your memory card as NTFS, or EXT4, or YAFFS2. Whatever your shit can read, because FAT32 is probably not going to support symlinks.


If you’ve got a device like my Transformer, that has an internal memory on /mnt/sdcard (${sdcard}), odds are the actual data is somewhere behind a FUSE shim, and is really stored at something like /data/media on an ext4fs partition. Easy symlinkage!

If none of the above makes any sense, you only no one tenth the power of Android and should have learned more about unix and Android, or maybe have bought an iPhone.

Thoughts on Android Game architecture

Games for Android are a little different than writing for PC or console, really seems to be less of the dull grundge as well. But at the price, for more advanced efforts there are less resources sitting right there on Fresh Meat or Source Forge for the hunting up. Me being me, of course, I aways have an interest in cross platform portability (as well as a general disdain for Oracle Java).

One thought that occured to me, is why not do it the same as I would on a PC?

What is the activity to a game? What the user sees. All it really needs to know is processing input, rendering output, and talking to the big cheese. That’s it. Hell, before we talk communication methods, step back and think there: an Android activiy and a Windows executable could both function as clients, talk to the same server, and have a cross platform multiplayer game. Or even a screen like detach/reattach feature where you could begin playing on your mobile phone, then switch to a PC with way better graphics. Threating the user side of the app as a “Client”, it would be possible to have a low-end client for basic phones and a high definition client for sexy tablets.

To make it work, we need a service program to communicate with. On a PC, I would probably use shared memory for offline play and sockets for network play. In favour of shared memory, would be the ease at which C++ code would likely be tweakable to use a shared memory allocator to store command objects, rather than having to do as much extra leg work to serialize the information within across a process boundry. Android land makes most issues a moot point. Network wise, I’d probably just use JSON.

Something that interests me, is how much of the core game design be implemented in such a way, that it could be used off Android by reusing the same library. C code, whatever C++ code the NDK can compile, or Java code should all work, as long as long as one watchs what non-portable bits are stuffed in there.

Putting this much thought into it, can probably be blamed on poking around the FreeBSD and Q3A source trees over the years, and finding the possibilities fascinating lol.

My word, if you’re not using Opera and it’s Dragonfly for web development, all I can say is Firebug users, eat your bits out.

Hello old friend

Well, I’ve just done something unexpected: I installed Opera on my workstation.  It has the operating systems default (a red dinosaur) and Google Chrome setup, which I have used since I got tired of diving into Firefox only for Firebug. In practice, I find Chrome’s stuff to be equally useful to me.

Now, why did I install opera? Generally I like to keep my environment pretty much the same; a look at my shell profile would make that obvious. At home, Chrome has developed an odd problem on my desktop, Dahlia. No sound plays: be it from Flash or Silverlight. Haven’t tried anything else, since e.g. WMV and QuickTime seem to have died out in the last lustrum (good riddens QuickTime!).

So, I am considering replacing Chrome with Opera as my defacto standard browser, as much as I love Chrome, do I really like openning another browser whenever I want sound? If you say try Firefox (or relation there of) I will find where you are and unplug your Internet with a vengeance. The only other browser Dahlia has is Internet Explorer 9; which is actually a nice enough browser to use but doesn’t even meet my criteria as well as Mozilla.

Pluses for Opera:

  • We’re old friends: I used to use Opera 8.5 – early 9.x as my daily surfer.
  • It’s stable, tried, true, and reliable.
  • I use Opera Mobile on my Androids.
  • It’s not the fattest ass at the track, *cough*.
  • Tomorrows staple feature is usually probably be todays Opera feature.

Negatives:

  • Some moron developers treat Opera like a deranged step brother.
  • Silverlight isn’t officially supported, but probably works.

I find it startling how much alike Opera Mobile and Opera is. All that is really missing is more advanced settings, and ‘lesser’ used features like gesture support (cool) and panels.

We’ll see what happens but I’ll give the experiment a go. Something that especially interests me, it seems that Opera Dragonfly is more or less the same thing as what Chrome has, plus “Opera Turbo” may be a viable option. At work, things can get really congested on the network, especially the wired one my desk switch, workstation, and test units mate with. So WiFi is usually the only way to browse to Internet resources – Opera Turbo might help with the network spikes, so I’ve got it set to automatic here, at home I won’t need it.

Opera Turbo is a function that feeds data through a proxy server for compression, all that means to normal people is that if your computer is older than petrified dog shit or you’re on a slow network, you get faster page loads. The privacy issue doesn’t bother me much, not at work. No one is watching closely AFAIK but there’s little to find past e.g. editing my calendar.