A windsurfing, CSS-grudging, IE-hating, web-developing, gigantic-machine-puzzling blog

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 to pass out of the tank at the top above the cutoff water level, & through an outside wall. Or into a floor drain if you’re lucky enough to have one. Or you could have it empty directly into your grey water line if you’re feeling bravely plumber-ish, & the vertical run isn’t too much for the bilge pump — in that case, try a slower but far more powerful diaphragm water pump instead.
  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 the Rule 360GPH linked below — 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 & programmable timer. Everyone has old hose & 12V power adapters. Setup time is 1/2 hour. Have one less daily annoyance! Your life will never be the same.

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, which worked great on the plastic tank — high speed, don’t push hard, just let it melt. I sealed the hose hole to the outside world with some outdoor-rated silicon sealant. An inline fuse on the positive wire to the bilge pump is 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 is 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 — but once-a-day draining might not be enough to keep the tank from filling up, so get a timer that supports multiple daily events like the GE-brand timer linked 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 is the 120VAC timer as described above. Simpler setup, fewer splices, better power consumption, etc.


power adapter

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 outboard motor service & screwed up so many ways, I lost count.

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 screwed up just about every aspect of the job.

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
Week three, 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? Hadn’t I asked that exact question before I dropped it off? That’s right, I had.

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 debris in the tube that Saba didn’t take the time to clear out.

They also wired the cowling permanently shut with hobby wire — there’s no sign of the stainless pin that was there when I brought it in — but you get the idea.

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

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.


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


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.

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.

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.

Gladinet Cloud Desktop Can’t Handle Amazon Cloud Drive

More accurately, Gladinet Tech Support can’t fix a three-month-old issue that completely breaks Gladinet Cloud Backup’s reliability as a backup tool when using Amazon Cloud Drive.

The root issue is simple: your Amazon Cloud Drive login credential expire after 48 hours. After that, you or any services that access your Cloud Drive account have to log in again. Gladinet apparently didn’t realize that when they added Amazon Cloud Drive as an option.

So if you leave your computer running, your Gladinet scheduled backups will work for two days & then start failing. Not only will they fail, but there is no active notification that they are failing … a worst-case backup scenario.

Gladinet support acknowledged the problem immediately, which is the one single good thing I’ll say about them. The downward trend toward awful customer service started one month later, when I checked in & this was their response:

Sorry there is no update yet. And right now we don’t have an ETA either. We constantly exam all the open bugs. However, sometimes there are other more urgent to fix first. For now, please restart Gladinet within couple of days.

You’d think this bug would be pretty urgent, right? At least urgent enough to fix over several months. Or should I really be content knowing that apparently there are many more urgent bugs that need fixing?

Having the same problem? Follow my support forum topic here. Here’s another post about the same issue by another user from September 29, 2011.

To make matters slightly worse, the Gladinet Support forum search has been broken for several months as well. But they’ve been busy fixing more urgent website bugs, no doubt.

The Samsung Series 7 Chronos NP700Z5A-S03 has a very sharp wrist rest.

Samsung Series 7 Razor-Sharp Wrist Rest

The Samsung Series 7 Chronos NP700Z5A-S03 has a very sharp wrist rest.

The Samsung NP700Z5A is so sharp, it hurts.

I researched the Samsung Series 7 Chronos for several days, reading glowing review after glowing review.

Not one mentioned the wrist rest edge is literally sharp enough to hurt.

Either the reviewers all have very small hands, or they completely overlooked this awful design flaw. While the Series 7 is a thing of beauty closed, while open & in use, it’s torture.

The wrist rest is so sharp, it literally makes a scratching noise against skin & leaves white scrape marks. The problem is Samsung put the wrist rest surface inside the outer case (which is metal), so the sharp edge of the outer case sticks up slightly & its unbeveled metal edge digs into your wrist. Not nice.

Another significant usability flaw is the ELAN touchpad. With the default settings, scrolling a page is jumpy & the motion actually reverses direction every few seconds. Also since the pad is so huge, it’s hard not to touch the edges inadvertently when typing & ELAN’s palm filtering isn’t nearly as good as Synaptics’ touchpads. Eventually I was able to improve things by lowering the sensitivity to the 3rd-lowest level. To add insult to injury, the touchpad buttons usually stop responding after resuming from sleep mode.

