
The Bike Shed
506 episodes — Page 10 of 11

56: Most People Aren't Building Trello
Is ActiveRecord reinventing Sequel? If it is, does it matter? Derek and Sean discuss that and whether maybe we could all stand to tone down the JavaScript. ActiveRecord is Reinventing Sequel Ryan Bigg gives up his open source projects Maybe We Could Tone Down the JavaScript by Evee Stronger Parameters Mother F*cking Website Discourse Ember CLI Fastboot Introduction to HTML Imports TC39 Modernizr Can I Use: Date and Time Input Types

55: Hot Dog is Not a Dessert
Derek and Sean talk about their experience with the Rails 5 betas, how to test against them today, and things that you might want to look out for when updating your app. Ides of March Presence validation of virtual attribute not firing appropriately ActionDispatch request helpers don't properly rewrite positional arguments to keyword arguments Strong Parameters migration path to Rails 4 A Rule of Thumb for Strong Parameters by Pat Shaughnessy Concurrent Ruby Appraisal

54: Argument Error
Derek shares some Elixir annoyances with Sean and they discus how a consulting role colors their perception of languages and frameworks, both for better and for worse. Sean provides an update on SQLite and Association support in Diesel. GoodTImes, Timex, and Ecto.DateTime When should you use DateTime and when should you use Time by Andrew White Twitter conversation with Brandon Hikert Postgres RETURNING Preloading in Ecto User Focused Design in Elm by Evan Czaplicki Getting Started with Diesel Rust API Evolution

53: Cache Machine
Laila and Derek go on a tour of the various caching mechanisms available to web applications in general, and Rails specifically. When is the right time to cache and at what level? The Road to 2 Million Websocket Connections in Phoenix by Gary Rennie Toxic Synovitis Memoization is a Liability by Henrik Nyh Use a leading underscore for memoization Two Hard Things in Computer Science Rails SQL Cache Low-Level Caching (Rails.cache.fetch) Association counter_cache Fragment Caching Introduction to Conditional HTTP Caching With Rails by Damian Galarza A Guide to Caching Your Rails Application with Fastly by Jessie Young Caching Tutorial for Web Authors and Webmasters by Mark Nottingham Web Fundamentals: HTTP Caching

52: You're an Elixir Developer Now
Derek and Laila discuss Derek's excitement for Elixir and Phoenix. Is Elixir as fun to write as Ruby? Is Phoenix a better Rails? Elixir and Phoenix Routes in Phoenix Using ctags with Elixir Static Assets in Phoenix ja_serializers ecto Is There a JSON Schema describing JSON API? Elixir 1.2 Map and MapSet scale better ExMachina - factories for Elixir Elixir Typespecs and Behaviours

51: Is Sim City Running? (Steve Klabnik)
We enjoy a wide-ranging discussion with Steve Klabnik on the importance of good documentation, the sometimes cloudy definition of a breaking change, the politics of open source contributions, and work/life balance or boundaries. Steve Klabnik - twitter, website, blog Let’s Talk About Ecosystem Documentation SimCity Mode in Windows 3.1 from Joel Spolsky Rescuing Resque… Again Netrunner IntermezzOS Writing an OS in Rust by Philipp Oppermann Bors - an automated integrator for GitHub High Five - a bot that encourages good contributions

