Onepass United MileagePlus Expired Miles Are A Scam

United MileagePlus Expired Miles ScamFor years I had a Continental Onepass account. It was great. My miles never expired.

Then one day Continental merged with United, & Onepass merged into MileagePlus. United quietly changed the terms & conditions, no doubt to “benefit their customers”.

On September 30 2013, my ~150,000 coveted mileage points expired. I didn’t notice until a few weeks later & quickly saw United’s convenient offer to “reinstate” them for $300. What a silly mistake, I thought. I called the MileagePlus hotline & spent about an hour talking to various levels of customer disservice. In the end, there were three options:

  • MileagePlus Expired Miles Reinstatement FeesPay $300 to have my miles “reinstated”.
  • Find any points that should have been applied within the last 18 months, which would magically reactivate my expired miles.
  • Get the United MileagePlus Explorer credit card, pay $200.

The United phone rep claimed that I’d received warning notices about my points expiring at least three times but couldn’t provide specifics. I didn’t get the memo. It’s odd — and by “odd” I mean complete bullshit — because the whole time I received all the usual account updates & other promotional United junkmail. I even went back & searched through 3 years of Continental/United emails since the merger… nothing about my miles expiring.

Budget Car Rental to the Rescue … ?

I’ll play their little game, I thought. I remembered I’d rented a car from Budget, one of their MileagePlus points partners, within their 18-month period. I even had the receipt with the rental agreement number. So I called Budget, gave them my MileagePlus account number & waited the requisite 8 weeks for my points to show back up. Nothing.

SuperBudgetManI called United MileagePlus support & was assured I needed to go through Budget.

Budget customer service was far more helpful & verified that my MileagePlus number they had used was correct & that the problem was on United’s end.

I sent all that information to United MileagePlus support.

Another reply from United indicated they might deal with the issue if I got confirmation from Budget.

Budget sent me confirmation, which I forwarded to United MileagePlus support.

Waited another week with no reply from MileagePlus.

Called United back & they said it might be because I had rented the car through Priceline. It hadn’t been a “name your own price”, just a normal package deal. But United couldn’t tell me for sure, they had to check with supervisors & they’d let me know.

That’s where I’m at so far. One thing is for sure, I’m not paying to “reinstate” my miles.

UPDATE 1/25/14: Got the reply from United:

After reviewing your MileagePlus account, an inquiry was sent to Budget regarding the missing mileage request. Budget advise that rental did not qualify for mileage credit due to an invalid rate code. If you have any questions, please contact Budget.

So apparently booking through Priceline (not even “name your own price”) means no mileage credit. No reinstated miles.

I went with the F@#$%^&*! credit card option. That way it’s $200 to recover the expired miles, but you get 30,000 miles once you spent $1,000 within 3 months. I waited for the new card to arrive before calling back to charge the $200 expired miles fee onto their card. The 30,000 points is worth $200 & I get my ~140k expired miles back.

And one cancelled credit card on my credit report — If you also go this route, remember to cancel the card after you get the 3-month points benefit or you’ll get hit with their annual fee a year later.

Posted in awful customer service | Leave a comment

IE11 Select Box Bug Crashes Browser

Try to set the selectbox size = 1 with an onchange event & this is what happens...

Try to set selectbox size = 1 with an onchange event with IE11 & this is what happens…

Woke up this morning to 20+ emails from people trying to use CarComplaints.com. When they clicked on select boxes on our forms, their browser crashed. It was only happening to Internet Explorer 11 users.

Usually as a web developer, I can’t crash browsers. That is, not unless I get special help from bad Microsoft code.

Didn’t take long to find the problem. By “problem”, I mean the perfectly valid Javascript code that causes IE11 to crash, instantly & every time.

We use select boxes with the “size” attribute set to show more than one choice. We have an “onchange” event that sets the select box size back to 1 when the user picks an option. That’s what caused IE11 to self destruct. It has worked great all the way back to the medieval days of the web.

Here’s a JSFiddle that demonstrates the problem. Doesn’t take much.

UPDATE: A possibly better workaround using onclick() is described at the end of this post.

