Frame Game

Frame Game

In the Spring of 2019, I was looking for a way to promote one of our time-limited merchandise sales for Accidental Tech Podcast. As part of these sales, we receive promo codes from our vendor for hitting certain milestones. Each promo code is good for a free t-shirt (including free shipping). I decided to give away these promo codes to fans on Twitter.

I wanted to do it in a fun way, perhaps with an Apple-themed trivia contest. Sadly, most trivia succumbs immediately to the power of a web search engine. I needed something that wasn’t so easy to Google. My first attempt was to post some hand-drawn line art, then ask people to identify it. Since I’d just created the drawing, I knew it wouldn’t be in any search results. And the crude nature of the art meant that a Google image search wouldn’t turn up any matching photos.

It worked (I think), but I couldn’t come up with anything to draw after that. Instead, I posted a small portion of a larger image which I asked people to identify. Again, success. The image I’d chosen happened to be a frame from a TV show, and that gave me an idea.

From that point on, I’d post a small portion of a frame and then ask people to identify the movie or TV show from which it was extracted. I created a notes document to keep track of everything, and I titled it “Frame Game.”

Since then, I’ve posted almost sixty frames over three years, including a few excursions into audio. People seem to enjoy it. Movies and TV shows are great, and who doesn’t like free stuff?

What I enjoy the most about Frame Game is the process of carefully selecting the frame and the crop such that people who are very familiar with the piece of media will be able to guess the answer, while people who are not will be absolutely dumbfounded that anyone was able to figure it out at all, let alone so quickly. The best example of this was when I posted a tiny, 64-pixel square from a 1920 x 800 frame that was guessed in one minute and four seconds.

Have some people figured out how to use computers or web searches to brute-force this game? Almost certainly. But it makes me happier to believe that most people are playing it legitimately. I’d like to humbly suggest that playing for real will make the players happier too.

Frame Game has taken place entirely on Twitter, and it’s meant to be played in real time. Unfortunately, the way I’ve chosen to chain the tweets does not make it particularly easy to follow in the Twitter archives. In an effort to better preserve the historical record, I’ve created my own archive, linked below.

Frame Game History Viewer

There is no score-keeping, but you can “play” the game by attempting to guess the answer before clicking to reveal the full frame. If you cheat now, you’re only cheating yourself! Some frames also have hints that show ever-larger portions of the frame. (Hold down the Option key when clicking the button to reveal the full frame immediately without seeing any hints.)

I’ve had to resort to posting hints a few times during Frame Game, but the history viewer contains all the hint frames that I had prepared, regardless of whether or not they were needed. I’ve also linked to the original tweet, the declaration of the winner, and the winning tweet itself, if available. (Some winning tweets have since been deleted.) The time elapsed since the question was posted is also shown.

If you like this kind of thing and want to play something similar every day, check out the recently released, Wordle-inspired framed.wtf.

There is no schedule for Frame Game, other than usually coinciding with one of ATP’s seasonal merchandise sales. I’m not even sure if it helps increase sales at all. It’s just something fun that I like to do for the handful of fans who like to participate. If you want to play, follow me on Twitter and watch for a tweet that begins with the magic phrase, “The first person to identify…”

Frame Game can start at any time, so be vigilant!

Independence Day

When I graduated college in 1997, I started a full-time job with the same dot-com startup that I had been working for part time during my senior year. In the twenty-five years that have followed, I’ve had a series of jobs in the same field ("full-stack web development," in today’s parlance).

I’ve worked for companies of all sizes, from tiny startups to enterprise businesses with billions of dollars and thousands of employees. I’ve worked in downtown Boston, in Cambridge, and in the western suburbs. I’ve commuted to work by train, by car, and not at all. (I worked remotely at my very first job, and I have done so on and off for many years since.) All these jobs have been in the typical nine-to-five mold, and I’ve usually gone from one to the next without even a single day off in between.

Ever since my first job, I’ve also always done…something else—something besides my “day job,” something that at least had the potential to bring in some extra money. I did a little contract programming at the start, but I didn’t find it appealing to just do more of what I was already doing.

