Welcome to a new series on my blog where I interview noteworthy Ruby and Rails developers, especially those who have made significant contributions to the community with their code, writing, or leadership.
In this very first post in the series, I interview Miles Woodroffe, a veteran Ruby and Rails developer who is currently a Technical Advisor to Cookpad after having served as the Global CTO for many years.
If you haven't yet heard of Cookpad, it's Japan’s largest recipe sharing service, with 60 million monthly unique users in Japan and 40 million monthly unique users globally. It's also one of the oldest Rails application. Miles wrote the first commit to the Rails monolith and helped scale not only the code, but also the engineering organization.
Miles also represents Cookpad as a founding board member at the Rails Foundation.
Q. Can you tell us a little about yourself?
Hi, I'm Miles and I live back in the UK after previously being in the USA and Japan for close to 20 years.
For the last 13 years I've been at Cookpad where I was Global CTO, but have just stepped down from that role and embarking on a new journey as a consulting CTO and advisor! My first client is in fact Cookpad where I'm working with the CEO/Founder in a technical advisory role as, well as continuing to represent the company as a Founding Board Member at the Rails Foundation.
Before Cookpad I worked at several startups in San Francisco over a period of 10 years, from enterprise Java projects, to a ringtone company, to a major business listings service. Before that I was a live and studio sound engineer for 10+ years, fortunate to tour all over the world and work with some iconic and renowned artists. But that's a whole different Q&A 😀
I've been using Rails since v1.x around 2006, and love everything about Ruby and the Rails Framework. Most of my experience has been building online community platforms and growing those products from zero to tens of millions of users, and 1 engineer up to teams of 85+.
Q. How did you get into programming?
The "how" is easy to answer. In the early 1980's a British inventor called Sir Clive Sinclair launched some incredibly cheap home computers that took the nation by storm. I was lucky enough that my dad bought me one when I was about 13 years old and I was instantly hooked.
The ZX Spectrum plugged into your TV set, ran BASIC, and could play games. So that was it! I tought myself BASIC, and then Z80 assembly, mostly to control graphics in the games I was starting to write and sell.
I left school at 18 after completing Computer Science A-level in the UK. In those days though it was very different. No internet, and languages like Pascal, Fortran, Basic, with clunky terminals connected to a mainframe.
After leaving school I went into the music business with visions of being a famous musician. While that didn't come to pass obviously, over the next 10 years I progressed from working locally then nationally as a live and studio sound engineer, to moving to Los Angeles, finding myself working with global artists like Bob Dylan, James Brown, Ray Charles, BB King, The Specials and many more. Incredibly lucky I know.
While touring endlessly with bands, the internet was just starting to become a "thing" so I naturally started building websites for bands and music agents in the mid-90's. First with Perl, then Cold Fusion!, Php, even Java Applets if anyone remembers those. Lots of fun. That became more of a passion and obsession I guess, and after many years in music I ventured up to San Francisco to try and find a job in tech.
Q. How and when did you came across Ruby and Rails? What do you most like about them both?
I was working at a company in San Francisco as a software engineer - where our product was all Java, JSPs, Servlet based - when like many I saw a video by a young engineer showing "How to build a blog in 15 minutes".
Of course this was DHH, and seeing that as a Java/JSP developer was mind blowing. I immediately started to build things with Ruby on Rails. Initially reporting interfaces things like that.
For me Ruby on Rails really resonated from day one and has continued to ever since. Rails introduced me to Ruby, which I love for the clarity and simplicity the constructs afford. Coming from something like Java - which in terms of origin comes from the same place - the contrast for me is incredible.
Moving to Japan in 2010, I wrote a lot of ruby code at Cookpad for the global recipe service, but as the team grew, I moved back to start our UK office, and was spending more time on strategic initiatives and management. I had less and less time to be hands on sadly. When Rails 7 was released, the timing was right and I made a real effort to get back up to speed and .. wow. Blown away.
I started to build a personal project which has been incredibly fun. I love what Hotwire makes possible especially, and more recently I've expanded my project to iOS with Turbo Native in order to access Apple Health data natively on the device.
Similar to when Rails was first released to the world, I think Rails 7 is a total game changer! I wrote a bit about this about 6 months ago on my blog: Rails 7 - Talk about a Revolution
Q. 5 programming books that meant most to you, and why?
ohh. This is a good one. I looked at my bookshelf (physical and virtual) and so many many books. I love to learn. Some are rather old, but regardless these would be my top 5:
- The C Programming Language - Kernighan and Ritchie
This was my intro to object oriented programming. I had an Atari 520ST computer in the late 80's for music as it had a MIDI port on the back. I wrote a program to import data from a Prophet 5 synth, edit on the Atari and send it back. All in C learned from this book!
- Programming Ruby - by Dave Thomas, Chad Fowler, Andy Hunt
I read this way back but still renowned as the best place to start I think. Affectionately known as the "Pickaxe Book" due to the cover picture.
- Agile Web Development with Rails - by Sam Ruby
Another book I read 10+ years ago, but remember this as being a great foundation.
- Layered Design for Ruby on Rails Applications - by Vladimir Dementyev
Literally just picked this up. I've known Vlad for years and he's an exceptional engineer and great at explaining complex problems in a consumable way so while I'm just starting to read it, I can already tell its going to be great.
- Why's (poignant) Guide to Ruby - by Why the Lucky Stiff
A fun one. Such a character back in the early days, despite Why leaving the community many many years ago, this is still great fun. In 2020 Andy Croll commissioned a reprint as part of the pandemic-year Bright Ruby which is why I have it on my bookshelf.
Q. Who are your programming heroes?
So many incredible people. If I had to choose one person, I would have to say Matz, who I've been very lucky to spend time with on numerous occasions due to Cookpad's long term support of Ruby. Not only a genius programmer for bringing Ruby to the world, but a thoroughly nice, thoughtful and generous individual.
This list could go on forever. So many wonderful people I've worked with and admire so I'll leave it at just one for fear of leaving anyone out!
Q. What does your typical day look like as a developer? What do you like the most about your current work?
Right now I'm working 80% on my own product as a solo developer. I lost a lot of weight last year and realized the tools I was using to plan meals and track calories and exercise were really not what I wanted myself. So I made my own, and thats what I'm refining right now and hope to launch in the next month or so. All Rails 7, Hotwire, Turbo Native for iOS and all that entails. I love it!
The other 20% as mentioned above is in an advisory role at Cookpad.
I am working remotely, and have been since 2021. Work hours at the moment are way too many, but it's my own product and Im having so much fun I can't even call it work.
Q. What resources and practices do you recommend for learning and keeping up to date?
To keep up to date I do invest a lot of time in reading blogs from great authors (like Akshay!), I listen to a lot of podcasts - split between musicians and programmers.
In terms of how I approach a new technology - Turbo Native is a good recent example. I got inspired watching some videos and reading blog posts from the fantastic Joe Masilotti, then when I saw the potential for connecting my product to Apple Health, I doubled down and read Swift books, posts and watched tutorials on Swift to learn the foundations.
For me there's no quick way so I spent a lot of time studying. Also reaching out to folks like Joe who have been very generous with support and ideas.
Q. What advice do you have for new programmers?
I always say the same thing. Believe in yourself! and put the work in. I love helping and mentoring new developers whenever I can, and I honestly think anyone can do it if they put the work in.
I would obviously strongly recommend Ruby on Rails for someone wanting to build web products, but its important to understand your motivations for entering the industry and aspirations where you want to get to.
Q. Tools of the trade - What are some of your favorite software programs in your day-to-day work?
- Code editor: VIM, VScode, Xcode
- Database GUI: Terminal, Bdash
- Terminal: OSX Terminal, iTerm
- Browser: Firefox, Safari
- Notes and Project Management: BBEdit, GitHub Projects
- Communication: Slack, Discord, Zoom, Mimestream
Q. What’s the best way for people to connect with you? Blog, Newsletter, etc.
- My blog: https://mileswoodroffe.com/articles
- Work with me: https://mileswoodroffe.com
- Threads: https://www.threads.net/@tapster
- Twitter/X: https://twitter.com/tapster
That's a wrap. I hope you liked this interview and you learned something new. Thank you for being so generous with your time, Miles!
As always, if you have any questions or feedback, didn't understand something, or found a mistake, please leave a comment below or send me an email. I reply to all emails I get from developers, and I look forward to hearing from you.
If you'd like to receive future articles and interviews directly in your email, please subscribe to my blog. If you're already a subscriber, thank you.