A temporary workaround I found was to put the “selectbox.size = 1;” code into a setTimeout(….) with anything small for the timeout — I used 10ms:

setTimeout("selectbox.size = 1;",10);

Apparently we’re not the only ones that ran into this — The Cape Cod Times has a web page about what sounds to me like the same IE11 select box bug.

I posted a bug report on the IE dev site but then found this bug had already been reported, although the author used “combobox” in the title which isn’t really accurate.

Also looks like this isn’t the first IE11 select box bug

UPDATE 1/1/14: A user responding to my post about this bug on the IE Dev forum pointed out that using the onclick event rather than onchange makes IE11 happy. The switch to .bind(‘click keyup’) worked great for our use case but may not be a universal fix for everyone.

Posted in bugs, internet explorer | Leave a comment

Electrified Raccoon-Proof Bird Feeder

Fence Charger Bird Feeder

Alright so not quite 20,000 volts, but it’s a nice zap that makes raccoons want to get away, very fast.

One night last spring, a pack of evil raving mad raccoons broke into our basement & ate our baby chickens.

I discovered the grisly murders at 1 AM. It was a scene straight out of CSI: Hobby Farm. Chicken leg stumps lying in pools of blood. Dripping red arcs spattered across the chest freezer. Feathers & raccoon paw tracks everywhere. I spent the next 4 hours cleaning like Winston Wolf in Pulp Fiction. It was bad.

Since then I’ve been on a personal vendetta to remove food sources, as the best way to discourage the cute little killers from living anywhere close by. I double-walled our compost bin with hardware cloth & ultra-secured the trash can. It wasn’t enough.

They started eating the sunflower seeds from our bird feeders. Well played, raccoons.

For awhile I took the bird feeders in at night, but then the early morning birds miss out, all because of the evil raccoons. Can’t have that. Enter the 20,000-volt bird feeder.

Here's the idea. The racoon touches the live wire stretched across the railing, & the metal pole of the bird feeder is grounded. ZAP.

A length of exposed live wire runs along the railing, & the hanger is grounded. ZAP. Bye bye, Rocky.

For an electrified bird feeder to work, there needs to be a “live” part that’s energized by the fence charger, & another part that’s the “ground”. The live section needs to be electrically insulated from the ground, so the electricity goes nowhere while there are no raccoons around.

When the animal touches the live & ground at the same time, they complete the circuit & feel shocked.

My bird feeder hanger is mounted with screws into our deck railing post. There are two ways to make this work:

  1. Ground the feeder hanger, & run an exposed live wire along the deck railing.
  2. Ground the deck railing, & make the whole feeder hanger “live”.

Bird Feeder MountI went with method #2 because the deck railing wires go flat on the railing. The hard part is the feeder hanger needs to be insulated from the deck & can’t touch the screws. I widened the mounting holes to fit short pieces of rubber (beer) tubing inside, & put the screws back through the tubing. I used a rubber spacer & flat washer on the screw head end, & a plastic spacer of 1/2″ PEX water line (which fit nicely over the beer tubing) to hold the feeder hanger away from the deck. Bird Feeder Insulated Mounting ScrewsThen I drilled another hole in the hanger & used a small bolt to attach the live wire. I ran a loop of ground wire on top of the railing with fence staples.

In hindsight, method #1 is MUCH easier. The feeder hanger doesn’t have to be changed around since it’s part of the ground — attach the ground wire behind one of the existing mounting screws. Run a short length of exposed “live” wire along the deck railing with a few insulators to keep it from touching. Pretty simple & a lot less work.

Few things to keep in mind: the fence charger isn’t waterproof so either stick it indoors or build a small box outside. The grounding rod should be within 20′ of the charger. I set up my charger just inside the cellar bulkhead & then ran the wires outside. Don’t hit anything when you set the grounding rod: sewer pipes, water lines, power conduit, large rocks…

Don't Kill Kittens

I used a low-power pulsed fence charger made by Zareba that’s specifically rated for small animals — squirrels, rabbits, raccoons, cats etc. It puts out 0.5 joules at a 1-second interval, with a 2-mile range. DO NOT use a charger with a stronger rating (i.e. for livestock), or continuous-output (not pulsed). Those can kill small animals.

