In this episode of 'Ruby for All', Andrew and Julie discuss drawing inspiration from MC Escher through games like Monument Valley, to dealing with the intricacies of Discord roles and authorization, and the importance of immediate and continuous feedback through tools like Google Docs during talks. Then, guest Andrew Atkinson joins us and shares insights from his new book, “High Performance PostgreSQL for Rails,” detailing his journey from initial drafts to publishing and his shift towards independent consulting. He emphasizes the significance of understanding database operations, schema design, and efficient querying for optimizing Rails applications. Also, Andy talks about preparing a workshop for RailsConf, aiming to educate participants on query performance improvement techniques and the utility of using multiple Postgres instances. The conversation also touches upon the learning strategies, potential challenges, and benefits of workshops versus talks at conferences. Hit download now to hear more!
[00:00:10] Julie started drawing again inspired by MC Escher and playing a game called Monument Valley, and Andrew mentions he’s on a tilt dues to issues with Discord roles.
[00:01:59] Andrew introduces the git command ‘git instaweb’ as a cool new find and shares something he remembered going back to the getting feedback for talks topic.
[00:04:24] Andrew “Andy” Atkinson introduces himself and discusses the completion of his book, “High Performance PostgreSQL for Rails,” the positive response in beta sales, and his new venture into independent consulting.
[00:08:16] Andy talks about his shift from development work to more educational and consultative roles, considering diving deeper into Postgres development.
[00:09:48] There’s a discussion about Andy balancing work-life commitments, creating content-like videos and tutorials, and leveraging these for marketing and educational purposes in the tech community.
[00:11:29] Andy considers the idea of making short videos for platforms like TikTok and Instagram Reels, and he talks about his preference for watching conference talks on YouTube over popular content creators. He also talks about Hussein Nassar’s videos on Udemy and how he encouraged him to make short videos.
[00:15:01] Andy is conducting a workshop at RailsConf and expresses his excitement about presenting at RailsConf and the opportunity to connect with people interested in query and database optimization.
[00:17:09] Julie shares her preference for learning through hands-on workshops and looks forward to participating in Andy’s workshop. Andy gives us a sneak peak of his workshop which will focus on query performance, query running, and index support, as well as exploring the benefits of having multiple Postgres instances.
[00:20:19] Andrew asks if Docker is necessary for the workshop, leading to a discussion on the practicality of simulating different database instances.
[00:22:10] Andy plans to prepare for potential challenges such as internet issues by possibly providing content on USB drives and ensuring attendees can access prerequisites before the workshop. He emphasizes the workshop format will be more hands-on with less lecturing.
[00:24:06] Julie asks about the prerequisites needed for audience members attending the workshop, especially if they’re new to Rails or databases. Andy clarifies that attendees should have at least built a database-backed Rails app or have similar experience with another language or framework,
[00:25:44] Julie mentions that there’s a desire for more advanced content in talks and having a range allows participants to engage at different levels. Andrew shares his preference for advanced topics in workshops.
[00:29:45] Andrew explains his preference for collaborative learning and anticipates the second day of RailsConf to be different and beneficial for those who like to pair and bounce ideas off others. Andy wants to ensure that the workshop content is new and valuable, different from what attendees might learn elsewhere.
[00:32:11] Andy outlines the key takeaways he hopes attendees will leave with, including skills to improve the speed and scalability of their web apps, understanding database operations, and leveraging multiple databases with Rails Active Record.
[00:34:04] Andrew shares while reading Andy’s talk outline, he realized he wasn’t sure when to use indexes outside of standard use cases. Andy acknowledges the importance of not just solving existing problems with indexes, but also identifying where problems may arise in Postgres by tracking queries not using indexes.
[00:36:35] Andrew discusses the existence of gems like lol_dba, which suggest potential indexing opportunities, but notes the difficulty in validating those suggestions. Andy mentions other tools like Rails PG Extras and tells us the workshop will demonstrate how to use the ‘explain’ command to evaluate the use and impact if indexes on individual query performance.
[00:38:44] We end with Andrew inquiring why Postgres does not allow control over the query plan selection. Andy responds that Postgres’ declarative paradigm aims for the planner to continually adapt and choose the lowest cost plan and mentions an extension called pg_hint_plan.
[00:40:54] Find out where you can follow Andy online, where to get his book, and his upcoming conference plans.
Panelists:
Andrew Mason
Julie J.
Guest:
Andrew Atkinson
Sponsors:
Honeybadger
GoRails
Links:
Andrew Mason X/Twitter
Andrew Mason Website
Julie J. X/Twitter
Julie J. Website
Andrew Atkinson Website
Andrew Atkinson X/Twitter
Andrew Atkinson Consulting
M.C. Escher
Monument Valley
git instaweb
Ruby for All-Episode 26: The Database Wizard with Andrew Atkinson
High Performance PostgreSQL for Rails: Reliable, Scalable, Maintainable Database Applications by Andrew Atkinson
Hussein Nassar (Udemy)
Rideshare-Rails app for “High Performance PostgreSQL for Rails”
RailsConf 2024
RailsConf 2024 Schedule: Andy Atkinson, May 8th, 2:30-Build High Performance Active Record Apps
lol_dba