Notes

Thoughts and sketches.

    I think I’ve flipped my opinion on voice as an interface. For the past week or so I’ve been trying out Super Whisper on my new laptop. I’m astounded at the quality of transcription and the ease of use that it offers. Most importantly, it’s very tolerant of pauses in speech. I sometimes need to collect my thoughts midway through a sentence. Siri, by comparison, tends to interpret pauses as completions of thought.

    Mapping a mouse button to trigger SuperWhisper was a huge unlock. This makes it convenient to dictate on the fly, without getting into a different mode.

    There are some points of friction though. Super Whisper often adds a space before each sentence. Other times it doesn’t add spaces between sentences. So, I have to do a bit of review and cleanup each time.

    But overall, that feels like a small price to pay for being able to get ideas out of my head a lot faster. In the past I would often journal using brief bullet points that were inscrutable a week later. I could see this becoming a convenient way to build a work diary, or even just getting more comfortable expressing my ideas verbally.

    Recently, I’ve been hacking on Jot, a notepad that lives in your menubar. It’s a place to quickly take a note and quickly get back to the task at hand.

    One fun thing I added was an MCP server. Truthfully, I didn’t have a strong use case for it just yet — I wanted to build it and see what it inspired. The video shows the create_note tool being used by Claude Desktop.

    Already, I found a few interesting uses for it. For example, I wanted to create a note explaining what Jot does. I had Claude Code scan the repo, summarize the functionality, and create a note explaining how to use it.

    'Welcome to Jot screenshot"

    Today’s work involved dark mode planning. We need more colors at the ends of the spectrum to make this work. While I was at it, I figured I’d clean up some design debt by snapping the colors to precise, similar lightness values.

    Color palette in Huetone

    Working in oklch color space is wonderful for this. I think it’ll be essential for supporting user-generated themes, as it allows us control over contrast at runtime.

    While working on Whimsical Dark Mode, I needed to expand our range of colors at both ends of the spectrum. Previously, this is something I’d do manually, but there is one big catch: we allow users to create custom palettes.

    As a result, we need an algorithmic way to generate color palettes, since we can’t control what they choose at runtime. Given a single color, we need to infer a harmonious range of colors.

    From previous work, I knew the oklch color space was the best bet.

    • The lightness channel would form the basis for steps. A constant L value across colors ensures they have perceptually similar contrast. We also want to offer more colors at end ranges for layering and nuance.

    • The hue channel would be chosen by the user. We’d infer this from a user’s choice.

    • The chroma channel was the tricky part. We want to desaturate the colors as the approach the ends, so that they don’t look too vibrant. We’d also infer this from the user’s choice.

    To achieve this, I spun up a Make app that lets me generate palettes parametrically. This lets me try out different easing functions for L and C channels before moving into code.

    OKLCH palette generator in Figma Make
    OKLCH palette generator in Figma Make

    Being able to view multiple options simultaneously is a big part of my process. Today, I was exploring how to render file results in an action menu and found that it was not only easier to evaluate the pros/cons, but also it encouraged me to consider more alternatives.

    Exploring options
    Exploring options