Thoughts and Writeups

by Davis Haupt

I started a new project a few days ago built with Django. Heroku is killing their free tier, and I’ve read that is the cool new thing, so I decided to try it out.

Overall, Fly has great documentation. Their Language and Framework Guides are pretty comprehensive, but in a list that includes popular frameworks like Rails and Laravel alongside less boring options like RedwoodJS and Remix, I couldn’t help but notice Django’s conspicuous absence.

I was able to get everything working great with Django and after some trial and error, so I wanted to write up my process to make it easier for people going forward.


Hello World, again! I’ve rewritten this website using the Astro web framework. Astro’s very new, with its 1.0 release just under two months ago. but there’s a few things that got me excited about it enough to move.

  1. JSX. JSX is the templating syntax that powers React. While Astro can build and use React, Vue, Svelte, or any framework from a growing list , .astro templates are written with a mix of TypeScript and JSX and are rendered directly to vanilla HTML with no JavaScript at runtime. TypeScript is written in a preamble section that looks similar to Markdown frontmatter and sets up the scope for the rest of the template. I found Hugo’s templating system that is built directly on Go’s templating library to be very limiting by contrast. At this point, I definitely believe the adage that “any powerful templating language eventually grows into an awkward programming language.” Astro lets me write plain Typescript and JSX and get HTML pages out the other end.
  2. Scoped CSS. CSS written in .astro templates are scoped to that template only. I’m not a fan of dogmatic separation of concerns in CSS. I also don’t have much experience with Tailwind, and I enjoy writing SCSS. So scoped styles in all my templates is a happy medium where my styles live close to my templates while I can write in a familiar syntax.
  3. Lightweight. With everything from archetypes to taxonomies, Hugo is really a static CMS more than a blog generator. It’s a much more general system than I need. Astro is a bit “closer to the metal” in that respect. When I’ve had to write some helpers that I took for granted in Hugo, writing custom helpers is much easier since it can be accomplished in a few lines of Typescript.


I just signed a lease for my second apartment since moving to New York City after college. Some friends asked me for advice on how to find an apartment here, and I didn’t realize at first how many opinions I have on the whole process. I’ve tried to distill my thoughts and approach here.

Renting an apartment in New York is all about tradeoffs, mostly between time and money. If you’re willing to spend more time seeing apartments in person, then you’re much more likely to find a great apartment that others are overlooking because the information online is incomplete or hard to find. If you’re willing to spend more money or give up something that most other renters are looking for, you can find a nicer apartment without searching for a diamond in the rough.

If you can put in the time to develop an intuition for the types of apartments on the market in your budget, you’ll be much more confident in your decision when you ultimately sign a lease.


Obsidian is first and foremost a Markdown editor with first-class support for internal links between notes. But just because it wasn’t built as a to-do app, doesn’t mean it can’t become one. Community plugins and external tools have made Obsidian work just as well for me as any task management app I’ve used in the past. As an added bonus, because I’m keeping notes about my day and what I’m reading, it’s easy for me to keep tasks in the context of the thoughts that spawned them.


This is the first part of an in-progress series on the Obsidian knowledge base. You can find all the articles with the obsidian tag.

I’m not an organized person by nature. I tend to try to just commit important things to memory rather than write them down in any systematized way, which means I end up forgetting things about 20-30% of the time, and just hoping I remembered the most important things in some kind of implicit neural priority queue. I’ve tried a bunch of different task management and notetaking systems before, but nothing really stuck. At the end of the day it’s because I always struggled to organize my thoughts in a single hierarchy. Even a regular paper notebook is organized implicitly in a timeline, with older notes in the front and newer notes in the back. I always spend way more time thinking about where my note should fit in the hierarchy than I do actually capturing my thoughts.