Skip to content

Rob Griffiths

How to add fixed headers to a variable-width table

I've been updating my A useless analysis of macOS (OS X) release dates post for nearly 13 years now (OMG). Over the years, the one thing that's bugged me was that I couldn't find a good way to have fixed column headings on that post's incredibly long scrolling table.

I'd search occasionally, and find various solutions—some using two tables, some using JavaScript, some using pages of CSS, etc. But either I couldn't get them working, or they didn't work with variable-width tables, or they didn't seem worth the effort it looked like it would require to make them work.

But now…

Hooray for fixed headers! Read on if you'd like to use this trick yourself…

[continue reading…]



So you say you want to buy a boat…

About eight years ago, we had the same thought, though we knew almost nothing of boating and ownership, other than we had fun when we went out on some friends' boats. With some friends of ours (a family of four with similarly-aged children), we went looking for a family boat that would handle at least 10 people, have plenty of space for everyone to relax, and be capable of towing various water toys for the kids.

Our plan was to buy the boat together, and split the expenses 50-50. After much searching, this is what we wound up with…

That's a 2002 Maxum 2400SD, a 24-foot-long (more like 27 with the swim platform) family cruiser of a boat. Although old in calendar years, the boat had a brand new engine, and appeared to be in good shape. (Maxum was a Brunswick brand; they also own Sea Ray. Brunswick discontinued the Maxum line in 2009.)

One of the things we had trouble finding before we bought our boat was information on actual real-world costs: Just how much money will you spend not just to buy, but to use and maintain a power boat? To help others who may have similar questions, I'm going to share our actual costs from seven years with our boat. If you're thinking of getting into boating, perhaps some of this cost information may be useful.

[continue reading…]



My iPhone 8 Plus might be my last iPhone

I know, clickbait headline, but really, it's how I've felt since the release of the iPhone X, and still feel today. And no, this isn't about switching to Android. It's about not buying a newly-designed iPhone. Why not? Two reasons…

The Notch

The notch adds nothing to the iOS experience, but takes away much. Those stupid ears grab my eyes every time I see them, and there's no way to avoid them, save never using anything but an all-black screen. When not in an app, they show status items on a black background, which is fine…as long as your iPhone's wallpaper is also black.

But once you're in an app, you're in Notchville…

[continue reading…]



Someone intercepted my login info in DirecTV’s iPhone app

This morning, I launched the DirecTV app on my iPhone (connected to my home network via wifi).

On launch, I saw a login screen that looked slightly different than usual; the app had been updated recently, so I assumed it was the new login screen. But when I entered my user name and password (on the first attempt), I saw the screen to the right…

At this point, alarm bells went off. Not just because it was my first attempted login, but also due to the grammar of that last sentence:

"Please, contact AT&T operator."

That's wrong in many ways—and there's no provided method for contacting an AT&T operator. I now believed I had been scammed: Somehow, a fake login page was injected where the app would normally display its login screen. As soon as I pressed Enter after entering my password, I'm sure my username and password were sent off to some server somewhere.

I immediately opened the DirecTV web site on my Mac, logged in (using my supposedly-locked account and current password), and changed my password. That all worked, and I received the email stating I'd changed my password, so I'm pretty sure my account is fine. (And I use unique passwords for each service, so the one that was probably compromised is useless to the hackers.)

But the bigger question here is what happened and how did it happen?

[continue reading…]



2011 pocket camera vs. 2017 iPhone 8 Plus

While working on some photos this weekend, I noticed that I'd taken two nearly-identical photos of the Enola Gay at the Steven F. Udvar-Hazy Center—nearly identical, but separated by four years:

Click once for larger, then click the icon in the upper right of the pop-up for largest vesrion.

The left image was taken in 2014 with a 2011 Pansonic Lumix DMC-ZS10 pocket camera (specifications); the right image was taken in 2018 with my 2017 iPhone 8 Plus. (Interesting to note that I didn't bring my DSLR on either trip…the best camera is the one you have with you, right?)

Neither of the above images has been edited, beyond whatever algorithms the cameras use when saving the photo. Frankly, I was amazed at just how much better the iPhone 8 Plus photo is compared to the one from the Lumix: The Lumix photo is skewed heavily blue, edges aren't well defined, and detail in shadow areas is obscured. The iPhone's image is perhaps just a bit towards the yellow end of the spectrum, but it's miles better than that of the Lumix.

[continue reading…]



Classic cars and one big dam thing

I've been away from home for nearly a month—first a couple weeks in DC to visit family, then off to Las Vegas with our APA 8-ball pool team for the World Championships. We did reasonably well, winning four matches and finishing in the 65th to 128th place bucket. (It's a huge tournament, with 713 teams this year, so not every place is played out.)

Because of the uncertainty of when we'd be finished in the tournament—it's a modified double-elimination, so you're guaranteed two matches, but nothing more—I chose to drive, so I could leave as soon as we were finished. (Also playing into my decision was the fact that I was leaving from south of Bend, Oregon, which isn't really convenient to flying to Las Vegas—I'd either have a one-hour drive to an airport followed by a flight to Seattle and a layover, or a four-hour drive to Portland for a direct flight.)

I'll have more to say on the road trip in a future write up, but thought I'd take a minute to share some photos I snapped during the journey. None of these are edited at all; I haven't had the time; they're all direct from the camera, my Nikon D5500 (though there is one iPhone panorama).

First, in Reno, I stumbled across this fantastic exhibition of classic cars. Although it was really warm out, it was well worth walking through this collection of gorgeous cars. There was a bit of everything there—true classics, kit cars, semi-modern cars, and even a few race cars.

