Nick Rotondo

Software Engineer


Programmer | Musician | Dog-dad

Music & Code

From serving brunch to software


It’s difficult to pinpoint the exact time I fell in love with music, but it was around age 13. Curiosity led me to pick up an instrument for the first time and take it home and see what I could do with it - completely unaware the passion that existed within. But that’s how all beautiful relationships start, isn’t it?

I never took lessons. Hours upon hours were spent listening and recreating, trying to emulate my favorite drummers or guitarists. I was my own worst critic, but the drive I had for playing and learning music fostered my incessant ability to learn and get better. An inclination towards math with a pinch of creativity is why I love writing music. It’s something I love doing so I’ll always try to be the best I can at it.

Some time around 2015, curiosity also led me to coding. I was working full-time as the Assistant Manager at the Duck & Bunny here in Providence, growing dull of weekend brunch shifts and pretending to care about new cupcake flavors. I was making a living, but thoroughly displeased with how. I needed challenges. Don't get me wrong, there were an abundance of challenges to overcome on a daily basis at the restaurant, but they were mostly to do with managing customer expectations and making angry people happy. Occasionally I'd get to flex my puzzle solving skills, playing Tetris with the dining tables in an overcrowded room to maximize seating based on the guests I had waiting, or getting umpteen drink tickets at once and applying my barista/bartender algorithms to get all the drinks quickly & accurately.

But those little bouts of satisfaction at the restaurant were nothing compared to the rush from solving a Codewars problem in JavaScript, or conquering encryption & sorting in C through Harvard's CS50 course via edX. Once hooked, I traveled down a similar path of self-learning that I did with music. I can honestly say I never thought I’d have such a passion for programming. I didn’t realize the simple pleasures I find in solving logic puzzles and staying organized, in partnership with the work ethic and efficiency I’ve developed over the years, would make for a good software engineer.

Mostly, I’ve loved working with React Native and TypeScript to build mobile apps. As a JavaScript developer, I can surely say that once you go TS, you can’t go back to vanilla JS. It feels so… naked. Unsafe? Dangerous. I don’t like danger. I like type-safety (and I might declare types more than I need to) but sometimes those types can help the code be self-documenting!

My favorite type of all, is the sum type. Sum types make impossible states… well, impossible! These Professor Frisby lessons helped me understand how code branching with sum types like Maybe can prevent null values from sneaking in to blow up your application, and make the intent of your code clear. I was sold. Then it dawned on me that all those advanced math classes I really enjoyed were tying in here. I knew I always liked math! It’s in music, and here it is in programming. Passions overlap where mathematical instincts carry solutions brick by brick down to my fingers to build something; whether it be a fleeting moment, a jam, a draft, pseudocode, or a symphony of design patterns and architectural successes. The occasional wrong note can happen at any given time, but the music goes on! The PR gets approved, the band recovers, and the show goes on.

Anyway, using these concepts in JS has significantly improved my code-quality, and the bar that I set for JS applications (if you’re still reading at this point, please don’t judge me on the code behind for this static site. I had to build it quickly with GA so it’s mostly templated and I’m working on redoing it, ok!?) but they require external libraries, or some bulky boilerplate. And while I don’t necessarily think that more code is bad, it does become a bit of pain when you make extensive use of it.

Elm was so welcoming, like returning to the home I didn’t know I once had. I had my sum types built right in to the language, and the concepts of Gongfu [LINK.com] (the Redux alternative used at Upserve for React state management) were derived from the Elm language. Elm was a great way for me to get my hands dirty on the World Wide Web, but I wanted to learn something more powerful, something I could use outside the browser. I’ve seen and heard Haskell come up in FP discussions and examples, and syntactically it looks similar to Elm, so I started with this book: http://learnyouahaskell.com/chapters and found myself enthralled with the support of the language, improving on how I approached functional programming with pure functions and writing declaratively vs imperatively.

I love programming and I love playing music. They both invoke a similar thrill when I get taken into my work and let the ideas flow through my fingertips, producing material I'm proud of. Sometimes making the right stoke of keys feels like climbing scales on a guitar, or playing shortcut-keys like chords. Lucky enough, I can pursue one of my passions professionally.

awesome guy with hat

Skills


React

JavaScript

TypeScript

Git

HTML

CSS

Java

Elm

Haskell