Even low-power continuous-output chargers are dangerous. Because they shock constantly, sometimes animals can’t escape. It’s a never-ending taser — the continuous charge overpowers the animal’s muscles & eventually stops their breathing & heart. Pulsed-output chargers shock very briefly & animals have time to escape between pulses.

Some inexpensive continuous-output fence charger models to stay away from: SS-525CS, SS-725CS or EAC10A-FS, which are branded Havaheart, FI-Shock, or Zareba. Amazon has reviews for those like “Good job keeping dogs in, KILLS kittens though” … or another one, “Kills small animals”. Get a pulsed charger like the Zareba model listed below.

Here’s the equipment list:

The total cost is about $100. And the result…

Posted in DIY | Leave a comment

Fix Whirlpool/Maytag Fridge Ice Buildup

Whirlpool Fridge Ice BuildupLast year we bought a shiny new Whirlpool fridge, french-door style with the bottom freezer. Eight short months later, water started leaking out the bottom of the freezer & pooling onto the floor. Apparently it had been leaking for awhile because when I pulled the fridge out, I found the water had been draining toward the back wall, quietly warping our hardwood floor. We don’t have the icemaker hooked up so it was definitely a defrost problem, caused by a little drain grommet. Thanks for nothing, Whirlpool.

Fixing the drain is easy & takes about an hour, although that’s mostly time spent watching ice melt during which you should eat all your ice cream. It’s probably 20 minutes of actual work. Here’s how to fix it — you’ll need a 1/4″ nut driver & a flat-head screwdriver. All the screws on my fridge had the slot in the top, so you could do it all with just the screwdriver.

Step 1: Don’t kill yourself. Unplug the fridge. You can wait until later but don’t forget.

Freezer DoorStep 2: Freezer door. It’s 4 screws, one in each corner. Just loosen them a few turns — don’t take the screws out entirely — it’s much easier putting the door back on when the screws are already in place. The door slides up & off.

Step 3: Lower basket. It lifts out, no tools required. Now’s a good time to start eating all your ice cream.

Drawer ScrewsStep 4: Upper basket. Remove the 2 screws at the front of the rails, then lift up the rails slightly on each side, to slide the basket forward.

Drawer Gear On the plastic pieces at the back sides of the upper basket, push in two tabs with your screwdriver on each piece & pop them up. This will let the upper basket slide out off the rails.

IcemakerStep 5: Icemaker. Remove the lower screw, then loosen or remove the two screws above the icemaker. Unplug the wire harness where it passes through the rear panel — squeeze the sides of the plug & pull. Lift the icemaker up & out. The water tube will slide out of the guide.

Center GuardThermostat GuardStep 6: Plastic guards. The thermostat guard is the skinny piece to the upper right. Push in (to the right) the tab on the left side in the middle. The guard opens like a door pivoting on the right edge, & pulls out.

The center fan guard has two tabs at the top on each end that push in toward the center, & another tab in the middle at the bottom of the guard that pops up.

Rear PlateStep 7: Freezer panel. Remove the 4 screws in each corner. Push the thermostat back through the slot at the top, & also push the icemaker plug back through its slot.

FAST/HARD WAY: Pull carefully up & out from the top middle edge. Be careful because that sucker is SHARP! The back panel will bend vertically in the middle as you remove it, but it’s flexible & will pop back into shape.

SLOW/EASY WAY: If you don’t like bending the panel around the drawer slides, you can take off the slides. The metal rails have tabs that push in to release the whole slide assembly, which pulls out forward. You only need to take the rail housings off one side — when you go to remove the rear panel, just pull that side first. To release the upper section (that you already unscrewed in Step 4), left it up, bend in & pull out — the back end has a tab through the freezer wall. The lower plastic slide housing unscrews with 4 screws.

Whirlpool Ice Buildup

Step 8: Ice Dam. By now you should see the ice problem. Typically the entire evaporator tray is completely iced, along with some of the tubing. MELT IT ALL. Warm water applied with a turkey baster works well. Be careful not to puncture the coils because … that will ruin your fridge.

