photo of Erik Thorelli looking smart
Erik Thorelli

Location: San Francisco | Last updated: 2018.06.05


I professionally code in modern JavaScript frameworks, like React and React Native and Node.js. In my free time coding I try out different frameworks, libraries and languages, explore and customize my environments and tooling, and use my coding and data science skills in areas that I'm especially passionate about, like politics, the environment and music creation.

Below, I will briefly highlight some projects, with links to more info where appropriate.

Project: Mac Podcast App

animation showing the basic use of the podcast player

I was annoyed with not having a desktop podcast app that would sync with my phone and tablet podcast app. Overcast was the natural choice because I was already using their iOS apps, and they provide a web interface, syncing podcast subscriptions and play positions. They just didn't have a macOS app. So, I used nativefier to wrap the web app into a desktop app, with Electron doing the work under the hood.

I also published the app as an executable on GitHub, as well as the whole git repo for the project. I wrote a blog post about it as well. I have gotten some positive feedback from users. I am not the only one to have had this lack-of-desktop-podcast-app problem.

Project: Mac Google Hangouts App

animation showing the basic use of the Google Hangouts macOS app

I prefer to not have long messages on my phone, since a keyboard and staying on my computer screen is much faster and more convenient. I have one friend that likes to use Google Hangouts to chat, but there is no native or free Google Hangouts app for macOS. So, following on the usefulness of nativefier, as with the podcast app, I spun up a Google Hangouts app for macOS desktop utilizing Electron.

I have not published it, yet. But I plan to. Hopefully other people will find it useful, too.

Project: Some Software Co. Coding Evaluation

An animation showing the responsiveness of the coding evaluation site

This was the product of a take-home design+coding challenge. The coding requirements were:

  • *All CSS and JS needs to be inline, in one HTML file*
  • Using Javascript, print out to the page the viewport dimensions. This should be done on page load and on page resize.
  • Using Javascript, print out to the page the coordinates of the last click or touch

To implement the JS parts, I used event listeners on the window. I set one listening for resize (which would also capture initial viewport dimensions) and then trigger a function print them out. I set two other event listeners for click and touchstart which would trigger their respective event handler functions which would cache the X and Y coordinates and print them out either as "Last Click Coordinates" or "Last Touch Coordinates". To read about the design requirement, check out the project description on my DESIGN page.

Project: Portfolio (This Site!)

The idea behind this portfolio site is to showcase a little bit about who I am and where my intellectual and creative energy is spent. I have chosen to build this site from scratch using only vanilla web languages, without the assistance of any third-party libraries, frameworks or templates.

I have implemented the layout here using my homemade flexbox layout. You can find my CSS Grid implentation here. It feels like it has been so long since I have actually worked with vanilla HTML/CSS/JS, and I felt I barely touch these foundations of the web given how easy and common frameworks are. But for a simple portfolio site, I don't need bells and whistles that pay dividends at scale. That said, I may refactor this site in different technologies in the React ecosystem, for fun and to explore some less-than-production-ready features and plugins. Angular 2 and VueJS are on my bucket list, too!

Project: Marxian Split

This is a fun little project to split expenses between 2 parties based on relative income.

I don't know how useful it is, but it's a way to think about income inequality and put your money where your mouth is. Right now it's just implemented as an in-browser script, but I intend to use it as a 'Hello World' template for trying out different frameworks with a little more logic than a print command.