I started writing for Ars Technica in 1999, and I continued doing that for fifteen years. I also wrote for Macworld (for print and the web), for my own website, and for a few other small publications. I enjoyed writing, and I could get paid for it.

Eleven years ago, as my writing tapered off, I started podcasting, which I also enjoyed and found I could get paid for. Two years ago, I wrote two small Mac apps to scratch a few of my own itches.

Meanwhile, outside of my work life, I got married, bought a house, and had two children. Over the years, I’ve had to learn how to balance these competing concerns. As the financial demands of my life have increased, I’ve had to find a way to increase my income. As my family responsibilities have grown, I’ve had to reduce my “extra” work to a manageable level.

As part of this process, I’ve had to find what I think of as my “maximum capacity.” How much can I ask of myself before I fall apart? I learned some important lessons at my very first job, even before I had a house or kids, by slamming hard into the limits of my own body thanks to chronic RSI. Later, my children helped me plumb the depths of sleep deprivation while also entirely recalibrating my value system.

At each decision point, I’ve adjusted my life to fit within my maximum capacity by curtailing “unnecessary” activities. My family and my day job were necessities. Everything else was optional. As I’ve gotten older, my maximum capacity has decreased, of course, and I have exceeded my limits on many occasions. But for the most part, I’ve been able to keep it together.

It hasn’t always felt great to be running “at maximum capacity” (or slightly beyond) for two and a half decades, but it has always felt like the right thing to do during this critical part of my life.

Spring Dawning

Over the past few years, something has started to change. When I’ve been presented with interesting opportunities that I’ve had to turn down (“Sorry, I’m at my maximum capacity right now…”) it has started to feel less like disciplined life-management and more like disappointment. It’s felt similarly lousy when I’ve had to reject my own ideas for new things I’d like to try. And when I’ve ignored those feelings and said yes when I knew I should say no (e.g., when I decided to make two Mac apps in two months), I’ve quickly bumped into my limits yet again—both physical and mental.

A few years ago, I started to question some of my assumptions. My decades of work on my “second career” had slowly built it up to the point where it was plausibly viable on its own. Was my day job really necessary? I started formulating a plan to quit.

Then came COVID-19…and it kept coming. There was just too much uncertainty. My plans were put on hold. It’s been a rough few years for everyone, including my family. The whole experience recalibrated my value system one more time. I started to think more about the limited number of years I have left—with my kids, in good health, on this earth. How do I want to spend that time?

By 2022, I had returned to thinking not only that it’s possible for me to quit my day job, but that it’s necessary for me to do so.

And so, on March 25, 2022, I left my “normal” job. I am now officially self-employed.

On My Own

“Going indie” is what we used to call it in the early 2000s. Back then, in my circles, it usually meant creating and selling your own Mac (and, eventually, iPhone) apps, but each person’s road to independence is different.

I’m lucky to know so many people who have walked this same path before me. They’ve all taught me so much about what it means—and what it takes—to be independent. John Gruber took some huge risks when he went independent back in 2006. At that time, like John, I had recently had my first child, and the idea of quitting my “real job” was unthinkable to me. All my current podcast co-hosts are independent: Merlin Mann since 2002, Marco Arment since 2010, Casey Liss since 2018, and Jason Snell since 2014. And there are many more—too many to list here. When I think about the friends I’ve made as part of my second career, it often seems like they’re all independent. Now, finally, I’m ready.

I am thankful to have had such a conventional, largely successful career at my various day jobs. Like many people who entered the tech world in the late 1990s, I worked for several companies that were later acquired or went out of business. And, like most people, I did not strike it rich at any point via an IPO or similar “exit” event. But the regular salary from my day job did help pay for my house, my car, some nice vacations—a whole life for myself and my family, which is all I ever wanted.

I’m also thankful for everyone who has made my second career possible: all the people who have read my writing or listened to me on a podcast. Special thanks to those of you who have supported me by buying something from a sponsor or paying me directly for my work. I would not be able to do this without you.

