Android and the Amateur: a n00b’s first look at Android development with the Yoga Tab 8

This is a draft of an article I wrote for “Community Spotlight” over at the Lenovo forums: In the Spotlight: App attack: Zoltanthegypsy’s first Android app.

I recently had my first taste of Android development.  With no prior Android experience – as either a user or developer – it was pretty interesting.  The occasion was porting a toy tcl/tk application that was running in Windows, Linux, and  Apple’s OS over to the Android environment.  More about that later.  Much later…

The tablet:

First, thanks to Lenovo for providing the Yoga Tablet 8 for this exercise.  I’m a old-school keyboard and TrackPoint using command-line c coder, so I was a pleasantly surprised by the little tablet’s capabilities.  The touchscreen is very readable and usable and the “kickstand” is a nice feature.  It’s handy to have the YT8 propped up and visible while using an external keyboard or poking at it from an attached PC.

Battery life is ridiculous.  In all my playing with it, I haven’t needed to recharge yet.  I can’t give you specific numbers but in my use case it looks to be at least 10+ hours.  Nice.

Another very useful feature is the OTG (on-the-go) micro USB port.  The provided standard micro USB cable works for charging or attaching to a PC for file transfer.  With an OTG adapter plugged in, the tablet becomes a USB host.  The OTG adapter provides a female USB connector that can be used to attach a keyboard (nice for development work) or things like my USB flash nunchucks (pictured below) for file backup and off-line transfer.

Bluetooth is also available.  The Lenovo compact USB and Bluetooth keyboards worked very well with the YT8.

YT8_and_USB_kbd_RESIZED

YT8_and_bluetooth_kbd_RESIZED

YT8_and_flash_drives_RESIZED

Added apps:

A pair of apps were immediate necessities.  I’m comfortable working from the Linux command line (a Linux kernel is at the heart of the Android environment – mostly invisible to the user) so I needed a terminal emulator.  Off to the Google Play Store and grab Android Terminal Emulator.  It was obvious very quickly that the stock on-screen keyboard was going to be a challenge.  Arrow keys to recall and modify previous command line entries are close to mandatory.  Back to the Play Store and add Hacker’s Keyboard.  There are some really excellent free apps available via the Play store.  Who knew?

Hackers_keyboard_RESIZED

Now it’s easy to navigate the internals of the system – hunting down file paths and manipulating things not easily accessible via the stock file browser.  I’ll admit that it was often even easier yet to attach the YT8 to my desktop PC and just use Windows Explorer (yeah, I’m running Win 7 on the desktop) to navigate the tablet’s filesystem.  The tablet shows up as an attached storage device in explorer.

YogaTab8inExplorer

Development guides and tools:

To the bookstore… some browsing and guesswork led me to Ed Burnette’s Hello Android.  For me – the totally clueless – it was a good place to start.  Looks like development is usually done with an Android emulator running on a host machine.  Faster is better. See below.

The book said to install Java (the development kit, not just the runtime), an IDE, and the Android SDK. Things change fast in this realm so it was a little easier than that.  The JDK SE 7 development kit comes from Oracle.  Everything else can be found at the Android developer site.  The Android SDK now includes the Eclipse IDE, so that’s a plus.

First impression of the Android emulator:  slow.  Really, really slow.  Unusably slow.  This can be greatly improved by installing the Intel Hardware Accelerated Execution Manager (HAXM) and an x86 Atom System Image.  These allow taking advantage of the host computer’s hardware virtualization.  Thanks to this article:  Slow Android emulator.

I wanted to add the Terminal Emulator and Hacker’s keyboard to the emulator.  Another thing that you real developers already know: in order for the emulation to install apps from the Google Play Store, it’s necessary to link the emulation to a Google account.  To do that, the Google APIs must be added to the Android emulation.  Use the SDK manager in the Android IDE.  Another way to do this is to browse to the app in the store and then follow the link to the individual app’s author’s site.  There’s usually a download link there.

T420_Eclipse_Android

The project.  At last:

This began with a desire to try some GUI programming.  In my professional life I design hardware and write Linux and Solaris device drivers and test code.  Command line stuff.  vi and BASH.  No GUI experience at all.

My little toy GUI project was a Sudoku solver written tcl/tk using Active’s free community edition multi-platform tcl.  It doesn’t do anything useful but was a good learning experience.  For fun it will try to solve (but not generate) Sudoku puzzles in Arabic numerals (123…) or Kanji (四, 五, 六).

sudoku_kanji

Problem is, that’s tcl/tk.  Android requires Java.  Yike.  The conversion could take forever since I don’t know Java.  Lenovo’s Android developer forum and AndroWish to the rescue…

AndroWish:

The Lenovo forums have recently added the Lenovo Developer Community, including Android Ecosystem Developers.  I posted a n00b’s request for guidance there: [Android n00b] how to begin?  No idea how such a basic request would be received.

