Updated Online Boggle Solver

Posted in boggle, web at 10:42 am by danvk

See that Online Boggle Solver link on the right? Bet you’ve never clicked it!

I built the online solver back in 2006, mostly just for fun. In the six years since, I’ve wound up using it almost exclusively on my phone during real-life Boggle games. The iPhone didn’t exist when I built that page, and it is a device for which its fancy design (with hover effects and fixed position elements) is very ill-suited. Minimal designs tend to work better on Mobile, and I’ve just pushed out a new version for phones which is very minimal indeed.

The code behind this boggle solver differs from my other boggle code in that it’s designed for low latency rather than high throughput. This is precisely what you want from a web solver. You’re only finding the words on a single board, so time spent loading the word list dominates time spent finding words on the board. The current version uses a custom dictionary which can be MMAPped. This winds up being about 3x faster than reading a dictionary text file and building a Trie on every invocation.

I haven’t worked on Boggle in the past three years, so the state of the art in finding the highest-scoring boards is still where it was when I made my last blog post about breaking 3×3 Boggle. The interesting development then was that you could get something like a 1000x speedup by upper-bounding whole classes of boards rather than scoring each board individually. This is a big enough speed boost to make 3×3 Boggle “solvable” in a day on a desktop computer, but not enough to make 3×4 or 4×4 solvable, even on a big cluster of computers. I was optimistic that memoization could give some more big wins, but when those failed to materialize I got frustrated and stopped working on the project.



Posted in personal at 7:00 am by danvk

My friend April recently introduced me to OhLife, a dead-simple daily journaling service. You get an email each day with a previous journal entry. At first it’s yesterday’s entry, then last week’s, last month’s and last year’s. You respond to the email with today’s journal entry.

The thing I really love about this is how it subtly encourages good journaling habits. It took many years of journal-writing for me to learn these two important truths:

  1. Whenever you write, you should have a reader in mind. For a journal, the reader is your future self. Future You is the only person who will ever care to read this.
  2. The only way to become a better journaler is to read your old journals. Put another way: you won’t write boring entries for months on end if you’re forced to read them!

By sending you a past journal entry with each prompt, OhLife nails both of these.

Another journaling trap is to make each entry a list of the things you did today. This will be quite dull for your future self to read. What’s more interesting is the internal stuff: what are you looking forward to? how do you feel about other people and events? You’re likely to forget how you felt in the past as new information comes in.

How could OhLife discourage thing-listing? Perhaps by including content from Timehop. If your year-ago journal entry automatically included all your Foursquare check-ins and your texts, you’d be less tempted to list them out in today’s journal entry.

If journaling is your cup of tea, I would highly recommend OhLife!