05 October 2026

No guessing, ever: the design principles behind Hence, a daily logic puzzle game

Three toy-like puzzle tiles on a sketched design blueprint, representing the design principles behind the Hence daily logic puzzle game
The Hence logo is the ∴ "therefore" math sign: three tiles in a triangle. Therefore... hence.

When I was a kid, a teacher would sometimes hand out a logic puzzle. A list of clues at the top, like "the girl with the red backpack sits next to the boy who likes soccer," and a big grid of boxes below where you marked X's and O's as you worked it out.

Most of the class groaned. I loved them.

My favorite part was a specific moment. You go clue by clue, putting an X in every box that can't be right. Then you notice a row where everything is crossed out except one box. That has to be the answer. You mark it, X out the rest of that column, and suddenly that one answer unlocks the next, and the next. A minute later the whole thing falls into place.

I built a game around that feeling.

It's called Hence, a free daily logic puzzle game, and it's live now.

Hence is a modern take on those classic logic-grid puzzles, often called zebra puzzles or Einstein puzzles. The most famous one, sometimes credited to Einstein (probably wrongly), asks "who owns the zebra?" Instead of paragraphs of text, Hence uses picture clues. And there's a fresh puzzle every morning, the same for everyone.

Each day there's a 6x6 grid and a quicker 4x4. You use the clues to work out which tile goes in which column. The full rules are on the how to play page.

A partially solved Hence daily logic puzzle: a 4x4 grid with picture clues, some tiles placed and remaining options narrowing
A 4x4 puzzle in progress. Each clue rules out options until only one tile fits.

It looks like a simple little game. Getting it to look that simple took a lot of work. Here are the three principles I kept coming back to.

1. No guessing, ever

Every Hence puzzle has exactly one solution, and you can always reach it with pure logic. You'll never be stuck choosing between two options with no way to know which is right.

I play a lot of daily games, and I love Connections. But there's always some guessing in it. You lock in a group and never quite know if you figured it out or walked into a trap.

That's fine for a word game. For a logic puzzle, guessing ruins it. If luck can decide the outcome, winning means less and losing feels unfair.

In Hence, if you finish, you solved it. Every placement was earned. And when you're stuck, it's never a coin flip. It means there's a clue you haven't fully used yet, which is a much more fun kind of stuck.

2. Cute on purpose, clear by design

Remember the class groaning? Logic grids look like homework, and that scares people off. So the art in Hence is friendly on purpose, starting with a cast of cute little monsters that look like toys. 

The cute toy-like characters and items from the Hence logic puzzle game
The Hence cast, designed to be recognizable at a glance, even on a small screen.

But cute was the easy part. Clear was the hard part.

Every item belongs to a category, and each category has its own color, so when you see an item in a clue, you know right away where to look for it.

Every item also has to be recognizable on its own, at a glance, even tiny on a phone screen. I used distinct shapes and colors so no two items could be confused. And they had to work without color too, since used clues turn gray and some players have trouble telling colors apart. So every item needed to be recognizable by its shape alone.

Those rules were strict, and they cost me some favorites. A slime monster had to go because it looked too much like the ghost. So did a whole row of cute sidekicks, because in a small clue, a spider and a monster looked the same.

That's a big reason for the toy-like style. Too little detail and items blur together. Too much and they turn into noise on a small screen. Toys are chunky, bold, and simple, with just enough detail to have personality.

Most players will never think about any of this. That's the point. They just see a clue and know what it means.

3. Look simple, especially at the start

Here's the honest problem: a full 6x6 board looks complicated. Six rows of items and a stack of clues is a lot to land on.

So almost every product decision came back to one question: how do I make this look as simple as possible, so people don't get scared off before they try?

That's why there's a short tutorial that starts with something tiny and easy, so your first experience is a win. By the time you see the real board, you already know how it works.

It's why there's a 4x4 puzzle, for anyone who finds the 6x6 too intimidating or just wants something quick.

And it's why there's no account, no sign-up, and no download. You open the site and you're playing.

Every feature idea got the same test: does this make the game feel simpler or more complicated? The first thing you see should make you think "I can do this," not "maybe later."