I got an almost immediate reply from Christian Werner, the author and maintainer of AndroWish.  This is a wonderful project that’s brought tcl/tk to Android.  With his encouragement – he even caught a typo in my code that had been lurking there all along – I quickly had my little toy program running in the Android emulator and on the Yoga Tab 8.  Maybe I can put off learning Java for another year or two :)

At this time it’s necessary to launch my little program from AndroWish’s command line.  The next phase of the project will be to convert it into an actual Android app.  Christian has provided tools and a how to:  HelloTclTk.

Many thanks to Christian Werner for his help, to the nice people at the comp.lang.tcl newsgroup for getting me going in the fist place, and to Lenovo for providing the Yoga Tab 8 – and a place to post and share.

Z.

..oh, almost forgot…

T420_and_YT8_RESIZED

Posted in Uncategorized | Leave a comment

Phantom NumLock

A friend’s laptop came back from service the other day in a very strange state.  It was acting as if NumLock was on – but it doesn’t have a NumLock key or the numeric overlay below.  That makes it difficult (impossible!) to enter a password that contains u,i,o,j,k, or l – or do anything else with that part of the keyboard.

Keyboard_10key_snip

There is a way around this.  Use the on-screen keyboard available via the Ease of Access icon on the log in screen.  Click on the Ease of Access icon, then check “Type without the keyboard” and click “OK”.

Login_accessibility

That will bring up the on-screen keyboard.  Click “Options” and check “Turn on numeric keypad” and click “OK”.

Login_onscreen_keyboard_options

You should now have an on-screen keyboard with a NumLock key that will also affect the physical keyboard.

Login_onscreen_keyboard_numlock

This can also be done from within Windows (if you can get that far) via Start -> Accessories -> Ease of Access -> On-Screen Keyboard.

Posted in Uncategorized | Leave a comment

The Old Man

We lost the patriarch a year ago.  A small remembrance:

Full fathom five thy father lies;
Of his bones are coral made;
Those are pearls that were his eyes;
Nothing of him that doth fade,
But doth suffer a sea-change
Into something rich and strange.
Sea-nymphs hourly ring his knell:

Hark! now I hear them — Ding-dong, bell.

William Shakespeare – from “The Tempest”

Posted in Uncategorized | Leave a comment

Intel Sandy Bridge NIC Driver for Linux (e1000e)

The short version of this story is “don’t have any spaces in your directory path.”

My recent multi-boot build was based on an Intel DH67CL motherboard with an H67 chipset.  The NIC is an Intel 82579V, PCI ID 8086,1503.  I downloaded the Intel driver direct from the Intel site: Network Adapter Driver for PCI-E Gigabit Network Connections under Linux.

It built, installed, and worked on several Linuxen in this multi-boot machine – including a live CD image (with persistenct) that I keep in the boot partition – but failed for Suse Enterprise Linux V11.

The error message during build was something like “no rule to make target xxxx.”

Turns out it was nothing to do with Suse.  Since I didn’t have a working NIC, I was downloading to a windows machine, copying to a thumb drive, and copying that to the target Linux install. The download directory on the Windows box was something like “Intel NIC Driver”.  By chance, I had copied its contents to most of my Linux installs, but copied the entire directory to the Suse install.

The spaces in the directory name were confusing make, and causing the less-than-helpful error message.  Got rid of the spaces, and make was happy again.

Posted in Uncategorized | Leave a comment

Sandy Bridge NIC vs. Solaris 10 & 11

I’ve been working with a new multiboot build: Intel DH67CL motherboard and i3-2120.  It needs to boot Solaris 10 and 11 (among several other OSen) for PCI board and driver testing.

Networking isn’t absolutely necessary, but sure would be handy.  I was prepared to do without, since this is new-ish hardware that may not have Solaris driver support, but was pleasantly surprised – mostly.

The i3 graphics are fine on both S10 & 11, and run my monitor at full resolution out of the box.  Networking worked out of the box for Solaris 11 using the e1000g driver (included in the Solaris distro), but not for ’10.

The chipset NIC is an Intel 82579V, PCI ID 8086,1503.  The usual trick of just adding the PCI ID to the existing driver didn’t help:

update_drv -a -i '"pci8086,1503"' e1000g
Driver (e1000g) successfully added to system but failed to attach ..

Tried every other trick I could think of including copying the Solaris 11 driver. (It still seems like that should have worked using the process below, but maybe I missed something).

Finally out of desperation I installed Solaris 10 U10.  (update 10).  Had been working with U9.  Continuing in this optimistic mode I tried the driver update again:

update_drv -a -i '"pci8086,1503"' e1000g
(no error message - yay!)

