Projects & Portfolio

Manic Pixie Dream URL

Site link

A social network for parked domains.

Why?
Yes, this is a ridiculous idea. This service is for people who fit the meme of buying domains with the intent of launching a new project and then renewing it forever without doing more. The idea is to create a community around that, collect ideas for what to do with a domain, potentially get motivation to work on it (maybe soon by collecting email addresses).
Challenges.
Authentication across domains is more challenging in the current third-party cookie environment. Automatic TLS certificate creation is not something we have to deal with for most projects, but it's more complex here with one Caddy reverse proxy and one SvelteKit node app handling all domains on the network. This was my first project using Drizzle ORM and I will use it again.
Product screenshot mobile

A privacy-focused social discovery tool for ActivityPub social networks like Mastodon.

Why?
An OSS project with a tiny team and goals other than profits and user stickiness, Mastodon has not prioritized discovery. Federation means each server has limited information, so discovery is more difficult. The goal of this project is to help users improve their experience by surfacing great accounts and to grow the Fediverse overall.
Challenges.
The site is resource intensive. Experiments with virtual lists did not preserve the expected scroll behavior for the page overall. Also, the default search sorts by percentage of account followers followed, however federated servers have stale follower count data. When a user hovers a particular account, accurate data is requested and is shown on click but the list is not reordered.

“holy crap. like everyone that one is telling me to follow are people i want to follow but didn't realize was here.”

Mike Masnick avatar
Mike Masnick
Product screenshot

Quicksilver CRE

Site link

A commercial real estate investment analysis tool, starting with a multi-tenant industrial buildings.

Why?
This project combines my interests and work experience. The goal of the project is to provide a service that can be used by real estate developers to analyze potential deals as fast as they might be able to explain a deal to their analyst instead of the many hours it would take to create a model in Excel or Argus.
Challenges.
Input masking and form validation were new to me at the start of this project. I used the Class Validator technique that I learned from NestJS to keep track of state of the form inputs and validation. The math for the financial analysis works significantly differently than I was used to in Excel. Each cell in Excel is would reference the prior period. For this project, each calculation is independent relying on compounding to avoid loops and simplify the data structures.
Product screenshot mobile

A master's class project to demonstrate Sign-in With Ethereum, the site uses custom Firebase auth tokens based on Ethereum wallet IDs to provide pseudonymous real-time chat.

Why?
For an independent study course, I researched blockchain technology and created a series of seminars to discuss why the technology is potentially interesting. One of the talking points was to compare the Swedish BankID system with Sign-in with Ethereum. I created this site so that students could learn about the user experience.
Challenges.
Setting up sign-in with Ethereum is fairly straigtforward. The challenges in this project were figuring out what backend and database would work best for real-time data and carrying the Ethereum sign-in across sessions and devices. Firebase's custom auth tokens work great for the auth challenge. I found the document store much less intuitive than relational databases, but the real-time features work very well.
Product screenshot mobile

Strange Attractors

Site link Github link

Interactive visualizations of strange attractors inspired by James Gleick's Chaos.

Why?
This is just a fun project which gave me a chance to explore and think about chaos theory by playing around with the equations and learn three.js. I find the visualizations to be beautiful, mesmerizing and meditative.
Challenges.
The camera angles and perspective involved in 3D rendering is not intuitive for me. Each system has a different scale so figuring out what the center should be for rotation and positioning of the camera involved a lot of trial and error.
Product screenshot mobile