ryanbigg

ROM and Dry Showcase: Part 4

This is the 4th (and final) part of a 4 part series. Part 1: Application + Database setup Part 2: Validations + Transactions Part 3: Testing In this last part, we're going to make it so that our application can receive and respond to HTTP requests. So far, we've been seeing how to use gems either from the dry-rb suite of gems, or the rom-rb suite of gems. In this part though, we're going to be using a gem from a different suite, a...

ryanbigg

ROM and Dry Showcase: Part 2

This is the 2nd of a 4 part series. You can read Part 1 here. In Part 1, we built an application called Bix and made it so that the application could talk to a database. We did this by using some gems from the ROM suite of gems, namely rom and rom-sql. In this part, we're going to look at how we can tidy up our code by using two additional gems, this time from the Dry suite of gems: dry-system and dry-auto_inject. You might be...

ryanbigg

Rough Edges

Our job as software developers is to make functional software. A user should be able to use our software to accomplish tasks that might otherwise take a long time if they were doing it without computers. This has a wide-and-varied range, of course. But the main thing is that we need to make software that works. If we didn't do that, we would find ourselves out of a job very quickly. However, functional software shouldn't just be the...

ryanbigg

RubyConf Indonesia Keynote - Transcript

This post (and talk) is an updated version of my 2018 "Hiring Juniors" talk at RubyConf AU. This version of the talk was given at RubyConf Indonesia 2019 as the closing keynote. You can view the slides for this talk on Speakerdeck Intro Who's hiring right now? And who's finding it easy to hire developers at the moment? If you said it was easy to hire developers at the moment, you're either very lucky or lying. I work at a...

ryanbigg

Culture Amp Junior Engineering Program Discontinued

For the past two years, I have ran not one but two successful Junior Engineering Programs (JEPs) at Culture Amp. The official number of developers that I have trained there is 19. But I trained a bunch more developers from time-to-time as well. So the proper total would probably be in the range of 30-40 developers at Culture Amp that I have helped train, support and grow over the past two years. I am really proud of this work that I...

ryanbigg

Working Towards Integration Testing Duolithic Applications

I've been revisiting Twist v2 recently. It's my book review tool that I've rebuilt multiple times over the past 8 years. Its latest incarnation is what I'm calling a "duolith": a very light Hanami backend application with a GraphQL API, and a frontend built with React and Apollo. The backend and the frontend codebases are kept in separate directories in the same codebase. This allows for separation between the Ruby and...

ryanbigg

Junior Engineering Program: Resources

This post is part of a series of posts about the first cohort of the Culture Amp Junior Engineering Program (JEP). You can read the first two posts here: Junior Engineering Program: Launch Junior Engineering Program: Onboarding In the last post I covered the process of what we did in the weeks immediately following the juniors starting, but didn't talk too much about what we taught them during those or subsequent weeks. That is what...

ryanbigg

Culture Amp Junior Engineering Program: Retrospective

This post is a short summary of the Culture Amp Junior Engineering Program (JEP) that I ran from November last year until June this year. If you're keen to apply for the 2nd cohort then you can do that here: Apply here for the Culture Amp Junior Engineering Program's second cohort This post is the first in a series of four blog posts which will go into detail about how the last JEP operated, with the aim of giving potential future...

ryanbigg

Joy of Elixir - Progress Update

I started writing Joy of Elixir near the end of July last year. I wrote a large amount of the book in a relatively short time and I've been quietly updating it (slowly) ever since. I took time away from Joy of Elixir to publish Exploding Rails (which is doing very well!) and then took a little writing break to "recover". Recently, I received an email from someone called Svetlana Rosemond. She said: Hello Ryan, I'm currently...

ryanbigg

Making Tests Go Faster

At Culture Amp, we have a large Rails app that we’ve been building since 2011. This app has about 150k LOC and an extensive test suite that uses Rubocop, RSpec, Capybara, Cucumber and FactoryBot. We run these tests for the application on Buildkite and currently they take about 16 minutes to run end-to-end. This is 16 minutes that developers are waiting to get feedback on whether their build passed or failed. While this is not...

ryanbigg

My thoughts on Hanami

(This was originally posted as a comment on Reddit) This blog post has been translated into Japanese, thanks to @hachi8833! I've been toying around with Hanami for a few weeks now and imo it feels better than Rails. If you want to see some code rather than text, here's my little example app I've been building with Hanami. Here are the top three things that I like about Hanami, in long form: Repository pattern instead of Active...