Classic Mustang in Reno

Once in Vegas, on our one day off, we drove out to Hoover Dam, drove across (which I didn't think was allowed any more, after the opening of the Hoover Dam Bypass, but it was), then parked and explored for a bit. I snapped a bunch of pictures, none of which reveal just how mind-numbingly hot it was outside. They also, as always, fail to capture the sheer size of the dam and the vertigo you experience when peering over the edge. It really is worth the visit if you're in the area. (The tour is highly recommended, too; we just didn't have enough time.)

Hoover Dam

In all, it was a great trip, and hopefully we do well in league this year and get to go back again next year!



When good cables go bad

Last Thursday, my daughter and I left to run a few errands. We weren't gone all that long, but when we got back, we found that the microwaves had lost their time setting, and the fridge's alarm light was blinking—signs of a power outage. In addition, the internet was offline, which was a bit odd. (My computers and the router/switch are on battery backups, and they didn't show any signs of having rebooted while we were out.)

I fixed all the clocks, and then power cycled the router and the internet came back. But not for long—a few minutes later, it vanished again. I pulled the WAN cable from the router, waited a few seconds, and connected it again. This time, the net stayed with us for a couple hours. Then it vanished again. I repeated the process, and we had net again…for a while. This continued through the day—sometimes we'd have connectivity for hours, sometimes for minutes—until I got frustrated enough to troubleshoot.

I took my laptop out to the Frontier FIOS box on our garage wall, and connected directly to the FIOS box. I started some large downloads along with a streaming movie, and let them run for an hour or so: No problem. This seemed to point to a cable issue.

Our FIOS box is connected to a long Ethernet cable (red line in the image at right) that runs around the semi-L-shaped house, then under the house, and finally enters the office, where it ends in a wall jack. A shorter cable then goes to the router; I replaced that one first, but we were still getting dropouts. Sadly, that meant the long cable appeared to be damaged.

To test this, I made a long-but-direct cable and ran it from the FIOS box, across the driveway, and through the front door then into my office—definitely not a long term solution, as I had to choose between network connectivity and a locking front door! But using this temporary cable, we didn't have any outages at all the rest of the day.

Thursday evening, I made a much longer cable, hung it on our Christmas hook lights over the garage, and then around the front of the house (just lying on the ground) to the office—just so we could have both a locking front door and internet connectivity. This line worked fine all day Friday, verifying that the old line was having issues.

Thus, my weekend activity was set…ugh.

[continue reading…]



Easily see any app’s bundle identifier

I occasionally need to help one of our customers get the bundle identifier for a given app, for some purpose with one of our apps. While the task isn't complicated—the value is stored in a file named Info.plist within each app bundle—it's not something that's necessarily easy to explain to someone who doesn't have a lot of Mac experience.

I figured there must be a less-complicated solution, and I was right, though it's probably higher on the geek factor. After some searching, I found this thread at Super User, which offers a number of solutions. The simplest—and always working, in my experience—was the very first one: Open Terminal and run this command:

osascript -e 'id of app "Name of App"'

The "Name of App" is replaced with the name of the app as it appears when hovering over its Dock icon. For Excel, for example, it'd be:

osascript -e 'id of app "Microsoft Excel"'

Run that command, and it returns com.microsoft.Excel, which is just what I need—I just have the customer copy the output and email it back to me.



Review: Olala 10,000mAh Power Bank

For those not aware, I have something of an addiction to portable power packs—with two kids and who knows how many devices, it seems someone somewhere is always out of power.

For the last few weeks, I've been testing an addition to our stable of such products: Olala's $32 10,000mAh Power Bank.1I received the Power Bank at a greatly reduced cost, but my review is based solely on its performance and my impressions of its build quality.

This shiny piano black unit looks great (though that shiny finish is a fingerprint magnet), and its smooth surface means it easily slides into a pocket in a backpack. Four blue LEDs let you know how much juice you have left. Unlike some battery packs, this one is Apple MFi Certified, meaning Olala has gone through the necessary steps to certify that their device meets Apple's standards. (You can search for MFi certified devices in case you're ever curious about a given accessory developer.)

[continue reading…]



Home hack: Replacing screen window pull-tabs

This weekend, I wanted to wash our windows, including the glass that's usually behind the screens. To do that, of course, you have to pop the screens. In our house, that's done by a pair of plastic pull-tabs that are installed below the bead that holds the screen in; they look like this:

Also visible in that screen is the problem: That yellowed plastic is incredibly weak, from exposure to the sun. (Whose idea was it to put non-UV-safe plastic in a window??). As soon as I pull on that tab, it's going to come right off in my hand. And that's exactly what happened to that one, and every other sun-facing window in our house.

Amazon sells an assortment of replacement tabs, but the problem is that they must be installed under the bead. That means disassembling the screen, installing the tab, then reseating the bead while getting the screen nice and tight.

I thought there must be an easier way, and after some searching, there is…this video by Felix Wong shows how you can use duct tape to quickly create a much-more-durable pull tab (skip to about 30 seconds for the actual work):

I bought some white duct tape, and in the span of about 15 minutes, I installed new pull tabs on eight windows. Start by folding over about a half-inch of the end of the duct tape, then pull a length out to see how much you need to reach around the frame, and cut to length. Once cut to length, cut in half lengthwise, giving you two narrower tape strips. Apply those to the frame, leaving the doubled-over half-inch where the plastic pull tab used to reside, and you're done.

You might think you'd rip the tape off while pulling, but because the pressure is parallel to the window, it seems rock solid—I tested with one window about a dozen times, and had no issues at all. So much easier—and potentially longer-lasting—than ordering actual replacement tabs.