Posts

Showing posts from 2019

Hosting

Well, my ArkaHosting VPS instance finally actually went offline ( expected ). I have all the data online at home, but need a publicly accessible version for beta testing (don’t want to open that network to the world). Where to move to? Google seems to be indecisive  (and has a history of growing bored with offerings and dropping them, chronicled at Killed by Google and elsewhere). Azure is Microsoft, and while this might be the new and improved Microsoft, I tend not to trust them. (Can’t imagine why .) There’s AWS, but, that’s, you know, Amazon  (as also seen in Unfulfilled ). (Still on my personal boycott after they - for the umpteenth time - flaked on “guaranteed same day delivery” for stuff I really needed to tend to my dying dog.) Seeing what’s out there. For context, I was paying the (evidentially unsustainable) amount of $36.50/year, including a $1.50 upcharge for a 1 Gb/s link upgrade from the standard 100 Mb/s connection, for a “ 6GB VPS ” with the following specs: 4

Deadpooled.

Image
Sigh. Just saw this email, after seeing an  article on Slashdot . I have a VPS instance with ArkaHosting. Fortunately, the (massive) database is a slave copy of a MariaDB instance I host on my redundant NAS at home, but still... From:  ArkaHosting <support@arkahosting.com> Date:  December 6, 2019 at 16:18:33 PST Subject:   To Our Customers - Important Information  Dear Customer, Over the past few months we have been met with many challenges within the hosting business. Some that have not been overcome. As result of this we will be closing our doors.  We will be shutting down this Monday 12/9/2019.  We are taking this time to let our customers know so that they may backup and retrieve all of their data before then. We deeply apologize for this inconvenience. Thank You. Management --- ArkaHosting Staff support@arkahosting.com - Available 24x7 For You! https://www.arkahosting.com visit our website   |  log in to your account   |  get support Copyri

No more Sense-Ation repair program

Image
Well, that’s pretty F’d up: One of the things I really liked about the Sense-Ation harnesses (been using them since 2009) was their repair program. Mail them a harness with one or two bad straps (frayed, chewed, whatever), for $5/strap they’d repair it and return it to you. Despite the repair form still being up on their website, they’ve apparently stopped this service, with no notice (and they have my contact info; I’ve bought several harnesses from them directly). Lame.

Chewy.com multiple autoshipments

Image
For my two pups, Chewy.com has been a godsend. I have their food on autoship for a slight discount but also to not have to worry about it. (I’m saturated.) But I couldn’t figure out how to have different schedules for the different dogs ... (Astrid gets about 2 scoops of Purina Pro Plan Bright Mind 7+ , daily, while Brian is currently on Eukanuba Large Breed Puppy and transitioning to Royal Canin Labrador Puppy , and the amounts vary as he gets older and larger.) It’s counter-intuitive. To my mind you should be able to click “Add to Autoship” and then, under Manage Autoship, move products to different auto shipment entries with different schedules. The fact that the one autoshipment I had setup was identified as “Autoship #1” suggested it was possible, but the way to do it was non-obvious: Instead of clicking “Add to Autoship,” click “ Add to Cart ” On the next screen, click “ Proceed to Checkout ” On the “One-Step Checkout” screen, on the left side, there’s a section to “ Star

Converging Shipments: A Headphone Synergy