Come play

That's the whole idea. The same feeling I got from those school worksheets, without the worksheet. You use the picture clues to rule things out one by one, and then everything clicks.

Today's puzzle is already up, and everyone is solving the same one. It's free, there's nothing to sign up for, and it takes just a few minutes.

Play today's puzzle at hencegame.com and see how fast you can crack it.

12 January 2024

Free Your Mind

“…and the rest will follow.”

One of the simplest things you can do to feel more in control of your productivity is to stop asking your brain to be your storage system.

Your brain is pretty good at having ideas, solving problems, noticing things, and occasionally reminding you at 2:11 AM that you forgot to pay the water bill.

When you try to remember every task, errand, idea, appointment, and random thing you need to look up later, your mind has to keep tapping you on the shoulder: "Don't forget to fix the gate" "You need to email Gary The Clown about a refund" "Buy WD-40" "What was that restaurant Gary recommended?" (different Gary 🤡)

And if it doesn't keep bugging you about those things, there's a decent chance they disappear completely.

That's why one of the best things you can do for your productivity, and probably your sanity, is to set up a system you trust to hold all of that stuff for you.

As David Allen says in Getting Things Done, “Your mind is for having ideas, not holding them.”

There are two basic kinds of things worth getting out of your head:

  • Tasks: things you actually need to do. This could be paying the water bill, calling someone back, buying screws for the gate, or sending an email. Some tasks have a due date or need a reminder. Others just need to be handled whenever you have a chance.
  • Data: things you may need for future reference. A restaurant recommendation is a good example. So is the name of a contractor someone recommended, a link to a product you may want to buy later, notes from a meeting, or the dimensions you measured for that project you are definitely going to get around to (I'll get to it dear, you don't have to keep reminding me 😀).

A good system does not have to be complicated. It just needs to do a few things:

  • Make it easy to capture a task or thought as soon as it comes up.
  • Be available wherever you are.
  • Remind you about tasks that have deadlines.
  • Give you a place to store information you may want to find later.

The specific app matters less than trusting yourself to use it. If adding something takes too much effort, you'll put it off, and then we're right back to relying on our good old brain. And who wants that?

For me, the system I keep coming back to has two main parts:

  • Microsoft To Do for tasks. It's where I put calls to make, things to buy, bills to pay, random chores, and the little things that would otherwise keep bouncing around in my head. I use it on my Mac and iPhone, so it is usually nearby when I need it. I can add reminders, notes, and subtasks, and its “My Day” feature gives me a place to choose what I want to focus on today. I also have separate lists for different topics, like things to fix around the house.
  • Trello for data and managing larger projects. Trello gives me a place to organize projects, keep notes, make checklists, and store useful things I don't want to lose. Planning a trip, collecting ideas, keeping a list of places I want to go, or tracking all the pieces of a project... It all has a place.

You definitely do not need to use the same tools I use. There are a million task apps out there, and the best one is the one you will actually open and add things to.

The important part is to make it easy to get ALL the tasks and useful information out of your head and into a system you trust.

Once you know your system will remember things for you, your mind can get back to doing what it does best: having ideas, solving problems, and focusing on what matters right now.

Get it out of your head, put it somewhere you trust, and get back to the things that deserve your attention.

05 October 2023

The Mind Mastery Challenge Is Here

I've spent a long time creating something I'm excited to finally announce: the Mind Mastery Challenge.

Modern life gives us plenty of reasons to be anywhere but where we are. We're constantly pulled by distractions, demands, notifications, and pretty much everything around us is always trying to get our attention (I'm not talknig about you, kids :).

As a result, we often don't even notice the moment we're already in.

I created this 21-day challenge to help people become more present, unleash creativity, and find focus.

Each day, you'll receive an email with a new task or exercise designed to help you slow down, pay attention, and build a more intentional relationship with your mind and your time.
Along the way, I'll give you tools to help you better understand how your mind works, and will enable you to focus, be more creative, and just simple practices for being more fully engaged in everyday life.

If you've been feeling distracted or just want to reconnect with the present moment, give it a try.