Finally, I want to thank my wife, Tina, who has always supported my “weird hobbies,” even back when they took an amount of my time that was far out of proportion with the money they brought in. Each time I have exceeded my maximum capacity over the years, she has been there to pick up the slack, all while pursuing her own career. I would not be where I am today without her love and support.

You can hear me talk more about this topic on episode 179 of Reconcilable Differences (starting at 50:47).

If you want to know how you can best support my work, the answer right now is through podcast memberships. It’s not a coincidence that so many independent podcasts started paid membership programs shortly after COVID hit. Memberships provide reliable income in an uncertain market. Each of my podcasts has a membership program, linked below.

Both monthly and annual memberships are available. The member benefits vary, but all include a version of the show without any ads, plus some amount of bonus content.

Podcasts are now literally how I make my living. (Boy, that’s weird to write. I’m not sure how I’m going to say it to people in person.) I hope you’ll all continue to listen. Wish me luck…

Streaming App Sentiments

My unsolicited streaming app spec has garnered a lot of feedback. I’m sure streaming app developers already gather feedback from their users, and I’m also sure that the tone of my post has skewed the nature of the feedback I received. Nevertheless, for posterity, here’s how people are feeling about the streaming video apps they use.

The number one complaint, by far, was that streaming apps make it too difficult to resume watching whatever you were already watching. As I noted earlier, conflicting incentives easily explain this, but people still hate it. A reader who wished to remain anonymous sent this story of how customer satisfaction gets sacrificed on the altar of “engagement.”

There was an experiment at Hulu last year to move “Continue Watching” below the fold (down 2 rows from where it was). This was done with a very small group of users. It was so successful that the increased engagement was projected to generate more than $20 million a year. The experiment was immediately ended and the new position was deployed to all users.

While I understand (and largely agree with) your frustration that your “in progress” show isn’t the top feature, you can argue that [making new content more prominent] provides the user more value as they discover content they wouldn’t have otherwise (hence the increased engagement).

This is definitely a case of “be careful what you measure.” I don’t doubt that whatever metric is being used to gauge “engagement” is indeed boosted by burying the “Continue Watching” section, but I must emphasize again, according to the feedback I received, people hate this practice with a fiery passion. It makes them dislike the app, and sometimes also the streaming service itself.

I don’t think any engagement-related metric is worth angering users in this way—even if it really does help users discover new content or stay subscribed longer. I’m reminded of the old saying, “People won’t remember what you said, but they will remember how you made them feel.” It applies to apps as well as people.

(Furthermore, given the fact that seemingly every popular streaming app does this to some degree, there’s an opportunity to seize a competitive advantage by becoming the first app to stop this user-hostile practice.)

The second biggest category of feedback was about detecting, preserving, and altering state. Apps that do a poor job of deciding when something has been “watched” drew much ire. (Hint: most people don’t sit through all the ending credits.) Compounding this is the inability to manually mark something as watched or unwatched. Failure to reliably sync state across devices is the cherry on top.

People don’t feel like they are in control of their “data,” such as it is. The apps make bad guesses or forget things they should remember, and the user has no way to correct them. Some people told me they have simply given up. They now treat their streaming app as a glorified search box, hunting anew each time for the content they want to watch, and keeping track of what they’ve already watched using other means, sometimes even using other apps. (I imagine this flailing on each app launch may read as “increased engagement.”)

Finally, there was a long tail of basic usability complaints: text that’s too small; text that’s truncated, with no way to see more; non-obvious navigation; inscrutable icons and controls; and a general lack of preferences or settings, leaving everyone at the mercy of the defaults. Oh yeah, and don’t forget bugs, of course. Multiple people cited my personal most-hated bug: pausing and then resuming playback only to have it start playing from a position several minutes in the past. Have fun trying to fast-forward to where you actually left off without accidentally spoiling anything for yourself by over-shooting!