Do all the ice melting while the drain is still plugged so it runs out into the freezer floor where you can sponge it up. If the meltwater goes out through the drain hole, it can flood the pan under the fridge — no big deal, just dirtier water & more mess.

Drain HoleThe drain hole is near the front of the rear tray in the middle. It’s pretty wide (1/2″) & short, only ~2 inches long. It goes straight down into a rubber “duck bill” grommet that’s probably plugged up with gunk, that you access from the back of the fridge…

Rear PanelDrain GrommetStep 9: Drain grommet. Pull out the fridge so you can access the back side. Remove the screws (6?) around the lower access panel, pop the power cord up & tilt the panel out of the way. The plastic tray under the fan is the evaporator tray — that’s where the water SHOULD normally be dripping into & evaporating from.

Behind (technically in front of) the fan, there’s a black drain slide into the tray that leads up to your plugged drain. Push the slide aside to see the drain. There’s a rubber “duck bill” grommet on the end. Pull it off & clean it — it’s no doubt plugged with gunk. Better yet, trim the opening very slightly so the hole is larger — see this site for photos.

Step 10: Put it all back together. Some tips: if you lived hard/fast & didn’t remove the rails & rail housing, getting the freezer panel back in place can be a bitch. Make sure you slide the tray rails all the way out before you start trying to put the rear panel back. Bend the panel vertically along the middle so it springs back into place on each side. Again, wear gloves. Once it’s in place, don’t forget to run the thermostat wire & icemaker tube/plug out.

When you put the the top tray back, make sure it’s all the way to the front before you pop the plastic pieces on each side back down, so the gears on each side are aligned in matching grooves. Otherwise your drawer will be crooked & probably won’t slide.

Hope this helps. I have a Whirlpool GX2FGDXVY but these steps work on other models too including Maytag etc.

Here is an excellent video of this entire process.

Posted in DIY | 5 Comments

Fake Domain Offers from Cloe Harris

Cloe Harris fake domain offersWatch out for domain offers from Cloe Harris, like this one (see below) … it’s fake.

If you write back, chances are you’ll start receiving far more spam emails in your inbox rather than serious offers. Sadly “Cloe” only wants you for your email address.

If you do reply back about the offer — hopefully because you want to mess with the scammers — I’d go through a temporary email account service like HideMyAss.com or sign up for a (new) Gmail account.

Remember the Internet rule: if something is too good to be true, it usually is.

Here’s the fake domain offer email:

From: Cloe Harris <cloeharris04@gmail.com>

Hi,

I have taken an interest in purchasing your domain [your domain name].

Please let me know if you are interested in selling. If so, all I need is your selling price and we will make a decision.

Thank you!

Regards,
Cloe Harris

Posted in tips | 19 Comments

Convert Your Dehumidifier to Self-Draining for $30

DIY Self-Draining Humidifier ConversionWhen we bought our house, the previous owners kindly left us a dehumidifier for the basement. It’s the small inexpensive kind, 30 pints capacity (whose bright idea was it to size dehumidifiers by pints?!) which fills up in some ridiculously short interval, that probably sells a lot of 70-pint models the 2nd time around.

The problem is the collection tank. It jams easily against the side walls & fills up with water an inch from the top. Emptying without spilling half the water is an exercise in futility.

I’ve emptied it relentlessly for 4 years, waiting for the unit to fail so I could feel better about buying a new & improved & hopefully self-draining model. Come to find out the dehumidifying mechanism was designed far better than the tank & refuses to die. So the daily jammed tank spilling continued …

…until today, when I realized that I’d acquired a 12V bilge pump, old garden hoses, a programmable timer, & an overflowing box of power adapters. See where this is headed?

  1. Put bilge pump in the dehumidifier tank.
  2. Drill holes for hose in the tank at the top (above the cutoff water level), & through an outside wall. Or you could have it empty directly into your grey water line if you’re feeling bravely plumber-ish. Or into a floor drain if you’re lucky enough to have one.
  3. Attach hose to the bilge pump & run it to wherever you ended up in step 2.
  4. Find a 12-volt power adapter with an output amp rating sufficient to run the bilge pump — 1.5A for mine — and plug it into the timer.
  5. Set timer to run a few times a day for ~1-2 minutes each run.

