PLAY PODCASTS
The Bike Shed

The Bike Shed

499 episodes — Page 10 of 10

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!

Jan 27, 201634 min

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

Jan 21, 201634 min

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

Jan 13, 201654 min

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

Jan 6, 201634 min

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

Dec 23, 201547 min

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

Dec 17, 201547 min

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

Dec 9, 201550 min

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

Dec 2, 201537 min

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

Nov 25, 201535 min

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

Nov 18, 201534 min

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

Nov 11, 20151h 7m

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

Nov 3, 201540 min

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

Oct 29, 201544 min

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

Oct 15, 201550 min

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!

Oct 7, 201540 min

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

Sep 29, 201538 min

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.

Sep 22, 201540 min

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

Sep 15, 201550 min

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

Sep 8, 201548 min

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.

Sep 1, 201546 min

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

Aug 25, 201523 min

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

Aug 18, 20159 min

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

Aug 11, 201543 min

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

Aug 4, 201533 min

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

Jul 28, 201551 min

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

Jul 21, 201541 min

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

Jul 14, 201543 min

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

Jul 7, 201538 min

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

Jun 30, 201523 min

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

Jun 23, 201541 min

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

Jun 16, 201529 min

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

Jun 9, 201539 min

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.

Jun 2, 201546 min

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

May 27, 201536 min

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

May 19, 201531 min

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

May 12, 201554 min

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

May 5, 201553 min

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

Apr 17, 201531 min

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

Apr 3, 201537 min

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

Mar 20, 201540 min

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

Mar 6, 201534 min

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

Feb 20, 201537 min

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)

Jan 30, 201548 min

6: Shh! Library Under Maintenance

Sean and Derek discuss thoughtful deprecations, backwards compatibility, and other joys of library maintenance. Trailblazer Clearance Ember 2.0 - Stability without Stagnation Ruby 2.2 on Rails 3.2. Now merged, but unreleased. The original removal of ARel type casting Narrowing the scope - a less impactful ARel deprecation Rails changes to accompany the ARel API changes. An example of an issue these refactorings solve.

Jan 16, 201542 min

5: Rails is Not Your Architecture

Derek and Sean discuss various ways of taking the Rails out of your Ruby on Rails application, what folder to put your files in, and the difficulties and rewards of learning new programming languages. Rails Does Not Define Your Application Architecture What the hell is a service object? Fuzzy file finding with ctrl-p Query Objects Uncle Bob's Clean Architecture Form Objects Scala Play forms Haskell Yesod Forms But Pointfree Has More Points!

Dec 31, 201439 min

4: Put Everything on the Front End

Derek and Sean discuss hunting Rails performance regressions and techniques for improving performance in your web applications. Speeding Up Rails 4.2 StackProf Flame Graphs 5 Reasons to Use Protocol Buffers Instead of JSON For Your Next Service Key Frames Binary Search Algorithm Writing Fast Ruby from Erik Micahels-Ober The select and pluck methods Fragment Caching Exposing CSRF token refresh in the jQuery UJS public API. Postgres Explain Plans Implementing Multi-Table Full Text Search with Postgres in Rails Creating database views in Rails with Scenic Tweet us @_bikeshed or send us email

Dec 12, 201438 min

3: Flipping the Script

Sean and Derek take a fresh look at the tradeoffs in writing CoffeeScript and whether we should be using an ES6 transpiler instead. destructiring assignment in JavaScript function currying in CoffeeScript The existential operator in CoffeeScript Stockholm syndrome CoffeeScript writes better JavaScript than you ES5 Compatibility Chart: When can I use map, reduce and forEach? Underscore.js removes fallbacks to native ES5 array functions Safari's LLVM-optimized FTL JIT Compiler ES6 Transpilers traceur and ESNext ES6 Features A plethora of JavaScript build tools ES5 strict mode Sprockets road map for source maps support

Nov 28, 201425 min

2: Rails 4.2

Derek and Sean discuss Sean's commit access to Rails, what's coming in Rails 4.2, and how to go about making Rails code better. Ylan Segal wrote us to raise a clarification on one of Sandi's rules discussed in episode #1. Ernie Miller's RailsConf Talk The Rails 4.2 release notes. Sean's work on the attributes API. Aaron Patterson explains Adequate Record Aaron Patterson discusses adequate record, rails, and other topics on Giant Robots #100. Active Job Global Id Web Console Foreigner and Immigrant are a good foreign key combination today with Foreigner subsumed by 4.2. transform_values Responders Derek's unDRY Rails Commit. Thanks to Rachel Cope and Reda Lemeden for our great artwork.

Nov 17, 201435 min

1: Sandi & Derek's Rules

Sean and Derek discuss lessons learned from following Sandi Metz' rules on a project and the overall impact of rules on code. Sandi Metz' Rules Ruby Rogues, episode #87, where Sandi tells us the rules at 1 hour, 18 minutes, 27 seconds in. Practical Object Oriented Design in Ruby, or POODR, is an excellent book you should all check out. God classes thoughtbot's Ruby style guidelines wherein we disavow ternary operators and conditional modifiers. The facade pattern Guard clause Ruby's method_added method.

Oct 31, 201427 min