Test DoubleJustin Searls has been giving presentations at conferences and meetups for over a decade, and he's designed an approach that's guaranteed to keep people's attention and leave a meaningful impact on audiences. Here are his top ten tips for everything from having your talk submission accepted in a CFP to designing a slide deck to dealing with the nervousness you might feel about getting on stage.
You can see a few of Justin's past talks on YouTube:
Secrets of Great Conference Talks - Practical Public Speaking AdviceTest Double2023-12-12 | Justin Searls has been giving presentations at conferences and meetups for over a decade, and he's designed an approach that's guaranteed to keep people's attention and leave a meaningful impact on audiences. Here are his top ten tips for everything from having your talk submission accepted in a CFP to designing a slide deck to dealing with the nervousness you might feel about getting on stage.
You can see a few of Justin's past talks on YouTube:
Read more here: http://blog.testdouble.com/talks/2023-12-12-how-to-start-speaking-at-conferencesSoftware consultancy driven by purpose, not profitTest Double2024-06-14 | Test Double is a software consultancy driven by purpose, not profit. Our co-founders had a mission to improve how the world builds software. An intentional focus on sustainable growth and culture means we're now in our second decade of solving hard software problems.
We used to feel like we were different, and now we know we're certifiably different: Test Double is certified Evergreen by the Tugboat Institute.
Find out more about the seven principles of Certified Evergreen companies: 00:00 The humble evergreen 00:47 Evergreen businesses 01:17 Purpose 01:37 Perseverance 02:02 People First 02:24 Private 02:48 Profit 03:07 Paced Growth 03:25 Pragmatic Innovation 04:09 Test Double is certifiably differentWere hiring a creative, get stuff done Senior Content ManagerTest Double2023-07-31 | Are you a stand out content marketer?
We're seeking a marketer who is skilled in: - 💫 creative copywriting - 🔎 empathetic editing - 💻 pragmatic promotion
You might be a good fit as Senior Content Manager at Test Double if ... 1. You seamlessly shift from SEO to editing video to social copy—and you're driven to navigate how content evolves. 2. You coach people to improve their content through editing—and you help them sharpen what they have to say. 3. You apply a growth mindset to promoting content—and you seek out content marketing tools for low-friction results.
More info about working at Test Double: link.testdouble.com/sr-content-mgr-info Apply: link.testdouble.com/sr-content-manager-job-postForecasting the Future: Intro to Machine Learning in Ruby (RailsConf 2023)Test Double2023-07-24 | Inspired by a desire to understand why more engineers weren't using Ruby for their machine learning (ML) projects, I embarked on a journey to determine if I could build a project to do something non-trivial using ML in Ruby. Once again, it turns out that you can indeed use Ruby to do amazing things! By leveraging various libraries, building machine learning models becomes a breeze.
There is a large array of tools, libraries, and resources available that help facilitate the construction of ML models for Rubyists, and the list keeps growing. Now has never been a better time to dive into machine learning and build interesting projects. It is clear that AI has dramatically shaped the software industry. As such, it makes sense that Rubyists will also partake in these rapidly evolving technologies and create tools and applications never before thought possible!
More info and resources on the Test Double blog at blog.testdouble.com/talks/2023-07-24-forecasting-the-futureZero downtime Rails upgrades (RailsConf 2023)Test Double2023-07-23 | No one likes working on Rails upgrades, and who can blame them? They can be thankless, time-consuming, and—worst of all—unpredictable. How long will they take? When can we get back to feature work? What’ll break when they’re deployed? It’s tempting to say, “Let’s do it later,” but later is usually never. Instead of living in fear of the big, scary Rails upgrade, your team can set up systems for incremental change that let you:
- continue feature work - deliver predictable results - seamlessly jump into the next upgrade (because there’s always a next upgrade)
And Ali is gonna show you how.
In the years since he's worked on upgrading Rails at GitHub, Ali refined an approach to Rails upgrades and successfully implemented it at several organizations. In this talk, you’ll learn everything you need to burn down uncertainty and boldly go into your next Rails upgrade.
More on the Test Double blog, including resources, at blog.testdouble.com/talks/2023-07-23-zero-downtime-rails-upgradesThe end of legacy code (RailsConf 2023)Test Double2023-07-19 | What if you could change your relationship with legacy code, and shed the weight the name brings with it? What if legacy code disappeared? In this RailsConf 2023 talk Daniel Huss shares how.
If we try to approach legacy code with a fresh perspective, we can find opportunities to smooth out the rough edges and make it easier for other devs, and our future selves to work with.
If we don't, we risk pushing ourselves and the team we're on into a salty mindset, and towards burnout.
By eternally onboarding to a legacy system, we can help take pressure off our code so it's not responsible for things code is bad at doing.
More on the Test Double blog at blog.testdouble.com/talks/2023-07-19-end-of-legacy-codeLets Standardize Rails (RailsConf 2023)Test Double2023-05-31 | At RailsConf 2023, we conducted an experiment: could attendees do the hard work for us by voting on RuboCop rules so we could publish the Standard Rails plugin?
In this talk, @JustinSearls & Meagan Waller worked with the audience to lay the groundwork for Standard Ruby’s first plugin: standard-rails. Together, we crowdsourced some of the thorniest questions once and for all, saving your (and every other) Rails team the time of having to do it all over again. Try it yourself at github.com/standardrb/standard-rails
More on the Test Double blog at blog.testdouble.com/talks/2023-05-30-lets-standardize-railsRubyKaigi 2023 - Interviewed Kokubun Just-In-TimeTest Double2023-05-13 | That's it—RubyKaigi 2023 is a wrap! I sat down with Kokubun-san to discuss his talk on RJIT, things he enjoyed about the conference, and why we should look forward to traveling to RubyKaigi in Okinawa next year.
I hope you'll come! For more of our coverage on RubyKaigi, check out our Field Report blog.testdouble.com/field-reports/ruby-kaigiRubyKaigi 2023 - Meet the Organizer, Akira MatsudaTest Double2023-05-12 | If you've never met him, Akira is a great person to know! He is the lead organizer for both RubyKaigi (@rubykaigi4884) and Asakusa.rb, the premier Ruby weekly(!) meetup in Tokyo.
Over the past six years he's transformed Kaigi into a traveling conference that has introduced countless domestic and international Rubyists to new cities in Japan like Kyoto, Fukuoka, and now Matsumoto. While I couldn't get him to divulge the location of next year's conference (we'll have to wait for tomorrow), if you've ever been interested in coming to the conference, I hope you'll consider watching to understand his goals and priorities in the design of each event!
You can follow our ongoing RubyKaigi 2023 coverage at @TestDouble's blog here: blog.testdouble.com/field-reports/ruby-kaigiRuby Kaigi 2023 - Aaron Patterson InterviewTest Double2023-05-11 | It's the first day of RubyKaigi 2023 in Matsumoto Japan! Before Matz kicked off his keynote, Aaron Patterson (@tenderlove) and I sat down to discuss the conference, his experience at Keyboard Kaigi, what he's looking forward to at the conference. We also went into detail about the next generation of Ruby parsers, the challenges Ractor has faced since its debut, and why UTF-8 is such a sociopolitical issue in East Asian countries that need multiple bytes to encode their languages' characters.
This interview was part of @TestDouble's Field Report for the event. Check it out here: blog.testdouble.com/field-reports/ruby-kaigiStandard Ruby Update Live StreamTest Double2023-04-19 | Test Double's Camilo Payan and Daniel Huss share the latest rule changes adopted by Standard Ruby in our monthly update for April 2023.
#shortsStandard Ruby Update Live StreamTest Double2023-03-15 | Test Double's Camilo Payan and Josh Justice share with the community the latest rule changes adopted by Standard Ruby in our monthly update for March 2023.
About Standard Ruby: github.com/testdouble/standard About Test Double: testdouble.com/agencyTest Double Live StreamTest Double2023-03-10 | ...What is a Meta Programmer?Test Double2023-02-28 | What does it mean for a founder to go back to being an individual contributor at their own company? @JustinSearls is about to find out!
Read about it at blog.testdouble.com/talks/2023-02-28-what-is-a-meta-programmerSustainable LearningTest Double2023-01-30 | How do you keep your software development knowledge up-to-date as new languages, libraries, and platforms are released? The amount of information out there can be overwhelming. In this talk, Josh Justice shares an approach to learning that can help you avoid mistakes that may be hindering your learning, make the flow of information manageable, solidify your skills, and feel motivated all along the way.
[01:48] Cyclical Learning Overview [02:19] 1. Observe [04:18] 2. Capture [09:33] 3. Focus [12:18] 4. Understand [13:40] 5. Practice [15:17] 6. Reflect [17:01] 7. Record [20:08] 8. Share [21:37] Review and putting it into practice
Legacy systems are unwound and detangled. Teams emerge happier and healthier. Leaders get maintainable software at a sustainable pace.
We embed with teams who care about great code. Is that you?
More about what we do at link.testdouble.com/get-to-a-better-placeDo More with Less?Test Double2023-01-05 | In a world where budgets shrink, but scope doesn't ... people start saying "work smarter." What does that even mean?
Burst capacity to hit today's deadlines, strategies to make tomorrow's goals attainable. We get your team unblocked, accelerate software delivery, and improve things along the way.
We embed with teams who care about great code. Is that you?
More about what we do at link.testdouble.com/do-more-with-less-work-smarterBuilding a Linkblog with Hugo, Tailwind, and NetlifyCMSTest Double2022-11-23 | With Twitter on shaky ground, there's a sudden interest in open social platforms and protocols as well as a return to hosting traditional web sites and blogs. But because we've become accustomed to low-friction publishing workflows (type a bit in a box, click Tweet), routinely writing real blog posts can feel daunting.
This video provides a brief overview of one way to organize a personal blog that's structurally similar to daringfireball.net—allowing for short-and-sweet posts—but with modern architecture of Hugo for static site generation, Tailwind for styling, and Netlify (plus NetlifyCMS) for hosting and on-the-go publishing—enabling very low-friction publishing.
* Hugo - gohugo.io * Tailwind - tailwindcss.com * Netlify - netlify.com * NetlifyCMS - netlifycms.org * Justin's CSS overrides to make NetlifyCMS more mobile-friendly -gist.github.com/searls/7fd2c3223571a58a81006e7da66bd064A Better Way to Sort Ruby ObjectsTest Double2022-09-28 | Ruby offers a super convenient method for sorting complex objects in Enumerable#sort_by. But when sorting by multiple conditions or dealing with potential nil values, things get messy in a hurry.
This video shows off a common (but little-discussed) technique for building `sort_by` blocks that return prioritized arrays of values and then demonstrates how our new Put gem can accomplish the same thing with a cleaner and more expressive API that provides nil safety.
02:10 – Using Enumerable#sort_by with multiple conditions
12:10 – How to use the Put gemHow to Debug Rails 7 with VS CodeTest Double2022-08-23 | If you use Visual Studio Code to write Ruby on Rails, you should absolutely be using Kocihi's vscode-rdbg extension for the new-and-improved Debug gem that shipped with Ruby 3.1
If you’re looking for another talk on this topic, consider watching the companion talk, Please don’t mock me: blog.testdouble.com/talks/2018-03-06-please-dont-mock-me It’s a much longer talk, and so it takes the time needed to discuss some of the patterns and pitfalls to keep in mind when using test doubles in your tests.End-to-end Testing with Cypress Series: 08 DRY Test SetupTest Double2022-04-27 | In this video, learn how duplicated test setup steps can make Cypress end-to-end test suites unmaintainable. Discover how to use helper functions like `beforeEach` and how to configure Cypress with the cypress.json file in order to simplify and reduce repeated test setup.
Chapters 00:00 Intro 00:09 Recap of previous video 00:21 Learning goals for this video 00:36 Reminder instructions for running demo app and Cypress test suite 00:48 Identifying duplicate `cy.visit` calls in each end-to-end test 01:17 Make `cy.visit` automatically run before each test with `beforeEach` 01:55 Cypress ensures `cy.visit` completes before running each test 02:02 Remove previously duplicated `cy.visit` calls and save 02:07 Verify end-to-end tests still visit initial page and run successfully 02:15 Expand Cypress command log to see the`visit` command inside BEFORE EACH 02:32 Duplicating hardcoded URLs can make Cypress test suites unmaintainable 02:55 Configuring Cypress to know the base URL for all visited URL paths 03:05 Explaining the cypress.json file for configuring Cypress test suites 03:24 Add the `baseUrl` to cypress.json 03:45 Save file to see Cypress reload the spec file list 04:01 Replace URL in end-to-end spec file with root path / and save 04:12 Open up spec file again from Cypress list of spec files 04:17 Verify end-to-end tests run successfully 04:35 Link to other configuration options available in cypress.json 04:43 Recapping what you learned 04:59 Summary of different ways duplication affects Cypress test suites 05:17 Conclusion and next module teaser
Find out more about Test Double at link.testdouble.com/more-infoEnd-to-end Testing with Cypress Series: 07 DRY for SpeedTest Double2022-04-22 | In this video, learn how creating similar Cypress tests can slow down your end-to-end test suite. Find out how to measure the runtime of your end-to-end test suite, consolidate similar Cypress tests to speed up your test suite, and learn the tradeoffs between combining end-to-end tests and keeping them separate.
Chapters 00:00 Intro 00:09 Recap of previous video 00:19 Learning goals for this video 00:39 Reminder instructions for running demo app and Cypress test suite 00:51 Identifying another user scenario for a happy path end-to-end test 01:22 Copy and paste a previous end-to-end test for the new test 01:30 Use `it.only` to temporarily only run the new test 01:37 Modify pasted Cypress test for the new user scenario under test 02:16 Save file to verify new happy path test runs successfully 02:29 Reminder that end-to-end tests are slow 02:43 Use `it.only` to additionally run the previous “update task” test 02:59 Analyzing Cypress end-to-end test suite runtime 03:23 How slow end-to-end tests impact developer productivity and builds 03:39 How to balance testing all user scenarios with the quantity of end-to-end tests 03:50 Identifying duplicated paths in similar end-to-end tests 04:26 Create a combined end-to-end test 05:08 Save file to verify combined happy path Cypress test runs successfully 05:18 Why combined happy path tests help speed up end-to-end test suites 05:37 Remove previous similar end-to-end tests and remove `it.only` 05:44 Recapping what you learned 06:15 Conclusion and next video teaser
Find out more about Test Double at link.testdouble.com/more-infoEnd-to-end Testing with Cypress Series: 06 DRY (Don’t Repeat Yourself)Test Double2022-03-24 | In this video, learn about the DRY (Don’t Repeat Yourself) principle and how it can affect end-to-end tests. After watching this video, you will be able to create reusable helpers for data setup in your own Cypress end-to-end tests.
Chapters 00:00 Intro 00:09 Recap of previous video 00:20 Learning goals for this video 00:31 What is the DRY principle (Don’t Repeat Yourself) 00:46 Problems with updating duplicated code in multiple places 00:58 Using code abstractions to reduce the amount of duplication 01:09 How does code duplication lead to issues in end-to-end tests 01:28 Reminder instructions for running demo app and Cypress test suite 01:40 How to identify the duplicated code in the current Cypress end-to-end tests 01:55 How to create a reusable helper function for end-to-end test setup code 02:09 How to replace duplicated test setup with the reusable helper function 02:17 Save file to verify Cypress end-to-end tests still pass 02:29 Recapping what you learned 02:46 Conclusion and next video teaser
Find out more about Test Double at link.testdouble.com/more-infoEnd-to-end Testing with Cypress Series: 05 Isolate Test StateTest Double2022-03-24 | In this video, learn how to isolate test state by adding another real-world, happy path end-to-end test with Cypress to the demo application. After watching this video, you will be able to prevent sharing persisted end-to-end test state and manage setup code for your own happy path tests.
You will also: - learn the dangers of saving persisted state between different tests - run specific tests with `it.only` - clear text inputs with the Cypress `clear` command - write explicit assertions with the Cypress `should` command
Chapters 00:00 Intro 00:09 Recap of previous video 00:25 Learning goals for this video 00:49 Reminder instructions for running demo app and Cypress test suite 01:00 How to identify a new happy path end-to-end test for demo app 01:16 Demo app backend server clears state on boot 01:24 Dangers of sharing persisted state between end-to-end tests 01:51 Isolating Cypress test state from other end-to-end tests 01:59 How to add new happy path end-to-end test with `it.only` 02:19 How to fill in setup code for new happy path test 02:58 Save file to verify setup code runs in the new test 03:03 Start adding actual test code to the happy path end-to-end test 03:26 Using Cypress’ `clear` command to clear a text input 03:43 How to add test assertions to the new happy path end-to-end test 03:56 Using Cypress’ `should` command for explicit assertions 04:26 Link for other Cypress assertion commands 04:31 Save file to verify new happy path test runs successfully 04:40 Change `it.only` back to `it` so all end-to-end tests run 04:46 Recapping what you learned 05:04 Conclusion and next video teaser
Find out more about Test Double at link.testdouble.com/more-infoEnd-to-end Testing with Cypress Series: 04 Happy Path TestsTest Double2022-03-24 | In this video, add your first real-world, happy path end-to-end test with Cypress to the demo application. After watching this video, you will be able to identify happy paths in your own applications and write Cypress end-to-end tests that mimic the flow of a real user.
You will also: - use Cypress commands such as `click` and `type` for interacting with forms - use other kinds of selectors with Cypress’ `get` command - learn the best kinds of selectors to use with `get` and why CSS classes are not good selector candidates
Chapters 00:00 Intro 00:09 Recap of previous video 00:14 Goals for writing your first Cypress happy path end-to-end test 00:33 Reminder instructions for installing and running demo app 00:47 Reminder to run the previous tasks.spec.js file 00:57 How to identify the first candidate happy path end-to-end test 01:12 Open spec file and start writing new test 01:25 How to find elements by text with the contains command 01:50 Matching actual text in the DOM, not CSS transformed text 02:16 How Cypress matches text with case sensitivity 02:26 Cypress alternatives to match text with case insensitivity 02:36 Use Cypress’ `click` command to click elements 02:40 Cypress commands like `click` are child commands 02:55 Save file to run new test and perform Cypress `click` command 03:03 Order of end-to-end tests in Cypress test results 03:11 Reviewing the result of clicking 03:15 Inspect the app inside Cypress using browser devtools 03:35 Using devtools to identify attributes to use to select an element 03:42 Mention of Cypress’ selector playground for inspecting elements 04:04 Selecting an element by an HTML attribute with Cypress `get` command 04:15 Using Cypress child command `type` to type text like a real user 04:29 Save file to rerun end-to-end test and see text typed into input 04:35 Challenges with database persistence and running end-to-end tests multiple times 05:05 Type unique titles to avoid selecting results from previous test runs 05:38 Save file to rerun end-to-end test and see Cypress type unique title 05:42 Using devtools in Cypress to find a selector for a select element 05:59 Recommendations for kinds of selectors to use 06:11 Issues with using CSS classes for selecting elements 06:23 Accounting for when selecting by text could be error-prone 06:36 Using specific attributes like `id` for selecting elements 06:55 Selecting and clicking the select element by `id` 07:06 Finding and clicking a select option element by its text 07:13 Save file to rerun end-to-end test and see Cypress select an option 07:21 Using devtools to find a selector for a textarea element 07:35 Selecting textarea by HTML attribute and typing a description 07:45 Save file to rerun end-to-end test and see Cypress type a description 07:49 Using devtools to find a selector for another select element 08:05 Finding select element by `id` attribute and clicking 08:11 Finding and clicking a select option element by its text again 08:17 Save file to rerun end-to-end test and see Cypress select an option again 08:23 Selecting a button by text and clicking it 08:33 Reminder about selecting text by case sensitivity 08:42 Save file to rerun end-to-end test and see saved task with success message 08:55 Adding a Cypress assertion to verify a task was created 09:21 Determining a selector to verify the specific task was created 09:30 Using `id` to select the project column that should contain the new task 09:41 Reminder of using unique titles to avoid selecting tasks from previous tests 09:51 Save file to rerun end-to-end test and verify task was created properly 10:04 Recapping what you learned 10:29 Conclusion and next video teaser
Find out more about Test Double at link.testdouble.com/more-infoEnd-to-end Testing with Cypress Series: 03 Real-world TestsTest Double2022-03-24 | After watching this video, you will know which scenarios to test in your application and how to structure end-to-end tests to improve test suite performance.
You will learn: - what real-world, happy path tests are - what unhappy path tests are - why end-to-end tests should cover realistic, happy path scenarios and align with business requirements - how testing every scenario in your application can hurt test suite performance and maintainability
Chapters 00:00 Intro 00:09 Recap of previous video 00:24 What you will learn about real-world end-to-end tests 00:43 What are real-world end-to-end tests 01:00 Multiple steps in real-world end-to-end tests with an example 01:33 Why end-to-end tests are sometimes called feature tests 01:50 Multiple steps in an end-to-end test help with test suite speed 02:15 What are happy path end-to-end tests 02:39 What are unhappy path end-to-end tests 02:50 Why testing all scenarios slows down end-to-end tests 03:01 Why testing all scenarios creates more end-to-end tests to debug 03:31 Test Double’s recommendations on the best kinds of end-to-end tests 03:42 Recapping what you learned 03:59 Conclusion and next video teaser
You will learn how to: - set up a demo application to test against - install Cypress and initialize a new Cypress end-to-end test suite - create a new Cypress end-to-end test file - use Cypress commands and default assertions to create your first test - view test run results in Cypress
Cypress Version Notice: at the time this video was recorded, Cypress was at version 7.5.0. Since then Cypress has released newer versions. Test Double recommends still installing Cypress 7.5.0 as the video directs, but the test suite in this video should still run with the newest version of Cypress. Should you run into any issues installing Cypress, Test Double can only offer support if you install version 7.5.0.
Initializing Test Suite Notice: after running `npx cypress open`, you may see a message that no version of Cypress is installed in your computer’s apps. If that happens, you can run `npx cypress install` to install the Cypress app, and then run `npx cypress open` after that. Chapters 00:00 Intro 00:10 Recap of previous video 00:18 Goals for getting started writing end-to-end tests with Cypress 00:30 Introducing the demo app 00:56 Forking the demo app repo 01:25 Clone forked demo app repo 01:42 Install dependencies and run demo app 02:08 Trying out the demo app 02:51 Run server in end-to-end test environment 03:19 Install Cypress 03:52 Open Cypress to initialize end-to-end tests 04:20 Getting familiar with the Cypress app window 04:30 Running an example Cypress end-to-end test 04:53 Reviewing Cypress end-to-end test run results 04:59 Stopping Cypress end-to-end test 05:12 Inspecting Cypress file and directory artifacts 05:44 Creating a new Cypress end-to-end test file 06:13 Adding a new end-to-end test 06:26 Cypress’ global cy object 06:36 Cypress commands via the cy object 06:40 Cypress visit command 06:49 Using Cypress app window to run a new end-to-end test file 07:17 Using Cypress selector commands 07:30 Cypress get command 07:36 Cypress contains command 07:41 Chaining Cypress commands 07:56 Save to rerun the Cypress end-to-end test 08:03 Reviewing log of Cypress commands ran during an end-to-end test 08:14 Cypress default assertions as commands 08:51 Intentionally breaking test to inspect Cypress end-to-end test failures 09:05 Restoring the broken end-to-end test 09:11 Adding more default assertions via commands 09:32 Recapping what you learned 09:56 Conclusion and next video teaser
Find out more about Test Double at link.testdouble.com/more-infoEnd-to-end Testing with Cypress Series: 01 WelcomeTest Double2022-03-24 | If you’re a web developer or QA engineer that wants to make your application more reliable, then this video series from your friends at Test Double is for you. Follow along and learn how to write Cypress end-to-end tests that provide the most value to your business without sacrificing maintainability. This video series will take you from knowing nothing about end-to-end tests or Cypress to building your own maintainable end-to-end test suite with Cypress.
In this video, receive an introduction to the world of end-to-end testing with Cypress. You will learn who Test Double is and why we love Cypress, how end-to-end tests fit in the testing pyramid, the pros and cons of end-to-end tests, and what you should expect from this series. By the end of this video, you will understand what end-to-end tests are and why Cypress makes writing them familiar and fun.
Chapters 00:00 Intro 00:14 Test Double’s Mission 00:45 Contact Test Double 00:53 Test Double and Cypress 01:13 What are end-to-end tests? 01:21 Testing Pyramid and end-to-end tests 01:37 Cons of end-to-end tests 01:58 Pros of Cypress end-to-end testing 02:59 Who can benefit from end-to-end testing with Cypress 03:37 What to expect in this series on end-to-end tests with Cypress 04:19 Prerequisites 05:13 What you will learn from this video series 05:54 Conclusion and next video teaser
Image Attributions: pixabay.com/illustrations/hook-check-mark-done-yes-consent-2470296 pixabay.com/vectors/tag-badge-logo-medal-tape-763169Babies Just Want to Have FunTest Double2022-02-10 | Join Ali Ibrahim on a journey to make music more accessible for his young son. From prototypes to kinda-finished products, we’ll put together a music player that gives toddlers the ability to enjoy music like the rest of us. Along the way, Ali encounters Raspberry Pi, the Adafruit Audio FX Sound Board, and the power of pairing.
This talk was presented as a whimsy session at Ruby Conf 2021.
00:04 Inspiration behind this music box project 00:42 Requirements for the project 01:36 Really complicated solution to this problem 02:17 Is Raspberry Pi the best option for the music box? 03:00 The only thing missing is free time 03:25 Hackathon at work 04:27 Turning to pairing when you're stuck 05:12 Catching the bread board problem 06:04 Pivoting to Adafruit sound board 06:58 Turning to pairing to talk through electrical wiring 08:13 Making the music box 09:23 Does the music box work?How to Trust AgainTest Double2022-02-09 | Why has trust become so rare in the software industry? Developers don't trust their own ability to program, teammates don't trust each other to write quality code, and organizations don't trust that people are working hard enough to deliver on time.
This talk is a reflection on the far-reaching consequences distrust can have for individuals, teams, and organizations and an exploration of what we stand to gain by adopting a more trustful orientation towards ourselves and each other.
Full description and transcript here: blog.testdouble.com/talks/2022-02-09-how-to-trust-againMastering the Macro MachineTest Double2021-11-11 | Do you want to know more about how to use macros in Vim? In this talk, learn tips and tricks for mastering macros in Vim with an example project.
This talk was presented at VimConf 2021 by Camilo Payan.
00:00 Introduction 00:17 Introducing StandardRB tasks 00:41 Movements 01:16 Macros 01:47 Basic macro demonstration 02:36 Appending to a macro 03:12 Vim registers 03:40 Editing macros using registers 04:00 Inline vim movements 05:56 Prefixes for macros 06:58 Suffixes for macros 08:34 Creating a table of contents for a README file 09:06 Marks and jumps 12:17 Recursive macros 13:40 Lazy redraw 14:16 Thank you! 15:14 Questions and answersHow to Make a Gem of a GemTest Double2021-11-10 | Ever wonder how to make a Ruby gem? This video will walk you through EVERY step of creating & releasing a brand new gem and also share some advice on how to make your next Ruby gem a great one. Details: testdouble.com/talks/2021-11-10-how-to-make-a-gem-of-a-gem
This presentation was presented at RubyConf 2021 by Justin Searls.How to Find and Remove Dead CSSTest Double2021-06-03 | Ever have old CSS styles pile up that you're afraid to remove because you're not sure if anything else is depending on them? Here's one way to get more confidence about which styles are actually unused and safe to delete, by using combining the code coverage results for each page on your website.
More at our blog: blog.testdouble.com/talks/2021-06-03-how-to-find-and-remove-dead-cssHow to set up a new Mac for developmentTest Double2020-05-24 | A walkthrough of how @searls sets up a new Mac from the minute you first land on the desktop, through configuring the system, setting it up for development, and going to work.
More details at our blog: blog.testdouble.com/talks/2020-05-28-setting-up-a-new-mac-for-developmentParcel a First Look at Creating Your Production BuildTest Double2020-05-24 | Tommy from Test Double walks you through starting a new project with Parcel Bundler from an empty folder all the way to a production build with React, PostCSS, Tailwind, and even Vue!
Chapters: 0:00 Live coding with Parcel Bundler 0:03 Introduction 4:34 Begin Screencast; Inital Project and build HTML with Parcel 9:01 Add PostCSS and Tailwind CSS 15:32 Purge unused CSS rules 19:31 Basic JavaScript build 24:11 Add React to your build 31:24 Add Vue to your build 37:58 Add images 43:14 Simple explanation of Parcel's build approach 46:11 ONE MORE THING: Code-splitting with React 50:50 Conclusion and Summary
Example Code: github.com/testdouble/react-routing-example Website: testdouble.com Twitter: Tommy Groshong: twitter.com/tgroshon Test Double: twitter.com/testdoubleCypress vs. Capybara, part 3: testing with Cypress (Justin Searls)Test Double2020-03-11 | ...Cypress vs. Capybara, part 2: testing with Capybara (Justin Searls)Test Double2020-03-11 | ...Cypress vs. Capybara, part 1: the setup (Justin Searls)Test Double2020-03-11 | ...Under Pressure (Todd Kaufman)Test Double2020-03-11 | It’s an accepted truth in software development; when deadlines loom the team will be pressured to GO FASTER. Unable to convince management of the risks, we resign to cutting corners and working longer hours. Unfortunately the result is just as predictable, a short spike in velocity and many delays to come.
This talk is an exploration of how to reverse the velocity spiral by building high trust relationships with management. We’ll discuss root causes of our distrust like estimation, communication, and abuse of power so that the team can resist short sighted solutions that will plague them for years to come.
More here: blog.testdouble.com/talks/2017-05-31-under-pressureA Better Technical Interview (Sam Jones)Test Double2020-03-11 | It’s easy to find fault in the way we interview in tech. Often, there are unclear goals, trivia questions, and unrealistic coding environments. Let’s analyze the things we don’t like, and design a better process. Let’s make a better technical interview with honesty, transparency, and a more realistic experience.
More here: blog.testdouble.com/talks/2017-01-27-a-better-technical-interviewSolving the Boolean Identity Crisis (Jeremy Fairbank)Test Double2020-03-11 | While powerful in its simplicity and important to computation, the boolean can be extremely limiting in Elm applications. In this talk, briefly explore the history of boolean logic in computation and look at how booleans can become misused in Elm. See how booleans obscure the meaning of code, make code harder to maintain, and hinder usability for our teammates and users. By watching this talk, you will learn how to harness union types to write cleaner, clearer code. More importantly, you will learn how to place usability at the forefront of the APIs and UIs you build.
Objects and functions sure are convenient, so convenient that we do many shortsighted things just because they’re easy.
In-line objects and anonymous functions create a poor signal to noise ratio, making it hard to understand your code.
Learn ways to give confusing things names, focus on what’s important, and write nicer code.
More here: blog.testdouble.com/talks/2018-05-02-javascript-is-too-convenientGoing To Eleven (Steve Jackson)Test Double2020-03-11 | This is the story of a real-life product “land rush”. It starts with designing a load test, picking tools, and isolating a slew of dependencies. That’s the easy part. The fun really starts when the load test runs. Hold on tight and we’ll ride this swarm to the finish line.
As a project grows up, it has different needs and benefits from differing levels of “discipline”. Likewise, people have differing comfort levels for process rigor.
Too often we focus on the laundry list of benefits that we might get from a tool without considering the maturity of our project or the composition of the team. We want to build shared understanding without dictating a process that crushes diverse thought and collaboration.
This talk proposes examples as a universal way to build shared understanding without tying a team to specific tools or implementations.
More here: blog.testdouble.com/talks/2017-05-18-shared_understandingEffective React Testing (Jeremy Fairbank)Test Double2020-03-11 | Many teams relish building applications with React these days. Composable components and unidirectional data flow with Redux create a solid foundation for modular applications. By this point, you know higher-order components, selectors, and render props like the back of your hand. But what about testing?
If you neglect to write React tests because you don’t know what to test, which types of tests provide the most value, or how to start testing, then this talk will guide your path. I explain the difference among unit, isolation, and end-to-end tests, and provide a general framework for how to test your application.
You will learn about the testing framework Jest, how to test-drive components with Enzyme for design feedback, the magic and trade-offs of snapshot testing, how to unit and integration test your reducer and actions, and how to test your entire application in a browser by simulating user scenarios. Of course, I offer both pros and cons to each type of test, so you and your team can discover what works best for you. You will also learn how to use our nifty testdouble.js library.
More here: blog.testdouble.com/talks/2018-04-09-effective-react-testingLife After Nil (Sam Jones)Test Double2020-03-11 | There are murmurs that a type system will be coming to Ruby. Before that happens, you should get informed about what is hot in the current type system market. Haskell is known for its type system, but instead of describing it with dense language, let’s take a journey through code examples. Throughout our trip, we will avoid scary buzzwords like “monad” and “algebraic data type” because, honestly, what good is a formal definition when you don’t understand the power behind the concept?
We will compare solutions in Ruby to solutions in Haskell, and each stop on our trip will introduce a new mind-blowing paradigm brought to you by Haskell’s type system. You will learn about type systems through a non-threatening story, and you’ll understand the value a type system can bring to your code. Key stops on our route will be “forget about nil”, “declaratively model your domain”, and “allow your compiler to drive your design”.
More here: blog.testdouble.com/talks/2017-01-18-life-after-nilLooking for Failure (Steve Jackson)Test Double2020-03-11 | Failures are interesting. They tend to teach lasting personal lessons, but we are loath to share them. These lessons have profound impacts on our habits and viewpoints, but they’re difficult to recount. We need to get comfortable talking about failure. Unfortunately, our brains are wired to screw this up. When confronted with a failure, we are conditioned to ignore it, make ourselves blameless, or create elaborate strategies to avoid the possibility of failure altogether. I’d like to present another alternative: embrace failure. It will happen. That’s ok.
How can we challenge our natural human bias? I’ve spent the last couple years digging into “pop” psychology and thinking about how books like “Thinking Fast and Slow”, “Antifragile”, “Drive”, “Blink”, and “Outliers” apply in a software development environment. I’m most excited about the idea that if we can make failure “safe” then we can use it to learn things that we would otherwise be tempted to avoid and ignore because it might go badly. A focus on failure, both deliberate and accidental, has been beneficial in moving my projects beyond the no defects, 100% test coverage type focus and towards finding innovative ways to detect and quickly reverse failure.