Mason Lynass

I'm a software engineer building engaging & accessible websites and apps.

Let's make something together!


Front End:

JavaScript, TypeScript, React.js, React Native, Jest, HTML, CSS

Back End / Database:

Ruby on Rails, Node.js, Postgres, SQLite, Supabase, Sanity Studio

Tools:

Git, Render, Vercel, Heroku, Fly.io, Playwright, Git, GitHub


Better Bathroom Bureau

  • React
  • Vite
  • React Router 6
  • React Query
  • Zustand
  • Google Maps React map components
  • Framer Motion
  • Supabase
  • PostgreSQL
  • HTML
  • CSS
  • Vercel

In January 2024, after months of development, user testing, and data accumulation, I launched the Better Bathroom Bureau - a website dedicated to helping people in Seattle access bathroom facilities around the city.

Better Bathroom Bureau began as a Tumblr blog I started right after I moved to Seattle in 2015; I reviewed bathrooms I visited out of 10, detailing highlights or lowlights in bathroom function, cleanliness, and style.

During our time in the Flatiron School software development bootcamp, my buddy Alex and I worked together to build an alpha version of the Better Bathroom Bureau website. We used React.js with some custom CSS to give it a "Craigslist-y" look on the frontend, and Rails to handle the backend and store all of our data.

Better Bathroom Bureau bathroom page Better Bathroom Bureau home page

In the summer of 2023, after spending some time on other projects and priorities, I began to expand on the previous work from bootcamp and build a performant, user-friendly, fast web application, with help from Alex, Evan House, and Matt Phan.

On the BBB website, users can view bathrooms stored in the BBB database in a list or on a map, optionally using filters or a search bar for precise searching. Users can also login or create an account to contribute new bathrooms to the database, leave reviews tied on bathrooms they visit, and save favorite bathrooms for future reference.

Each bathroom submitted by users has its own page, with information about its description and accessibility, its location on a Google Map (thanks Google Maps API!), and reviews that site users have left about their experiences.

Now that the website is live, I'm excited to open up the bathroom discussion to other contributors and users around Seattle. This is the kind of resource that works best with a lot of user input. We hope that people around Seattle will contribute and the community will benefit from our hard work and creativity!

Better Bathroom Bureau account page Better Bathroom Bureau Near Me page

Fantasy Sumo

  • React
  • React Router
  • Ruby on Rails
  • PostgreSQL
  • Puma
  • BCrypt
  • Node.js
  • Sumo-API
  • useSound
  • HTML
  • CSS
  • Render

A Fantasy Sports game following the action of professional Ozumo, where users build their own team of sumo wrestlers & compete against other users to score the most Fantasy Sumo points. Explore a comprehensive database of real world & game-specific statistics, track your Fantasy Sumo history, and learn sumo terminology.


Woodland Theater

  • React
  • React Router
  • MailChimp API
  • Behold API
  • Sanity Studio
  • HTML
  • CSS
  • GitHub Pages

A website for the Woodland Theater, a non-profit, DIY arts space and music venue in Seattle. Built with React, with a simple custom API from Sanity Studio, integrating APIs from MailChimp and Behold, and deployed through GitHub Pages.


Ice Honky

  • React
  • React Router
  • external API
  • Jest
  • HTML
  • CSS
  • GitHub Pages

An NHL Scoreboard website for goal horn lovers - whenever a team scores in, their goal horn sounds in real time! Developed with React.js, polling an external NHL Scores API, using the custom React Hook useSound to trigger audio events, deployed with GitHub pages. IceHonky is a collaboration with Alex Naughton .


Musical Programming

useSound

Mason speaking at a Seattle JS meetup

In March 2023, I gave a 10-minute talk about my favorite React hook: useSound, a custom hook for sound effects & web audio, developed by Josh Comeau.

In my React.js portfolio projects, I prefer to use useSound to play audio because of its simpler syntax and extremely accessible documentation. I like to use the hook to play audio inside event handlers, on form submissions, and wherever I think my site could use a little more character.

For this talk at the monthly SeattleJS meetup, I introduced the basic capabilities of useSound, then showed off some fun mini projects I made with it. I built a Random Note Generator to recreate the generative music I make in Ableton Live, as well as a keyboard-accessible drum machine and a very simple audio player.

My presentation slides will live on the internet forever at this link, and you can even download the directory to tinker with the drum machine & random note generator code at my public repo.


Live Looping

I taught myself to live loop songs and different pieces of music, using BinkBeats' binkLooper in Ableton Live.

    In order to identify, realize, and perform a complete piece of music without any pre-recorded MIDI pitch/rhythm data or pre-recorded audio stems, I developed a multi-step process:
  • I analyze the work to determine if the arrangement of musical phrases and song structure could reasonably be performed through looping. Musical phrases which repeat with some regularity, songs with similar chord structures throughout, and a lack of non-repeating elements occurring simultaneously are all good signs of a song you could loop.
  • Once I think a song could be fit to loop, I'll map out the song structure, orchestration in each section, and specific rhythms and pitches in each musical element. It's just another method of transcription!
  • Some detailed planning is required to turn a transcription into a programmable structure in Ableton Live. I need to decide when (in musical time) I'll record each element, making sure that I stick to my own physical limitations, and make sure to leave space for non-repeating elements or other things I need to perform in real-time.
  • Now that I have my performance structure in mind, I program dummy clips and automation in the binkLooper and other devices in Ableton Live. I can prescribe when instruments are recorded, when they begin looping, when they start and stop again, and how effects process the recorded MIDI data, and assign all of these functions to a specific, predictable timing.
  • With a little troubleshooting and practice, I can perform actions on MIDI devices or with physical instruments, which are recorded and played back in my prescribed framework, in order to perform complex arrangements of many musical elements independently (with help from my computer, of course)!

Check out this tutorial video I made about binkLooper to learn more,
or head over to the Audio Engineering page to watch videos of my live looping performances.


My original music

Check out my most recent album,
Music for an Ordinary Day

This album features 8 compositions I wrote by programming rules for MIDI instruments and devices in Ableton Live. Right now I'm really enjoying creating ambient generative music and I'm releasing new music all the time!

More information about my process of music production, programming in my DAW, generative & procedural music, and more on the sound design page.

Check out my latest work on the music production page.

Unreal Engine / Metasounds

This was one of my first experiments in Unreal Engine's Metasounds;
I don't know much about Metasounds yet, but it seems like an exciting and inspiring tool for creative audio projects.

I was thinking of Brian Eno's Discreet Music and other slow ambient music, and I made a sort of primitive piece of music in which four wave generators produce random pitches that swell and fade in volume at their own pace.

I had already started to make procedural generative music in Ableton Live,and it was a puzzle to switch to a different user interface and reconfigure the rules in a new environment.

I would love to work on video games, installations, or any other projects that develop in Unreal Engine!


Other Projects

Check out some demo videos I've made for other projects I worked on at Flatiron:

RESTly (get it?) - a San Diego-centered app to help users find great food around the city

Developed with Armandeep Kaur using React.js and Ruby.

Seattle Travel Guide - a TripAdvisor-y website for perusing destinations around Seattle.

Developed with Jaspreet Kaur using React.js and a local JSON database.

Grocery List Helper - add your personal recipes, then choose meals you'd like to prepare and this webapp will build your shopping list automatically!

Developed with Grace Durant using vanilla JavaScript and a local JSON database.

I've also coded some relavitely simple HTML/CSS websites for small projects and portfolios:

Illustrated Diaires

Jesse Miller's personal website

the website you're on right now!