Tuesday, December 4, 2012

The Urgent versus the Wise… the next crisis?

I caught this blog post, The Tyranny of the Urgent, via IEEE. It happen to resonate with some recent reflections on the plus and minus of Continuous Deployment or Continuous Integration. Jim cites “Agile development easily devolves into management by crisis.”


I have observed that being agile and delivering quickly tend to deliver superficial products. Products that are then reworked, and reworked, and reworked. At one extreme, you have waterfall development which results in absolutely detailed plans that are difficult to adjust. At the other extreme, agile has been been taken by some into a gospel of immediate execution.  All of the troops get up and charge across the open field. Yes, the objective may be taken but there is often a high body count, a wasteful body count.


Recently I talked to a neuropsychologist who have treated many many battle causalities from Microsoft, Amazon, Google and many start-ups. Unlike the US Marines, with “no man left behind”, causalities are brushed off as “well, they should not be in this business if they cannot handle it”.


Having a career that span a few decades, I have seen several decades where “no man left behind” was the norm, the social contract between company and employees.  Employees that were fried or needed R&R, would be shifted to suitable work without any thought about it. Today, firms will show an employee  out of the door because they are not up to speed in today’s favor-of-the week. (What, no training of employees?)  Today, it’s out-of-the door. In reading comments at GlassDoor.com, it seems that Netflix is likely the worst. A quick Google will find many firms with a 100+% annual turnover rate for developers.  When I started working in this industry, a rate of 5% or less was not unusual.


So the question is:  Where will this end? How will it end?

Monday, December 3, 2012

Installing Motorola Droid as an Android Debug Bridge device

In my last post I successfully installed the Kindle driver as an Android Debug Bridge (adb) device. My Motorola Droid was not recognized as an adb device – and for one application that I am planning to do, I need GPS. So once more into the world of partially correct forum posts.

  1. First item to check was to insure that adb was enabled on the device!  It turned out that I had not enabled it (I had enabled Unknown Sources).
    1. When I connected the USB after changing the adb setting, I received a driver error. The phone now shows as a Drive (G:\) only instead of MTP USB Device.  One step forward, half a step back.
  2. I decided to just double check that the adb is not working… so at the command line,image
  3. What! It’s there. The device ID is different from the Kindle. Smile

This was a mercifully short post.  If I had not double checked, I could easily gone down a rabbit hole trying to get something looking like a phone showing up in the device manager. A rabbit hole that could have resulted in hours of frustrations.  Instead, I just see a misleading “G:\” for my Motorola Droid, and “Kindle” for my Kindle. Aaarrrgh!

Titanium Studio “Appcelerator” and Kindle HD development on Windows-64

,I’ve started to play with Appcelerator because it is effectively a cross-platform development platform for Droid, HTML5 and iOS. About two years ago I had done some Droid development just using the SDK. I have encountered a few frustrations and have not been pleased with the load time for the Droid Emulator on a Windows-7 x64 box with quad cores and 10 gigs of memory. For some simple applications, I have drunk a cup of coffee in the time that it took to build and launch in the emulator.


My traditional “magical chant” to get rid of technical frustrations is to start documenting. Often the process of documentation result in discovering skipped tests or alternative paths that could be needed.



  1. Download Titanium from http://www.appcelerator.com/. Large download. I ended up having to re-install it to C:\Titanium, it appears that having a space in various paths results in problems according to forums. Doing this resolved some build issues and set a pattern that I kept
  2. Download the Android ADT Bundle for Windows, Based on the above experience, I installed it to C:\Android. KISS.
  3. Verified that I had the latest JAVA SDE, Installed into C:\Java.
  4. Modify the environmental variables.
    1. Added JAVA_HOME, set it to C:\Java\jdk1.7.0_09\ (needless to say, this should match what you have installed)
    2. Added to PATH, the JAVA bin folder,   C:\Java\jdk1.7.0_09\bin;
  5. After some failed compiles and digging in forums, it appears that Android 2.2 (API 8) needs to be installed also. See Android SDK Manager (C:\Android\sdk\tools\android.bat ) image below..
  6. At this point, I could successfully build the HelloWorld application and launch it in the emulator. Needless to say, there seems to be a lot more overhead then with .Net Development in Visual Studio.
  7. Because the emulator was so slow to load, and Titanium offers build to device, I decided to try it.  Plugging in both Kindle Fire and a proper Android phone vias USB cable --- nothing was seen. No new drives…. Manure! Evidently the above process altered something with drivers, registry etc. Since using Kindle HD was my preferred Droid device, I proceeded over to Amazon to see how I needed to make it so.

Amazon Kindle (and HD)

  1. First, we needed to add additional Andorid SDKs, see this page for a complete list (API 10, 15).
    1. There is also a list of Kindle Emulators and how to set them up at this page.
      Personally, I prefer defining them from the command line (“..\tools\android avd”). Then switch to Device Definitions and just click:
    2. OUCH, I also have to install Java 6 according to this page, the x86 version (even if you are running x64),
  2. Then you need to edit some files (more details here)
    1.  C:\Users\{UserName}\.android\adb_usb.ini, add  0x1949 on the last line
    2. C:\Users\{UserName}\.android\android_winusb.inf … which appear to be missing!
  3. Searching the drive,
    I found two copies of the file android_winusb.inf
    1. C:\Android\sdk\extras\google\usb_driver
    2. C:\eclipse\AndroidSDK\extras\google\usb_driver
  4. When in doubt, modify all of them…
  5. Completing the instructions here,  I expected success --- unfortunately more manure….
  6. I got the message:
  7. Checking this page, I found different instructions specific for Windows-7. Just run C:\Android\sdk\extras\amazon\kindle_fire_usb_driver\Kindle Fire ADB drivers.exe.
  8. Checking Device Manager, I now see that the Kindle now has a driver.
  9. Checking things at the command line shows that it is now there!
  10. I disconnected the Fire, plugged in my phone – no device listed… Checking Device Manager shows that I am missing a driver…
  11. Getting the phone working will be covered in a subsequent post.

That’s it for today (this weekend’s) battle against incomplete documentation…