Skip to content

How to securely hide worksheet(s) in an Excel workbook

Important note: Please see the comments—the method I discuss here is secure from casual users. However, the Excel files are just zipped XML files, so it's possible to unzip them and open them with a text editor. When I tested with my dummy salary worksheet, I could see individual salary values, but no actual text—so there wasn't any way to associate a salary with a person. Still, the following should be considered as only a semi-safe solution.

My wife wants to create a budget spreadsheet for the various departments in her company to use. Each department would have their own tab, showing their planned yearly budget by month for the coming year. A super-simplified and unrealistic input worksheet might look like this:

The green areas are the portions that the users would fill out—probably not the department heads, but just someone in the department. Which leads to the problem: There's a worksheet called Salary Info that's used to populate the Salaries line in the workbook. (In my silly example, I just divided the total salary into four equal quarters.)

The problem is that the Salary Info worksheet contains salary information for the entire organization, and this isn't information that should be shared with everyone.The Salary Info sheet might reveal, for instance, that a coworker is leaving in three months—the coworker has told management, but the employee isn't ready to tell the entire company just yet.

So how can you distribute the workbook to all the departments, with the salary info intact, but without revealing that data to everyone?

[continue reading…]



When a light drone is the right drone

Many years ago, I had a big, spendy drone—the DJI Phantom 2 Vision +. This was a monster of a drone, measuring over a foot along the diagonal between the motors, and probably just under a foot in height—this image gives a good sense of the size of the thing:

It was also heavy, weighing in at 2.7 pounds (1.2 kilograms), and it used a 5200mAh battery to provide a claimed 20ish minutes of flight time, though 15 was more typically what I saw. The camera was mounted on a precision gimbal, providing incredibly smooth video—1080p at 30fps (stills were 14mp), which was very good for the time.

While I liked the big drone, for a part-time hobbyist drone user like me, it was also a pain: I needed a big case to transport the Phantom and its spare parts and batteries and charger, it took a while to set up (install propellers, configure controller, make wifi connections, etc.), and I never mastered flying it low-and-slow (perhaps due to the amount of wind its powerful rotors generated). It was also really loud.

Because of the hassle involved with using the drone, I didn't use it as often as I wanted to. So I eventually sold it, and left the world of drones behind for a few years. But lately, I'd been getting the itch again, and after doing some research, bought something much different…

[continue reading…]



See exactly when an app launched

Update: I guess I should have searched here before I posted this—I wrote up another solution a few years ago, and that one includes a Keyboard Maestro implementation. Whoops! As this one's another method, though, I'll leave it up.

I was working on some stuff for our upcoming Usher 2 release, and needed to know how long Usher had been running. A quick web search found this post, where one of the comments had an answer that works well in macOS:

ps -p pid -o lstart=

Replace pid with the process ID (PID) from ps -ax for the app or process in question, and you're done. But it's possible to make it even easier to use by automating the task of getting the process ID. Here's what I came up with:

ps -p `ps ax | grep [U]sher$ | cut -c 1-5` -o lstart=

The bit between the backticks gets the matching process line from ps, then uses cut to keep just the first five columns, which contain the PID.1When the shell encounters backticks, it processes the commands within those backticks before processing the rest of the command—in this case, the backticked command returns the PID.

[continue reading…]



The 2020 edition of my Excel run tracking workbook

At the end of 2016, I first posted about my run tracking Excel workbook. That first version was crude, but functional, and I used it to track every mile of my "2,016 miles in 2016" running goal. I posted a minor revision for 2017, then made some major updates for 2018. When 2019 rolled around, I made a few more changes, which I released by way of a note added to the 2018 post.

Now that 2020 is here—I know, it's a bit past January, sorry!—I've made yet more changes, and have decided it's time to replace both of the previous posts with one new all-in-one post. Here you'll find a link to the latest version of the workbook, as well as full instructions on how to use it.

[continue reading…]



Fun family card games to help pass the time

As many of us are under stay at home orders, and schools are canceled (or on partial-day remote learning), it can be a challenge keeping the kids entertained without relying on electronic devices all the time. I thought I'd share three of our favorite card games, which are playable for anyone from kids of roughly middle school age up through adults.

Each can be played with as few as three people (the max varies by game), and all are relatively simple to learn but hard to master, and don't take a huge amount of time to play. The first two are packaged games (from the same company), while the third simply requires two decks of cards.

Five Crowns

Five Crowns is a rummy-style card game, where the objective is to score the fewest points possible. The first hand is three cards per player, with threes wild (plus jokers, which are always wild). Players need to build either straights or of-a-kind collections, consisting of at least three cards. Each turn, you can either draw one card from the discard pile, or from the top of the deck; at the end of you turn, you must discard (including when you go out). The objective is to go out by playing all the cards in your hand. So for the first hand, it's pretty simple.

Once one player goes out, the others put down what minimum three-card groupings they can, then have to add up the value of remaining cards, and that becomes their score for the round. The second round is four cards, and fours are wild; then five with fives wild, etc., all the way up to 13 cards with Kings being wild.

[continue reading…]



How I lost control of our bank accounts to a phone scammer

Yesterday, instead of having a productive afternoon at home, I had the privilege of sitting at the bank for a couple of hours, resolving a problem completely of my own doing: I fell for a phone scammer. My wife and I had to close our accounts—which were in excess of 25 years old—and set up new ones. I then spent hours updating our various bill paying services, Quicken account access, etc.