Total cost is ~$30 for the bilge pump, timer & incidentals. Everyone has old hose & 12V power adapters. Setup time was 1/2 hour. I have one less daily annoyance. You can, too!

Get a programmable timer & a bilge pump. I used two PVC 1/2″ 90-degree elbows to help run the hose out of the dehumidifier collection tank. I used a 7/8″ spade bit for the holes (worked great on the plastic tank, just go slow & let it melt) & I sealed the hose hole to the outside world with some outdoor-rated silicon sealant. The inline fuse on the positive wire to the bilge pump is probably a good idea. If you’re into the finished look for your wire splices, get some fancy-pants heat-shrink tubing. Your local hardware store has all this too.

IMPORTANT NOTE: I found if my dehumidifier shut off from a full tank, the bilge pump draining the tank wouldn’t reset the warning. The only way to reset the “FULL” shutoff was to physically remove & replace the tank… sad defeat for my nifty self-draining system.

The workaround is make sure the tank never gets full. There’s a popular Stanley-brand timer that only supports 1 event per day — once-a-day draining might not be enough to keep the tank from filling up, so you may need a timer that supports multiple daily events like the one I’ve linked to above.

SOME PHOTOS: You’ll see I used a 12V timer since that’s what I had lying around (so it went between the power adapter & the bilge pump), but the better way would be a 120V AC timer as described above. Simpler setup, fewer splices, better power consumption, etc.

tanktimer

power adapter

Posted in DIY | Leave a comment

Saba Marine in Colchester VT is a @#$%*! NIGHTMARE

Saba Marine in Colchester Vermont is a FUCKING NIGHTMARE.

Saba Marine in Colchester Vermont took FOUR WEEKS for basic service on my outboard & still didn’t get it right.

I have a 2004 15HP Honda Outboard — BF15, popular model, they are all over the place. Several years ago I decided to branch out & try Colchester area marine repair shops. This year was Saba Marine’s turn. They fucked up. I didn’t keep a journal, but I went back & wrote this after the nightmare was over.

Wednesday April 3rd
I know Saba Marine isn’t a Honda dealer, so I wasn’t sure what to expect. Talking with Cameron at their service desk, I went over that I wanted the impeller replaced & the carb adjusted a bit, & asked if Saba Marine had someone who could work on my Honda outboard?

“No problem,” Cameron assured me, “it will be ready this time next week.” It dawned on me as I was driving away that Cameron had forgotten to take down my phone number, so I drove back & made sure he wrote it down. I shouldn’t have bothered.

Wednesday April 10th
One week later & no call yet from Saba Marine. I gave ‘em a ring, their service department doesn’t answer, I leave a message.

Thursday April 11th
No call back. Am I surprised? Kind of. They seemed to have their shit together.

Friday April 12th
Now I’m worried I won’t have my outboard back in time for the weekend, so I call Saba Marine again.

First attempt, no answer from service. Second attempt, I’m on hold & hang up after 10 minutes of muzak.

Third call finally gets someone (Cameron) on the phone. My motor isn’t ready. The aftermarket impeller they had ordered out of their parts book was the wrong part — “a book error” — the replacement hasn’t come in yet. “Next week!” Cameron assures me.

Thursday April 16th
The week is almost over with still no word from Cameron. By now it’s been 15 days, double the expected wait. I call Saba Marine, no answer again in the service department. I leave another message.

Friday April 17th
No return call. I’m realizing Saba Marine was a big mistake.

Thursday April 23rd
Still nothing. I’m sure my outboard is done & Saba Marine just hasn’t called. I call Cameron. My outboard is still not ready. The second impeller they ordered was yet again the wrong part & they had to order an OEM impeller which hasn’t arrived. Cameron will give me a call if by chance the motor is ready in time for the weekend. I know how that will work out.

Monday April 29th
No word from Cameron. I call mid-afternoon & tell Cameron I’ll be in tomorrow to pick up the motor. Cameron says a load of parts just arrived & my impeller is probably on it. He’ll try to have it ready.