While again acknowledging how the nature of my original post (and my audience in general) surely affects the feedback I receive, I think it’s worth noting that no one—not a single person—wrote to tell me how much they loved using their streaming app. I didn’t expect to get much pushback on a post criticizing something so widely maligned, but I did expect to get some. I’m sure many people do enjoy their streaming app of choice, especially if it’s one of the more obscure, tech-oriented ones like Plex or Channels, but the overall sentiment is clear. Do streaming services care? I think they should.

An Unsolicited Streaming App Spec

I subscribe to a lot of streaming video services, and that means I use a lot of streaming video apps. Most of them fall short of my expectations. Here, then, is a simple specification for a streaming video app. Follow it, and your app will be well on its way to not sucking.

This spec includes only the basics. It leaves plenty of room for apps to differentiate themselves by surprising and delighting their users with clever features not listed here. But to all the streaming app developers out there, please consider covering these fundamentals before working on your Unique Selling Proposition.

Obviously, a list of even the most rudimentary features can’t help but also be opinionated. Though my tastes have surely influenced this list, I really do think that any streaming app that fails to implement nearly all of these features is failing its users. Again, these are not frills. These are the bare-bones basics.

Launch Experience

On launch, it must be immediately obvious how to resume watching whatever the user was watching previously. This may be the most important feature outside the video player itself.

If the user was in the middle of watching an episode of a TV show, the most prominent thing on the screen should be a way to continue that episode. If the user just finished an episode, then “resuming” means watching the next episode, and so on.

Resuming exactly where the user left off—for example, launching into the video player, paused at the exact moment the user stopped watching—is also acceptable, provided it is made obvious that this has happened. Launching into a completely black video playback screen is not a good experience.

(I am ignoring user profiles for now—that’s how basic this specification is. But a good app should support profiles in some way, and this may add a step for the user to select their profile before getting to the point where they can resume viewing.)

Information Architecture

Expose and support the intrinsic information hierarchy of the media. TV shows have seasons. Seasons have episodes. Episodes are made by people (actors, writers, directors). Whatever other ways an app chooses to slice and dice the media it vends, it must also support the simple hierarchy that is most likely to match the user’s mental model.

This hierarchy should exist both visually and navigationally. From an episode of a TV show, it should be obvious how to go up in the hierarchy to the season that the episode exists within, and from there to the list of seasons in the show, and then perhaps down into another season, then down into an episode of that season, and so on.

Though it’s often desirable to take shortcuts when navigating (e.g., to jump back to the home screen after completing the final episode of a TV series), that doesn’t mean the hierarchy shouldn’t exist at all. A shortcut is a way to skip levels in the hierarchy, not a way to erase it from the app entirely.

State Preservation

Keep track of what the user has done, and when. Which things has the user watched? Were they watched entirely or partially? How many times has something been watched? Were any parts skipped? This information is crucial for the functionality of the app, and it should be treated as precious. Preserve this state the same way a text editor preserves typed characters. Sync it across all instances of the app.

Visual Communication

The things the app knows should be communicated visually to the user. When viewing a list of episodes, put something on the screen to indicate which ones have been viewed and which ones haven’t. Consider showing a user’s progress within an episode as well. No one likes visual clutter, but a simple progress bar (for example) can show both of these things in a single, slim interface element.

Similarly, when video is playing, it should be possible to find out what, exactly, is being played. The most straightforward way to do this is to show some text when the video is paused that identifies the TV show, season number, and episode number.

The user has questions, and the app has the answers. It need only communicate them. What am I watching? How long is it? How much time is left? What is the name of this actor? What year was this movie made? When will the next episode of this TV show be released? Was this TV show cancelled? And on and on. This information is useless if it’s not exposed in the interface. Visual elements—well-placed in a sensible information hierarchy—are the key to solving this problem.

Video Player

The following playback controls must be one tap/click away and must have large, obvious targets.

The following playback controls must be accessible without leaving the video player. They may be more than one tap/click away.

The following information must be accessible without leaving the video player.

There must be a way to pause the video and get an unobstructed view of a still frame. That means no playback controls on top of the video and no dimming or tinting of the video frame. It’s fine if it takes a few taps to get to this state, but it must be possible.

