About Uncle Code Monkey

Proud Monkey's Uncle who fancies himself a code composer that is hard at work building Androids for Google's army.

Trouble browsing the web?

I recently helped out a guildie with a strange problem.  He couldn’t browse the web using Internet Explorer, nor play WoW, but he could log into Vent just fine.  My first thought was that he got a virus that prevented browsing and started giving him suggestions on how to clean his system and recommending borrowing a friend’s computer to facilitate it.  While giving out this advice, it struck me to try one more thing before writing this off as a malicious virus (which is usually the case when something like this occurs, sadly).

I quickly opened a CLI box and did a quick ping on www.google.com to find out it’s IP address.  I then relayed that address over Vent and had him type it into the browser address box.  Up came Google for him!  What did this tell me?  It told me that his computer was NOT infected with a virus (thankfully!) and that his ISP’s Domain Name Servers (DNS) went offline which meant he was trying to browse the internet blind (meaning he could only use IPs and not their friendly names).   Luckily, there are public DNS that can be used, but the process to tell your computer to use them is anything but easy.  I figured it would be a good idea to put a few resources together to help others out in such a situation, if not directly, at least a friend can help them out by having this information at hand.  I walked him through setting up his computer to use Google’s public DNS and afterwards he was able to surf the web and play WoW as if nothing was wrong.  Woot!

Google runs a public DNS on:
Primary: 8.8.8.8
Alternate: 8.8.4.4

OpenDNS also runs public DNS and seems a bit more responsive:
Primary: 208.67.222.222
Alternate: 208.67.220.220

Now for the hard part… instructions on how to tell your network connection to use these public servers rather than whatever your ISP gave you.  Thankfully, OpenDNS has some very good instructions with images to help you with each OS.

Configure MS Win7

Configure MS Vista

Configure Mac OS X 10.5 (Leopard)

Configure Max OS X 10.4 (Tiger)

Other OS instructions can be found here.

Props go out to OpenDNS for both supplying public servers and some very handy instructions for setting up your system to use them.

Android: Update to Postmortem Reports via email

It has been a while since my post about Postmortem Reports via email and since then I have upgraded it, commented more on it and fixed a few issues as well. The class now protects against a null exception and uses the application label instead of the activity title in the subject. The class also unregisters itself on finalize as well as protects against sending multiple reports for a single exception if you have several activities active and each has their own handler registered. I am also happy to report that people are willing to send you debug reports. I do not receive more than a handful, but I only need one or two in order to figure out what is going on and fix it. I also can tell how serious it is depending on how frequently I get a report about it. I even get reports from people using a pirated version of my paid apps. Continue reading

Safer Browsing

One of the problems with using the Internet is the vast amount of security issues encountered that can lead to getting your PC infected with all kinds of nastiness.  Some so bad that you need to wipe the PC clean and start over from scratch.

Some people tend to get infected a lot, while others rarely ever get an infection.  What’s the difference between them?  I think it’s a combination of the tools used as well as the habits employed.  I have rarely gotten infected and I would like to share some of my tools and habits so that others may benefit.

The tools I use to keep my system safe are actually a pretty light on the Anti-Virus side of things.  My main system runs MS Vista Home Ultimate (I hate it, will change eventually, but I’m stuck with it for now) and I keep it’s built in firewall up at all times.  I do not run the Security Manager, however.  I use Clamwin as my anti-virus software for two very important reasons.

  1. it does not constantly run in the background which would slow everything down
  2. it is free for personal and business use.

What this means is that I do not actually have an Anti-Virus constantly running on my system trying to protect me from harm.  I find this shows just how effective those products are while at the same time highlights the effectiveness of my browser tools and habits.

My browser of choice is Firefox with three extensions that I consider vital to safe browsing.

  1. Flashblock – blocks Flash from automatically playing on page load
  2. NoScript – blocks scripts from automatically running on page load
  3. Blitzbleiter (recently added) – blocks Flash from running if not 100% Flash compliant

When I visit a website I do not trust, I get a lot of content blocked automatically.  This may result in some ugly pages if they rely heavily on Flash content and/or scripting.  The nice part about NoScript is that you get to choose exactly which domain you will allow to run for any particular page.  For example, on Twilight’s own site, you get the choice of allowing twilightonalex.com, wowhead.com, and google-analytics.com to run their scripts.  You can choose to only allow twilightonalex.com so that menus will work while denying anything else to run since you may not trust it.  This is quite handy, for example, in forbidding the ad network quantserve.com from running scripts while allowing the site using the ad service to function.

