Upgradeering – Using bugs to push users down the upgrade path

I’m sure many software companies have discovered this before me. But it dawned on me today that you can use bugs/defects in your software to push users towards upgrading to your latest version. There’s a definite case for marking certain bugs as “will not fix” for reasons that it will be frustrating to users and they will see the fix in the new version almost as a “feature”.

The balancing act is making sure that leaving the bug in the software isn’t so critical that users abandon your software altogether. However for minor annoyances or not oft-used features, this business strategy makes sense. This strategy becomes a weakness if users decide to make noise about the problem, or have a collective grief outlet. However if it’s the kind of issue that many people notice but don’t actively complain about – it might be just the type of bug to ignore in this release! Not only will you get more money out of it, but your developers don’t spend time fixing these minor issues. I wouldn’t go so far as calling it a win-win, but it’s certainly profitable.

This doesn’t really work as well with a software as a service, where there really isn’t a clear upgrade path and bugs tend to affect all versions/offerings of your software.

This is obviously not a transparent way to run a software enterprise, but it’s probably one already in practice out in the wild and has some merits.

Chrome Remote Debugging Nexus 7 on Windows 8

After running into issues with the instructions on the official Google page for Remote Debugging, I had to do some sleuthing to figure out how to make Windows 8 run remote debugging of my Nexus 7.

The trick (as usual) is drivers. If you’re running the “adb devices” command and coming up with no devices, or perhaps you’re running the full “adb forward tcp:9222 localabstract:chrome_devtools_remote” and getting “Device not found”, even after typing in “adb kill-server” … then you’re in the right place.

  1. Plug in your Nexus 7 and follow the instructions on the official Google page for Remote Debugging. Basically download and extract the Android SDK, set up your device for USB debugging, and set up Chrome for web debugging
  2. In Windows 8, right click in the bottom left side of the screen (where the “Start” button used to be). Click “Device Manager”.
  3. You should see a Nexus driver with a warning triangle like this nexusdriver
  4. Click “Update Driver”, and select “Browse my computer for driver software”.
  5. Find the folder where you installed the Android SDK and choose the folder: /sdk/extras/google/usb_driver. Make sure you keep “Include subfolders” checked.
  6. Your drivers should be successfully installed
  7. Now go to command line and run “adb kill-server” followed by “adb devices” and you should see your Nexus like so:Untitled

Hope that helps you along. Happy debugging,



3 finger middle click (not 3 middle fingers)

With multi-touch trackpads something I’ve always missed since I lost my Macbook Pro is a three finger tap to middle click. I used this to open up new tabs in the browser without having to do the “right click – open in new tab” thing. The quickest way to figure out if you have ELAN or Synaptics, is to go to Control Panel, Mouse, and then check the last tab probably called “Touchpad”. The presence of the text Synaptic or Elan will guide you in the right direction.

ELAN Touchpad

Here is how you enable 3 finger middle click on ELAN touchpads. This applies to my Samsung Series 7 but should apply to most new Samsung’s as well.

  1. Windows 7 – Start, Run, regedit.exe
  2. Windows 8 – Go to metro, type ‘regedit’ and click on it
  3. Navigate to HKEY_CURRENT_USER > Software > Elantech > SmartPad
  4. Double click “Tap_Three_Finger” and set it to 2. By default mine was set to 7.
  5. Restart your computer (actually necessary)

Synaptics Touchpad

If you have a Synaptics touch pad. Follow these instructions:

  1. Windows 7 – Start, Run, regedit.exe
  2. Windows 8 – Go to metro, type ‘regedit’ and click on it
  3. Navigate to HKEY_CURRENT_USER > Software > Synaptics > SynTP > TouchPadPS2
  4. Double click “3FingerTapAction” and set it to 4. By default mine was set to 0.
  5. Restart your computer or log in and out (actually necessary)

This shouldn’t mess with anything. If you notice anything weird happening, go in and reverse it. Otherwise revel in your three fingered glory.

Visa PayWave vs. Chip & Pin

While you might feel like Captain Kirk beaming your money away at the counter, Visa’s payWave technology has some irksome qualities when compared to the old chip’n’pin method of payment. I’m going to go into some of the things I’ve noticed about it, as well as a general background on the technology and hopefully some ways to keep your borrowed money secure.

Continue reading

Damn you Windows Server 2012!

Recently I set up a dedicated server with SoftLayer as a hosting provider. They offered the choice between Windows Server 2012 and 2008. When trying to find documentation on the versions of 2008, I noticed an interesting thing – Microsoft has removed all documentation for Server 2008! Here, give it a try.

  1. Google “Windows Server 2008”. Other than Wikipedia the first link is “Windows Server 2012”.
  2. Visit this Technet link for Server 2008 documentation. Click “Windows Server 2008 R2 Editions Overview”. Where you do get? “Windows Server 2012: How to Buy”

See what I mean? I even chatted with a representative on their website who basically told me to fuck off and buy Server 2012 already. Refused to provide any information on the versions of 2008, or where I could find reliable information.


Continue reading

Smoke and Mirrors

After my original post about the court case between tobacco companies and the US Government, I’ve been eagerly awaiting the court’s decision. The news hit last month [BBC] with the appeals court in Washington ruling that “The US government cannot force tobacco firms to put large graphic health warnings on cigarette packages“. I was very pleased with the result because it’s the position I took in my post 12 months ago – a government has no right forcing a company to market it’s products towards it’s financial ruin. Whether you’re a pro, anti, or couldn’t care less about smoking – this case is important because it is really about freedom of speech, capitalism, and especially with the US election coming up – size of government.

Continue reading

Beware! Toronto Temporary Parking Permits!

Being labeled one of the Top 20 worst cities in the world for parking by an IBM study on commuter pain, I feel as though my experience may have some relevance to my fellow Torontonians. Let me begin with my personal experience, and then I’ll give you a broader picture of how screwed up the temporary parking permit system is in Toronto.

Continue reading

Battlefield 3 Gripes

After playing buying BF3 for a few months a month or so ago and logging 128 hours (my soldier’s page) I have come across a few gripes that I feel make this game fall short of perfection. It goes without saying that this is definitely one of the most immersive, graphically and audibly detailed games I have ever played. However it’s lacking some key elements that many other games have in place, and has a few things I would love to see changed. Read on, soldier, read on.

Continue reading

Ajax variables in Atlassian Bonfire for JIRA to access session state

If you didn’t know already, you can insert variables into your issues with Bonfire. It comes with four default variables: cookies, useragent, title, url. You insert them into your issue summary like so {useragent}, and Bonfire will replace it with something like this:

*Mozilla/5.0 (Windows NT 6.1; WOW64)….*

Or for the pictorially inclined:

You can read more about it [here](http://confluence.atlassian.com/display/BONFIRE/Templates+and+Variables). What I’m more interested in is creating custom variables. These vanilla variables are fine indeed, but often you need more debugging information before you can proceed to fix the issue. After the break I will show you how to create your own Ajax requests *in Bonfire* to get more complex information about your users (in particular **session** variables!)

Continue reading

Wincache vs APC Data Performance

I was interested in the performance of PHP’s APC cache vs the new Wincache touted by Microsoft. Essentially Wincache is APC for Windows (no duh!). I am only interested in their performance at storing variables and arrays in memory, and not any of the OPCODE stuff. Part of the reason is because I think they would be equally performant, and another part is that I have no f’ing idea about OPCODEs. Another thing is that I am not testing on server farms, so I was only evaluating single-server solutions (i.e. ignoring memcache) Enough with the hors d’oeuvres, let’s get to the meat of it.

Continue reading