Image
A few days ago a mass drop special, offering the Sennheiser HD58X Jubilee headphones, caught my attention at a price I couldn’t pass up ($135, less the $20 for being a new drop member). I’ve been listening to Bose QC25s at the office and QC35 IIs at home, but they just lacked a certain je ne sais quoi . (In particular: Bass. Bury a Friend just gets murdered on them.) Meanwhile, I still  haven’t listened to Fear Inoculum , as I haven’t found the right time to sit down with it, without distraction. (I named my first Labrador Maynard, y’all...) Finally, cleaning house, I found (again) my old iPod mini first generation, and toyed with the idea (again) of modernizing it. It still works, but the battery is pretty weak, and the MicroDrive is a moving part that will fail sooner or later. So I ordered: A high capacity replacement battery (750mAh EC003, 3.7 VDC, 2.77 Wh) ($17 when I ordered it, free shipping) (no reviews; wish me luck ) (I would have gone with the relative known quantity o

iPad in the Duchess

Image
Renting a Duchess for multiengine training. Grabbed old pieces to put together an iPad rig: RAM-B-121B Yoke Clamp Base (I can’t find my  RAP-B-400U Claw , which is more compact and a better choice; I just had the old clamp base sitting around from an earlier setup ) RAP-B-201U-A Composite Short Double Socket Arm RAM-HOL-AP20U iPad mini 4 cradle RAM-B-202U Base  (mount to the cradle) iPad mini 4 (backup to the iPad mini 5 that’s usually in the cockpit; the '4' is getting a bit long in the tooth but still runs ForeFlight acceptably well; buying new, I’d go with the 5 any day) Works well. (I also got an iPhone X RAM cradle ( RAM-HOL-AP25U (comes with screws) and RAM-B-238U base), visible in the second photo; it's better than nothing, but the iPad + Stratus is the much, much better solution.)

Dog Show.

Image
For the first time in my life, I have a dog that’s AKC. Time to start competing. (I have my reasons.) He’s still so much a puppy, but growing so quickly! I'm just going to throw this out there: The dog the AKC used for their website is basically my Labrador. White, with darker ears: I have no idea where to start. Talked to opposing counsel on one of our cases who was requesting a trial continuance because her Border Collie keeps winning. She pointed me towards the “Jack Bradshaw” website, mentioned “conformation classes,” and described a new AKC 4-6 month puppy “competition” that doesn’t count but gets dogs and handlers familiar with what to expect. Okay, now I’m on a mission... I don’t think my boy is registered with AKC yet, so that’s step 1: https://www.akc.org/register/ I’m so glad I scan everything. I needed his AKC number to register, and found it at the very top of the registration form his breeder gave me: But at least finding the paperwork was as simple

.ssh/config and BBEdit

I’ve been using SSH to remotely access UNIX (Linux, Mac OS X / macOS, etc) computers for more than 20 years (switching over when the perils of plaintext telnet were made very clear to me during HIP ’97 ). Not sure how I never knew to setup an .ssh/config file before! Super convenient. Had to figure it out to get BBEdit talking to a remote web server (BBEdit only groks FTP/SFTP), and I’ve configured the web server to only accept key pair authenticated logins. Good tutorial: https://linuxize.com/post/using-the-ssh-config-file/ Also, this is in the manual, but it still took me a second to find it ... FTP/SFTP bookmarks are configured under the BBEdit menu → Setup... option. (There’s no way to bookmark an open connection, or to configure one from File → Open from FTP/SFTP Server..., which is a little surprising / obscure, for a Mac-native application with such a long history.) Mac-Pro:~  wingedgeek $ cat .ssh/config  Host  webserver.mydomain.com IdentityFile ~/.ssh/ webserv

Alternative(s) to an SQL-based word-level inverted index

Image
So I built a database of documents. As of this writing it contains 18,693 HTML documents, which  combined contain 1,453,866 paragraphs. Once the most common words have been excluded ( ' the ', ' of ', ' to ', ' and ', ' a ', ' that ', ' in ', ' is ', ' for ', ' or ', ' on ' ), there are 272,708 distinct words. So far so good. The issue I’m slamming up against now, though, is the  word-level inverted index  ( wordIndex ) I built so I could do phrase searching, find WordA within 5 words of WordB, find documents with WordC, WordD, and WordE all appearing in the same paragraph, etc. Kind of a poor man’s LexisNexis . I rolled my own for the mental exercise ‡ , but now I’m wondering if there’s a better way. Profiling the PHP code that builds the index, the single most expensive call is writing to that  wordIndex  table. It takes an average of about 10 minutes to index each document; here’s a representat

Specifying a calendar when importing an ICS file into Outlook?

Image
This shouldn’t be that hard, but, it’s Microsoft, so ... I built a little tool that automatically calculates litigation deadlines based on a set of rules I coded based on the California Code of Civil procedure. In Firefox and Safari and probably others (but not Edge or MSIE, sigh), it also, in JavaScript, builds on the fly .ics files for easy importation into your calendar app of choice. When that file gets opened on the Mac (using Calendar.app), quite sensibly the user is prompted as to which calendar the event should be added to: But ... Not on Outlook. In both the Outlook 2010 and 2016 desktop applications, the iCalendar file gets automatically opened by Outlook: Outlook populates a window with the event information, but does not provide any option to specify which calendar the event should be added to: When the event gets saved, it’s created on the user’s personal calendar, and has to be manually dragged and dropped onto the shared ca

JavaScript Unit Testing with Jasmine

Image
So I built a fairly involved single-page JavaScript / HTML app that generates litigation calendar events using some convoluted logic (calculating holidays, when those holidays are observed (e.g., if November 11th falls on a Saturday, Veterans Day is observed on the preceding Friday, but if it falls on a Sunday, it's observed the next Monday - CRC 1.11 ), etc. It’s large, and important, enough, I finally sat down and learned how to build Jasmine unit tests for JavaScript. My code may be spaghetti (I never really sat down to learn JavaScript, and kind of winged it with ES6 for this app), but at least it will be validated spaghetti. I have a book, JavaScript Unit Testing , that covers Jasmine 1.2, so I’m using the ancient 1.3.1-standalone version here. It works, for now (I’ll learn the new stuff as I have time). src/testCode.js The code being tested. This is a silly, simple example: function returnsTrue() { return true; } spec/testCodeSpec.js A “suite” is a group of te

Enabling an HTML application for offline use in iOS

I have a couple of single-page HTML / JavaScript applications I’ve built that can be loaded onto an iPad or iPhone for use when offline (10,000' in the air, or buried in an ancient concrete-and-steel courthouse building). Steps required (paraphrased from, e.g., here ): Create a cache.manifest file Mine are pretty simple; here’s an example: CACHE MANIFEST # Serial number 2 apple-touch-icon.png index.html Make sure the web server is properly configured to serve .manifest files with the proper MIME type (text/cache-manifest). Here, I’m verifying that using Lynx (I’ve highlighted the MIME type information in bold): $ lynx -head -dump http://www.punctumarchimedis.com/garmin/cache.manifest HTTP/1.1 200 OK Date: Sun, 15 Sep 2019 22:41:32 GMT Server: Apache/2.2.15 (CentOS) Last-Modified: Sat, 02 Mar 2019 05:05:41 GMT ETag: "80797-41-5831579a458e8" Accept-Ranges: bytes Content-Length: 65 Connection: close Content-Type: text/cache-manifest

Dynavin N7 Pro

Decided to finally upgrade my 15 year old E46 M3 and bring it into the 20th century. There are a variety of options, including Chinese Android boxes (some of which have more capability), hacks that put a double-DIN into the sculpted dash (which looks about like what you’d expect), and, for my money, the gold standard, the Dynavin N7 Pro . (I briefly had installed an older N7 with the iLink module, which I got before the N7 Pro was available.) It required relocating the environmental controls using a kit they sell (and giving up the little sunglass compartment, c’est la vie), but was otherwise plug-and-play. Seriously, I’ve done probably a dozen stereo installs into the vehicles I’ve had over the years, and this was by far the easiest. Pictures to come, but, trust me when I say it really looks OEM, and no crimping or soldering required for the install. The wiring harness, etc., just clips in, and you’re up and running. The only hiccup I had: The steering wheel controls didn’t work in

Puppy picking

Image
Saturday (puppies age: 49 days), flew up to Santa Maria to meet with Alyson Rodges at Holly’s Labradores to run the three boys in the litter through the Volhard Puppy Aptitude Test . (I had Maynard tested when he was about 7 weeks old.) I’m really glad I did. The darker boy, who really reminds me of a baby Maynard, was the least like Maynard in terms of personality and disposition. The closest match was one of the white boys, who scored almost all 3s. World: Meet Brian. I cried a little bit while I held him and he snuggled up against my chest, as I promised him I’d protect him and keep him safe. The oncologist tells me: “No one could have done better for Maynard.” But I will always   wonder , at least a little bit.

Guadalupe Island Shark Diving

Image
Pre-Trip About a year ago, an old friend of mine (we dated in college) and I were about to hop in a plane to hit wine country, when my mom called to see if I’d be interested in joining her on a “bucket list” trip - shark diving off the coast of Guadalupe Island, Mexico. My friend is hugely  obsessed with sharks. It was fate. We signed up for the adventure immediately, which took place about two weeks ago. The trip was arranged by Y-Kiki Divers , on the Nautilus Liveaboards ’ Explorer . Dive Gear I’m a PADI Advanced Open Water diver (and have been since the early 1990s(!?)), but haven’t been out in decades. (Bought some new equipment about 15 years ago - a never used BC, a dive computer that, IIRC, has an RS-232 serial interface...) But I didn’t need much of that. I did pick up a new mask from the local dive shop , along with some 3mm wetsuit gloves, and my old boots still fit and were in good shape. The excursion company provided everything else (rented a 7mm wetsuit along with