One user is better than no users
I built three tools before I found the entry point.
While riding the train home from jury duty last week, I felt overwhelmed by my collection of Memphis UI tools.
Less than 30 hours later, I’d used one of them live with a student.
Going from a set of related but random tools into something I could put in front of a user took being honest with myself about what is useful.
But first, a reminder!
I'm running my first live virtual workshop on July 1: Build Your First REST API in Rust.
I've taught versions of this workshop at CCNY and LIU Brooklyn, and this will be the first time I'm offering it online.
I'm keeping the first one small (5 digital chairs) so it can stay interactive and conversational.
The workshop will be live, hands-on, and will not be recorded.
I like building hard things. Going from big picture down to deep in the weeds, then continuing to pop up and down. It’s my way of constructing understanding from the ground up.
This shows up in Memphis. It also shows up in my spreadsheet to double check the math on my tax return.
I don’t do this because it’s useful for anyone else. This process gives me the quiet confidence to move through the world.
The problem comes when I also want people to use my things.
At the start of last week, Memphis had three separate browser tools: an inspector, a REPL, and a script runner.
I showed Shreve to one friend and his response: “Oh, this is much better.”
Even though it was the third tool I built, once it existed, it was glaringly obvious that a browser-based script runner should be the default entrypoint for most Memphis users.
I just couldn’t see it for months because I was too busy trying to build something novel. Unless it’s paperback and fiction, users don’t want novel. Users want useful.
I spent a day and a half de-emphasizing Tupelo, making it a popup power-user mode inside of Shreve. Then I connected Ozark and Shreve so you can inspect code in one, run the same code in another. They communicate through an encoded URL query parameter.
And perhaps most importantly: I changed Shreve so it’s no longer called Shreve because what even is Shreve.
It’s now the Memphis Playground and it lives at memphis.fromscratchcode.com.
By the time I met with my student the next day, it was ready for primetime.
In the middle of the session, we were converting a set of parallel lists into a list of dictionaries. My student was handling the dictionaries well on their own, but I could tell they could use some help visualizing a list of dictionaries.
Rather than writing code in the chat or on a whiteboard, I opened up the Memphis Playground, wrote a short snippet, and shared the link.
His response? “This URL is LONG.” Noted.
Once we got past my inefficient URL encoding, I realized my tool was functioning as a Python snippet-sharer.
We talked through what each layer of the for loop iterating over a list of dictionaries was doing, then ran the code right there to view the output.
We used the tool only briefly before jumping back to our local Python, but it represented a complete learning loop, something I previously didn’t have a way to represent.
Since that session, I changed the encoding so the URLs are shorter. Not short, but better. I also installed a better dark mode theme, after seeing how bad my original snippet looked on someone else’s screen.
Though I do want there to be fewer unsupported Python features in Memphis, I might not even need more UI features.
I may just need to get this in front of more people.
Hope you’re having a good week! And you have exactly the number of users you hoped for.
-Tyler
P.S. The woman from last week’s email who offered to share my business showed up this week and said, “You didn’t text me your website!” A small miscommunication, but I chuckled realizing my website truly had been a message in a digital bottle.