May 3 2015

How to replace downstream O2 sensor in 2005 Hyundai Tucson

If your check engine light is on in your 2005 Hyundai Tucson, you may have an issue with one of your O2 sensors.  This is an easy thing to replace yourself if you’ve done any work on a car, and you can save a ton of money doing it yourself.  (A local dealership wants $250 to replace it; I did it for less than $60.)

The first thing you should do is have the code read and figure out which sensor is the one that needs replacement.  You can go to an auto parts store to have them read the code.  In my case, I had two codes:

  1. P0136 – O2 Sensor Circuit Bank 1 Sensor 2
  2. P0140 – O2 Sensor Circuit No Activity Detected Bank 1 Sensor 2

Here is a great post which will help you figure out the correct sensor location.

Bank 1 is the bank of cylinders on the firewall side.

Bank 2 is the bank of cylinders on the radiator side.

Sensor 1 is the O2 sensor before the cat.

Sensor 2 is the O2 sensor after the cat.

If you have a 4 cylinder engine like I do, it is simple.  There is no bank 2, only bank 1.  Sensor 1 is the upstream sensor under the exhaust manifold heat shield (you can see it just by popping your hood) and sensor 2 is the downstream sensor.  Here is how you replace the downstream (bank 1, sensor 2) on a 4 cylinder 2005 Hyundai Tucson.

Continue reading


May 13 2013

Use Tomcat URL rewriting to serve external images for Atlassian JIRA avatars

Atlassian makes some great workflow and knowledge management tools.  They are perhaps best well known for JIRA, originally used for tracking development issues.  In recent releases JIRA has become much more of team-friendly tool to manage projects during their entire life cycles.  As such there are a bunch of niceties such as personal profiles.

I recently installed and configured JIRA at Mullen.  We use ActiveDirectory (as I’m sure many of Atlassian’s clients do) and so I configured JIRA to delegate authentication to ActiveDirectory.  This means that users created in JIRA must have the same username as their ActiveDirectory account.  Mullen also has an internal personnel directory which has headshots of everyone in the agency with filenames that match their ActiveDirectory account (first initial, last name, e.g.: dfeinzeig).  I wanted to find a way to have JIRA use these pre-existing headshots without having to manage each user’s JIRA profile.

Continue reading


May 12 2013

Behold the power of default – How to set the default argument of a Django model field equal to a class method using lambda

Django model fields accept an optional default argument to set the default value of the field.  This can be either a value or a callable object.  A very common use for the default argument is to set created_at and modified_at datetime fields to datetime.datetime.now.  But default can be much more powerful than that.

Continue reading


Feb 5 2013

Install Cinder on Windows 7

We were fortunate enough to have Andrew Bell, the creator of Cinder, come to work and speak last Friday.  After he showed us the cool things you can do with Cinder, I spent some time this weekend installing Cinder and its dependencies on Windows 7.  There were a few snafus that I ran into, so I figured I’d document them here in the hopes it’ll make others’ lives easier.

Here’s the official install guide for Cinder on Windows.  For convenience, I’ve archived all of the things that you have to download into one zip file that you can download here.  It includes Cinder 0.8.4, Microsoft Visual Studio C++ 2010 Express Edition, the Windows Platform SDK, the DirectX SDK, and the QuickTime SDK. Continue reading


Oct 22 2012

Trying my hand at astrophotography – my first pictures of Jupiter

Saturday night/Sunday morning I spent a couple of hours staring at Jupiter and its moons through my telescope with my brand new Meade 4000 series eyepieces.  I also tried out my new camera adapter for my telescope.  Below is one of my first tries at astrophotography.  It’s Jupiter with 3 of its moons.  The moons look a little funny because they are from a copy of the original, but with the exposure cranked up to expose them, because they are just small points of light.  Jupiter however is untouched.  That is how I took the photo.  If you look closely you can see two of Jupiter’s large bands diagonally, from the bottom left to the top right.  Not bad considering that right now Jupiter is about 4.391 AU from Earth, or 408,168,950 miles.  Jupiter in particular is easy to find in the late night sky this October.  Read more about how to find it yourself.

I used a Canon EOS Digital Rebel XS at 1/13 of a second and ISO 100.  My telescope is a Celestron 114 LCM and I used the Celestron Universal T-Adapter 1.25in 93640 (which has an integrated Barlow lens) and Opteka T-Mount Adapter for Canon cameras.


Sep 20 2012

Jon Stewart on Mitt Romney and the 47%

Just watch it.


Jun 22 2012

Asteroid 2012 LZ1 highlights holes in Earth’s asteroid detection program – SlashGear

http://www.slashgear.com/asteroid-2012-lz1-highlights-holes-in-earths-asteroid-detection-program-22235272/

So apparently if they attack from the south we are screwed! I love how the article says that 4 days notice doesn’t give us enough time to respond. How much time would we need to effectively respond?


May 23 2012

How to fix “Camera Failed” error on Samsung Galaxy S II (or other Samsung Android devices)

If you are reading this, you’ve probably had your Samsung Galaxy S II (or other Samsung device) display the apparently fairly common “Camera Failed” message.  Over the past month I too have had this annoyance pop up on my Samsung Galaxy S II Skyrocket several times.  Googling the problem yields suggestions ranging from uninstalling flashlight apps to returning phones.  While certainly there must be people who are in fact having hardware problems with the camera, I think most of us are having a software issue.  This issue totally feels like some system resources not properly releasing the camera, keeping it locked and preventing the camera app and other apps from accessing the camera hardware.

