Simon Fish

Engineering and educating for a free and open web.

Currently at FreeAgent

Ruby logo Ruby on Ruby on Rails logo Rails developer with over two years of industry experience.
Experienced with Turbo logo Hotwire, ViewComponent logo ViewComponent, React logo React, and more.

Check out my CV/resume .
Thanks for checking out my work. You can always head back home if you want!

Raise.dev

Remote 30 Jun 2020-31 Mar 2022
I led architecture and development of an online coaching platform at a startup.

Working for Raise.dev marks my most significant experience. During this time, I've architected and maintained a platform allowing over 250 Raise.dev members to benefit from the support and expertise of the company's coaches. In doing so, I've broken new ground in open source across Hotwire and ViewComponent, released gems of my own, and gained a practical understanding of more advanced patterns in Rails.


I joined Raise.dev after its founder, John Britton, reached out to me to express interest in working with me. Under his leadership, I iterated on fundamentals I'd begun to develop at UKCloud to build the company's first public offerings from scratch. I had significant, advanced responsibilities similar to those of a software architect.

As the primary contributor to the codebase and the only full-time developer for around half my time at Raise.dev, I was responsible for key decisions in the technical implementation. Along the way, John helped me to understand the importance of key principles such as the use of service objects and dependency injection. My own research led me to improve on these and employ ViewComponents and the command pattern. Using these as the foundation for this production app helped me to develop a practical, educated understanding of their use.

I built a system that allowed users to schedule online meetings with coaches, using the coaches' calendar availability via an external API. This system went through several changes in response to business requirements. Initially, members were responsible for booking with coaches and could outline the purpose of the meeting through requests. The final iteration of Raise.dev held a live-updating timeline that prompted a more guided flow, in which coaches became responsible for scheduling with members.

I also crafted many of the fundamentals that supported the app, including:

  • a role-and-right-based permissioning system that separated the concerns of roles and rights effectively
  • mailing platform integrations, which enabled the team to easily craft and send marketing and transactional emails to members and leads
  • a registration flow system that made it easy to operate on a user object during the signup process differently depending on their intent
  • a system of view components, from buttons and headings to the event booking slot selector, that made our view layer testable and malleable.

During my time at Raise.dev, I was also able to achieve a number of things on my own, including publishing gems, contributing to Rails itself, and regularly contributing to issues and code within ViewComponent to join the triage, and eventually commit, teams. Exceptional, which traded as Raise.dev, is currently in the process of pivoting towards a new goal with the same team.

Made with...

GitHub
Rails
CSS
Docker
Linux
HTML
Git
Ruby
Sidekiq
PostCSS
Webpack
Stimulus.JS
Turbo
ViewComponent