Yet another flaw is the wifi range. This issue actually was mentioned in most other reviews, so I won’t go into detail other than to say I get one bar with the Series 7 where I get 4 bars with our other laptops. To watch streaming HD video, I have to be in the same room as our 802.11n wifi router.

My last gripe is with Samsung’s screen auto-dimming feature. It uses an ambient light sensor to adjust the screen brightness. However the Series 7 does it in very sudden & noticeable steps, in immediate response to every little change in ambient light. If you’re working near a window on a partly sunny day, or have an overhead light behind you & don’t keep perfectly still, the auto-dimming feature on the Series 7 goes bezerk trying to adjust. Luckily you can disable the feature entirely.

The Series 7 also has a lot to like, such as the thin case, light weight, super-fast boot time, long battery life, non-glare matte screen, fantastic backlit keyboard …

The touchpad & auto-dimming could be fixed with software updates, but the knife-edge wrist rest is just plain stupid. For now, the horrid usability issues ruin what would otherwise be a very nice laptop.

UPDATE: Okay, another gripe — I’ve also been getting a Blue Screen Of Death (BSOD) caused by asmtxhci.sys when resuming from sleep mode, whenever I have my iPhone plugged in to one of the USB 3.0 ports. The asmtxhci.sys file is the USB 3.0 host driver from ASMedia Technologies, Inc. The BSOD happens often enough to be a nuisance. Once again, hopefully a software patch will fix it. For now, it’s yet another problem that doesn’t improve my opinion of the Series 7 Chronos. Using the USB 2.0 slot for my iPhone seems to work around the problem.

Samsung SE-506AB Blu-Ray Burner Comes With Ancient Software

Samsung SE-506AB Blu-ray Burner includes ancient PowerDVD 9 software

The Samsung SE-506AB Blu-ray burner includes ancient CyberLink software that's no longer supported & may not play some Blu-ray discs.

Initially I thought the Samsung SE-506AB unit I bought was defective — it would not play Blu-ray discs. I had purchased it along with a Samsung Series 7 Chronos laptop.

The Samsung Blu-ray burner comes with CyberLink PowerDVD 9. The Samsung laptop came with CyberLink MediaSuite, with a free download upgrade to PowerDVD 10. I assumed v10 was better than v9. Wrong.

PowerDVD 10 kept insisting “There is a a disc with an unsupported format in drive X:”. I finally noticed an asterisk in CyberLink’s help file with a footnote that not all versions of PowerDVD 10 support BD playback … apparently, the free upgrade offered through Samsung was the DVD-only version. CyberLink needs to make that more obvious, like perhaps mentioning it in their troubleshooting FAQ??!

However the copy of PowerDVD 9 bundled with the Blu-ray burner works fine. Basically you have to use the vastly outdated software to play Blu-ray discs. Consider that:

  • Samsung began shipping the SE-506AB Blu-ray burner in September 2011.
  • PowerDVD 10 was released in March 2010. Plenty of time for Samsung to have included it.
  • PowerDVD 9 was released way back in March 2009.

In other words, PowerDVD 9 was already 1 ½ years out of date when the Samsung SE-506AB began shipping.

It’s not just a simple issue of wanting the latest version. According to the CyberLink website, “Any Blu-ray Disc titles released after 2011 June may not be compatible with CyberLink PowerDVD 9…”

So why is Samsung shipping a brand new Blu-ray burner with vastly outdated software? Taking cost-cutting to the extreme, perhaps? That’s fine, until you start to tick off your customers.

404 Not Found Abuse: oggiPlayerLoader.htm

In a refreshingly proactive turn of events, one Amazon AWS abuser replied to me directly. The oggiPlayerLoader.htm 404 errors detailed in my previous web abuse post were courtesy of Oggifinogi, a rich media provider based out of Bellevue, WA.

Directory of Technology Paul Grinchenko emailed me back with a friendly explanation:

We are just looking for our IFRAME buster. You were running at least 1 of our ads in an IFRAME.

No surprise there. We have no prior relationship with Oggifinogi, so I figured their ads had been served through one of the 3rd party ad networks we use (turns out it was ValueClick).