50: Open Mic
It's Open Mic day at The Bike Shed. We hear from other thoughtbot designers and developers about what they're excited to be spending their investment time on lately. Matt Sumner Hunchpig Podcast Haskell Programming The Lambda Calculus Learn You a Haskell for Great Good Is Everyone Trying Their Best? - The Bike Shed on software quality Cole Townsend Velocity JS Cole on Dribbble The Buffalo Bills` Playoff Drought - The longest current drought in sports Joël Quenneville Alter Ego Elm Elm's Time Traveling Debugger

49: A More Practical Haskell
How can an ORM be faster than a SQL String? Laila and Sean discuss the latest happenings in Diesel and why it is that a systems language needs an ORM, anyway. What is the difference between traits in Rust and typeclasses in Haskell? What is a pure function? Why Rust Ditched Pure Functions The ActiveRecord and DataMapper patterns (not libraries) as defined by Martin Fowler in Patterns of Enterprise Application Architecture Zero-cost abstractions in Rust by Aaron Turon. What should Diesel associations look like? Iron and Nickel web frameworks for Rust. Adapterizing storage for ActionCable - Thanks Jon Moss! Moving ActionCable from Celluloid to ConcurrentRuby - Thanks Mike Perham!

48: Is Everyone Trying Their Best?
Software is broken. In this episode, Derek and Sean discuss why exactly it's broken, and what we can do to make it better. The origin of "software engineering" The Coq Proof Assistant NASA's 10 rules for developing safety critical code The differences between strong and static typing "If it compiles it works" Derek adds IS NULL to Diesel "Quickcheck in Ruby" Note: Shopify is fewer than 700 developers

47: Star Wars Oranges
Ruby 2.3 is out! What are we looking forward to trying and what do we think of &. and try? Stick around after the credits for spoiler-filled discussion of Star Wars: The Force Awakens Star Wars Fruit What is Kerberos? Safe navigation operator (AKA the lonely operator) by Georgi Mitrev ActiveSupport’s #try might not be doing what you think it’s doing by Avdi Grimm The history of try in Rails a comment from Myron Marston In Ruby, &method Passes You! Hash#dig Hash Comparison in Ruby 2.3 by Olivier Lacan did_you_mean by Yuki Nishijima. Immutable Strings in Ruby 2.3 by Alexis Mas Multiline strings in Ruby 2.3 - the squiggly heredoc by Damir Svrtan

46: Don't Breathe, Save the Planet
We discuss the maintenance burden of ActionCable and its dependencies on Rails 5, follow-up on Scenic issues, and discuss implementing migrations anew in Diesel. Don't Breathe DHH on The Bike Shed DHH's ActionCable Demo Fixing Scenic view dumping Updatable materialized views in Scenic A first pass at Diesel migrations Teachable moments

45: I Think I'd Prefer An Error to Nonsense
Derek shipped Scenic 1.0, which spurs a conversation about semantic versioning and the value of the 1.0 milestone. We discuss what the bar for breaking changes in a library should be and look at some specific changes on tap for Scenic and whether they will or should carry a major version bump. Scenic Semantic Versioning - See points 4 and 5 Implementing Multi-Table Full Text Search with Postgres in Rails Issue handling view dependencies in Scenic migrations and a potential partial solution The trouble with SELECT * in Postgres views Appraisal Scenic smoke tests

44: It Won't Crash... It Might Crash
Sean has shipped early versions of Diesel, an ORM for Rust! We discuss its semantic versioning, the ergonomics of use versus the complexities of implementation, early issues with the API and the road to Diesel 1.0. Diesel Semantic Versioning SemVer for Library Maintainers by Richard Schneeman Rust RFC 1122 - Language SemVer Lobsters API hole in diesel updates Implementing IS NULL and IS NOT NULL for Diesel Diesel issue for migrations Crates.io PR for using Database behavior

43: That's DOCTOR Internet Technologist
We talk about lessons learned from teachable moments both in the moment and decades later. Teachable moment Safe Operations for High Volume PostgreSQL by Paul Gross How to Create Postgres Indexes Concurrently in ActiveRecord Migrations by Dan Croak PostgreSQL COPY FROM Guarding against truncating the production database in Suspenders Have Some (Referential) Integrity with Foreign Keys "Inheritance is not for sharing code" tweet from Sarah Mei "Inheritance is for specialization, not for sharing code" from Sandi Metz' "Nothing is Something" talk at RailsConf Let's Not by Joe Ferris Mystery Guest by Dan Croak A modem pool Diesel née YAQB

42: That's Incredibly Ambitious (Grayson Wright)
We speak to Grayson Wright about building Administrate, an open source Rails framework for administrative interfaces. What makes Administrate different than existing solutions and what are the challenges in maintaining high-level dependencies. Announcing Administrate Administrate on GitHub Administrate Demo Bourbon and Neat Responsive tables Spree Keep A Changelog Clearance's NEWS file Code For America Grayson on Twitter

41: Ugh, I Have to Write Web Apps in This Thing
Derek and Sean talk about Derek's exploration into Elixir and Phoenix, when and how performance matters, and ways to keep your Rails app fast from day 1. The Elixir Programming Language Phoenix Web Framework Announcing Ex Machina ex_machina on Github touches are now batched in Rails 5 Basecamp 3 Source Code Bullet and Rack MiniProfiler Railing About Performance with Sam Saffron A Client Project, Two Years Later Derek at a Coworking Space

40: ActiveRecord Deprecated Persistence
The ActiveRecord update API is a mess of methods that confuse even ActiveRecord’s maintainer. What are the problems and is there any hope for a solution? 40 Prevent Information leaking In Rails Different ways to update in Rails The Perils of Uniqueness Validations disable with is default in Rails 5 The Bike Shed #11: Forming Opinions

39: Okay with Instability (Yehuda Katz)
We talk with Yehuda Katz about how much risk is right for you and your app, the sharp tools of high level abstractions, and how our statistical intuition leads us astray on web performance. Remove The Stress, Pick a Deadline Writing Software by DHH Skylight The Log Normal Reality - On how our statistical intuition leads us astray. Yehuda on Twitter

38: Ugh, Forms
Laila and Derek discuss how they have handled forms with complex validation requirements and how to make these forms have a smooth user experience. HTML Form Validations HTML5 Validation Browser Support Parsely JS Client Side Validations SimpleForm 7 Ways Form Accessibility Can Boost Conversions

37: The Web is Faster Without Garbage
Begun, the ad block wars have. Derek debugs an issue that arises from iOS ad blocking and wonders if analytics will move back to the server side. Sean fills us in on how dirty checking works in ActiveRecord and how he's making it faster and better in Rails 5. Sean and his wife in a hot air balloon iOS 9 Content Blockers The Cost of Mobile Ads on 50 News Websites Do No Track HTTP Header ActiveModel Dirty API ActiveRecord Dirty

36: Python Unchained
Derek and Laila talk about learning Python and Django and discuss how thoughtbot adopts new languages, frameworks, and libraries. What factors influence adoption? How do we share what works and doesn't work? Writing your first Django app The Python Tutorial Django URLs Django filters Learn You A Haskell For Great Good CIS 194: Introduction to Haskell Two Scoops of Django Ruby Science Suspenders thoughtbot's research board Validating Schemas with an RSpec Matcher json_matchers scenic

35: GitHub Ate My Résumé
Sean and Derek explain why you should always use a personal email address in your Git configuration before they dive into Ruby exception handling, and potential MRI proc optimizations. Set your Git email address to an address you own "forever". Git .mailmap Jobs at thoughtbot rest-client Ruby's Kernel#raise documentation Ruby's Exception#cause documentation Spring overrides raise, but feels uneasy about it. Exceptional Ruby by Avdi Grim. Proc#=== documentation. Upcase: 50% Off Your First Month For Bike Shed Listeners!

34: README.md
Derek is joined by Laila Winner to discuss Neo4j, the importance of fantastic documentation, and the different types of documentation a project requires. PLIBMTTBHGATY Neo4j Teach, Don't Tell Let's talk about ecosystem documentation - Grading documentation of the top 40 crates in Rust. FactoryGirl Getting Started Clearance SignInGuard documentation Rails Security Guide Jobs at thoughtbot Laila on Twitter

33: Just Put it in a Module, Man
Sean and Derek take some listener questions, and dig into DRY. DRY Single Responsibility Principle (SRP) Inherited Resources Sandi Mets - All The Little Things Sign up for Sandi Metz's "Chainline" newsletter Sunk cost fallacy "Inheritence is not for sharing code" Eric Hayes' Rails PR Larry Bird Thanks for sending us your questions and feedback. Got more? You can email us at [email protected] or tweet us.

32: Bug For Bug Compatibility
Derek and Sean discuss Microsoft's interest in open source, improving the Rails development story on Windows, and Sean's progress implementing an ORM in Rust. Developing on Windows PowerShell Cygwin Does Windows fork? Modern.ie ievms Internet Explorer compatibility mode PostGIS Using Arel to Compose SQL Queries Ransack Rust specialization Rust grapples with orphan instances Sean's in-progress Rust ORM

31: Oxidizing an ORM
Are provably correct queries of interest to you? Sean gives a rundown of what a Rusty ORM might be like to build. String, str, and CStr. What's a marker trait? Rust macros. Rust compiler plugins. hy·gien·ic ˌhī-ˈjē-nik, -ˈje- also -jē-ˈe-nik Sean's ORM query thoughts

30: Just Go to Slash Wibble
Derek and Sean discuss hypothetical changes to Rails routing before turning their attention toward hunting memory bloat and the proposal that strings be frozen by default in Ruby 3. The Bike Shed listeners make disable_with default on submit_tag Derek tries to explain the trouble with unrestricted routes to a client. The trouble with singular resources and form_for Use derailed benchmarks to find memory leaks and bloat. ActiveRecord memory bloat Matz: String literals frozen by default in Ruby 3 The issue for discussion because Twitter is terrible for these things. The trouble with symbols Required keyword argument syntax is ugly.

29: Django Unchained (Mike Burns)
Sean is joined by Mike Burns to discuss what Ruby and Rails can learn from Python and Django. Mike Burns Python's map Django George's Sleeping with the Enemy talk from RailsConf 2013 A False Midnight Python doctest Python Decorator Library

28: Minisode 0.1.1
Did you know Rails has no integration test suite? What could go wrong? ActionController::Parameters no longer inherits from Hash

27: I've Got 29.97 Problems (and codecs are some)
Sean and Derek circle back on HTTP before diving into unsafe rust, and finally the merits of a small standard library. HTTP2 implementation status libffmpeg unsafe rust uninitialized memory in Rust stdx - the missing batteries of Rust NPM 3.0.0 NPM Shrinkwrap

26: My Cache is in the Cloud
This week, Sean and Derek discuss performance and inheriting code. In a stroke of complete madness, Derek decides that turbolinks isn't that bad. Spree Browserscope network profile details RFC2616 is Dead Original HTTP/1.1 connection limit Updated HTTP/1.1 connection specification removes the specific limit cloud-to-butt turbolinks jquery.turbolinks async script loading Disabling form buttons with disable_with FOUT: flash of unstyled text

25: Throwing the Schema Out With the SOAPy Bathwater (Gordon Fontenot)
Derek is joined by Gordon Fontenot for a discussion of the JSON API specification, problems consuming it from Swift, and the future of functional programming in Swift. This episode of The Bike Shed is sponsored by: Code School: Entertaining online learning for existing and aspiring developers. Leave a review on our iTunes page to be entered to win a free month of Code School. Links / Show Notes JSON API Argo: Functional JSON parsing in Swift Swift Optionals Spine: A Swift JSON API client Curry: Swift framework for function currying. HAL: Hypertext Application Language SOAP JSON Schema Runes Build Phase- For more of Gordon's insight into baseball and iOS development Gordon on Twitter Cookie Clicker Swarm Sim

24: You Look Good in a Lab Coat (Richard Schneeman)
Richard Schneeman joins The Bike Shed to discuss ruby memory use, horizontal scaling, and tackling open source issues big and small. This episode of The Bike Shed is sponsored by: Code School: Entertaining online learning for existing and aspiring developers. Leave a review on our iTunes page to be entered to win a free month of Code School. Links & Show Notes Speed Science - Richard's Railsconf 2015 talk mail gem memory use mime-types memory use Deprecate *_path methods in mailers XKCD: Evey change breaks someone's workflow Why does 6 times 9 equal 42? The Language Strangeness Budget Code Triage Docs Doctor Ruby Together Keep Ruby Weird Richard on Twitter

23: Why Did They Call it Rust?!
Sean gives Derek a tour of Rust, a new systems language from Mozilla. This episode of The Bike Shed is sponsored by: Code School: Entertaining online learning for existing and aspiring developers. Leave a review on our iTunes page to be entered to win a free month of Code School. Rust The Rust Programming Language Guaranteeing Memory Safety in Rust Rust traits Cargo include_str! Pattern matching in Rust

22: No Capes! (Eileen Uchitelle)
Eileen Uchitelle joins the show to discuss performance improvements to ActiveRecord, speeding up integration tests, and contributing to or running open source projects. This episode of The Bike Shed is sponsored by: Code School: Entertaining online learning for existing and aspiring developers. Leave a review on our iTunes page to be entered to win a free month of Code School. Links & Show Notes No Capes! CRUD! The Consequences of Not Understanding How ActiveRecord - Eileen's Midwest Ruby Talk fix delete_all to remove records directly How To Performance - Eileen's talk from GORUCO Breaking Down the Barrier: Demystifying Contributing to Rails - Eileen's lab from RailsConf Eileen on Twitter

21: The "Best" Canada (Godfrey Chan)
Rails Core Team member Godfrey Chan joins the show to demystify rails bug hunting and contributing. Godfrey's RailsConf talk: Prying Open The Black Box The Waltons Say Goodnight Canada gem Rails Bug Templates Rails Contributing Guide Travis Container Infrastructure Vancouver Ruby Group Godfrey on Twitter

20: Intentionally Excruciatingly Painful
We're joined by Josh Clayton to discuss our differing strategies on testing view behavior, strategies for dealing with brittle feature specs, and what types of tests each of us favor. Verifying partial doubles Decent exposure Defining helpers directly on the view in view specs Don't stub the system under test Clearance Back Door Automatic form filling driven by i18n and Factory Girl with Formulaic Mystery guests Using data attributes to decouple data from presentation Testing pyramid Shoulda Matchers Consistency Fail Josh Clayton on Twitter

19: The Oncoming Storm (Sam Phippen)
Derek and Sean are joined by Sam Phippen from the RSpec core team to discuss RSpec mocks, testing strategies, and minitest. RSpec 3 adds composable matchers Spies were added to RSpec in 2.14 Using any_instance to test legacy code minitest RSpec's stub_const method. Don't Stub the System Under Test assigns and assert_template are deprecated in Rails 5 Sam's RailsConf talk: Understanding Rails Test Types in RSpec Fun & Plausible Solutions Sam on Twitter

18: This Podcast is Rigged (But Not Animated)
Sean and Derek discuss rails asset dependencies before diving into an overview of animation techniques and C extensions. Rails Assets Gemify Assets for Rails Non-digested asset names in Rails 4 Animation Rigging Unreal Engine Unity Physically Based Rendering The Carmack Constant or Fast Inverse Square Root Bending the Curve: Writing Safe & Fast Native Gems With Rust

17: Railing About Performance (Sam Saffron)
We chat with Sam Saffron about performance, benchmarking, and database migration strategies. Sam Saffron Discourse rack-mini-profiler stackprof RubyBench default_scope SQL Views Scenic - Database view support in Rails Grafana Docker Types of Rails schema dumps Message Bus Logster Feedback? You can tweet us, email us, or leave a comment on our website.

16: Wizards Are Hard to Kill
Grab Bag! Derek and Sean talk about math, augmented reality, RailsConf wrap up, Minimum Viable Products, Accessibility... Homography Isomorphism Homomorphism Sean's Augmented Reality PoC Kerbal Space Program Derek's talk on Cultivating Code Review Culture Sean's talk on Designing a Great Ruby API Attributes API documentation Minimum Viable Product Chandra Carney's talk on Programming with Accessibility in Mind Nothing is Something by Sandi Metz Sometimes a Controller is Just a Controller by Justin Searls

15: Might As Well Be About Trains (Sarah Mei)
Sean, Derek, and Sarah Mei talk about conference speaking, refactoring, and OO vs FP problems. Sarah Mei What Your Conference Proposal Is Missing Conway's Law Will Ruby 3.0 Be Statically Typed? Sarah on Twitter

14: An Acceptable Level of Hassle (David Heinemeier Hansson)
This week, we're joined by DHH and discuss microservices, monoliths, shared abstractions, and the fate of Action Cable. DHH's Keynote Microservices Sacrificial Architecture Scaling Mercurial at Facebook has_secure_password BCrypt Request Forgery Protection error_messages_for removed in Rails 3 Sandi Metz on the cost of the wrong abstraction WebSockets Event Machine Faye Basecamp

13: Begrudging Applause (Aaron Patterson)
Live from RailsConf, Aaron Patterson joins the show to talk about Rails 5, Rack 2, Contributing to Open Source, and cats. We also field audience questions. Video-version of this podcast! DHH's RailsConf Keynote Aaron's RailsConf Keynote Action Cable Long Polling TurboLinks Ember RFC Process Rack 2 Neko Atsume (also on Android) Ruby Together Chicken Scheme Awful Offal Node/IO Fork Agile Web Development With Rails Cells

12: A Poor Man's binding.pry
Derek and Sean talk about naming, debugging, and the anxiety of conference talks. Sean fixes Android tooling in one line. Martin Fowler on naming objects after patterns Dash for OS X Alfred for OS X The beauty of Intellisense in Visual Studio Derek's bundle search command Ruby Mine Sean's talk at windy city rails How to talk to Developers by Ben Orenstein

11: Form-ing Opinions
Sean and Derek talk about the state of Android tooling, refactoring journeys, and an approach to rails form objects. Dalvik executables limited to 65,536 methods ProGuard Stylesheet limits in Internet Explorer A refactoring jounrney in animated gif form. Simple Form wrappers ScalaForms Type-safe URLs in Yesod Django forms Batching up touch calls Issues with uniqueness validations

10: I Don't Get Functional Programming
Pat Brisbin joins Derek to discuss the many advantages of Haskell programming. note: at 27:01 Pat says "referential integrity" when he meant "referential transparency"; he's very sorry. Maybe Haskell 50% off xmonad tiling window manager Learn You A Haskell Carnival - Open source, Haskell-powered commenting for the Giant Robots Blog Pointfree Style How to say dots and dollars The Maybe data type The Incomplete Guide to Lazy Evaluation (in Haskell) Building Haskell Projects with Halcyon

9: Monorails, For the Kids
Sean and Derek discuss Monoliths, Service Oriented Architecture, and the new Adapter Specific Type Registry in Rails 5. Guest Sean Furret Haskell and tmux Upcase trails. Hashie Considered Harmful Adapter Specific Type Registry

8: Attributes API, Relation#or, Paid Open Source
Derek and Sean discuss what the Attributes API enables, the addition of Relation#or and paid open source. Sean's attributes API is "finished" Attributes API documentation PostGIS ActiveRecord Adapter composed_of Yehuda's RailsConf Keynote on the power of shared abstractions. Ernie Miller's RailsConf talk on the consequences of Rails' abstractions. load_schema makes sense now. DelegateClass Steve Klabnik tweets about companies not giving back significantly to Ruby open source Sean speeds up &block on MRI and jRuby

7: At the Car Wash
Derek and Sean talk trade schools, sneaky bugs, bad method names, before_filters, and the Superbowl. Turing School and Metis trade schools. "Car Wash" by Rose Royce Sean introduces accessed_fields to the ActiveRecord Attributes API. Peek for insights into your rails app. Bullet for hunting down N+1 queries and unused eager loading. What does Faraday middleware look like? The Clearance redirect loop Derek introduced and fixed. before filter and its friends have been deprecated in Rails 5.0 The various ways people set instance variables in Rails controllers. read_attribute_before_typecast problems from _before_type_cast dirty checking causes errors RangeError s are hard (Sean's solution to the test placement problem was to not commit the test)