Do yourself a favor, and don't be me. I never thought I'd be "that guy" either, as I keep current on scams, look for signs of fishiness on phone calls, etc. Still, they got me, and it was painful—not necessarily in terms of financial loss (we're out $500 for maybe 60 to 90 days while they investigate), but in terms of time: Time to fix what I did, and even more time spent beating myself up over my stupidity.

Here's the tl;dr version: Do not ever, as in never ever, give out a verification code over the phone. I know that now. I knew that earlier today. I've known that for years. And yet, I did it. What follows is a bit of the nitty-gritty on how I got scammed, what I learned (beyond the above), and some technological things that affected my behavior during the call. Hopefully the sharing of my stupidity will help others avoid the same fate…

[continue reading…]



Quickly create a nested folder structure via Terminal

Have you ever needed to create an empty folder structure with many levels of repetitively-named folders? This doesn't happen a lot, obviously, but if you try using Finder for this task, you'll quickly discover it's really tedious. But a quick trip to Terminal makes the task very fast, and it's not overly complicated.

Let's say you need a folder structure to handle reports that you'll be receiving weekly, but need to keep track of over both quarters and years. One way to handle that would be with a folder structure like this:

(Hopefully obviously, the same structure repeats within each separate year's folder.) Creating that many multi-leveled folders in Finder would be time consuming and tedious. But in Terminal, you can create the entire structure with just one command:

mkdir -p 202{0..5}/qtr{1..4}/week{1..13}

That command takes under a second on my iMac to create the entire directory structure (over 330 folders). Zoom! So how does this work?

[continue reading…]



Watch two of the Star Wars Trilogy movies in 4K

Hot on the heels of my weekend post about Harmy's Despecialized Editions of the original Star Wars Trilogy movies, Six Colors maven and all-around good guy (and my ex-boss) Jason Snell pointed me to something I'd previously only seen briefly referenced in a few spots: Project 4K77.

Project 4K77 is, as you might guess from the name, a 4K version of the 1977 Star Wars movie. The group has also completed Project 4K83 (Return of the Jedi), and is now working on Project 4K80 (The Empire Strikes Back).

What's really amazing about the 4K77 project is that it is not an upscale of lower-resolution footage. Instead, as explained on the 4K77 page…

…97% of project 4K77 is from a single, original 1977 35mm Technicolor release print, scanned at full 4K, cleaned at 4K, and rendered at 4K.

Because this is a scan of the original film, it's grainier than the Harmy releases—and there may be some actual film effects like scratches visible at times (I haven't yet watched the full movie, so I'm not sure).

But it is a full 4K, and it's a very different experience than is Harmy's version. As an example, here's the same still as I used in my prior post, but this one was taken from 4K77 (again, click to see the larger version):

Without looking back at the other blog post, it may not be obvious just how different these two versions are…but this composite photo makes it obvious:

[continue reading…]



Watch the Star Wars Trilogy movies in their original form

As a child of the 1970s, the original Star Wars trilogy1Star Wars, The Empire Strikes Back, and Return of the Jedi was—and remains—one of my favorite movie series of all time.

Unfortunately, George Lucas has made it virtually impossible to watch the original unedited versions of the films.2Unedited versions exist on LaserDisc and DVD, but they are low quality transfers. From 1997 onwards, only modified versions have been available—with newly-added CGI effects, deleted scenes that add nothing to the story, changes to sound effects, and even replacement of characters, such as some of those in the cantina in the original Star Wars. He called these releases Special Editions…but to fans of the originals, they weren't so special.

Enter one Petr Harmy and an army of volunteers. Using multiple sources, Harmy and the others pieced together all three original films, doing away with the edits, correcting colors, upscaling imagery, and replacing sound effects. This 20-minute video explains the process, and contains a number of before-and-after comparison shots.

The end result is something called Harmy’s Star Wars Trilogy Despecialized3Because these versions remove the Special Editions' changes—get it? Editions: Amazingly high quality versions of the theatrical releases of all three original movies. As a very brief example, here's one still (click for a much larger version) from Star Wars:

The movies are not at Blu-Ray (1920x1080) resolution, but they're very well done 720p (1280x720) versions which look amazingly nice even when scaled to fill the screen of my 27" iMac. And most importantly, all the cruft added on through the years is gone. No bogus CGI. No replaced characters. No weird sound effects. Oh, and (spoiler alert!) Han shoots first.

So how can you get these Despecialized versions for yourself? That's a bit tricky…

[continue reading…]



Add metadata to ripped movies and TV shows

Somewhat regularly, I write about ripping DVDs and Blu-Rays. I tend to prefer physical media and sometimes—especially when buying an older TV series or classic movie—the disc won't include a digital copy. So I rip the disc—this way for Blu-Rays, or just via HandBrake for DVDs—to create my own digital copy.

Once ripped, the problem is that I have a video file that will play, but that has no useful information about what the video is—no metadata about the cast, production year, or (for TV series) season and episode. If I try to add the movie to the TV app (or iTunes, as on my iMac), it will require some hand editing to wind up in the right category, and it still won't have any show information.

Enter Subler, a free app to help you "tag" (add metadata to) movies and TV shows. There are probably other apps out there that do this, but Subler works quite well for me, especially for TV shows.

When I rip a TV series, I'll give the files a filename based on its title and (for TV series) season and episode, like Wings S01E01, or Sports Night S02E04. I then drag and drop the ripped file onto Subler's dock icon, and it opens a window, showing all the metadata associated with the file; here's how the window looked after I ripped the first episode of Sports Night:

[continue reading…]