After a bunch of trial and error, I think I have figured out a consistent way to quickly and easily fix this problem when it does occur, releasing the camera hardware for use by any app. Continue reading


Apr 8 2012

My new Android smartphone, a Samsung Galaxy S II Skyrocket — the best $20 I’ve ever spent?

It finally happened.  I broke down and purchased my first smartphone, a Samsung Galaxy S II Skyrocket.  Long name, I know.  Here is what’s important:

  • Android device, with update to Android 4.0 (Ice Cream Sandwich) soon to arrive according to the rumor mill.
  • 1.5 GHz dual-core processor.
  • 4.5″ AMOLED display.
  • Support for 4G LTE network, and Boston is one of the few markets currently supporting 4G LTE!

My now retired trusty Sony Ericsson T637 with my new Samsung Galaxy S II Skyrocket.

By renewing our contract with AT&T (we were going to stick with them anyways; I’ve had AT&T for 10 years) we were able to purchase refurbished Samsung Skyrockets for $20 apiece.  That’s right, $20!  (The Samsung Galaxy S II, which doesn’t support 4G LTE and has a 4.3″ display is only $10 refurbished!)  Samsung makes great products (we have laptops, laser printers, monitors, etc. made by Samsung) so we were comfortable going with refurbished phones from them.  Plus they come with a 90-day warranty AND I used my American Express to pay for them which doubles the warranty, so we felt comfortable with the amount of warranty that we’d have on them.  They arrived in recyclable AT&T packaging with the phone, battery, battery cover, earphones, manual, charger, micro-USB cable, SIM card, and activation instructions.  Both phones appear flawless.

We had to add two data-plans and opted for the 3 gigs per month for $30 each ($10/gigabyte) since any overage results in buying another 1 gigabyte block for the same $10/gigabyte rate.  The only reason AT&T pushes the 5 gigabyte per month package is to up-sell you on being able to tether your device so you can create a WiFi access point using your dataplan and phone.  It’s a waste of money.  There are a bunch of other options including rooting your phone (warning: might void your warranty) and using free apps, or some apps that don’t require rooting your phone (FoxFi seems like a great option, and it’s free!).

After doing some research (which, yes, included YouTube), we opted for the Otterbox Defender series case.  Watch this video of an iPhone in an Otterbox Defender case survive a drop from 23 stories — I sure hope that isn’t faked in any way.  The cases are offered in two colors: all black and black with grey (called knight); we bought one of each so we could easily distinguish our phones.  The cases seem VERY protective, although there seem to be some manufacturing quality issues at Otterbox (more on that in a separate post).  They come with a holster which doubles as a kickstand, although the device might be a bit too big to wear comfortably.  The dust covers are also a really nice touch.

After playing with the phone for a few days and installing about 40 apps so far, I absolutely love it!  Expect future blog posts about some of the great apps that I’ve already found.

This might be the best $20 I’ve ever spent.


Apr 3 2012

Dear Netflix…

Oh Netflix, I am so conflicted about you.

Your online streaming is really convenient.  I love being able to watch series from beginning to end.  And it is reasonably priced for me.

Sometimes your streaming selection could be better.  (Not to be confused with Netflix red™.)

Your DVD service helps to fill many of those streaming gaps.

But your DVD service is overpriced.

Your dashboard is well designed.  I love the interface.  

Your queue management is horrible.  Why when I’ve watched something does its status in my queue seem pretty much unchanged?

Your suggested content is great.

You need to handle your browser support better.  It is ridiculous that the Firefox 11 update breaks your instant streaming and requires me to install an add-on that spoofs the Firefox 10 user agent string (User Agent Switcher for those having the same issue).  AND your browser compatibility information is incorrect as it lists “Firefox 3 or higher”, when clearly it should say “Firefox 3-10” given your browser support mechanism. Here is my Firefox 10 user agent string

“Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0) Gecko/20100101 Firefox/10.0”

and here is my Firefox 11 user agent string

“Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0”.  

You are seriously telling me that you can’t programmatically support that update?  *I* can support that programmatically.  Even if you can’t, you weren’t paying attention to when the Firefox 11 update was released so that you could manually update your allowed user agent list?  After Internet Explorer, Firefox has the 2nd largest share of the browser market.  Why wouldn’t you stay on top of supporting that?  And by supporting I mean simply updating your list of allowed user agents.  You could complete that code change in less time than it would take to create the ticket to track the issue.

You have THE BEST server error experience that I have ever seen (and fortunately for you, I have only seen it once – good thing I’m quick with my Print Screen key). *Brilliant* idea to provide a 100 or so streaming selections that so users could still watch something.

So that’s about 5 greens and 4 reds… I guess I’m sticking with you for now.  Please do something about your User Agent support.  That is probably the most annoying issue.  When I want to kick back and watch something to relax and forget about your other foibles, that browser support issue is REALLY (and ironically) frustrating.  FYI, here is the RapidRelease calendar for Firefox.  Please study it.  New releases about every 6 weeks.  That’s a lot of recurring opportunity to lose otherwise [very? mostly? somewhat?] happy customers.

Well, I’m off to find that Arthur and the Invisibles DVD that we’ve had sitting around since October 26th and still haven’t watched (no lie, and don’t laugh).

Sincerely,

Another (happy?) customer