Tuesday April 30th
Cameron calls (HOLY SHIT!!) at 4PM & leaves a message that my outboard is ready. It’s been 4 weeks.

Wednesday May 1st
At Saba Marine to pick up my outboard, I ask Cameron for a discount, whatever he thinks is fair, 5% … 10%… Cameron won’t look at me as he explains he feels bad & never should have accepted my Honda to work on. Fine, but whose fault is that? I had asked if they could work on my Honda outboard when I first dropped it off.

Can they do anything for me to make it right? Nope. I pay full price & leave.

The Ineptitude Doesn’t Stop There
I get home, put the outboard on the boat & the stream of water out the check port is clearly blocked — it’s a a weak trickle, at any RPM. I didn’t pay $300 & wait 4 weeks to have my outboard piss like a 105-year-old man with prostate problems. It’s probably debris in the tube that Saba didn’t take the time to clear out, but FUCK YOU SABA MARINE.

They also wired the cowling permanently shut with hobby wire, but you get the idea.

Let’s hope bad reviews on Google and Yahoo Local help others avoid the Saba Marine mistake.

Posted in awful customer service, nautical disasters | Tagged , , , | Leave a comment

Streaming Video To iPhone/iPad App Review

I have a Drobo FS. It’s a great backup solution, but not the most media-streamable NAS out there. I needed something that could stream video, starting out in various Apple-unfriendly formats up to 1080p, from my NAS to my iPhone.

First off, I tried the MediaTomb DLNA media server which installs directly on the Drobo — no attached computer required. Paired with the AirPlayer app as the DLNA player, that system worked well enough for sub-1080p video. iPhone can't handle 1080p AirPlayer handled all the various video formats very well (including non-Apple formats like AVI & WMV), but the hardware on the iPhone simply can’t handle downconverting 1080p. Enter transcoding.

Transcoding means your media server converts the resolution/bitrate to something else before firing it out to your playback device. So although the video may start off as a 1080p super-high bitrate clip, your media server downconverts it to 720p or whatever your playback device can deal with. The encoding can change too.

Here’s the current wolfpack of transcoding media streaming iOS apps:

VLC Streamer Free VLC Streamer Free

Good news: it worked.

Bad news: videos to be transcoded have to be selected individually beforehand on the computer, & they are dumped in your Application Data folder as a million small .ts files.

So, the only way to have a transcoded video library with VLC Streamer was to duplicate my entire video library. Deal killer.

Plex Media Server (yep, PMS)Plex Media Server

Good news: The Plex interface looks really slick, both for the PMS web interface & their Plex player iPhone/iPad app ($4.99 but Plex is free otherwise). Plex does a really nice job displaying your media, pulling metadata & matching up cover art from various providers. Also Roku has a free Plex channel app, so you can stream video over WiFi to your TV. Neat!

Bad news: Plex doesn’t let you browse a nested folder structure. They used to, but not anymore. Instead they rely completely on metadata. Or you can restructure your folder structure to fit their models. Their “By Folder” view lumps everything together in one gigantifuck mess. My video library doesn’t have metadata & restructuring is not an option. ARRRHHG! So frustrating, so stupid. Pages & pages & pages & pages of Plex users agree.

Air VideoAir Video

The good news: everything. So many good things, where to begin. First off, there’s no indexing. Install the Air Video media server & app ($2.99), pick a source folder or two, & you’re done. Thumbnails & transcoding are done on the fly & with no temporary storage on the server … unless you want that (nicely done!). You can stream media within your network or outside too, with or without server password protection. You can download converted clips to your iPhone/iPad for later playback, straight from the app.

Bad news: I honestly don’t have much to say. I wish there were permission levels for shares. Nothing else. Air Video wins.

Air PlayIt / Air PlayIt HDAir PlayIt

Good news: Very similar to Air Video, & free! Has three preset permission options (admin, kids, public) that can be set on each share — this alone is brilliant. PMS/DLNA developers should take note. Why permission levels aren’t a standard feature on all streaming engines is a sad, thoughtless mystery. The wait once you click play on a video to transcode is nice & short. Air PlayIt also has the on-demand offline conversion option.