When a video ends, there must be a way to go to the next video, assuming there is an obvious choice for this (e.g., the next episode in a TV show).

My List

There must be a way for the user to manually create a list of media. In the common case, this is a list of media that the user intends to watch (eventually), but it can be used for any purpose. The important part is that the user makes the list intentionally. Nothing gets added to this list automatically.

At a minimum, the list must accept top-level items in the hierarchy (e.g., TV shows, movies). The list could also accept more granular items, like individual TV episodes.

This is the one feature that may seem the least “basic,” but it really is essential. There’s so much good content available today that we need our apps to help us keep track of it all, not just what we’re currently watching. If state preservation and visual communication are the app’s short-term memory, then “My List” is the app’s long-term memory.

A Low Bar

This is a pretty boring list, huh? A streaming app with only these features seems like it would be quite limited. But the sad fact is that few, if any, popular streaming apps reach even this extremely low bar. Let’s take a look at some examples.

Netflix (iOS)

The last thing I did in the app was watch part of an episode of a TV show. On launch, after selecting my user profile, the show I was in the middle of watching is not visible anywhere on the screen. The “Continue watching for John” section, several screens lower down, contains buttons to resume many other shows, but not the one I was just watching. (Maybe it’s because I started watching it from “My List”? Who knows?)

When playing video, there is no way to toggle subtitles on and off with a single tap. (It takes three taps to turn them on and another three to turn them off.) There is also no way to skip to the beginning other than dragging the scrubber manually.

Pausing the video shows the season number, episode number, and title, but not the name of the TV show.

The duration of the video is not shown anywhere unless the video has just started. To get the duration, the user must add the time remaining (displayed at the end of the timeline) to the current play position (displayed when the scrubber is “grabbed” by holding a finger down on it).

Though there is limited access to the intrinsic hierarchy of the media (e.g., I can go from watching an episode of a TV show to a list of episodes in the current season), it is incomplete, and it does not expose all the available information. For example, there is no obvious way to get from the video player to the episode list and then to a detail screen for an individual episode that shows things like the cast and the date it was released. Instead, the video must be “closed,” which may lead to an episode detail page, provided that’s where you started when navigating to the episode in the first place. The information hierarchy, such as it exists, is quite a muddle, and it only sporadically intersects with the navigation hierarchy.

HBO Max (iPadOS)

The last thing I did in the app was watch the latest episode of a TV show. On launch, a promo for a show I have never watched fills most of the screen, and a small “Continue Watching” section is partially visible at the very bottom. It shows an episode of a TV show that I have already finished watching (complete with an entirely full progress bar) and a movie I skipped into the middle of to check something several months ago. The TV show I was watching is not listed, even though the only thing I’ve done in the HBO Max app for the past week is watch episodes of this show.

When playing video, there is no way to toggle subtitles on and off with a single tap. (It takes three taps to turn them on and another three to turn them off.)

The duration of the video is not shown anywhere unless the video has just started. To get the duration, the user must add the time remaining (displayed at the end of the timeline) to the current play position (displayed at the start of the timeline).

Disney+ (Apple TV)

The last thing I did in the app was watch part of an episode of a TV show. On launch, after selecting my user profile, the show I was in the middle of watching is not visible anywhere on the screen. I had to scroll down two rows to get to the “Continue Watching” section, where my episode was listed.

When playing video, there is no way to toggle subtitles on and off with a single action. Instead, I have to swipe down to display a menu of options, swipe over to subtitles, swipe down to pick a language, and click to select it—then do the same steps again to turn subtitles off.

I could not find a way to get from the video player to either an episode list or a detail page for the episode I’m watching. Like the Netflix app (and many others), the relationship between the information hierarchy and the navigation hierarchy is tenuous at best.

This is not an exhaustive exploration of any of these apps, let alone all streaming apps. And I’m sure some people will quibble with the particulars of my spec. For example, why place so much emphasis on quick access to subtitles? (It’s because being able to quickly skip backwards and briefly enable subtitles is something I do frequently, both on my own and at the request of others. Though keeping subtitles on all the time is surely the most common use case, briefly enabling them to clarify a few lines of dialogue is a close second.)