Luckily the issue is simpler than that — Amazon AWS prohibits them from 404-bombing our servers at “an excessive or disruptive rate”. My reply to Paul:

As you probably saw from the “comments” I provided, my complaint was your service’s excessive HEAD requests to the same 6 non-existent files. Judging from the excessively long-term & repetitive 404 errors, it seems your service does nothing useful with the “not found” status code returned by our servers each time. Oggifinogi would be better off using a more responsible system: monitor HTTP response codes to your iframe buster requests, & use that information to limit requests when the files clearly don’t exist. By the way, I somewhat appreciate your service’s HEAD requests versus a full GET, but it’s a bandaid.

Also I urge you to consider Amazon’s advice: We would strongly recommend that you customize your UserAgent string to include a contact email address so as to allow target sites being crawled to be able to contact you directly. (…although most responsible web services I’ve come across put a URL in their user agent, rather than an email address…)

A few hours later, Paul replied that Oggifinogi does indeed cache iframe buster file presence for a short period, so their requests should not exceed 75 per hour. That fits the profile I saw — no real strain on the web server, but very annoying when tailing error logs.

The good news is Paul agreed to start using a Oggifinogi user agent — hopefully with a help/explanation page URL too.

Paul also sent me the oggiPlayerLoader.htm instructions. Now Oggifinogi can bust our iframes at will, rather than continuing the 404 war. In case anyone else out there wants to join the peace process:

Instructions for Publishers:

  1. Please download and unpack – External link for Pubs to Download
  2. Make sure that unpacked version is called oggiPlayerLoader.htm
  3. Copy oggiPlayerLoader.htm to just one of the following locations – single location is enough:

Please make sure that resulting location is accessible from outside. Location shouldn’t be protected. For example you should be able to open in the browser URL without entering any credentials.

… Working to improving the Interweb, one 404 error at a time.

Web crawl abuse from Amazon AWS-hosted projects

I’ve been keeping an eye on the error log lately, watching for phishing attempts, misbehaving bots/scripts, & other random stupidity. Turns out the major offenders have something in common — they’re hosted on Amazon’s AWS platform.

One Amazon AWS customer was crawling pages in bursts at up to 100 per minute, but referencing our mixed-case URLs in all lowercase — racking up several hundred thousand 404 errors over several weeks. Luckily they had a “Ruby” user agent (Ruby script’s HTTP request?) … bye bye Ruby, at least until you change user agents.

Another Amazon AWS customer was requesting oggiPlayerLoader.htm in various locations. Anyone know what this “Frame Booster” is part of? (UPDATE: see my followup about Oggifinogi). Luckily they use a HEAD request, so those got banned too along with some other esoteric request methods suggested by Perishable Press.

RewriteCond %{HTTP_USER_AGENT} "Ruby" [NC,OR]
RewriteCond %{REQUEST_METHOD} ^(delete|head|trace|track) [NC]
RewriteRule ^(.*)$ - [F,L]

I cheerily reported both cases of AWS abuse to Amazon via their web abuse form. Turns out the abuse form is there only to mess with your head. Some form data has to be space-separated while other data must be comma-separated. Fields where you list IPs & URLs barely fit a single entry, much less multiple items. And good luck cutting your access log snippet down to their 2000 character limit. Amazon just launched their Cloud Drive — zillions of decaquintillobytes of storage space — but can they handle processing a few hundred lines of server logs? Nope.

The kicker is if they do accept, verify, & pass on your  complaint to their AWS customer, Amazon won’t provide any details about the offender so that you could, oh I don’t know, blog mean things about them. You’ll need a subpoena for that.

Moving on to abuse not related to AWS — people are referencing themes/default/style.css all over the place. The requests look legitimate, from various random IPs & user agents, so I’m guessing it’s a misbehaving browser plugin. Searching Google indicates it could be something called OpenScape, which I didn’t have time to research. Anyone know what that’s all about? Those got forbidden…

RewriteRule theme/default/style.css$ - [F,L]

And finally there’s Microsoft. For about a year, MSNBot has managed to take legitimate page URLS & tack Javascript onto the end, as in /Kia/Sephia/2001/engine/this.options[this.selectedIndex].value;” Only Microsoft could manage that.

Page 3 of 6

Powered by WordPress & Theme by Anders Norén