How do I know whom to trust?  That is a very good question.  Experience and searching for site reviews are useful tools.  Doesn’t this kind of distrust slow you down?  Yes, and no.  While individual site browsing is hampered a bit, I find that avoiding a system reinstall is worth it in the long run.

By the way, if you want a direct link to download the most recent Adobe Flash installer without the ‘download manager’ crapware which also tries to install ‘free <insert-latest-CrapWare-I-don’t-want>’, here you go:

Hoping for a safer browsing future for everyone!  Take care!

Love and Sacrifice

Tiffany was one of my neighbors in Tennessee.  She’s a great person and a wonderful neighbor.  Over the last few years, she’s gone through some rough times.  A nasty divorce, trying to sell her house during the crash of the market, and the list goes on for a bit.  During this time, she met an Army helicopter pilot named Matt.  A jovial fellow who’s fun to be around, a handyman like me, generous and again, the list goes on.

Matt and Tiffany fell in love, got engaged, and tried to live a normal life after Matt got out of the Army.  Unfortunately, the tanked economy was not easy for a helicopter pilot to find enough decent work.  The Army called up Matt and begged for him to re-enlist as they needed good pilots and he was an experienced combat pilot they hated to see leave.  He agreed to return to service at the same time he and Tiffany tied the knot.  Shortly afterwords, he shipped out to Afghanistan for another tour of duty.

Once Matt’s tour of duty was up, he was going to train helicopter pilots by conducting training exercises based on his experiences to better prepare our newer pilots for what they would expect out in the field.  It was a job he wasn’t really looking forward to performing because like most pilots, he loved to fly and had considered the teaching job a “grounded desk jockey” position.  On the bright side, though, he could spend more time with his wife and he was looking forward to that more than anything.

I just learned that a few weeks ago, while a passenger on this flight and only one week from returning home, the helicopter Matt was riding in crashed, killing him and eight others. My heart goes out to Tiffany and to Matt’s family.  Here’s to you Matt! /salute  Thank you for your service and the ultimate price you paid us. You will be sorely missed.

Sometimes Picasa 3 will corrupt my photos

I pulled off some photos from my Nexus One phone yesterday in order to clean them up, back them up, and then share them with some friends and family. I could view all of them easily with Windows Explorer. I loaded up Picasa 3 (a version earlier than 3.8.0 (build 115.53, 0)… sorry, I don’t know which earlier version) and proceeded to give several photos captions, straighten a few of them out and upload several batches to my online photo album. Continue reading

File Browser Intents and Providers

I have finally put together a comprehensive list of Intents and Providers published by my File Browser app. You can find that list over on the File Browser Intents & Providers page.

As a convenience, I will post what is currently listed there:
Intent & Provider List

  1. Pick File
  2. Pick Multiple Files
  3. Pick Folder
  4. Save To New File
  5. Save To New Folder
  6. Playlist Creator
  7. Create Zip File
  8. Unpack Zip File
  9. MIME Type Provider

 

Using a SubMenu in a ListActivity’s Context Menu

One of the limitations of Android’s ListActivity’s Context Menu is that if your context menu gets too large to fit comfortably into one list, shortening it by putting several items into SubMenus requires special handling in onContextItemSelected().

Context menus, by definition, are transient and will be thrown away as soon as they disappear from view. Once you click on a MenuItem that displays a SubMenu, clicking any item in that SubMenu will call the onContextItemSelected(), as expected. What is not expected is that the standard call to get the MenuInfo will return null. Continue reading

Android app shortcuts and class names

I recently learned the hard way that refactoring your old code to be more consistent with how you write code now as opposed to how you wrote it a year ago can be dangerous. Things like class names may seem like a completely internal mechanism and is in most cases, but the rule for that changes the moment you place one into the AndroidManifest.xml. Continue reading

Do not install Widget apps onto the SD card

Apps like my Swidget, which are apps whose entire purpose is to provide a widget for your home screen, may have issues with being installed on the SD card. Android 2.2 introduced the ability to install apps to the SD card if the app allows it. This works great for many applications, but for some widget apps, it can be problematic. Continue reading

Avoid uncaught NullPointerException at Android app launch

While we all strive to avoid any kind of exceptions in software, we all make mistakes. One exception to be particularly mindful of is causing an uncaught NullPointerException during the app launch process on Android pre-2.2 (meaning the initial onCreate+onStart+onResume chain). The reason to avoid such a situation is that your app will crash, of course, but furthermore, the Android OS will notice that launching your app failed and will automatically try to launch it again — ad infinitum. Continue reading