And, yes, I know that there are often other, “better” ways to accomplish these tasks in some apps on some platforms. For example, I can hold down the microphone button on my Apple TV remote and say “enable subtitles” or “disable subtitles” and it will usually work. Better still, I can ask “What did he say?” and the Apple TV will skip backwards, enable subtitles, play for a short duration, and then disable subtitles again, all on its own. Surprise and delight!

But none of this changes the overall picture, which is that even the most popular, well-funded streaming video apps fail to get the basics right in a shocking number of ways. Conflicting incentives surely explain some of these failings (e.g., promoting new content rather than letting me quickly resume what I was already watching), but an explanation doesn’t make these shortcomings any less bothersome.

And then there are the gaps that seem unmotivated. Is there really no room on a giant iPad or TV screen to show me the name of the TV show I’m watching when the video is paused? Why is it so hard to go from viewing an episode of a TV show to a list of episodes for that show? Why is there sometimes no way other than voice control to enable subtitles or change the audio track while watching a video? There’s plenty of low-hanging fruit waiting to be picked.

From Good to Great

I tried to limit myself to the basics to prove a point, but there is a vast world of good ideas that are just beyond the basics. These are simple, proven techniques like remembering which option a user picked from a menu the last time and bubbling that up as the top choice, or adding (gasp!) settings to let the user configure features according to their preferences, like how many seconds forward or backwards the skip buttons should travel, or which subtitle or audio track should be on by default, perhaps with per-show customizations.

And if you think this spec is just a list of my personal preferences, I can assure you that list is much longer. To give just one example, I wish every streaming app had a way to advance forward and backward by a single frame at a time. Trying to precisely manipulate the play/pause button or the timeline scrubber to get to the exact frame where I can read some bit of background text is not a game I enjoy playing. (Laggy, unresponsive apps make this even worse.)

Also consider creating interface elements that are reusable. A good control for filtering and sorting lists, for example, could be used in many places within a streaming app. (Most offer no sorting options at all, which is criminal.) The same goes for iconography for status and actions: standardize it, and use it everywhere. It’s a sad state of affairs when the original TiVo on-screen interface bests most modern streaming apps in terms of predictability, legibility, and consistency.

And let’s not forget the tried-and-true practice of stealing features from competitors. How has no one yet copied Amazon’s X-Ray feature? Why doesn’t Apple TV+ have any way to manually curate a list of TV shows like seemingly every one of its competitors? Why don’t more apps provide multiple organizational views of the same content like the Disney+ app does? (E.g., release order vs. chronological order for movie series.)

Most streaming apps aim for mass-market appeal, so they can’t get too complex. But today, they’re at the far opposite end of the spectrum, missing basic functionality rather than being bogged down with fancy features and customization. These apps need to walk before they can run. I hope, someday, at least one or two of them can fly.

Good Products

Thanks to either my opinionated nature or the fact that I have voiced my opinions on various podcasts for years, people often ask me to recommend products. Which Mac should I buy? What’s the best microwave oven? What kind of car should I get for a family of four?

Now, I’m no Wirecutter or Consumer Reports. I’m just one person. With a few exceptions, I don’t have personal experience with more than a handful of individual products in a given category. But I know a good product when I see it (and use it).

This page lists some products that I consider “good.” This may sound like a low bar, but sometimes “good” is as good as it gets for a certain type of product. Even with this lenient standard, the list is not long. As with my Great Games list, I will add products to this page over time. I may also remove or replace products if something better comes along.

If you buy something after following a product link on this page, I may receive money through the seller’s affiliate program. (Not all retailers have affiliate programs, and not all products are eligible for affiliate payments.)

Toaster Oven

I love toaster ovens, and I’ve personally tested many of them over the years. Casey Liss, my friend and ATP co-host, tells the tale of the strange confluence of events that led me to try so many toaster ovens, and provides links to listen to my (audio) reviews of each one, if you want all the gory details. If you just want my recommendation, it’s (still) the Breville 650 XL. (Amazon claims to have it, but shows the wrong product in the photo, so beware.)