Since the networking wasn’t auto-configured during install, I had to manually set up the NIC and configure for DHCP.  Per Rich Teer’s Solaris DHCP guide http://www.rite-group.com/rich/solaris_dhcp.html:

ifconfig e1000g0 plumb  (that's a ZERO on the end)
touch /etc/hostname.e1000g0
touch /etc/dhcp.e1000g0 (which will use defaults)
(verify /etc/nodename is already configured to the desired
hostname if not - edit accordingly)
reboot...

And I had an operating network connection.

Posted in Uncategorized | 1 Comment

Freeze Your Hard Drive

(Full disclosure: Bob at Bainbridge Computer Services showed me this trick a few years back.)

Sometimes a dead or dying hard drive can be resurrected long enough to rescue important files, or even pull a full clone.

Drives sometimes fail in a heat-related way.  Freezing and then quickly pulling off important data works in a surprisingly high percentage of cases.

I wrap a drive in plastic to prevent condensation (an anti-stat bag is preferred) and freeze it for 2 or 3 hours.  Then pull it out of the freezer and quickly attach to a computer.  If necessary, re-install it in the original host machine, but it’s better to connect via an external USB to IDE/SATA adapter so it can be kept cold longer.  Another approach is to connect to a desktop machine with the case open so the cables can be brought outside the machine.

If using an external adapter or cables to the outside, with the drive still wrapped in plastic, sandwich it between two freezer gel-packs (or bags of frozen peas) and wrap the whole mess in a towel.

If you are lucky, the drive will return to life long enough to copy the important stuff.   In the best case, you may be able to clone the drive and avoid a long re-install process.

Here’s an example of an external USB to  IDE/SATA adapter.  Most of them are USB 2.0 just now.  Since speed is of the essence, USB 3 or a direct IDE or SATA/eSATA connection would be better.

Posted in Uncategorized | 2 Comments

Bainbridge Computer Services

Looking for computer support in the Bainbridge Island, WA, USA area?  Check this out.  The dude has skills.

Bainbridge Computer Services

Posted in Default | Leave a comment

Notes About Laptop Drive Noise and Performance

After experimenting with three 500GB 7200RPM laptop drives for the ThinkPad T400, I’ve finally settled on one.  For now…

The StinkPad had a perfectly good 320GB 7200RPM Hitachi drive installed, but it was rapidly filling up with virtual machines.  Time for a 500GB drive.  Simple clone job using Acronis: Cloning Hard Drives With Acronis

I specifically wanted an old-style 512-bytes per sector drive to avoid possible problems with Advanced Format drives.  That didn’t actually go that well: Windows Update Broken After Cloning Hard drive, but back to the story…

Drive number 1: Western Digital WD5000BEKT.  Performance seemed excellent but it made a maddening intermittent noise: Strange Laptop Drive Noise: “Whoosh”

Drive number 2: Hitachi 0S02858.  This had been shipping as a 7K500 drive with 512-byte sectors.  Mine had the 0S02858 model number on the box but it contained a 7K750 Advanced Format drive (see “Windows Update Broken…” above).  Hitachi support says that 0S02858 model number is only guaranteed to be a 500GB 7200RPM drive, but could be either “7K” model, or even some other drive.

I got past the AF issues, but performance didn’t seem as snappy as the WD drive.  Purely subjective observation.

Drive number 3: I found a good deal on a SAMSUNG Spinpoint MP4 HM500JJ.  $50 at NewEgg.  That’s a 512-byte per sector drive.  I was hoping for better performance.  No joy there.  Subjective performance was the same as the Hitachi.  In addition, the Samsung introduced a very noticeable vibration in the StinkPad palmrest.  Some folks, with some laptops, might not find it objecionable.  I’m waaaay to picky for my own good.

As of now, I’m back to the Hitachi drive.  Its vibration level is almost imperceptible.  Performance is OK.  Advanced Format issues are solved.  And it runs a little cooler than the Samsung.

Below are the HD Tune reports for all three.

Posted in Default | Leave a comment

Windows Update Broken After Cloning Hard drive

You just migrated your system to a new hard drive by cloning or restoring a backup.  Things seem to be working, but Windows Update fails.  The error popup says that the service isn’t running but task manager says that it is.  You’ve just been bitten by the new Advanced Format (4k-byte sector) hard drives.

I recently upgraded my ThinkPad T400 (Windows 7 Pro 64) from a 320GB 7200RPM drive to a 500GB 7200RPM drive.  It was a simple process using Acronis: Cloning Hard Drives With Acronis.  I specifically shopped for an older style drive that used 512-byte sectors.

The industry is rapidly going to “Advanced Format” drives that have 4k-type sectors: Advanced Format (wikipedia).  The AF drives can cause problems with performance if their partitions aren’t correctly aligned, especially when running Windows XP.  Unfortunately, the on-line drive documentation I consulted when selecting a drive was incorrect, and I ended up with an AF drive.  I’m running W7 – which supposedly supports AF drives.  It wasn’t that simple…

First, a note about how I ended up with an AF drive.  I was aware of possible issues with 4k-byte sectors, so I specifically looked for a non-AF drive.  My first choice was a Western Digital WD5000BEKT from Amazon.  It worked OK, but was too noisy: Strange Laptop Drive Noise: “Whoosh” Next choice was a Hitachi 0S02858.  All the comments on Amazon indicate that it’s a 7K500-500 drive with 512-byte sectors.  The one I received was actually a 7K750-500 Advanced Format drive.  So was its replacement.  A Hitachi tech told me that the 0S02858 part number indicated a 7K500 drive, and that I should have Amazon replace it.  He later said that Hitachi might ship either model under that part number.  Grrrr!

Back to the Windows Update problem.  Windows 7 is supposed to understand AF drives, and correctly aligns partitions.  Sort of.  Without the updates in a hotfix (or SP1 ??) , Windows can’t detect the drive’s physical sector size, and Update (and some other features) fail.  I was already running SP1, so it should have been OK.  Microsoft explanation and hotfix link: An update that improves the compatibility of Windows 7 and Windows Server 2008 R2 with Advanced Format Disks is available  On my ThinkPad T400, the hotfix just errored out with no additional information.

To cut to the chase, SP1 and the hotfix weren’t correctly updating the storage driver, so it couldn’t report sector size to Windows.  The clue here was that fsutil (see that Microsoft link, above) was reporting “bytes per physical sector” as “<Not Supported>”.

My fix was to manually install the latest Intel driver: Intel® Rapid Storage Technology  (link may be stale – see update below) That installs a lot more than necessary – AFAICS – but was an easy fix.  fsutil now reports the 4096-byte sector size, and Windows Update works.  I’ve also heard that installing the AHCI driver from the Lenovo driver matrix for one of the Huron River ThinkPads (T420/T520/X220/etc) would also do the job w/a smaller install (and less Intel crapware) but I have not tested that.   After updating the storage driver the hotfix happily announced that it (the hotfix) was already installed.

Update 2012.12.12 The Intel driver download is a moving target.  Try this search link if the one above doesn’t work: http://downloadcenter.intel.com/SearchResult.aspx?lang=eng&ProductFamily=Software+Products&ProductLine=Chipset+Software&ProductProduct=Intel%C2%AE+Rapid+Storage+Technology+%28Intel%C2%AE+RST%29

Update 2011.10.04 Have a look at the readme that comes with the Intel driver.  There are some command line options that allow installing the driver only without all the other unnecessary stuff.

Update 2012.10.15 That Intel link target keeps changing.  Try going to Intel.com and searching on “rapid storage technology”.  Pick the latest result that matches your operating system.  Then download the iata_enu.exe and readme files.

For XP users, the story is more painful.  Here are a couple of links to drive manufacturer’s tools – that should help:

Western Digital documentation and tools: Advanced Format Software

Hitachi whitepaper:  Advanced Format Drives   Hitachi Alignment tool:  Hitachi Align tool

Those alignment tools are the private-labeled Acronis alignment tool.

Sorry about the long post.  Hope it helps someone.

Posted in Default | 35 Comments

Thunderbird 5: Slow (and incompatible with ESET)

I recently upgraded to Thunderbird 5.  First impressions: pretty, and pretty slow. Lots of lag when deleting email made for a real pain when removing the 100 or spams and viruses that show up in my inbox every day.  There’s a fix.  It also doesn’t play nice with ESET security.  No fix available.

The lag when deleting each bogus email in the inbox was intolerable.  It’s likely the delay wasn’t so much in the deletion, but in displaying the next email in the list.  Like the FireFox font issues, this also relates to hardware acceleration.

Per this thread Why is Thunderbird 5.0 so SLOW? CAUSED by direct2d toggling gfx.direct2d.disabled and layers.acceleration.disabled to true (Go into Tools → Options → Advanced → General and click Config Editor)  speeds things up.  It did for me.

More troublesome was finding out that ESET is not compatible with Thunderbird 5 – or 4.  I’ve tried ESET a couple of times, but always gone back to Avast + Sphinx because ESET seems to make the S3 sleep issues worse on my desktop.  I decided to give it another try and went through the thrash of uninstalling the other stuff, fixing up my POP3 and SMTP settings, and installing ESET.  None of the ESET features showed up in T-bird.

ESET has said on various security forums that ESET 5 (the next version) will support T-bird 5.  Of course, by then we will be at T-bird 6.  Or 7.  Or 8.  Thunderbird 5Is ESET Smart Security compatible with Thunderbird?

I’ve decided to continue with the ESET experiment, so for now I’ve reverted Thunderbird to 3.1.11.

Posted in Default | Leave a comment