Bad news: Took forever to show the folders on the first view through the app – it waits to do indexing until the folder view is first requested, & then indexes EVERYTHING, while you wait… and wait… and … wait ….. it gets a little better on subsequent views, but all the waiting to just navigate folders is painful. I do have a lot of folders nested so maybe it’s a less common use case, but Air PlayIt server seems to be scanning the entire structure rather than just the section of the tree I’m viewing. Something’s very inefficient there.

Other than that, very good app overall, & can’t really complain that much for the price.

StreamToMeStreamToMe

At $2.99, StreamToMe is another very good option. I’m going to let TUAW.com take this one — if I wrote anything, I’d just be paraphrasing their StreamToMe versus Air Video review.

ZumoCast

ZumoCast was bought by Motorola & isn’t available for Apple devices anymore.

Any Others?

Any streaming apps I missed? Let me know in the comments.

Posted in tips, video | Tagged , , , , , | 4 Comments

MS Access ODBC with Windows 7 64-bit and Perl

MS Access ODBC 64-bit Windows 7 driverJust writing that headline’s enough to make me cringe. Hell, I almost gave up at the thought of dealing with the ODBC error in the first place:

Can't connect to Access database: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (SQL-IM002) at [script name] line [line number].

But turns out it’s not so bad, just a little tricky.

An important detail: I’m using Strawberry Perl 64-bit. It’s v5.12.3 multi-thread, but that doesn’t really matter. 64-bit OS, 64-bit Perl, 64-bit ODBC driver … don’t mix 64s with 32s & everything is good in the world. If you’re trying to use some twisted combination, this blog post may not be quite as helpful. But who knows? You’ll find out soon enough.

First step is make sure the MS Access 64-bit ODBC driver is present & functioning: Administrative Tools > Data Sources (ODBC), which brings up the ODBC Administrator. Switch to the Drivers tab to view the installed 64-bit drivers.

(Note to 32-bit-driver-on-64-bit-OS-type people: to see your installed 32-bit ODBC drivers, you’ll need to run the 32-bit ODBC Administrator instead. Tricky or what?)

My copy of Windows 7 only had the SQL Server ODBC driver listed. Head over to Microsoft’s website to download the MS Access 64-bit ODBC driver.

Once that’s installed, pull up your Data Sources window again & a bunch of new drivers will be listed on the Drivers tab. In my Perl program I’m using DBI, so I need the driver name exactly as it appears on the Drivers tab:

Microsoft Access Driver (*.mdb, *.accdb)

So in Perl-ese, that becomes:

use DBI;
my $dbh = DBI->connect('dbi:ODBC:driver=Microsoft Access Driver (*.mdb, *.accdb);dbq=[path to mdb file]') or die "\nCan't connect to Access database: " . $DBI::errstr;

Get the path right & it should work! Hope this helps someone.

Posted in perl, Windows 7 | 1 Comment

China & The South China Sea: Are You Fucking Kidding?

Apparently China was absent for the “Sharing The Ocean” lesson during country kindergarten. Their claims to the South China Sea are fucking ridiculous:

The UN Convention of the Law of the Sea (UNCLOS) sets a 200-mile limit on sea territory & was ratified by China in 1996. However China insists that historical claims dating back to ~200 BC – 200 AD supersede the international law that it has agreed to.

An excellent article titled ‘Abusing History’ from The Diplomat goes into more detail.

Beijing, it appears, wants to be made an exception in international law. It wants to have its cake and eat it. But law is law. What is the point of having international law when it is no longer international, and when it is no longer law?

It doesn’t help that Xinhua, the official Chinese news agency, publishes articles like this one:

[China Institute of International Studies Vice-Director Dong Manyuan] said China has been improving diplomatic efforts and has maintained its position of seeking diplomatic solutions to the current situation, asking the Philippine side to correct its wrong position, drop unreasonable demands, and return to a right course as soon as possible.

Nice “diplomatic solution” there — blame the other side entirely for China’s huge sea area grab — one big F-U to some neighboring countries they don’t already occupy.

Posted in world | Leave a comment