There are two caveats about this toaster oven. First, it’s bigger than you might expect: 16.5 inches wide, 13 inches deep, and 9.5 inches high. Measure your counter space before purchasing this beast. Second, the knob-feel is terrible: loose, imprecise, unsatisfying.

As a product, this is a good toaster oven. But if you can get past its user-interface foibles, it does a great job actually toasting (or cooking) things. I’ve had mine for a decade and I’ve still not found anything better.

If you have too little counter space for the Breville and want a toaster oven that can toast bread both well and quickly, consider the Panasonic FlashXpress. I think its user interface is subpar—confusing, poorly arranged buttons clustered below the door—but it’s a speed demon when it comes to making toast.

Breville also makes a smaller 450 XL model that is not quite as powerful as its big sister, and not quite as fast as the Panasonic, but is a good choice if you like the Breville’s proportions and UI.

(And, no, I don’t have any recommendations for slot toasters. Toaster ovens forever.)

Ice Cream Scoop

The OXO Good Grips Solid Stainless Steel Ice Cream Scoop is (probably) the world’s greatest ice cream scoop. I know it looks like just the ones you’ve used before that can’t make a dent in hard-frozen ice cream and end up forming ugly, rusty pits in the well of the scoop, but I can assure you that this is a different class of product entirely.

As the name suggests, it’s made of solid stainless steel. It’s strong, uniform throughout (no coating to chip away), and pleasingly hefty. The pointed tip can defeat even the hardest ice cream. Soak it in warm water and the thermal mass of this heavy instrument will keep doing work, scoop after scoop, for as long as you need it. The handle is typical Oxo: soft, grippy rubber.

As I am writing this, I am ordering myself a backup scoop just in case Oxo ever stops making this product. (The only thing I can imagine damaging the one I already have is a trip into the garbage disposal…but that is a thing that has been known to happen in my house, so better safe than sorry.)

Chef’s Knife

The Victorinox Fibrox Pro Knife, 8-Inch is the best inexpensive chef’s knife I have ever used. There are better knives for (much) more money, but none in this price range come close. I own knives that cost twice as much and are not even half as good.

The grip is not quite up to Oxo‘s standards in terms of materials, but it follows the same philosophy: grippy and comfortable, with no concern for how it looks. The blade is shaped perfectly and stays sharp for much longer than you would expect. And it’s easy to clean and sharpen: no weird seams or chamfers.

Like the ice cream scoop, this is a product I love so much that I’ve purchased backup copies just in case it’s ever discontinued. I still routinely purchase more-expensive chef’s knives (I love kitchen tools), but so far, none has displaced this $35 wonder for all-around utility.

Waffle Maker

The Breville BWM640XL Smart 4-Slice Waffle Maker is $350. This is a ridiculous amount of money to spend on a waffle maker. It’s huge and heavy. And I personally prefer thinner waffles with more, smaller squares. (The Breville makes four waffles that are over an inch thick, each with 25 squares.)

All of that said, it does a pretty amazing job. The waffles are evenly cooked and release easily from the non-stick surface. The gutter around the edge, meant to catch excess batter, does actually work. The controls and the LCD screen are surely overkill for what boils down to a fancy way to set the cooking time, but they work well and are easy to understand.

You might think the lack of removable heating surfaces would make it hard to clean, but cooked waffles leave almost nothing behind after they’re removed. Wiping the surfaces with a damp paper towel is usually all the cleaning that’s necessary. The permanently attached heating surfaces make the whole device feel sturdy, and they help prevent any batter from getting inside the machine.

I resisted buying this over-priced monstrosity for a long time. I purchased and returned several waffle makers that were just terrible. I could not find a reasonably priced model that was competent and consistent. I finally bit the bullet and bought the Breville. This price is (still) galling, and I (still) wish the waffles were thinner and had more, smaller squares. But within the size constraints inherent in its design, this damned thing makes perfectly cooked waffles every single time. It’s infuriating, really.