Learn more about the Mind Mastery Challenge

18 June 2023

How to use Gmail to send emails with a WordPress site using any email address

You may have noticed that when your WordPress site sends emails using PHP's default settings, your emails often don't get delivered. The solution to this problem is to use an external SMTP server to do the actual email sending.
Turns out that setting it up to send from your own custom email address is not as simple as it should be, especially if you want a free solution and don't want to pay for an SMTP server.
This is the free solution I use for most of my sites, once you set it up it works like a charm, and you never have to worry about it again.

These same instructions can be used if you just want to set up your Gmail account to send emails from any email address, for example from an address on a domain that you own. Just start from step 5.


TL;DR Summary: set up the free WP Mail SMTP plugin, set up a Gmail account to send email as any email address you want, connect the two.

Step 1: Install the free WordPress plugin: WP Mail SMTP. The easiest way is to go to your WordPress Dashboard, Plugins, Add New, and search for it. This is what it looks like:


Step 2: Create a free Gmail account. You can use your existing account but I prefer to have a separate account that will be used for sending emails from a website. There are some limitations on the number of emails you can send using a Gmail account, so if you expect to be sending a high volume of emails then go with something like Sendgrid (WP Mail SMTP supports a ton of different email senders).

Step 3: Go through WP Mail SMTP's setup wizard and choose Gmail as the provider. There are a few steps you need to go through there to set up an app in your Gmail account, but the instructions they have are good, just follow them. Make sure you're signed in to your new Gmail account when you do this (I do it all in an incognito window to make sure I don't mix up accounts).
When you're done with this you should have your website sending emails using your Gmail as the SMTP sender.

If you don't want to change the email address that Wordpress uses to send, and are fine with sending from your Gmail address, then you're done.

The rest of the steps are how to change the email address that your website uses as the From email address when sending emails.
These instructions are the way to set up a Gmail account to send emails from any email address, for example from an account on a domain you own.

Step 5: Setup your Gmail account to send email from an alias. You first need to be able to send emails from your Gmail account using the email address that you want to use. There are good instructions for this here: https://support.google.com/domains/answer/9437157. I'll cover the important parts:

Step 6: Set up 2-step verification in your Gmail account. You need this in order to create an App Password for your account. Go to https://myaccount.google.com/security and turn on 2FA.

Step 7: Create an App Password. The App Password will be used by Gmail to send outgoing messages from a different email address. Once 2-factor authentication is turned on you'll have the option to create an App Password in the same security section of your Google account. If you still don't see the option go to the URL: https://myaccount.google.com/apppasswords
Under "App passwords" click Select app and then Mail. Then Select device and then Other. Enter a name and click Generate. Copy that code.

Step 8: Add an account to your Gmail to "Send mail as". The exact instructions to add an email alias are at the same link as in step 5 above https://support.google.com/domains/answer/9437157. The gist of it is to go to your Gmail account and go to Settings->See all settings. Then go to Accounts and Import. Under Send mail as click on Add another email address. Then fill in your name and the email address you want to use. In the SMTP Server field, enter: smtp.gmail.com, use your Gmail address as the username, and use the App Password you created in the previous step as the password. Gmail will then send you a verification email with a code, copy that code and you're done.

Step 9: Change the email address that WordPress uses to send emails with. Finally, you can go back to your WordPress site and go to WP Mail SMTP, and Settings. Scroll down until you see From Email. You should now have a dropdown where you can finally choose the additional email address you added to your Gmail account as the from email your site will be sending emails from.



08 September 2022

27 June 2022

How to increase your external microphone's volume for using in a Zoom meeting, podcast, streaming, voice call, or anywhere else

If you have an external microphone but you find that even though you have the volume cranked up all the way it's still not loud enough and you're getting complaints, here's what you can do to boost your mic's volume.

TL;DR Summary: use OBS to add a gain filter that increases your microphone's volume. The audio from OBS is routed to VB-Cable so that you can choose it from any application you want to use your boosted microphone.

Step 1: install OBS. OBS (Open Broadcaster Software) is an excellent free and open-source application for Mac and Windows for video recording and live streaming. It lets you do a ton of stuff with video and audio like share your screen while still showing your webcam in a corner, smooth transitions (like the pros!) between showing yourself fullscreen and then showing your desktop, mixing audio from different sources, etc...
The installation itself is quite straightforward, just download the installer from the official site and follow their instructions, nothing special.

Step 2: install VB-Cable. VB-Cable is a free virtual audio cable that you're going to route sound to. Download and install VB-Cable. Then in any application that you want to use that sound you just choose VB-Cable as the source. For example in Zoom, Hangouts, Facetime, Messenger... just choose VB-Cable as the audio source device, instead of choosing your microphone directly.

Step 3: setup OBS to use your microphone. Launch OBS, click on the plus in the OBS Sources pane, and choose "Audio Input Capture". Then choose "Create New", give it a name you'll understand (like the model of your mic), and then choose your microphone as the source device.


Step 4: route your microphone to VB-Cable. Select your new audio source from the sources pane and click on "Filters". In that window click on the plus at the bottom and choose "Audio Monitor". Name it whatever you want (I usually leave it "Audio Monitor") and then choose "VB-Cable" as the device. What this does is send the audio from this device (your microphone) to the VB-Cable virtual audio cable. Don't close the filters window yet.


Step 5: add a gain filter to your microphone. In the same filters window from the previous step, click on the plus at the bottom again and choose "Gain" this time. You can just name it "Gain". This filter is where you'll boost your microphone's volume. Now all you need to do is slide the slider to the right and your mic's volume will increase. BTW you can add a ton of free filters this way to your microphone, for example noise reduction, compression, EQ, etc...


Step 6: That's it. Now just choose VB-Cable as the microphone source in any application. For example in the Zoom settings window, go to Audio and choose VB-Cable as the microphone. You can do the same anywhere on your computer, like in Facebook Messenger on the web, while on an audio or video call open the settings and choose VB-Cable as your device.


18 April 2021

The new site design is here!

Welcome to the new design for the site 🍾

I think I had the previous design for about 11 years(!!) so a new design was long overdue.

This is the 5th major redesign I've done for my personal website since I launched it in 2001.

Thanks to the Waybackmachine, here are some screenshots of the different designs over the years:


July 2001


September 2003
(btw those boxes were transparent so it looked better)


July 2004


April 2010



Whew, that was an eye sore 😀.

I also moved the blog over to blog.atguy.com and created a simple about me page on the homepage.

Let me know if you notice anything wonky with the site, all the old links should still work.

This one will probably be around for another 10 years so get used to it 🤣

24 November 2017

12 June 2017

How to customize Alfred to work with Google Calendar (Alfred workflow)

I use Google Calendar in the browser a lot so I thought why not setup Alfred to make working with Google Calendar easier.
(If you're not familiar with Alfred, it's an application launcher and productivity application for Mac)

I started off with trying to find an Alfred workflow that lets you easily open Google Calendar and easily add an event. I couldn't find such a workflow so I started working out different ways Alfred could do what I need.

At the end of the day I ended up creating this workflow that combines the different things I typically do with Google Calendar.



It basically lets you do 3 things:

  1. Quickly open Google Calendar in the browser by typing the keyword gcal into Alfred.
  2. Open Google Calendar using the keyboard hotkey ⌘ + g
  3. Quickly add an event to Google Calendar.

The format for adding an event to Google Calendar is:
gc [event] at [time] on [date] in [location]

For example:
gc Dinner with friends at 8pm on next Sunday
Will open this event:


You can even do things like:
gc Weekly meeting every Wednesday at 3pm
And Google will add an event that repeats every Wednesday at 3pm.

Google does a great job at understanding what you mean when you type in natural language so play around and see.

You can also just type gc and hit enter and it will bring you to the new event page in Google Calendar.

Download the Google Calendar Workflow


If you don't want to add a workflow for some reason you can add this custom search instead:
Add event to Google Calendar
(clicking on that will prompt you to add it to Alfred, it's really easy to do)

It will let you quickly add events to Google Calendar via Alfred using the same format as described above.

Enjoy!