Most of my articles reflect on things I’ve built in the past. Trying to make sense of it all, I share insights about a challenge mixed with philosophizing and technical details I find interesting.
This time I’ll tell you about something I’m building right now.
It’s raw and unstructured, and the whole product vision is chaotic. But I told myself that I’m going to build things this year, and I’m following through. I’m creating a tiny web application called Tavern.
It’s a place where you can exercise your writing skills in a stress-free environment while you learn from other writers. Let’s go over the app and the tech stack behind it.
Tavern has a simple premise. Every Monday, all users get the same writing prompt, and they can write an answer between 6 and 200 words. The prompt is active for one week, and you can see what others have written, but only after you submit your answer.
Then next Monday, all answers are removed, and the writing starts again with a blank page. You can’t see what other people have written in the past, and you can’t read previous prompts. The list of submissions will always be ordered with the latest on top. No algorithm. No sorting.
What’s helped me grow as an engineer was being part of a community of like-minded people focused on improving their skills and knowledge. I haven’t found such a group for my writing endeavors, so I decided to create one.
But a common problem with any sort of online community is participation.
Most people are lurkers. They don’t contribute to the discussion. I, for example, spend a lot of time on Reddit, yet have no more than 30-40 comments to my name in 10 years of using it. I suspect most people have even less.
But introducing the barrier that doesn’t allow you to see other write-ups means that you actually have to participate to be part of the group.
Most writers are frightened of sharing their work in public. Many people will close the tab once they find out that they can’t just read without submitting an answer of their own. But here’s where the time limit comes in.
In a week, your write-up will be gone. There are no stakes to this. No one can sift through your musings and point a finger at you.
Also, you have seven full days to come up with no more than 200 words. There’s plenty of time to ponder over the prompt and let your mind work on it in the background. You can submit your answer as early as Monday morning and as late as Sunday afternoon.
You’ll have to binge-read other responses if you’re too late, though.
The shortest story ever written is six words long and attributed to Hemingway - “For sale: baby shoes, never worn.”
I doubt that anyone would be able to beat that, so I came to six as the lowest limit.
Two hundred words, on the other hand, is the longest text I’d personally read from someone I don’t know. It leaves plenty of room to be creative but still gives you a creative constraint.
You need some boundaries and rules to show your creativity. I might change the length in the future or add more prompts and challenges for those who want to push themselves.
I suppose the tech stack is what most engineers would be interested in, but I’m afraid I won’t thrill you too much. I settled on quite a conservative choice for Tavern’s foundation - React + Express + Postgres.
This stack allows me to keep my options open. Frameworks like Nest, Serverless, and NoSQL stores offer a lot of power, but they come at the price of a lot of initial complexity.
React and Express allow me to mold the application as I need to, and Postgres still surprises me with its capabilities. I settled on it for storage to leverage the relational model but still have the option to store unstructured JSON if I need to.
As a general rule, I favor boring but proven technologies I understand well.
Learning a new framework or library while trying to build a product rarely gives positive results. I find this to be true for personal projects and at work. My intent with Tavern is not to explore new concepts and ideas but actually ship something in a timely manner.
This doesn’t mean I’ll cut corners architecturally. In fact, I’m taking my time to make sure that Tavern’s software design will support my future ideas.
Maybe the only thing you’ll find interesting is that I’m using Firebase for authentication and user management. I’ve learned never to write my own auth and payments, so I settled with Firebase because their libraries had the most sensible APIs compared to Amazon Cognito and Auth0.
I’ll share some updates and lessons I learn while building Tavern in my newsletter, blog, and smaller bits on Twitter. I’ll focus more on the technical aspects, but if you’re interested in improving your writing, I’ll update you when Tavern is live.