POPULARITY
Aaron is joined this week by Adam Wathan to talk about everything from Disney Cruises to what he wants to do on YouTube and a whole lot more.Sponsored by Bento and WorkOS.Interested in sponsoring Mostly Technical? Head to https://mostlytechnical.com/sponsor to learn more.(00:00) - The Disney Debate (03:27) - Zero MRR (05:15) - YouTube Stuff (13:38) - Course Talk (23:33) - Competitive Advantage (42:48) - Building A Course Platform (52:59) - Tailwind's YouTube Strategy (01:23:31) - Nanny Talk Links:Disney Cruise LineAdam's tweet about $0 MRR'Build UIs that don't suck'Tailwind Connect MiamiSteve Schogar on YouTubeteenage engineering
Join us as we unravel the inspiring journey of Tailwind CSS with its creator, Adam Watham. From its inception in 2017 as an open-source CSS framework to becoming a major player in web design, Tailwind has recently undergone a significant rebranding with the launch of Tailwind Plus. This episode provides listeners with insights into Adam's strategic choices, including the reasoning behind merging Tailwind UI into the broader Tailwind ecosystem. Discover the challenges and outcomes of balancing community-driven development with commercial viability, as Adam shares how feedback shapes product improvements. Learn about the launch of "Build UIs That Don't Suck," an initiative designed to foster user engagement and demonstrate Tailwind's quality. Adam also reflects on the importance of sustaining a business model while nurturing open-source passion, offering invaluable advice for anyone in the tech space. Whether you're a developer, designer, or just interested in entrepreneurship, this episode is packed with insights, revealing the artistry behind code and the business. Don't miss it! Subscribe, share, and let us know what you've learned!Send us some love.HoneybadgerHoneybadger is an application health monitoring tool built by developers for developers.JudoscaleAutoscaling that actually works. Take control of your cloud hosting.Disclaimer: This post contains affiliate links. If you make a purchase, I may receive a commission at no extra cost to you.Support the show
Taylor Otwell is the creator of the Laravel framework. Taylor has created numerous paid products that have generated millions, such as:Laravel Forge (server provisioning/management)Laravel Vapor (serverless Laravel hosting with AWS)Laravel Envoyer (zero downtime PHP deployments)Laravel Nova (Laravel admin panel)In this interview, Taylor shares why he is now building Laravel Cloud - an infrastructure platform for Laravel apps and why Laravel Cloud needed VC funding.We also cover:The different challenges of bootstrapped and VC funded startupsHow the Laravel ecosystem became so entrepreneurial Building products for the average joe developerThe role of taste and craft in developer toolsWhat Taylor and Adam Wathan learned from each other Fear and Taylor's comparison with Alex Honnold This episode is brought to you by WorkOS. If you're thinking about selling to enterprise customers, WorkOS can help you add enterprise features like Single Sign On and audit logs. Links: Laravel Taylor Otwell Laravel Cloud Open jobs at Laravel Adam Wathan Chapters:00:00 The Journey of Laravel's Creator02:48 Transitioning from Bootstrap to VC Funding06:10 Building Laravel Cloud: A New Challenge09:04 The Shift in Company Structure and Culture11:50 Maintaining Quality and Usability in Development15:09 Community Impact and Collaboration17:56 Craftsmanship and Design Philosophy20:45 Navigating Growth and Market Needs23:54 Advice for Aspiring DevTool Founders26:48 Future Directions and Innovations in LaravelThank you to Michael Grinich for making this happen. Thank you to Ostap Brehin for introducing me to Laravel. Thank you to Hank Taylor for helping me prep.
Xuan-Son Nguyen opened a low-level code PR written 99% by DeepSeek-R1, Adam Wathan announces the release of Tailwind CSS 4.0, Matheus Lima opens up the Computer Science history books to create list of influential papers, Namanyay Goel thinks AI is creating a generation of illiterate programmers & Russell Baylis shares what he's learned about optimizing WFH lighting to reduce eye strain.
Xuan-Son Nguyen opened a low-level code PR written 99% by DeepSeek-R1, Adam Wathan announces the release of Tailwind CSS 4.0, Matheus Lima opens up the Computer Science history books to create list of influential papers, Namanyay Goel thinks AI is creating a generation of illiterate programmers & Russell Baylis shares what he's learned about optimizing WFH lighting to reduce eye strain.
Xuan-Son Nguyen opened a low-level code PR written 99% by DeepSeek-R1, Adam Wathan announces the release of Tailwind CSS 4.0, Matheus Lima opens up the Computer Science history books to create list of influential papers, Namanyay Goel thinks AI is creating a generation of illiterate programmers & Russell Baylis shares what he's learned about optimizing WFH lighting to reduce eye strain.
Adam and Ben are back on the mics after nine months to give an update on their lives.Timestamps(00:00) - Catching up (00:18) - Fitness update (18:13) - House updates (24:53) - Ben update (35:11) - Tailwind Labs update LinksAdam on XBen on X
Ian is joined this week by Jack McDade, creator of Statamic, and a motley crew (John O'Nolan, Caleb Porzio, and Adam Wathan) to discuss what the future of Statamic might look like. Should the price change? Should it be open source? Who should it be marketed at? Does Statamic need an enterprise offering? All that & a ton more.Sponsored by LaraJobs & Screencasting.com.Interested in sponsoring Mostly Technical? Head to https://mostlytechnical.com/sponsor to learn more.Note: Recorded and streamed live on September 30th, 2024Links:Jack McDade on TwitterJohn O'Nolan on TwitterCaleb Porzio on TwitterAdam Wathan on TwitterJack's tweet that started this whole conversationStatamicGhostGhost's KickstarterStatamic Starter KitsFlat Camp
Want to break free from the 9-to-5 hustle and build a $1 million creator business?In this week's episode, I coach Aaron Francis on his course-selling business and explore how to 3x his business by the end of 2025.Join us as we explore how to effectively implement a hub-and-spoke model to build a loyal newsletter list, proven lead magnets that can double your audience size, practical ways you can implement price tiering to instantly boost your revenue.Timestamps:00:00 Introduction01:15 Breakdown of Launch Businesses05:37 Setting Future Goals for the Business06:38 Creators Who Pulled Off Successful Launches10:31 Potential Problems for Product Based Creator Businesses20:40 How to Master Audience Growth26:50 Using Lead Magnets for YouTube to Email Conversions36:10 Strategic Content Creation for Sustainable Growth39:48 Tiered Pricing to Increase Revenue49:10 Grow Your Business Without Making More Products53:54 Cross-Selling Your Existing Products01:05:17 Fine-Tune Your Brand Vision01:07:40 Closing ThoughtsIf you enjoyed this episode, please like and subscribe, share it with your friends, and leave us a review. We read every single one.Know more about Billion Dollar Creator: https://www.billiondollarcreator.com/Follow Nathan:Instagram: https://www.instagram.com/nathanbarry/LinkedIn: https://www.linkedin.com/in/nathanbarry/Twitter: https://twitter.com/nathanbarryWebsite: https://nathanbarry.com/Featured in this episode:High Performance SQLite: https://highperformancesqlite.com/watch/introduction-to-this-courseScreencasting.com: https://screencasting.com/ConvertKit (soon to be Kit): https://convertkit.com/Aaron Francis: https://aaronfrancis.com/Kent C. Dodds: https://kentcdodds.com/Wes Bos: https://wesbos.com/Adam Wathan: https://adamwathan.me/Highlights:07:45 How to Bridge the Mental Gap to Your Goals16:09 Overcoming Struggles by Delegating Tasks & Team Dynamics23:15 Importance of YouTube and Email 29:10 Mastering Lead Magnets49:10 Timeline to Grow a Course Business
In this week's episode of the Business of Laravel podcast, host Matt Stauffer talks with Caleb Porzio, a prominent figure in the Laravel community and the creator of Livewire and Alpine.js.Caleb shares his unconventional journey from being a self-proclaimed "terrible employee" (at Matt's company!) to becoming a successful self-employed educator and entrepreneur through his company, Wireable LLC.He also shares insights into his strategies for turning open-source projects into sustainable businesses and building a dedicated audience through educational content and documentation sites related to the tool's niche.Matt Stauffer Twitter - https://twitter.com/stauffermattCaleb Porzio Twitter - https://x.com/calebporzioTighten Website - https://tighten.com/Livewire: livewire.laravel.comAlpine.js: https://alpinejs.dev/Adam Wathan's Blog Post: https://adamwathan.me/the-book-launch-that-let-me-quit-my-job/-----Editing and transcription sponsored by Tighten.
Ben and Adam Wathan cover the development and reimagining of Tailwind CSS, focusing on the release of Tailwind 4.0. They delve into the motivation behind the rewrite, the challenges faced, and the approach to maintaining backward compatibility. The conversation covers topics related to software versioning, open-source maintenance, backward compatibility, the use of Rust in Tailwind, testing strategies, and the future of Tailwind as a business.LinksTuple.app (https://tuple.app) - The best app for pair programmingTailwind CSS (https://tailwindcss.com) - The CSS framework Adam createdKey TakeawaysRewrites can lead to a cleaner, more maintainable codebase.Accurate problem modeling can lead to the emergence of new features and benefits.The approach to backward compatibility involves making it easy to upgrade to the new version rather than simply making the old version work.Chapters(00:00) - Introduction and Background (00:35) - Windows Version Launch and Guest Network (01:24) - Rewriting Tailwind: Philosophy and Execution (03:42) - Ben's Static HTML Website Idea (09:06) - Re-imagining Tailwind with Tailwind 4 (20:49) - Challenges and Solutions in Tailwind Development (32:45) - Rust Components in Tailwind 4 (35:41) - Tailwind 4 Goals and Achievements (40:22) - Testing and Quality Assurance in Tailwind 4 (46:38) - Tailwind 4 Release (49:54) - The Tailwind Origin Story (52:24) - Business Strategies and Open Source Impact
Adam just wrapped up a big hiring project at Tailwind Labs, adding both a new engineer and a new designer to the team. In this episode he talks through the process with Justin Jackson, founder of Transistor, to compare notes and record what worked, what didn't, and how he will approach hiring in the future after going through this process.Timestamps(00:00) - Talking hiring with Justin Jackson from Transistor (01:05) - Adam's recent hiring project at Tailwind Labs (02:00) - Justin's history with hiring at Transistor (03:51) - How Transistor recruited their team (05:48) - Background on Adam's hiring project (16:54) - How to stand out as a candidate (26:29) - Who applied at Tailwind Labs — and who didn't (35:26) - Who ended up getting the offers (39:28) - The interview process (53:49) - Finding candidates, relationship building, and increasing luck surface area LinksJob postings for the roles at Tailwind LabsAdam on XBen on XJustin on X
This week we talk to Adam Wathan, the creator of Tailwind CSS. We go into all the changes for Tailwind CSS v4, discussing how they use Rust and Lightning CSS. Adam also shares about how they've been monetizing the tool and building out Tailwind Labs. We also address some of the heated feedback from the Twitter. https://adamwathan.me/ https://github.com/adamwathan https://twitter.com/adamwathan Episode sponsored By CodeCrafters (https://codecrafters.io/devtoolsfm) 40% Discount! Become a paid subscriber our patreon, spotify, or apple podcasts for the full episode. https://www.patreon.com/devtoolsfm https://podcasters.spotify.com/pod/show/devtoolsfm/subscribe https://podcasts.apple.com/us/podcast/devtools-fm/id1566647758 https://www.youtube.com/@devtoolsfm/membership
Ian and Aaron are joined by Adam Wathan (our first returning guest!) to talk about Aaron's future plans for courses & consulting, Adam's plans for hiring at Tailwind, & a lot more.Sponsored by Laracasts, LaraJobs, & Screencasting.com.Send questions or feedback to mostlytechnicalpodcast@gmail.com.(00:00) - The Interloper (01:49) - Hiring at Tailwind (09:00) - Extra Effort Matters (19:47) - Magic Company Money (23:02) - Jerry Seinfeld's Voice (27:45) - Nothing Sexier Than a Database (43:49) - Taste as a Service (54:34) - Courses vs. Consulting (01:07:56) - The Aaron Francis Experience (01:13:33) - The Master Plan (01:28:53) - Price of Admission (01:33:17) - En Route To Mars Links:Subscribe to Laracasts! Seriously.Adam's tweets announcing the Design Engineer & Staff Software Engineer jobs at TailwindAdam's tweet about 90% of applicants not following instructionsTest Driven LaravelSandwich VideoKevin Shen's Dream Studio Course on lightingJonathan Reinink on Twitter
37signals have talked a lot about how they build new features for existing products using Shape Up, where they carefully hammer the scope to avoid letting anything ever drag on for more than six weeks. But there's not a lot of information out there about how they approach new product development, where it can take over a year to actually get the first version out the door. In this episode, Adam goes deep with Jason Fried about building and shipping their new HEY Calendar product, and whether or not Shape Up was part of that process.Timestamps(00:00) - Building the HEY Calendar with Jason Fried (01:04) - Why build a calendar (04:12) - How 37signals approach new product development (07:30) - Deciding on scope before launch (13:13) - Was there a six-week version of the HEY Calendar? (15:38) - Deciding how much time to spend on a new product (17:46) - Was the HEY Calendar built using Shape Up? (22:20) - Working on one feature at a time vs. in parallel (28:47) - What cycles look like at the early beginnings of a product (38:49) - How a project starts (45:46) - Increasing surface area vs. finishing things (47:57) - The development process for HEY Calendar going forward LinksAdam on TwitterBen on TwitterJason on TwitterJason's walkthrough of the HEY CalendarHEY Calendar
In this episode, Adam and Ben sit down to evaluate how things went in 2023 in their business and personal lives. The dudes share kind of a lot in this one! More personal flavor than usual. Lots about fitness, mental health, gathering, and rascally-ness. Timestamps(00:00) - Ben and Adam review 2023 (03:17) - Ben wants to be more of a rascal (07:58) - Health update (30:06) - Ben wants to prioritize creating "gatherings" (39:06) - Following your intuition (52:49) - Tailwind Labs business review (01:07:37) - Productivity (01:20:11) - 2023 lowlights — things to improve in 2024 LinksAdam on TwitterBen on Twitter
It's been said that web development is 99% forms and tables. Today we talk with Adam Wathan about all the decisions that go into creating a great form builder API. Adam and the rest of the team at Tailwind recently launched the developer preview of Catalyst—a React UI library with a robust form system. We take a deep-dive into the API decisions behind Catalyst, and talk about how some of those decisions could impact the next version of Aire, a Laravel form-building package.
In this episode of the Laravel Podcast, we revisit a Laravel Snippet from 2019 in which Taylor talks about how he comes up with ideas for products.We also cover how to build your audience, how to balance perfection and just shipping, and how to finish what you've started.Whether you identify as a programmer or harbor aspirations of entrepreneurship, this episode promises to offer valuable insights and inspiration for the successful launch of your software products. Taylor Otwell's Twitter - https://twitter.com/taylorotwell Matt Stauffer's Twitter - https://twitter.com/stauffermatt Laravel Twitter - https://twitter.com/laravelphp Laravel Website - https://laravel.com/ Tighten Website - https://tighten.com/ Laravel Snippet: https://blog.laravel.com/laravel-snippet-15 Forge - https://forge.laravel.com/ Pennant: https://laravel.com/docs/10.x/pennant Tailwind: https://tailwindcss.com/ Vapor - https://vapor.laravel.com/ Envoyer: https://envoyer.io/ Nova: https://nova.laravel.com/ Spark: https://spark.laravel.com/ Digital Ocean: https://www.digitalocean.com/ Pusher: https://pusher.com/ How to Win Friends and Influence People Book: Amazon link Adam Wathan Twitter: https://twitter.com/adamwathan Steve Shoger Twitter: https://twitter.com/steveschoger Aaron Francis Twitter: https://twitter.com/aarondfrancis Nova Packages: https://novapackages.com/ Built for Pulse: https://builtforpulse.com/ Justin Jackson Twitter: https://twitter.com/mijustin -----Editing and transcription sponsored by Tighten.
Ian & Aaron are joined by Adam Wathan, founder of Tailwind, to discuss everything from the upcoming Tailwind Catalyst UI kit to hiring to a hypothetical Tailwind marketplace & more.Sponsored by LaraJobs & Screencasting.com.Sent questions or feedback to mostlytechnicalpodcast@gmail.com. (00:00) - Baby Check In (09:49) - Catalyst UI Kit (25:50) - Headless UI Update (32:52) - Hiring is a Hard Thing (45:38) - Rewriting Tailwind With...Rust? (52:03) - A Hypothetical Tailwind Marketplace (01:10:30) - "What do you want to do, Adam?" (01:18:42) - Could Adam hire somebody to run the business? Links: Adam Wathan on Twitter 12/4/23 Episode of Hackers Incorporated, Adam's podcast with Ben Orenstein Forced Colors Mode (Smashing Magazine) Tailwind UI All-Access Headless UI ThemeForest
In this episode, Adam and Ben talk through the Tailwind Labs business model. Is Tailwind UI the best way for the company to make money? Or is there a different model where incentives are better aligned with growing the Tailwind CSS community as a whole? One potential model is offering a marketplace for templates and UI kits. Timestamps(00:00) - Black Friday (04:58) - Continuously improving stuff (12:50) - Tuple Rooms (16:15) - Revisiting the Tailwind Labs business model (27:28) - Brainstorming a Tailwind CSS marketplace (39:54) - Should Tailwind Labs build a SaaS? LinksAdam on TwitterBen on Twitter
In this episode, Adam and Ben catch up on recent events at Tailwind Labs and Tuple. Adam spoke at Rails World and the impromptu Tailwind CSS meetup in Amsterdam. Ben shares his learnings from some recent feature launches at Tuple.Timestamps(00:00) - Burpees (02:47) - Rails World + Tailwind CSS Amsterdam meetup (11:27) - Launching Tuple Triggers (25:57) - Tuple App Veil LinksAdam on TwitterBen on TwitterAdam Wathan - Tailwind CSS: It looks awful, and it works - Rails World 2023Tuple TriggersTuple App Veil
We released episode one of this podcast on June 11, 2012. Now, more than a decade later, we're celebrating the 500th episode of our show. In honor of this milestone, Victoria, Will, and Chad caught up with each of the past hosts of the show: Ben Orenstein, Chris Toomey, and Lindsey Christensen. We chatted about what they're up to now, what they liked and learned from hosting the show, their time at thoughtbot, and more! Follow thoughtbot on X (https://twitter.com/thoughtbot) or LinkedIn (https://www.linkedin.com/company/150727/). Become a Sponsor (https://thoughtbot.com/sponsorship) of Giant Robots! Transcript: VICTORIA: This is the Giant Robots Smashing Into Other Giant Robots Podcast, where we explore the design, development, and business of great products. I'm your host, Victoria Guido. WILL: And I'm your other host, Will Larry. CHAD: And I'm your other host, Chad Pytel. We released episode one of this podcast on June 11, 2012. Now more than a decade later, were celebrating this: the 500th episode of our show. In honor of this milestone, Victoria, Will, and I caught up with each of the past hosts of the show: Ben Orenstein, Chris Toomey, and Lindsey Christensen. We chatted about what they're up to now, what they liked and learned from hosting the show and their time at thoughtbot, and more. First up: Ben Orenstein. Ben was the very first host of the show back in 2012 when he was a developer at thoughtbot. He is now the co-founder and Head of Product at Tuple, a remote pair programming tool for designers and developers. Ben, it's great to talk to you again. It's been a while since you and I talked. How have you been? BEN: I've been decent, yeah. It's fun to be back to my roots a little bit. I told some folks that I work with that I was coming back to the pod for the 500th Episode, and they were stoked. So, it's kind of a treat to get to be on these airwaves again. CHAD: What have you been up to since you left this show and thoughtbot? BEN: Well, I started a company. So, I was at thoughtbot for a while; I think it was seven years. And I eventually sort of struck out to start my own thing–had a false start or two here and there. And then, I ended up starting a company called Tuple, and we still exist today, fortunately. Tuple is a tool for doing remote pair programming. We started off on macOS and then wrote a Linux client. And we're launching a Windows client now. But it's sort of, like, screen sharing with remote control for developers who are actually writing code and want to have great, low latency remote control and who care about screen share quality and that sort of thing. I started that about five years ago with two co-founders. Today, we are a team of 11, I think it is. And it's been going well. Our timing was really great, it turned out. We launched a little bit before COVID. So, remote work turned into a lot more of a thing, and we were already in the market. So, that helped us a ton. It was quite a wild ride there for a bit. But things have calmed down a little lately, but it's still fun. I'm, like, really enjoying being a co-founder of a software company. It was what I've always sort of wanted to do. And it turns out it actually is pretty fun and pretty great. Although there are, of course, the ups and downs of business ownership. It is never quite as calm or relaxing as being an employee somewhere else. CHAD: You started Tuple instigated by...full disclosure: thoughtbot's an early customer of Tuple. We're still a customer. We use it a lot. BEN: Woo-hoo. I appreciate that. Thank you. CHAD: If I remember right, you started and were sort of instigated to create Tuple because there was a prior product that then Slack bought, and then it started to degrade. And now, it no longer exists in the same way that it did before. BEN: Yeah. So, there was this tool called Screenhero, which I actually started using -- CHAD: [inaudible 02:14] BEN: Yeah, first at thoughtbot. Some other thoughtboter introduced me to it, and we would use it for pair programming. And I was like, oh, this is nice. And then yeah, Slack kind of acqui-hired it and more or less ended up shutting the product down. And so, there was this gap in the market. And I would ask my friends, I would ask thoughtboters and other developers, like, "What are you using now that Screenhero is gone?" And no one had a good answer. And so, after a while of this thing sort of staring me in the face, I was like, we have to try to solve this need. There's clearly a hole in the market. Yeah, so we were heavily inspired by them in the early days. Hopefully, we've charted our own path now. But they were definitely...the initial seed was, you know, let's do Screenhero but try to not get bought early or something. CHAD: [laughs] How did you or did you feel like you captured a lot of the Screenhero customers and reached them in those early days? BEN: I think so. The pitch for it was sort of shockingly easy because Screenhero had kind of blazed this trail. Like, I would often just be like, "Oh, we're making a thing. Do you remember Screenhero?" And they'd go, "Oh yeah, I loved Screenhero". I'd be like, "Yeah, we're going to try to do that." And they'd be like, "Nice. Sign me up." So, it for sure helped a ton. I have no idea what percentage of customers we converted. And they were a pretty large success, so probably a small fraction, but it definitely, like, made the initial days much easier. CHAD: Yeah. And then, like you said, COVID happened. BEN: COVID happened, yeah. I think we had been around for about a year when COVID hit. So, we were getting our feet underneath us. And we were already, like, the company was already growing at a pretty good rate, and we were feeling pretty good about it. I don't think we had quite hit ramen profitable, but we were probably pretty close or, like, flirting with it. Yeah, the business, like, I don't know, tripled or quadrupled in a matter of months. We had a few big customers that, like, just told everyone to start using Tuple. So, we had, like, thousands and thousands of new users kind of immediately. So, it was a crazy time. Everything melted, of course. We hadn't quite engineered for that much scale. We had a really rough day or so as we scrambled, but fortunately, we got things under control. And then had this, like, very nice tailwind. Because we started the company assuming that remote work would grow. We assumed that there would be more remote developers every year. And, you know, it's probably maybe 5% of dev jobs are remote or maybe even less, but we expect to see this number creeping up. We don't think that trend will reverse. And so, COVID just, like, it just yanked it, you know, a decade in the future. CHAD: You haven't tripled or quadrupled your team size, have you? BEN: No. Well, I mean, I guess, I mean, we started as 3, and now we're 11, so kind of. CHAD: [laughs] Yeah, that's true. BEN: Expenses have not grown as fast as revenue, fortunately. CHAD: That's good. That's basically what I was asking [laughs]. BEN: Yeah, yeah. We're still a pretty small team, actually. We have only, like, four or five full-time engineers on the team at the moment, which is kind of wild because we are now, you know, we have three platforms to support: Linux, Windows, and Mac. It's a pretty complicated app doing, like, real-time streaming of audio, webcams, desktops, caring about OS-level intricacies. So, I think we will be hiring more people soon, although we haven't said that for a long time. We sort of have always had a bit of a hire-slow mentality to try to get the right team members and, like, feel a real pain before we hire someone into it. But we have been getting a bit more aggressive with hiring lately. VICTORIA: Well, I really appreciate Tuple. I installed it when I first started working here at thoughtbot. And we have random pairings with everyone across the company. So, I'll randomly get to meet someone halfway across the world who's working on similar projects. And I think they really enjoy that I have a tool they like working to share what they're working on. So, I want to thank you for that. And I'm curious about when you really started to scale during COVID, what were some of the technology architecture trade-offs you came across, and where did you land with it? BEN: Well, we got fairly...I don't know if it was lucky, but we...for a long time, for years, even through COVID, maybe the first four years of the company, all Tuple calls were purely peer-to-peer. And there was no server that we owned intermediating things. This was, like, kind of one of the keys of, like, not having expenses. The scale of revenue was we could have lots more calls happen. And it wouldn't cost us bandwidth or server capacity. To this day, still, for any calls with three or fewer participants, they're purely peer-to-peer. And this is nice for latency purposes because it just...we can find the most direct path to the internet between two people. It's also nice from our cost perspective because we don't need to pay to send that data. And that was hugely useful as call volume went up immensely. Didn't have to worry too much about server load and didn't have to worry too much about bandwidth costs. CHAD: Today, is there a central service that makes the initial connection for people? BEN: Yes, yeah, yeah. So, there is a signaling server. So, when you launch the app, you sign in, and you see, like, oh, which of my co-workers are online? So, there is actually a Rails app that handles that, actually, increasingly less the Rails app. We have now...I think it's a Go service that actually manages all those. I'm further and further from the code every year. Some of the technical questions might be a little bit beyond me, or I might have slightly out-of-date info. But back to the architecture question for a second, we did a pretty big refactor when we decided to go from just being a Mac client to supporting other platforms, where we split out a cross-platform real-time communication engine written in C++ so that we could use that for all of the heavy lifting, all the managing of the connections, and the tricky bandwidth estimation, and all this stuff, and use that across different platforms. And so, today, you have the cross-platform engine, and then on top of that is a, like, a less specific layer for each of the operating systems that we support. CHAD: So, you mentioned you're less and less in the code these days. So, what do you spend your time doing then? BEN: It's a mix of things. These days, it's basically mostly -- CHAD: Just cocktails on the beach, right? BEN: Cocktails, yes [laughs], cocktails on the beach, appearing on podcasts trying to sound important and impressive, yeah. Mostly product work. So, right before this, I just got off a call with some folks from The Browser Company. They are some of our first alpha users for our new Windows clients. So, I hopped on the call with them and, like, watched three of them install the product and inevitably run into some bugs. And, you know, chatted through those with the engineer that was working on it, prioritized some stuff, made some decisions about what's coming up next, and what we're going to ignore. So, mostly product work these days. For the first five years of the company, I was CEO, so I was doing kind of everything: marketing, and also hiring, and also product. About two months ago, I stepped down as CEO, and one of my other co-founders, Spencer, stepped up. And so, now my focus has narrowed to be mostly just product stuff and much less on the marketing or hiring side. VICTORIA: Yeah, you mentioned that it was a little more comfortable to be an employee than to be a founder. I don't know if you could say more about that because, certainly, a lot of engineers are smart enough and capable enough to run their own company. But what really informed your choice there, and do you regret it? [laughs] BEN: I definitely don't regret it. thoughtbot was a close second in terms of wonderful professional experiences. But running my own thing has been the most interesting professional thing I've done by a big margin. It has also been more stressful. And, Chad, I don't know if you remember, I think, like, maybe eight years ago, you tweeted something like, if you want to sleep well at night, and, like, value that, like, peace of mind, like, don't start a company or something. I have experienced that. CHAD: [laughs] BEN: A lot more, yeah, like waking up in the middle of the night worrying about things. It feels a little bit like the highs are higher; the lows are lower. Being an employee somewhere, it's like, if this company fails, I know I can go get another job, right? Like, you're a developer. You're extremely employable. But as the owner of the company, if the company fails, like, a huge chunk of your net worth is gone. Like, this thing you poured your life into is gone. It's way more stressful and traumatic to have that happen, or have that threatened to be happening, or just imagine that happening. So, overall, I have found the trade-off to be totally worth it. It's awesome to make your own decisions and chart your own path. And when it works, it can work in a way that being a salaried employee can't. So, I'm happy with those trade-offs. But I think that is a good question for people to ask themselves as they consider doing something like this is, like: is that the kind of trade-off that you want to make? Because it has significant downsides for sure. WILL: I am a big fan of Tuple also. I love it. It [inaudible 10:08] easy, especially with remote work. You hit the jackpot with COVID and remote work, so kudos for that [laughs]. Was there anything...because I know from our previous companies, about over...hopefully a lot more of the good stuff than the bad stuff. But was there anything that you learned? Because you were at thoughtbot for seven years. Was there anything that you're like, oh my gosh, I learned that, and it's helped me till this day while I'm running my company? BEN: Yeah, quite a bit, actually. I think it'd be hard to tease apart exactly which lessons, but I do...so I ran Upcase for thoughtbot and also FormKeep. So, I got a chance to kind of run a small division of the company, while still being a normal employee and, like, having not much of that risk. And I think that was a really wonderful opportunity for me to, like, practice the skills that I was interested in. Just, like, how do you market a thing? How do you design a product and have it be good? How do you prioritize user feedback? There were a ton of lessons from those days that I feel like made me better at running our company when we actually took a shot at it. So, there were, like, the specific things that I learned by the work I was doing there. But then just, like, I mean, I think I am the programmer I am today because of, like, the weekly dev discussions that happened. Like, spending so much time with Joe Ferris and, like, trying to copy as much of his brain as possible, like, really, like, imprinted on me as, like, a programmer. And also, just, like, a lot of the sort of cultural things from my time at thoughtbot of, like, you should be sharing the things you're learning. Like, writing blog posts is a great use of time. Like, doing open-source work is a great use of time. And maybe you can't directly trace how doing, like, working in public or sharing information benefits the company. It's hard to, like, attribute it from a marketing sense. But if you sort of have faith that in the large, it's going to work out, it probably will. That feels like a thoughtbot lesson to me, and I think it has served us really well; where I recorded a weekly podcast for a long time called The Art of Product. I'm recording a new podcast called Hackers Incorporated with Adam Wathan of Tailwind fame. And I don't ever think, like, hmm, how many new leads do we think we get per episode, and how many hours has that taken? What's the ROI? I just have this sort of reflex that I developed from thoughtbot time of, like, you should be putting stuff out there, or you should be giving back. You should help other people. And that will probably help your business and make it work in the long term. CHAD: That's a good lesson [laughs]. One of the other things, you know, while you were a host of Giant Robots, you were the first host. I remember, you know, encouraging you to be the first host, and I think we talked about that in one of the episodes along the way. But we also transitioned the format a little bit, especially as you started to work on products here; you know, it was more about the building of those products and following along with those. And one of the things that sort of half-jokingly defined, I think, your impact on a lot of products was pricing, experimenting with pricing, learning about pricing, increasing prices more than people were maybe comfortable doing so. How has that worked out with Tuple, pricing in particular? BEN: It's really hard to say. It's hard to know what, like, the other path would have been through the world-. We sort of decided from, like, the early days that we wanted to have, like, a fairly premium price. Like, we wanted to be the product that was really good and was, like, a little bit annoyingly expensive, but you still paid for it because it felt worth it. And I think people could debate in both directions whether we nailed that or not. We have had a price increase that we ended up rolling back. We went, like, a little too far one time and said, "You know what? I think we're a little bit over," and we reverted that. But I would say even today, we are still a fairly pricey product. I mean, I'm pretty happy with how the company has done. I can't prove to you that, like, if the price were half what it is, we would have, you know, better success or not. CHAD: I think it'd be very hard to make the argument that if it was half that, you would have double the number of customers. BEN: Yeah, that's probably not true. CHAD: Not with the customers that you have, who are companies that will pay for products that they use as much as Tuple. BEN: Yeah, I'm happy serving the kind of companies, and they end up being mostly tech companies that really value developer happiness. When their developers come to them and they say, "We don't want to pair over Zoom. We like this thing. It's better. It feels nicer to use," they say, "Okay," and they buy the tool for them. There are places where that's not the case. And they say, "We already have a thing that does screen sharing. You're not allowed to buy this." We don't invest a lot of time trying to sell to those people or convince them that they're wrong. And I'm pretty happy serving sort of the first group. CHAD: So, you've mentioned that you've still been podcasting. To be honest, I didn't realize you were starting something new. Is it live now? BEN: It is live now, yeah. CHAD: Awesome. Where can people find that? BEN: hackersincorporated.com. It's about the transition from developer to founder, which is kind of what we've been touching on here. Yeah, hopefully, the audience is developers who want to start something or have started something who are maybe a little bit further behind progression-wise. And it's kind of, like, I have some lessons, and Adam has some lessons, and, you know, we don't think that we're experts. But sometimes it's useful to just hear, like, two people's story and sort of see, like, what seemingly has worked for them. So, we've been trying to share things there. And I think people will find it useful. VICTORIA: I was going to ask you for a lesson, maybe give us a little sample about how would you advise someone who's built a product and wants to market it, and it's targeted towards developers since you mentioned that previously as well. BEN: Yeah, in a way, the question already contains a problem. It's like, oh, I built the product; now how do I market it? It's a little bit indicative of a very common failure mode for developers, which is that. They sort of assume, okay, after you make the product, you then figure out how you're going to market it. And marketing is sort of a thing you layer on later on when you realize that just, like, throwing it on Twitter or Product Hunt didn't really work. When we started building Tuple, I was out there marketing it already. So, I had two co-founders, so this is a luxury I had. My two co-founders were writing code, and I was out doing stuff. I was recording podcasts. I was tweeting about things. I was making videos. I was giving conference talks. And I was getting people to hear about our product well before it was done. In fact, I was even selling it. I was taking pre-orders for annual subscriptions to the app while it was still vaporware. So, I would say, like, you basically can't start marketing too early. If you start marketing early and no one really cares, well, then you don't really have to build it probably. I would actually even go a little further and say, like, I started marketing Tuple before we had a product available. But in reality, I started marketing Tuple seven or so years before that when I started publishing things through thoughtbot. It's like when I was traveling around giving talks about Ruby, and when I was making screencasts about Vim, and when I was running Upcase, I was, over time, building an audience. And that audience was useful for thoughtbot, and it also was useful for me so that when I left, I had something like 10,000 Twitter followers or something, a few thousand people on our mailing list. But there were a lot of developers that already sort of knew me and trusted me to make fairly good things. And so, when I said, "Hey, I've made a new thing, and it's for you," I really benefited from those years of making useful content and trying to be useful on the internet. And in the early days, we had people sign up, and they would say, "I don't even really think I'm going to use this. But I've learned so much from you over the years that I want to support you, so I'm going to pay for a subscription." VICTORIA: I like your answer because I think the same thing when people ask me, like, because I am an organizer for Women Who Code, and I know all these great people from showing up for years in person months over months. And so, then people will ask, "Oh, how do I recruit more women in my company?" I'm like, "Well, you got to start showing up [laughs] now and do that for a couple of years, and then maybe people will trust you," right? So, I really like that answer. WILL: How has your relationship with Chad continued to grow since you left? Because seven years at the company is a lot. And it seems like you're still on really, really good terms, and you're still friends. And I know that doesn't happen at every company. BEN: I mean, it was tough deciding to leave. I think, like, both of us felt pretty sad about it. That was the longest I'd ever worked anywhere, and I really enjoyed the experience. So, I think it was tough on both sides, honestly. But we haven't kept in that much touch since then. I think we've emailed a handful of times here and there. We're both sociable people, and we sort of get each other. And there's a long history there. So, I think it's just easy for us to kind of drop back into a friendly vibe is sort of how I feel about it. CHAD: Yeah. And the way I explain it to people, you know, when you're leading a company, which Ben and I both are, you put a lot of energy into that and to the people who are on that team. If you're doing things right, there's not really hard feelings when someone leaves. But you need to put in a lot of effort to keep in touch with people outside of the company and a lot of energy. And, to be honest, I don't necessarily do as good a job with that as I would like because it's a little bit higher priority to maintain relationships with them, the people who are still at thoughtbot and who are joining. BEN: What you're saying is I'm dead to you [laughter]. That's CEO, for you're dead to me. CHAD: No. It's just...no hard feelings. BEN: Totally. CHAD: I think one of the things that has been great about the show over the years is that we haven't been afraid to change the format, which I think has been important to keeping it going. So, there is sort of; in fact, the website now is organized into seasons. And I went back and re-categorized all the episodes into seasons. And when the seasons were made up of, like, sort of the format of the show or particular hosts...when we started, it was just an interview show, and it was largely technical topics. And then we started The Bike Shed, and the technical topics sort of moved over there. But it also went with your interests more under the product and business side. Then you started working on products at thoughtbot, so it started to go even more in that. And I think Chris joined you on the show, and that was sort of all about those topics. BEN: Yeah, that makes sense. I think if you don't let the hosts kind of follow their interests, they're going to probably burn out on the thing. It's not fun to force yourself, I think, to record a podcast. CHAD: Yeah. And then when you left, you know, I took over hosting and hosted by myself for a while, went back to the interview format, but then was joined by Lindsey for a little while. We experimented with a few different things: one, interviews, but then we did a whole, just under a year, where we followed along with three companies. And each month, we would have an interview episode where we talked to them, all three companies, about the same topic. And then, we also did an episode with just Lindsey and I talking about that topic and about what we learned from the startup companies that we were following along with for the year. And now we're back to interview freeform, different guests, different topics. It seems like we're going to stick with that for a little while. But, obviously, as Will and Victoria have said, like, we'll probably change it again in some way, you know, a year, two years, three years from now. VICTORIA: Yeah, and I'm definitely bringing my interest around DevOps and platform engineering, so you'll see more guests who have that focus in their background. And with that, sometimes my interview style is more; how do I ask a question that I can't read from your developer docs and that I might not understand the answer to? [laughs] That's kind of where I like to go with it. So yeah, I'm really excited about...it's probably one of my favorite parts of my job here at thoughtbot because I get to meet so many interesting people. And, hopefully, that's interesting to everyone else [laughs] and our guests, yeah. BEN: Totally. Well, I dramatically underestimated how awesome it would be to meet all kinds of cool people in the industry when I started the podcast. I didn't truly connect in my head, like, wait a second, if I have a 45-minute conversation with, like, a lot of prominent, awesome people in our field, that's going to be really interesting and useful for me. So, I think, yeah, it's nice to be in the hosting seat. VICTORIA: And it's so surprising how I'll meet someone at a conference, and I'll invite them onto the podcast. And the way it winds up is that whatever we're talking about on the show is directly relevant to what I'm working on or a problem that I have. It's been incredible. And I really appreciate you for coming back for our 500th Episode here. CHAD: Ben, thanks very much again for joining us, and congratulations on all the success with Tuple. And I wish you the best. BEN: Thank you so much. Thanks for being a continuing customer. I really appreciate it. CHAD: Next, we caught up with Chris Toomey, who had a run as co-host of the show with Ben throughout 2016. CHRIS: Hi there. Thanks for having me. So, we're talking with all of the past hosts. I know you joined the show, and you were on it with Ben. And then you moved over to The Bike Shed, right? CHRIS: Yeah. So, I had co-hosted with Ben for about six months. And then I think I was transitioning off of Upcase, and so that ended sort of the Giant Robots “let's talk about business” podcast tour for me. And then, I went back to consulting for a while. And, at some point, after Derek Prior had left, I took over as the host of The Bike Shed. So, I think there was probably, like, a year and a half, two-year gap in between the various hostings. CHAD: Are you doing any podcasting now? CHRIS: I'm not, and I miss it. It was a lot of fun. It was, I think, an ideal medium for me. I'm not as good at writing. I tend to over-edit and overthink. But when you get me on a podcast, I just start to say what's in my head, and I tend to not hate it after the fact. So [chuckles], that combination I found to be somewhat perfect for me. But yeah, lacking that in my current day-to-day. CHAD: Well, what's been taking up your time since you left? CHRIS: I had decided it was time to sort of go exploring, try and maybe join a startup, that sort of thing. I was sort of called in that direction. So, just after I left thoughtbot, I did a little bit of freelancing, but that was mostly to sort of keep the lights on and start to connect with folks and see if there might be an opportunity out there. I was able to connect with a former thoughtbot client, Sam Zimmerman, who was looking to start something as well. And so, we put our act together and formed a company called Sagewell, which was trying to build a digital financial platform for seniors, which is a whole bunch of different complicated things to try and string together. So, that was a wonderful experience. I was CTO of that organization. And I think that ran for about two and a half years. Unfortunately, Sagewell couldn't quite find the right sort of sticking point and, unfortunately, shut down a little bit earlier in this year. But that was, I would say, the lion's share of what I have done since leaving thoughtbot, really wonderful experience, got to learn a ton about all of the different aspects of building a startup. And I think somewhat pointedly learned that, like, it's messy, but I think I do like this startup world. So, since leaving Sagewell, I've now joined a company called August Health, which has a couple of ex-thoughtboters there as well. And August is post their Series A. They're a little bit further along in their journey. So, it was sort of a nice continuation of the startup experience, getting to see a company a little bit further on but still with lots of the good type of problems, lots of code to write, lots of product to build. So, excited to be joining them. And yeah, that's mostly what's taking up my time these days. CHAD: So, I know at Sagewell, you made a lot of technical architecture, team decisions. It was Rails in the backend, Svelte in the frontend, if I'm not mistaken. CHRIS: Yep, that's correct. CHAD: You know, hindsight is always 2020. Is there anything you learned along the way, or given how things ended up, that you would do differently? CHRIS: Sure. I was really happy with the tech stack that we were able to put together. Svelte was probably the most out there of the choices, I would say, but even that, it was sort of relegated to the frontend. And so, it was a little bit novel for folks coming into the codebase. Most folks had worked in React before but didn't know Svelte. They were able to pick it up pretty quickly. But Inertia.js was actually the core sort of architecture of the app, sort of connected the frontend and the backend, and really allowed us to move incredibly quickly. And I was very, very happy with that decision. We even ended up building our mobile applications, both for iOS and Android. So, we had native apps in both of the stores, but the apps were basically wrappers around the Rails application with a technology similar to Turbolinks native–if folks are familiar with that so, sort of a WebView layer but with some native interactions where you want. And so, like, we introduced a native login screen on both platforms so that we could do biometric login and that sort of thing. But at the end of the day, most of the screens in the app didn't need to be differentiated between a truly native mobile app and what like, mobile WebView would look like. So, we leaned into that. And it was incredible just how much we were able to do with that stack and how quickly we were able to move, and also how confidently we were able to move, which was really a nice thing. Having the deep integration between the backend and the frontend really allowed a very small team to get a lot done in a short time. CHAD: Does that code live on in any capacity? CHRIS: No. CHAD: Oh. How does that make you feel? [chuckles] CHRIS: It makes me feel very sad, I will say. That said, I mean, at the end of the day, code is in service of a business. And so, like, the code...there are, I think, probably a couple of things that we might be able to extract and share. There were some interesting...we did some weird stuff with the serializers and some, like, TypeScript type generation on the frontend that was somewhat novel. But at the end of the day, you know, code is in service of a business, and, unfortunately, the business is not continuing on. So, the code in the abstract is...it's more, you know, the journey that we had along the way and the friends we made and whatnot. But I think, for me, sort of the learnings of I really appreciate this architecture and will absolutely bring it to any new projects that I'm building from, you know, greenfield moving forward. VICTORIA: I'm curious what it was like to go from being a consultant to being a big player in a startup and being responsible for the business and the technology. How did that feel for you? CHRIS: I would say somewhat natural. I think the consulting experience really lent well to trying to think about not just the technical ramifications but, you know, what's the business impact? How do we structure a backlog and communicate about what features we want to build in what order? How do we, you know, scope a minimal MVP? All those sorts of things were, I think, really useful in allowing me to sort of help shape the direction of the company and be as productive of an engineering team as we could be. CHAD: A lot of the projects you worked on at thoughtbot were if not for startups, helping to launch new products. And then, a lot of the work you did at thoughtbot, too, was on Upcase, which was very much building a business. CHRIS: Yes. I definitely find myself drawn in that direction, and part of like, as I mentioned, I seem to be inclined towards this startup world. And I think it's that, like, the intersection between tech and business is sort of my sweet spot. I work with a lot of developers who are really interested in getting sort of deeper into the technical layers, or Docker and Kubernetes and orchestration. And I always find myself a little bit resistant to those. I'm like, I mean, whatever. Let's just...let's get something out there so that we can get users on it. And I am so drawn to that side, you know, you need both types of developers critically. I definitely find myself drawn to that business side a little bit more than many of the folks that I work with, and helping to bridge that gap and communicate about requirements and all those sort of things. So, definitely, the experience as a consultant really informed that and helped me have sort of a vocabulary and a comfort in those sort of conversations. WILL: How did Upcase come about? Because I know I've talked to numerous people who have gone through Upcase. I actually went through it, and I learned a ton. So, how did that come about? CHRIS: I think that was a dream in Ben Orenstein's eye. It started as thoughtbot Learn many, many years ago. There was a handful of workshops that had been recorded. And so, there were the video recordings of those workshops that thoughtbot used to provide in person. Ben collected those together and made them sort of an offering on the internet. I think Chad, you, and I were on some podcast episode where you sort of talked about the pricing models over time and how that went from, like, a high dollar one-time download to, like, $99 a month to $29 a month, and now Upcase is free. And so, it sort of went on this long journey. But it was an interesting exploration of building a content business of sort of really leaning into the thoughtbot ideal of sharing as much information as possible, and took a couple of different shapes over time. There was the weekly iterations of the video series that would come out each week, as well as the, like, longer format trails, and eventually some exercises and whatnot, but very much an organic sort of evolving thing that started as just a handful of videos and then became much more of a complete platform. I think I hit the high points there. But, Chad, does that all sound accurate to you? CHAD: Yeah, I led the transition from our workshops to Learn, which brought everything together. And then, I stepped away as product manager, and Ben took it the next step to Upcase and really productized it into a SaaS sort of monthly recurring billing model and took it over from there. But it still exists, and a lot of the stuff there is still really good [laughs]. CHRIS: Yeah, I remain deeply proud of lots of the videos on that platform. And I'm very glad that they are still out there, and I can point folks at them. VICTORIA: I love that idea that you said about trying to get as much content out there as possible or, like, really overcommunicate. I'm curious if that's also stayed with you as you've moved on to startups, about just trying to get that influence over, like, what you're doing and how you're promoting your work continues. CHRIS: I will say one of the experiences that really sticks with me is I had followed thoughtbot for a while before I actually joined. So, I was reading the blog, and I was listening to the podcasts and was really informing a lot of how I thought about building software. And I was so excited when I joined thoughtbot to, like, finally see behind the curtain and see, like, okay, so, what are the insider secrets? And I was equal parts let down...actually, not equal parts. I was a little bit let down but then also sort of invigorated to see, like, no, no, it's all out there. It's like, the blog and the open-source repos and those sort of...that really is the documentation of how thoughtbot thinks about and builds software. So, that was really foundational for me. But at the same time, I also saw sort of the complexity of it and how much effort goes into it, you know, investment time Fridays, and those sort of things. Like, a thoughtbot blog post is not a trivial thing to put up into the world. So many different people were collaborating and working on it. And so, I've simultaneously loved the sharing, and where sharing makes sense, I've tried to do that. But I also recognize the deep cost. And I think for thoughtbot, it's always made sense because it's been such a great mechanism for getting the thoughtbot name out there and for getting clients and for hiring developers. At startups, it becomes a really interesting trade-off of, should we be allocating time to building up sort of a brand in the name and getting ourselves, you know, getting information out there? Versus, should we be just focusing on the work at hand? And most organizations that I've worked with have bias towards certainly less sharing than thoughtbot, but just not much at all. Often, I'll see folks like, "Hey, maybe we should start a blog." And I'm like, "Okay, let's just talk about how much effort that [laughs] actually looks like." And I wonder if I'm actually overcorrected on that, having seen, you know, the high bar that thoughtbot set. CHAD: I think it's a struggle. This is one of my [laughs] hot topics or spiels that I can go on. You know, in most other companies, that kind of thing only helps...it only helps in hiring or the people being fulfilled in the work. But at most companies, your product is not about that; that's not what your business is. So, having a more fulfilled engineering team who is easier to hire—don't get me wrong, there are advantages to that—but it doesn't also help with your sales. CHRIS: Yes. CHAD: And at thoughtbot, our business is totally aligned with the people and what we do as designers and developers. And so, when we improve one, we improve the other, and that's why we can make it work. That is marketing for the product that we actually sell, and that's not the case at a SaaS software company. CHRIS: Yes, yeah, definitely. That resonates strongly. I will say, though, on the hiring side, hiring at thoughtbot was always...there was...I won't say a cheat code, but just if someone were to come into the hiring process and they're like, "Oh yeah, I've read the blog. I listen to the podcast," this and that, immediately, you were able to skip so much further into the conversation and be like, "Okay, what do you agree with? What do you disagree with? Like, let's talk." But there's so much. Because thoughtbot put so much out there, it was easy to say, like, "Hey, this is who we are. Do you like that? Is that your vibe?" Whereas most engineering organizations don't have that. And so, you have to try and, like, build that in the context of, you know, a couple of hour conversations in an interview, and it's just so much harder to do. So, again, I've leaned in the direction of not going anywhere near thoughtbot's level of sharing. But the downside when you are hiring, you're like, oh, this is going to be trickier. CHAD: Yeah. One of the moments that stands out in my mind, and maybe I've told this story before on the podcast, but I'll tell it again. When we opened the New York studio, it was really fast growing and was doing a lot of hiring. And one of the people who had just joined the company a couple of weeks before was doing an interview and rejected the person was able to write an articulate reason why. But it all boiled down to this person is, you know, not a fit for thoughtbot. Based on what they were able to describe, I felt very confident with the ability or with the fact that they were able to make that call, even though they had been here only a couple of weeks, because they joined knowing who we were, and what we stand for, and what our culture and our values are, and the way that we do things, and all that kind of thing. And so, yeah, that's definitely a huge benefit to us. VICTORIA: I've certainly enjoyed that as well, as someone who hires developers here and also in meeting new companies and organizations when they already know thoughtbot. That's really nice to have that reputation there, coming from my background—some really more scrappier startup kind of consulting agencies. But, you know, I wanted to talk a little bit more about your podcasting experience while you're here. So, I know you were on both The Bike Shed and Giant Robots. Which is the better podcast? [laughter] So, what's your...do you have, like, a favorite episode or favorite moment, or maybe, like, a little anecdote you can share from hosting? CHRIS: Well, I guess there's, like, three different eras for me in the podcasting. So, there's Giant Robots with Ben talking more about business stuff, and I think that was really useful. I think it was more of a forcing function on me because I sort of...Both Ben and I were coming on; we were giving honest, transparent summaries of our, like, MRR and stats and how things were growing, and acted as sort of an accountability backstop, which was super useful but also just kind of nerve-wracking. Then, when I joined the Bike Shed, the interviewing sequence that I did each week was just a new person that I was chatting with. And I sort of had to ramp them up on, hey, here's a quick summary on how to think about podcasting. Don't worry, it'll be great. Everybody have fun. But I was finding each of the guests. I was sort of finding a topic to talk about with them. So, that ended up being a lot more work. And then, the last three years chatting with Steph that was by far my favorite. There was just such a natural back-and-forth. It really was just capturing the conversations of two developers at thoughtbot and the questions we would ask each other as we hit something complicated in a piece of code or, "Oh, I saw this, you know, article about a new open-source repository. What do you think about that?" It was so much easier, so much more natural, and, frankly, a lot of fun to do that. And, two, I actually do have an answer to the favorite podcast episode, which is the first episode that Steph was ever on. It was before she actually joined as a co-host. But it was called “What I Believe About Software.” And it was just this really great, deep conversation about how we think about software. And a lot of it is very much, like, thoughtbot ideals, I would say. But yeah, Steph came in and just brought the heat in that first episode, and I remember just how enjoyable that experience was. And I was like, all right, let's see if I can get her to hang out a little bit more, and, thankfully, she was happy to join. WILL: What was your favorite position, I guess you can call it? Because you say you like the mixture of business and, you know, development. So, you've been in leadership as development director, CTO. You've been a web developer. You've been over content, like, with Upcase. What was your favorite position [inaudible 16:43] you were doing, and why was it your favorite? CHRIS: The development director role feels like sort of a cheating answer, but I think that would be my answer because it contained a handful of things within it. Like, as development director, I was still working on client projects three days a week. And then, one day a week was sort of allocated to the manager-type tasks, or having one-on-ones with my team sort of helping to think about strategy and whatnot. And then, ideally, still getting some amount of investment time, although the relative amounts of those always flexed a little bit. Because that one sort of encompassed different facets, I think that's going to be my answer. And I think, like, some of what drew me to consulting in the first place and kept me in that line of work for seven years was the variety, you know, different clients, as well as, even within thoughtbot, different modes of working in podcasts or video. Or there was a bootcamp that I taught, a session of Metis, which that was a whole other experience. And so, getting that variety was really interesting. And I think as sort of a tricky answer to your question, the development director role as a singular thing contained a multitude, and so I think that was the one that would stand out to me. It's also the most, you know, the one that I ended on, so [laughs] it might just be recency bias, but yeah. VICTORIA: Oh, I love that. Is there anything else that you would like to promote on the podcast today? CHRIS: No, although as you ask the question, I feel like I should, I don't know, make some things to promote, get back into some, I don't know, content generation or something like that. But for now, no. I'm, you know, diving into the startup life, and it's a wonderful and engrossing way to do work, but it does definitely take up a lot of my headspace. So, it's an interesting trade-off. But right now, I don't know; if folks are online and they want to say hi, most of my contact information is readily available. So, I would love to say hi to folks, anyone that listened in the past or, you know, has any thoughts in the now. Would love to connect with folks. But otherwise, yeah, thank you so much for having me on. CHAD: In 2017, I took over from Ben as solo host of the show but was joined by Lindsey Christainson as cohost in 2019. After some time away from thoughtbot, Lindsey is back with us and we sat down to catch up with her. VICTORIA: Why don't you tell me about your current role with thoughtbot? LINDSEY: I am currently supporting marketing and business development at thoughtbot, as well as working as a marketing consultant for thoughtbot clients. VICTORIA: Great. And I understand that you had worked with thoughtbot many years ago, and that's when you also came on as a co-host of Giant Robots. Is that right? LINDSEY: Yeah, a couple of years ago. I left thoughtbot in spring of 2021. And I forget how long my stint was as a co-host of Giant Robots, but over a year, maybe a year and a half, two years? CHAD: Yeah, I think that's right. I think you started in 2019. LINDSEY: Yeah. Yeah, that sounds right. And Chad and I were co-hosts, I think, similar to the setup today in which sometimes we hosted together, and sometimes we were conducting interviews separately. CHAD: And then we sort of introduced a second season, where we followed along with a batch of companies over the course of the entire season. And that was fun, and we learned a lot. And it was nice to have consistent guests. LINDSEY: Yeah, that was a lot of fun. I really liked that format. I don't know; they almost were, like, more than guests at that point. They were just like other co-hosts [laughs] that we could rely on week in, week out to check in with them as they're working on early-stage companies. So, every time we checked in with them, they usually had some new, exciting developments. WILL: I really like that idea. How did y'all come up with that? CHAD: I'm not sure. I think a few years before I had taken over hosting of the show, and I forget...my memory maybe is that I went to Lindsey and said, "You know, let's do something different." But I'm not sure. Does that match your memory, Lindsey? LINDSEY: Yeah, I think there were two main drivers; one was I think you were feeling like you were having similar conversations in the interviews every time. Like, you couldn't get to a certain depth because every time you were interviewing someone, you were doing, like, the, "Well, tell me your founding story." And, you know, how did you raise funding? It kind of got a little bit repetitive. And then, on the side, the few we had done together, I think we both really enjoyed. So, we were thinking, like, what's the format in which the two of us could co-host together more regularly? Because I'm a pleasure to talk to [laughter]. I think you were like, I need to talk to Lindsey more. [inaudible 3:13] VICTORIA: What is your hosting style? How would you describe your approach to hosting a podcast? LINDSEY: I mean, obviously, it's a podcast about products and business. I think as a marketer, I am, you know, drawn a lot to the marketing side, so tending to ask questions around go-to-market audience, users. That's always just, like, a particular interest of mine. But then also, like, the feelings. I love asking about the feelings of things, you know, how did it feel when you started? How did it feel when you made this tough decision? So, that's another thing I think I noticed in my interviews is asking about some of the emotions behind business decisions. VICTORIA: And I like hearing about how people felt at the time and then how they felt afterwards [laughs]. And, like, how people around them supported each other and that type of thing. That's really fun. I'm curious, too, from your marketing background and having to do with podcasts like; some founders, I think, get the advice to just start a podcast to start building a community. But I'm curious on your thoughts about, like, how does podcasting really play into, like, business and marketing development for products? LINDSEY: Oh yeah. It's become definitely, like, a standard channel in B2B these days. I feel like that it's pretty typical for a company to have a podcast as one way that they engage their audience and their users. In marketing, you're really vying for people's attention, and people's attention span is getting shorter and shorter. So, like, if you have an ad or a blog, you're getting, like, seconds, maybe minutes of someone's attention. And whereas something like a podcast offers a unique channel to have someone's undivided attention for, you know, 30 minutes, an hour, and if you're lucky, you know, checking back in week over week. So, it became a really popular method. That said, I think you're probably also seeing the market get saturated [laughs] with podcasts now, so some diminishing returns. And, you know, as always, kind of looking for, you know, what's the next way? What's the next thing that people are interested in in ways to capture their attention? CHAD: What is the next thing? LINDSEY: I don't know, back to micro-content? TikTok videos -- CHAD: Yeah, I was going to say TikTok, yeah. LINDSEY: Yeah, you know, 10-30 seconds, what can you communicate? VICTORIA: I see people live streaming on Twitch a lot for coding and developer products. LINDSEY: Yeah, I think we've seen some of that, too. We've been experimenting more at thoughtbot with live streaming as well. It's another interesting mechanism. But yeah, I don't know, it's interesting. It's another form of, like, community and how people engage with their communities. So, it's always evolving. It's always evolving, and sometimes it's not. Sometimes, people just do want to get in a room together, too, which is always interesting. WILL: What has been, in your experience, the good the bad? Like, how do you feel about the way that it has shifted? Because I think you started in, like, 2000, like, kind of earlier 2000, 2005, something around there. And it was totally different than now like you're saying. Because I feel like, you know, Channel 5 30-second ad, you know, with some of the marketing depending on what you're doing, to now to where you're, like, you're paying influencers to advertise your product, or you're doing an ad. Or it's more social media-driven and tech-driven. What has been your opinion and feelings on the way that it has grown and evolved? LINDSEY: Marketing, in general, yeah, I graduated college in 2005 and started my marketing career. And yeah, you could, like, actually get people to click on banner ads back then, which was pretty [inaudible 07:14] [laughs]. WILL: I forgot about banner ads [laughs]. LINDSEY: I don't know, yeah. I don't know. In order for myself to not just get too frustrated, I think I've got to, like, view it as a game kind of. What new things are we going to try? You know, what do we see work? But it can really depend. And I've always been in B2B side of things. And consumer, I'm sure, has its own kind of evolution around how people engage and how they consume content and byproducts. But in B2B, you know, it can really depend on industry too. You know, I'm working with a client right now in the senior living space, and they're really big in in-person conferences. So, that's how people consume, get a lot of their information and, make connections, and learn about new products. So, it's been interesting to work in an industry that what might be considered, like, a little bit more old-school channels are still effective. And then just thinking about how you weave in the new channels with the existing ones without ignoring them. They might get information in conferences, but they're still a modern human who will then, you know, search online to learn more, for example. VICTORIA: It reminds me of a phrase I like to say, which is that, like, technology never dies; you just have more of it. There's just more different options and more different ways to do things. And some people are always, you know, sometimes you have to be flexible and do everything. CHAD: So, tell us more about what you did in between...after you left thoughtbot, what did you do? LINDSEY: I was heading up B2B marketing for a company called Flywire, which is headquartered in Boston but is a global company now. And they were just kind of starting their B2B business unit, which, as I mentioned, B2B is my personal specialty. I had been connected to their CMO through the Boston startup community. And yeah, I was helping them kind of launch their go-to-market for B2B. The industries they were in before...they got their start in higher education and then expanded in healthcare and found a niche in luxury travel, and then we were figuring out the B2B piece. But yeah, I was there for about a year and a half. They actually went public the second week I was there, which was an interesting [laughs] experience. I knew they were, like, on that journey, but it was kind of funny to be there the second week, and people were, like, "Congrats." And I was like, "Well, I definitely didn't have anything to do with it because I just finished my onboarding, but thank you," [laughs]. CHAD: One of the things that really impressed me when you joined thoughtbot was the way in which you learned about who we were and really internalized that in a way where you were then able to pretty meaningfully understand our market, our positioning in the market, and come up with new strategies for us. I assume that's something you're good at in general [laughs]. How do you approach it? How did you approach it when you joined Flywire, for example? And how was it the same or different than how you approached thoughtbot? LINDSEY: Ooh, yeah, that's a good question. And I appreciate that comment because it's difficult. But I think, yeah, with any new organization that I'm joining, you know, I think starting out with your kind of mini-listening tour of your key stakeholders across, you know, the different departmental focuses to get a sense of, what are the challenges? What are the opportunities? It's actually like, you know, it's the SWOT analysis, kind of trying to fill in your own mind map of a SWOT analysis of where the company is. What are the major hurdles you're facing? Where are people trying to go? What have they tried that's worked? What have they tried that's failed? But then, like, I think for the culture component, I think a part of that maybe is, like, feel, and maybe something that I do have a knack for. Again, maybe this is, like, you know, emotional intelligence quotient, where it's like, you know, but it's the company, you know, who is this company? What is important to them? How do they work and go about things? I know thoughtbot is certainly very unique, I think, in that arena in terms of being, like, a really value-driven company, and one where especially, like, marketing and business work is, like, distributed across teams in a really interesting way. You know, I'm sure the fact that it fascinated me and was something I could get passionate and get behind was something that also helped me understand it quickly. CHAD: I was excited that...or it was sort of a coincidence because I had reached out to you and without realizing that you had left Flywire. And Kelly, who had been doing a combined sales and marketing role, was going on parental leave. And so, it was fortuitous [laughs] that you were able to come back and help us and provide coverage, like, Kelly was out. LINDSEY: Yeah, it definitely felt like stars aligned moment, which, you know, I'm pretty woo-woo, so I believe in [laughter]...I believe in that kind of thing. You know, yeah, it was wild. It really did feel like your email came out of nowhere. And, you know, I mentioned it, obviously, to my partner and my friends. And they were like, "Oh, he definitely knows, like, that you left your last company." And I'm like, "I actually don't think he does [laughter]. I actually don't think he does." Yeah, and then we started chatting about me coming back to help. And it was great. thoughtbot makes it hard to work anywhere else [laughs]. So, I was happy to come back. I missed the team. CHAD: And one of the exciting things, and you've mentioned it, is you're not just doing marketing for thoughtbot now. We have started to offer your services to our clients. LINDSEY: Yeah, I'm super excited about this. And it's something I'd started thinking about. I had decided to take some time off between Flywire and my next thing and had started thinking about doing marketing, consulting. And as I'm doing that, I'm thinking a lot about how thoughtbot does consulting and, you know, wanting to emulate something like that. So, I started back up at thoughtbot. That wasn't part of the plan. I was just going to, you know, fill in for Kelly and help with marketing things. But then, you know, a good opportunity arose to work on a client, and I was really excited. When, you know, Chad, you and I chatted through it, we came to the conclusion that this was something worth exploring under the, you know, thoughtbot umbrella. And it's been a really great experience so far. And we now have brought on another client now. And if you're listening and need early-stage B2B marketing support, reach out to lindsey@thoughtbot.com. CHAD: Definitely. And Lindsey is pretty good, so you're going to like it [laughs]. LINDSEY: Yeah, you're going to like the way you look. WILL: Yeah, definitely. Because I can even feel your presence here, you know, coming back. Because even like, you know, the market where it's at now and some of the suggestions that, you know, you've been helping us. For example, like, I do a lot of React Native, and you're like, "Hey, you know, blog posts have done a lot of traction, you know, let's get some more blog posts out in the market to help with the traffic and everything." So, the question I have with that is, like, thank you for even suggesting that because it's, like, those little things that you don't even think about. It's like, oh yeah, blog posts, that's an easy transition to help the market, clients, things like that. But with the market the way it is, what has been your experience working during this time with the market? I don't know if you want to call it struggling, but whatever you want to call it that, it's doing [laughs]. LINDSEY: Yeah, I mean, the economy is difficult now. We also went through a really tough spot when I was here last time. During COVID, you know, we faced a major company challenge. And, I mean, I'll let Chad speak to it, but I would imagine it's probably one of the bigger, like, economic inflection points that you faced. Would you say that? CHAD: Yeah, definitely. The thing about it that made it worse was how quickly it happened. You know, it was something that you didn't see coming, and then, you know, about 40% of our business went away in a single month. That's the kind of thing that was a real shock to the system. I think the thing that made it difficult, too, was then the aspects of COVID, where we were no longer able to go into our studios. We were all working remotely. We were isolated from each other. And so, that made executing on what needed to be done in order to make the company survive additionally challenging. LINDSEY: Yeah, so I think, like, going through that experience, also, and seeing how the team and the leadership team rallied together to get through it. And then, you know, ultimately, I think 2021 and 2022 have, like, really good years. That was a really positive experience. And something I'll definitely take with me for a while is just, like, keeping a cool head and just knowing you have, like, really smart, talented folks with you working on it and that you can get through it. And just, like, doing some, I mean, we relied on what we did best, which was, like, design thinking, using design exercise to think about, like, how we might re-organize the company, or what other services we might try launching, or how might we re-package, you know, larger services into smaller more palatable services when people have, like, kind of tighter purse strings. So, that was, like, a great educational experience, and I think something we just continue to do now: be open to change, be open to changing how we package services, what clients we go after, and coming at it with, like, an agile, experimental mindset and try to find out what works. VICTORIA: I really appreciate that. And it aligns now with the new service we've developed around you and the marketing that you provide. And I'm curious because I've had founders come up to me who say they need help with marketing or they need to, like, figure out their marketing plans. So, say you've met a founder who has this question, like, what questions do you ask them to kind of narrow down what it is they really need and really want to get out of a marketing plan? LINDSEY: I've been thinking about this a lot recently. And, like, obviously, I see other marketing leaders in the market. Marketers like to talk about what they do on LinkedIn [laughs], so I get to...I read a lot about different people's approaches to this. And some people kind of go in and are like, okay, this is what you need. This is how we're going to do it, and they start executing on it. And I really do take a very collaborative approach with founders. I think they're, especially in early stage, they're your most important asset in a way, and a lot of their intuition around the market and the business, you know, it's gotten them to where they're at. And so, I think starting from the point of, like, taking what they view as priorities or challenges, and then helping them better explore them or understand them with my own marketing experience and expertise, to
Adam wants to start the process of growing the team at Tailwind Labs, but knowing exactly who, when, and how to hire people (and have them actually work out) is a lot harder than expected. In this episode, he sits down with Jason Fried, founder and CEO of 37signals, to get all of Jason's best advice about hiring.Timestamps(00:00) - Talking hiring with Jason Fried (02:04) - Knowing when it's time to hire (04:57) - Grouping different responsibilities into single roles (11:49) - Example: Delegating some of Adam's responsibilities at Tailwind Labs (20:47) - Hiring to get more done vs. free up more time (23:58) - Stuff Jason has successfully delegated at 37signals (31:09) - Hard truths about hiring and growing a company (40:39) - Patrick Collison — Fast (44:13) - Anxiety about making bad hires (53:28) - Letting people go (54:55) - Jason's advice on making new hires successful (58:49) - Giving feedback (01:01:32) - Assessing good judgment (01:05:18) - Reviewing candidates LinksAdam on TwitterBen on TwitterJason on TwitterPatrick Collison — Fast
In this episode, Jason, Chris, and Andrew are live at Rails World 2023 in Amsterdam, where they are joined by Adam Wathan, creator of Tailwind CSS. Today, they discuss the well-organized event, their excitement about being part of the Rails community, and Adam's talk on making the most of Tailwind CSS for Rails developers. The conversation dives into topics like using Inertia with Rails, the challenges of creating accessible components, and the management of open source projects, all while shedding light on the nuances of web development. They also explore the pros and cons of using React and Vue.js in their projects, highlighting the flexibility and evolution of these frontend technologies. Press download now to hear much more! [00:01:01] Adam talks about being at his first-ever Rails conference he's attending.[00:02:00] Adam discusses “Tailwind Connect,” an event that started as a team retreat and grew into a successful meetup. [00:04:38] Jason asks about Adam's upcoming talk at the conference. He discusses the content of his talk, focusing on helping Rails developers make the most of TailwindCSS.[00:06:19] Jason inquires about using Laravel with Inertia, and Adam explains the benefits of Inertia, including how it preserves the monolithic feel of Rails while using React or Vue for the view layer. [00:10:46] Chris and Adam discuss the history and challenges of using Inertia in Rails and its potential advantages. They talk about the limitations of web components and styling issues when using Tailwind CSS.[00:13:50] Adam discusses the need for unstyled primitives with Stimulus or similar solutions to support keyboard navigation and accessibility, and the complexities of handling various scenarios and the need for continuous maintenance.[00:16:07] Chris appreciates the high quality of Tailwind CSS, and they discuss the challenge of managing criticism and maintaining high standards for open source projects. [00:19:02] Adam shares the company's high standards for quality and handling GitHub issues, the ideal number of GitHub issues, and the importance of triaging effectively. [00:21:15] We hear how issues are categorized, including bug reports and feature requests. Chris and Adam discuss how to handle feature requests in GitHub repositories. The conversation shifts to the challenges of managing open source project, including handling issues and feature requests. [00:27:29] The discussion turns to implementing interactive frontend components without React, focusing on accessibility and keyboard navigation, and Adam brings up the “curse of React.” Then, Adam discusses the challenges of building frontend components in the context of a Rails project. [00:33:32] The conversation shifts to a comparison of React and Vue.js and why Adam leans towards using React in recent projects. Adam explains that his shift towards react began when they needed interactive components for Tailwind UI and React was chosen due to better support and expertise in the team. [00:35:35] Adam discusses the benefits of creating smaller components in React compared to Vue due to lower extraction costs. He also touches on the evolution of the React and Vue ecosystems, where it appears that Vue often follows in Reacts footsteps. [00:39:42] How much Laravel does Adam get to do these days? Adam mentions that while he doesn't work with Laravel much these days, it is still the main technology for their primary wHoneybadger Honeybadger is an application health monitoring tool built by developers for developers.Disclaimer: This post contains affiliate links. If you make a purchase, I may receive a commission at no extra cost to you.
In this episode, Jason, Chris, and Andrew start us off with a conversation about burger toppings preferences, discussing whether certain ingredients should be included in “the works” and sharing tips to prevent burger slippage. The discussion transitions to programming topics, exploring the challenges of working with multiline environment variables and the intricacies of Bash scripting. The guy's dive into the benefits of building UI components using frameworks like Tailwind CSS and Alpine.js, emphasizing the importance of well-organized and specialized components for better code management. The conversation also touches on the desire for more pre-built component libraries in the Rails ecosystem and the complexities of using various frontend frameworks. Hit download now to satisfy your appetite for both burgers and development insights! [00:00:08] Find out what the guys prefer for their burger toppings and Andrew mentions eating burgers upside down to prevent slippage and eating burgers with chopsticks. [00:04:13] The discussion moves to other sandwich places like Firehouse Subs, Jersey Mikes, Subway, and Lenny's, and Chris brings up the Meat Church BBQ guy who made a smoked cream cheese with hot pepper jelly. [00:06:31] Andrew wants BBQ now and tells us about a greatest BBQ place in Arizona, and Chris tells us about an Egyptian guy that moved to Texas that does Texas style but with Egyptian fusion BBQ that is unbelievable. [00:07:55] Jason and Chris tease Andrew about booking his flight to Rails World and his ticket to Rails World. [00:09:40] Jason expresses his excitement about going to Amsterdam. [00:10:33] Chris talks about not having fun adding support for multi-line environment variables in a programming project. Andrew clarifies the concept of multiline environment variables. [00:12:53] Chris describes the limitations of RVM vars, which truncates multiline values, and he discusses the process of rewriting and fixing the RVM vars behavior to support multiline values. [00:15:43] Andrew and Chris share their recent experiences with writing Bash scripts, discussing the challenges and nuances of Bash scripting, as well as the difficulties of learning and remembering the intricacies of Bash scripting between projects. [00:21:07] Andrew talks about his enjoyment of combining different command-line tools to create interactive scripts and functions. He highlights the benefits of creating personalized tools and shortcuts to simplify daily tasks.[00:23:17] Jason mentions to Andrew that they are recording a podcast at Rails World, and he arranged two recording sessions, one with Adam Wathan, and the other is an open session during the Friday happy hour. [00:26:22] The discussion shifts to discussing building UI components using Tailwind CSS and Alpine.js. Jason talks about the concerns and considerations while building and organizing View Components, Chris asks about handling forms and buttons components within Rails, and Andrew emphasizes the importance of well-defined and specialized components for better code organization and discoverability. [00:32:09] Jason mentions how he's using component variants, sizes, and colors within his app, and he wishes for more pre-built component libraries in the Rails ecosystem, like what's available for React. [00:36:00] Jason mentions the use of Alpine.js data directives for reusable functionality and components, Chris and Jason discuss Alpine.js's ease of use for handling simple UI interactions, and they mention recent version releases of Alpine.js and Laravel Livewire. Panelists:Jason CharnesChris OliverAndrew MasonSponsor:HoneybadgerLinks:Jason Charnes TwitterChris Oliver TwitterAndrew Mason TwitterMeat Church BBQ (YouTube)The Most Exciting BBQ Joint in Texas is Egyptian-Bon Appétit (YouTube)Rails World 2023Alpine.dataLaravel LivewireRuby Radar TwitterRuby for All Podcast
When you're running a small company, hiring is simultaneously your highest leverage opportunity and the scariest thing ever. In this episode, Adam and Ben share some lessons learned, how they think about hiring for their teams now, and talk through some of the things they're still trying to figure out how to get right.Discuss this episode on Twitter →Timestamps(00:00) - Hiring (02:02) - Why hire at all? (06:41) - Avoiding hiring altogether (11:44) - Vetting people (24:45) - Finding people (36:22) - How Ben got recruited at Thoughtbot (37:53) - Evaluating hires (43:23) - Fears and anxieties around hiring (50:50) - Unfair hiring advantages (57:36) - Levels of management LinksAdam on TwitterBen on Twitter
Enterprise sales gets a bad rap amongst indie founders, but at Tuple it's become an important part of their business model. In this episode, Ben shares all his tips and tricks on how to sell to enterprise customers as a small startup without letting it slow you down.Discuss this episode on Twitter →Timestamps(00:00) - Ben's notes on enterprise sales (02:58) - Ben's first time (04:56) - Tactic: Build a product that can grow bottom-up (07:12) - Tactic: Ask buyers to answer their own questions (08:34) - Tactic: Say no to more than you think (16:11) - Tactic: Your pricing should make you uncomfortable (25:38) - Tactic: Charge more for SAML single sign-on (27:50) - Tactic: Don't sign something without charging a lot (28:34) - Tactic: Put an expiration date on your quotes (29:12) - Tactic: Dodge pricing pushback with quarterly payments (31:06) - Tactic: Make sure you lose some deals because of price (33:26) - How procurement works (37:54) - How important is enterprise sales for Tuple? (47:59) - Tactic: Ask procurement, "what helps this deal get done faster" (49:49) - Tactic: Have a /security page on your website (53:07) - Tactic: Use Y Combinator's sales agreement template (55:47) - Tactic: You probably won't be sued LinksAdam on TwitterBen on TwitterTuple's /security pageY Combinator — Sales Agreement
Even though we're missing Andrew today, Chris and Jason keep things lively, kicking off with a fun chat about candies, and unusual dislikes. Then, they dive into the professional world where Jason shares insights from his Job Boardly project and talks about the challenges and tools he found useful, such as Imperavi's, Article. Chris and Jason have a discussion on various text editors, focusing on Basecamp's Trix, we hear the difference between Redactor X and Article, and the Revolvapp, which is Imperavi's email templates editor. Chris and Jason go deeper into the world of JavaScript development, and they discuss their struggles with customizing elements using CSS and Tailwind. They also share their thoughts reminding developers to view themselves as Ruby developers, recognizing the broader capabilities of Ruby beyond what Rails offers. Stay tuned for a fun episode and hit download now to hear more! [00:00:31] Chris and Jason discuss the absence of Andrew and have a conversation about specific candies and personal preferences. [00:02:22] The conversation shifts to Jason's project, Job Boardly, where he's been actively working on giving users more control over their job board's appearance, and he shares all the secrets and talks about Imperavi, a website editor, and Article. [00:07:03] Jason acknowledges the potential pitfalls of storing HTML but praises the user experience offered by the editor, enabling users to directly see the impact of their edits. [00:07:56] Chris and Jason debate the complexity of using Trix, and comment on the lack of progress seen in public updates.[00:09:50] What's the difference between Redactor X and Article? Jason explains Redactor X is a pure WYSIWIG editor, while Article incorporates both text editing and content layout functionalities. [00:11:35] Jason talks about the Revolvapp, discussing its advantages, including having all the functionality from a single source and it's not a subscription. [00:13:00] Chris discusses using the EL transition library for Tailwind CSS stimulus components, noting the library's simplicity but highlighting some complications when animations overlap due to quick mouse movement.[00:18:21] Chris talks about simplifying his codebase and moving away from certain older features. He discussed his decision to discard bundle and compile using the esbuild for modern imports and CommonJS, and he mentions Adam Wathan's keynote at Tailwind Connect with Sam Selikoff showing off some amazing stuff.[00:25:55] Jason and Chris converse about their struggles with customizing the look and feel of elements using CSS and Tailwind. They talk about the benefits and challenges of using Tailwind with Rails, particularly as it relates to component-based projects. [00:30:42] Chris discusses the implementation of getters and setters in a single method. He points out that if additional functionality such as sidecar or JavaScript isn't necessary, and a lot can be accomplished using pure Ruby. [00:36:04] Chris and Jason discuss the possibility of using pure forms or creating custom tools instead of relying solely on Rails provided tools. [00:40:05] They remind developers to view themselves as more than just Rails developers, highlighting the importance of understanding and utilizing the broader capabilities of Ruby beyond just what Rails offers. [00:41:05] Jason brings up his experience with earlier versions of Laravel that had a form builder which later got phased out. He praises Laravel's way of handling inline errors. Chris expresses his views about the tendency of developers to over-engineer forms. [00:44:54] Chris adds his thoughts on “conceptual compression,” discussing he balance between abstracting processes and maintaining the ability to drop a lower level when needed.[00:46:23] They discuss theirs experience and observations from using Adam's browser tools and watching his keynote, and they mention how the early days of Tailwind were challenging due to configuration issues. Panelists:Jason CharnesChris OliverSponsor:HoneybadgerLinks:Jason Charnes TwitterChris Oliver TwitterAndrew Mason TwitterImperaviArticle Imperavi Article & Redactor XRevolvappTrixTailwind Connect 2023-Keynote (YouTube)Ruby Radar TwitterRuby for All Podcast
After over 20 years in business and despite being responsible for a larger-than-ever team, David still finds plenty of time to get his hands in the code and build new products himself. We run significantly younger companies and significantly smaller teams and even we can't seem to find the space to do that, so we talked to DHH about how he makes it possible.Discuss this episode on Twitter →Timestamps(00:00) - “Why the fuck did I do this?” (06:20) - What is minimalist management? (10:56) - Should you need to be a trained life coach to be allowed to hire people? (16:12) - Using systems to provide career progression guidance (18:50) - What do David's days usually look like? (27:13) - What are David's responsibilities at Basecamp, and what are people counting on him for day-to-day? (29:38) - How David and Jason use their Shape Up framework to give people more responsibility at Basecamp (36:30) - Getting comfortable with being uncomfortable when giving people more responsibility (45:54) - Letting people go when they can't live up to the responsibility (47:14) - What systems do the 37signals team rely on that that haven't already been talked about publicly? (50:04) - Letting people make decisions you may have to correct and being comfortable correcting them (55:03) - Radical candor and redirecting feedback (01:00:55) - How to say no to opportunities and being willing to take risks (01:11:22) - Learning to stop worrying when you finally do succeed LinksAdamBenDavid
Last summer, Tailwind UI moved from selling individual content packages and upsells to a one-time purchase, lifetime access pricing model. Since then, the business has doubled. Having seen this in action, Adam recently convinced his friends Sam and Ryan to try lifetime pricing for their product Build UI, and the results are starting to come in. In this episode, Adam and Ben dive deep into the world of lifetime pricing, why it's not something to be afraid of, and how it can be an absolute game-changer for the right type of business.Discuss this episode on Twitter →Timestamps(00:00) - Intro (00:14) - Why are we talking about this? (03:28) - Moving from package pricing to lifetime all-access pricing for Tailwind UI (06:03) - What about when you run out of new customers? (10:17) - "Everything You've Learned at MicroConf is Wrong" by Chad DeShon (13:33) - The myth of starting from zero every month (16:04) - Would Tailwind UI work as a subscription model? (18:09) - Characteristics of a lifetime-suitable product (20:50) - Subscription LTV vs. lifetime pricing (22:47) - Subscription friction and the death of the impulse purchase (25:42) - The brutality of churn in content businesses (27:21) - Why your lifetime price can actually be higher than your subscription LTV (29:01) - Ben's experience running Upcase at thoughtbot (32:42) - The hidden costs of the content treadmill (36:20) - Hitting a subscription plateau with Upcase (38:34) - Cookie Clicker game — how to make perceived value go up over time (42:31) - Why aspirational, impulsive purchases are more likely with lifetime deals (45:22) - Pricing decisions aren't forever (49:13) - Turning Build UI from a grind into an instant success by flipping the switch on pricing (54:17) - Using lifetime pricing to buy yourself flexibility and time to focus LinksAdam on TwitterBen on TwitterTailwind UI all-accessEverything You've Learned at MicroConf is Wrong, Chad DeShon's lighting talk at MicroConf Growth 2018Build UI, Sam and Ryan's new UI training site that recently switched to lifetime pricing
Jason Cohen's talk “Designing the Ideal Bootstrapped Business” from 2013 is a classic in the bootstrapper canon. In this episode, Jason joins Adam and Ben to see how the talk holds up a decade after its creation. Timestamps00:00 Intro00:27 Designing the ideal bootstrapped business06:53 Recurring revenue vs one-off sales13:30 Getting all the LTV up front18:31 Product validation24:56 Creating a cash machine26:05 Where does growth come from?41:25 Annual prepays46:41 Increasing your prices51:56 What new advice is there since this talk?59:00 What about freemium?01:03:39 What happens next?01:08:58 Picking an idea that's compatible with the life you want to live01:12:16 Ideas for TailwindLinksAdamBenJason
“How come Dave Grohl is still playing guitar and writing songs and singing but I'm filling out DMCA takedown notices, answering customer support emails and responding to GitHub issues?” Timestamps00:00 Intro03:05 Bringing on a band manager07:34 Why the band metaphor works11:54 Make things for your fans, not for your critics14:49 Always do the things you want to do18:04 Turning over your rep over time19:33 A band needs a frontman22:14 Showing behind the scenes25:23 Doing one thing at a time30:57 Don't interview people, audition them35:38 We don't make movies to make money, we make money to make moviesLinksAdamBen
Ben Orenstein (Tuple) and Adam Wathan (Tailwind CSS) are back on the mics. Today they reflect on 2022 and lessons they've learned. Ben has some thoughts on delegation, priorities and enterprise sales, while Adam explains how he made time for proof of concepts and has figured a way to actually follow his to-do list.Timestamps00:00 Intro02:11 Setting priorities05:11 Shaping up08:27 Don't allocate everyone to every project15:46 Top down management17:13 Delegation gone wrong can still be a success22:06 Don't make your to-do list a chore list24:00 Declaring calendar bankruptcy27:43 Don't make promises future you has to pay for30:09 Make decisions quickly32:54 Making time for proofs of concept37:25 Bluffing in enterprise sales40:38 Doing things the way you want to, as much as you can afford toLinksAdamBen
Maintaining a CSS codebase can become chaotic pretty quickly and building a new stylesheet for every project can get tedious. Frameworks like Tailwind CSS were born to solve this problem. Adam Wathan, CEO of Tailwind Labs, built a “library-style CSS” for personal use and had no idea the concept would resonate with as many people as it did. When developers started asking him to share his library for them to use in their own projects, he got to work building out the framework. Two years after Tailwind CSS's launch, Adam released Headless UI to bring unstyled compatible UI components into the fold. Since then, it's sparked polarizing discourse between developers who either love it or hate it. In this episode, Chuck and Robbie talk to Adam about what motivated him to create Tailwind CSS, how Headless UI was born, why Tailwind is creating polarizing discourse among developers, and his powerlifting past. Key Takeaways [00:35] - An introduction to Adam Wathan. [01:55] - A whiskey review - W3WC Sagamore Rye Barrel Pick #001. [06:51] - Adam explains Tailwind CSS. [09:47] - The problems that inspired Adam to create Tailwind. [35:24] - How Headless UI fits into Tailwind. [41:09] - Whether Tailwind will support other frameworks in the future. [44:33] - Adam's powerlifting career. Quotes [16:47] - “I started noticing that the only things that really survived every port were the things that were lower and lower level. Something like a class that adds margin left to something that's useful in every project, but a button might look different in every project.” ~ Adam Wathan [23:40] - “The main problem that Tailwind is ultimately trying to solve is giving inline style superpowers. It's not like inline styles are evil, it's like inline styles are awesome. Let's make them super awesome.” ~ Adam Wathan [24:10] - “To me, Tailwind is basically inline styles with a bunch of extra power bolted on.” ~ Adam Wathan Links Adam Wathan Adam Wathan Twitter Adam Wathan LinkedIn Tailwind CSS Tailwind UI Discord CSS Zen Garden Nicolas Gallagher Normalize CSS Bootstrap Laravel Vue React Riverside Chrome Stimulus Twitter Select2 BEM Atomic CSS Markdown Headless UI Select2 Svelte Caleb Porzio Alpine JS Solid JS Acquia Elon Musk Connect with our hosts Robbie Wagner Chuck Carpenter Ship Shape Subscribe and stay in touch Apple Podcasts Spotify Google Podcasts Whiskey Web and Whatnot Top-Tier, Full-Stack Software Consultants This show is brought to you by Ship Shape. Ship Shape's software consultants solve complex software and app development problems with top-tier coding expertise, superior service, and speed. In a sea of choices, our senior-level development crew rises above the rest by delivering the best solutions for fintech, cybersecurity, and other fast-growing industries. Check us out at shipshape.io.
Adam Wathan joins the show to talk about a new direction Sam could take for getting his video products up and running. They talk about ideas like releasing content incrementally, starting a private Discord forum, and hosting a weekly Q&A. Adam also talks about some recent challenges he's been working through at his own business, Tailwind Labs, and shares some hard-earned lessons from his years of selling products – like why you shouldn't talk about pricing until a week before a new product launch.
Chris Grainger explains Explorer, Nx's recent addition. It's a “Data Frame” library which sounds far more nebulous than it is. It lets us explore and manipulate two-dimensional data like we already do with DB tables, spreadsheets, CSV files, etc. Only this works in memory, is faster, and has predefined functions that make it very powerful. Explorer fills an important slot in the overall pie for data science and ML in Elixir. However, Explorer is also one of the tools that “regular” Elixir devs can take advantage of today! Show Notes online - http://podcast.thinkingelixir.com/104 (http://podcast.thinkingelixir.com/104) Elixir Community News - https://twitter.com/josevalim/status/1535008937640181760 (https://twitter.com/josevalim/status/1535008937640181760) – At ElixirConf EU, José Valim announced there is an ongoing PhD scholarship for researching and developing a type system for Elixir that is powered by set-theoretic types. - https://www.irif.fr/~gc/ (https://www.irif.fr/~gc/) – Giuseppe Castagna's Home Page. Senior Research Scientist - https://arxiv.org/abs/2111.03354 (https://arxiv.org/abs/2111.03354) – Programming with union, intersection, and negation types - https://twitter.com/fhunleth/status/1534826558774464512 (https://twitter.com/fhunleth/status/1534826558774464512) - https://podcast.thinkingelixir.com/72 (https://podcast.thinkingelixir.com/72) – Typecheck interview - https://github.com/ergo-services/ergo (https://github.com/ergo-services/ergo) – We learned of a Golang library called “ergo” that is an “actor based Framework for creating microservices using technologies and design patterns of Erlang/OTP in Golang” - https://twitter.com/erlangforums/status/1534822378722713601 (https://twitter.com/erlangforums/status/1534822378722713601) – Patch Package OTP 25.0.1 Released - https://erlangforums.com/t/patch-package-otp-25-0-1-released/1526 (https://erlangforums.com/t/patch-package-otp-25-0-1-released/1526) – Minor bug fixes. Zlib updated - https://flowbite.com/docs/getting-started/introduction/ (https://flowbite.com/docs/getting-started/introduction/) – More free alternative to TailwindUI - https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.1.2 (https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.1.2) – tailwindcss CLI v3.1.2 released which includes postcss-import into the CLI bundle - https://twitter.com/adamwathan/status/1535989815778463746 (https://twitter.com/adamwathan/status/1535989815778463746) – Adam Wathan, the Tailwind CSS guy, had a fun quote that we liked. - “Open source is “right to repair” for software — nothing more, nothing less. Maintain that attitude and any frustration or entitlement you feel will be replaced with gratitude. Better for maintainers, and better for you.” Do you have some Elixir news to share? Tell us at @ThinkingElixir (https://twitter.com/ThinkingElixir) or email at show@thinkingelixir.com (mailto:show@thinkingelixir.com) Discussion Resources - https://github.com/elixir-nx/explorer (https://github.com/elixir-nx/explorer) - https://hexdocs.pm/explorer/Explorer.html (https://hexdocs.pm/explorer/Explorer.html) - https://hexdocs.pm/explorer/Explorer.DataFrame.html (https://hexdocs.pm/explorer/Explorer.DataFrame.html) - https://hexdocs.pm/explorer/Explorer.Series.html (https://hexdocs.pm/explorer/Explorer.Series.html) - https://twitter.com/cigrainger/status/1518896955921154048 (https://twitter.com/cigrainger/status/1518896955921154048) – Tweet about using Rustler and Rustler Precompiled - https://hexdocs.pm/explorer/exploring_explorer.html (https://hexdocs.pm/explorer/exploring_explorer.html) – Includes a “Ten Minutes to Explorer” Livebook guide in the docs to walk you through setup to getting started with a good overview. - https://www.cigrainger.com/posts/introducing-explorer/ (https://www.cigrainger.com/posts/introducing-explorer/) - https://databricks.com/glossary/what-are-dataframes (https://databricks.com/glossary/what-are-dataframes) - https://pandas.pydata.org/docs/user_guide/dsintro.html (https://pandas.pydata.org/docs/user_guide/dsintro.html) - https://dataframes.juliadata.org/stable/ (https://dataframes.juliadata.org/stable/) - https://cran.r-project.org/web/packages/tidyr/vignettes/tidy-data.html (https://cran.r-project.org/web/packages/tidyr/vignettes/tidy-data.html) - https://github.com/dashbitco/table (https://github.com/dashbitco/table) - https://huggingface.co/ (https://huggingface.co/) - https://www.amplified.ai/ (https://www.amplified.ai/) – Chris' company - https://pandas.pydata.org/ (https://pandas.pydata.org/) - https://en.wikipedia.org/wiki/Extract%2Ctransform%2Cload (https://en.wikipedia.org/wiki/Extract%2C_transform%2C_load) - https://github.com/tyrchen/ex_polars (https://github.com/tyrchen/ex_polars) – Library that got him started with Rust, Rustler and working with polars - https://hexdocs.pm/rustler_precompiled/RustlerPrecompiled.html (https://hexdocs.pm/rustler_precompiled/RustlerPrecompiled.html) - https://github.com/philss/rustler_precompiled (https://github.com/philss/rustler_precompiled) - https://huggingface.co/docs/transformers/main_classes/tokenizer (https://huggingface.co/docs/transformers/main_classes/tokenizer) - https://github.com/elixir-nx/tokenizers (https://github.com/elixir-nx/tokenizers) - https://docs.rs/crate/polars/0.22.0 (https://docs.rs/crate/polars/0.22.0) - https://github.com/pola-rs/polars (https://github.com/pola-rs/polars) - https://parquet.apache.org/ (https://parquet.apache.org/) - https://avro.apache.org/ (https://avro.apache.org/) - https://arrow.apache.org/overview/ (https://arrow.apache.org/overview/) - https://vega.github.io/vega-lite/ (https://vega.github.io/vega-lite/) - https://www.rdocumentation.org/packages/dplyr/ (https://www.rdocumentation.org/packages/dplyr/) Guest Information - https://twitter.com/cigrainger (https://twitter.com/cigrainger) – on Twitter - https://github.com/cigrainger/ (https://github.com/cigrainger/) – on Github - https://cigrainger.com (https://cigrainger.com) – Blog Find us online - Message the show - @ThinkingElixir (https://twitter.com/ThinkingElixir) - Email the show - show@thinkingelixir.com (mailto:show@thinkingelixir.com) - Mark Ericksen - @brainlid (https://twitter.com/brainlid) - David Bernheisel - @bernheisel (https://twitter.com/bernheisel) - Cade Ward - @cadebward (https://twitter.com/cadebward)
Adam Wathan joins me again to talk about what it's like to run a massively popular open source software (TailwindCSS)—the good, the bad, and everything in between.“I literally don't need to make another dollar for the rest of my life. And the only reason to do what I do is that I want to make really good things, and I want it to be fun.” - Adam WathanWatch this episode on YouTubeIn this conversation:Adam Wathan:Adam's company, Tailwind CSSAdam on Twitter: @adamwathanAdam's personal siteBrian Casel:Brian's company, ZipMessageBrian on Twitter: @casjamThanks to ZipMessageZipMessage (today's sponsor) is the video messaging tool that replaces live calls with asynchronous conversations. Use it for free or tune into the episode for an exclusive coupon for Open Threads listeners.Quotes:“This would make more money, you do that this is a guaranteed success! That's like, that's not the point. You know, what's the point of doing something that you don't derive a sort of innate joy from for 40 years, and then being able to, you know, go play basketball when you're 70 and your body doesn't work anymore?”“When you hit like the product-market fit on anything, the natural gravity of the universe is pulling you towards growth.”
Watch the live stream: Watch on YouTube About the show Sponsored: RedHat: Compiler Podcast Special guests Mark Little Ben Cosby Michael #1: libgravatar A library that provides a Python 3 interface to the Gravatar APIs. If you have users and want to show some sort of an image, Gravatar is OK PyPI uses this for example (gravatar, not necessarily this lib) Usage: >>> g = Gravatar('myemailaddress@example.com') >>> g.get_image() 'https://www.gravatar.com/avatar/0bc83cb571cd1c50ba6f3e8a78ef1346' Brian #2: JSON to Pydantic Converter Suggested by Chun Ly, “this awesome JSON to @samuel_colvin's pydantic is so useful. It literally saved me days of work with a complex nested JSON schema.“ “JSON to Pydantic is a tool that lets you convert JSON objects into Pydantic models.” It's a live site, where you can plop JSON on one the left, and Pydantic models show up on the right. There's a couple options: Specify every field as Optional Alias camelCase fields as snake_case It's also an open source project, built with FastAPI, Create React App, and a project called datamodel-code-generator. Mark #3: tailwindcss, tailwindui Not python, but helpful for web UI and open source business model example tailwindcss generates CSS Used on the Lexchart app Benefits of tailwindcss and tailwindui: Just-in-Time makes it fast. Output includes only classes used for the project. Stand on shoulders of design thinking from Steve Schoger and Adam Wathan. See also refactoingui.com. Use in current projects without CSS conflicts. Custom namespace with prefix in tailwind.config.js. Bonus: custom namespace prefixes work with the tailwind plug-ins for VS Code and PyCharm. Works well with template engines like, Chameleon. We use tailwind for our app UI. Toolbar template example. Another example of docs and tutorials being a strategic business asset. Resources tailwindcss.com tailwindlabs on YouTube, great tutorials from Simon at Tailwind Beginner friendly tutorials: Thirus, example of tailwind install methods Michael #4: PEP 690 – Lazy Imports From Itamar Discussion at https://discuss.python.org/t/pep-690-lazy-imports/15474 PEP proposes a feature to transparently defer the execution of imported modules until the moment when an imported object is used. PEP 8 says imports go a the top, that means you pay the full price of importing code This means that importing the main module of a program typically results in an immediate cascade of imports of most or all of the modules that may ever be needed by the program. Lazy imports also mostly eliminate the risk of import cycles or crashes. The implementation in this PEP has already demonstrated startup time improvements up to 70% and memory-use reductions up to 40% on real-world Python CLIs. Brian #5: Two small items pytest-rich Suggested by Brian Skinn Created by Bruno Oliveira as a proof of concept pytest + rich, what's not to love? Now we just need a maintainer or two or three…. Embedding images in GitHub README Suggested by Henrik Finsberg Video by Anthony Sottile This is WITHOUT putting the image in the repo. Upload or drop an image to an issue comment. Don't save the comment, just wait for GitHub to upload it to their CDN. GH will add a markdown link in the comment text box with a link to the now uploaded image. Now you can use that image in a README file. You can do the same while editing the README in the online editor. Ben #6: pyotp A library for generating and verifying one-time passwords (OTP). Helpful for implementing multi-factor authentication (MFA) in web applications. Supports HMAC-based one-time passwords (HOTP) and time-based one-time passwords (TOTP). While HOTP delivered via SMS text messages is a common approach to implementing MFA, SMS is not really secure. TOTP using an authenticator app on the user's device such as Google Authenticator or Microsoft Authenticator is more secure, fairly easy to implement, and free (no SMS messaging fees and multiple free authenticator apps available for users). TOTP works best by making a QR code available to simplify the setup for the user in their authenticator app. Lots of easy to implement QR code generators to choose from (qrcode is a popular one if you use javascript on the front end). TOTP quick reference: import pyotp def generate_shared_secret(): # securely store this shared secret with user account data return pyotp.random_base32() def generate_provisioning_uri(secret, email): # generate uri for a QR code from the user's shared secret and email address return pyotp.totp.TOTP(secret).provisioning_uri(name=email, issuer_name='YourApp') def verify_otp(secret, otp): # verify user's one-time password entry with their shared secret totp = pyotp.TOTP(secret) return totp.verify(otp) Extras Brian: PyConUS 2022 videos now up A few more Python related extensions for VSCode black, pylint, isort, and Jupyter PowerToys Work has begun on a pytest course Saying this in public to inspire me to finish it. No ETA yet Sad Python Girls Club podcast Michael: PyTorch M1 Mission Encodable PWAs and pyscript Michael's now released pyscript PWA YouTube video cal.com (open source calendly) Supabase (open source Firebase) Joke: Beginner problems
“Many people make open-source software because programming is like a creative thing, just like making music or something for most programmers who do in their spare time, not because they have some idealistic mission or something, it's just, I just want to put something out there, and I want people to see it, and I want to feel good about people liking it” - Adam Wathan Today Adam Wathan joins me to unpack the concept of open source software as a thing on the internet. What it means to publish open source, contribute to OSS projects, and what it looks like to manage a massively popular and fast-growing project such as TailwindCSS.Watch the video of this conversation on YouTube.In this conversation:Adam Wathan:Adam's company, Tailwind CSSAdam on Twitter: @adamwathanAdam's personal siteBrian Casel:Brian's company, ZipMessageBrian on Twitter: @casjamThanks to ZipMessageZipMessage (today's sponsor) is the video messaging tool that replaces live calls with asynchronous conversations. Use it for free or tune into the episode for an exclusive coupon for Open Threads listeners.Quotes:“Many people make open-source software because programming is like a creative thing, just like making music or something for most programmers who do in their spare time, not because they have some idealistic mission or something, it's just, I just want to put something out there, and I want people to see it, and I want to feel good about people liking it.” - Adam Wathan“But a lot of the time fixing something is a one-line fix, and you just kind of have to find where it is.” - Adam Wathan“The more popular a tool is, the more inexperienced people start using it. So the quality of issues and the quality of requests, actually like goes down as a tool gets more popular.” - Adam Wathan
Taylor Otwell, is the founder of Laravel, a programming framework for PHP. But he's also one of the most successful indie SaaS operators I know. In this episode we discuss: 0:30 – Taylor is changing how he hires and manages people at Laravel 6:01 – How Taylor is finding new employees to work on Forge, Vapor, and his other products 7:34 – The Laravel ecosystem has incubated incredible talent: Miguel Piedrafita, Caleb Porzio, Adam Wathan, Aaron Francis, Jack Ellis... 10:03 – More and more indie SaaS apps are being built in Laravel 10:48 – When is the next Laracon conference? 13:11 – Taylor Otwell has the classic bootstrap success story 14:28 – Laravel has been running too lean 17:00 – What's it like to work as a developer at Laravel? (pair programming) 18:33 – How Taylor does product development 22:08 – "I haven't told anyone this yet, but I actually considered selling Laravel this past year." Here's why Taylor decided not to sell. 26:30 – How do you deal with internet fame, and being a "known person?" 28:59 – Dealing with haters on Twitter 31:50 – What is the future of web development, and the full-stack developer? What is the future of Ruby on Rails and Laravel? 35:53 – Building excitement around PHP and Laravel with young people. 42:13 – What inspires kids to get into programming? When it's fun, easy, accessible. This is why so many people started with Hypercard, Microsoft Access, PHP, Adobe Flash... What should we talk about next? Twitter: @buildyoursaas, @mijustin, @jonbuda, @jsonpearl, and @helenryles Leave a review/comment on Podchaser; it's like Reddit, but for podcasts. Email us: support@transistor.fm Thanks to our monthly supporters: Mitchell Davis from RecruitKit.com.au Marcel Fahle, wearebold.af Alex Payne Bill Condo Anton Zorin from ProdCamp.com Mitch Harris Kenny, Intro CRM podcast Oleg Kulyk Ethan Gunderson Chris Willow Ward Sandler, Memberspace Russell Brown, Photivo.com Noah Prail Colin Gray Austin Loveless Michael Sitver Paul Jarvis and Jack Ellis, Fathom Dan Buda Darby Frey Brad from Canada Adam DuVander Dave Giunta (JOOnta) Kyle Fox GetRewardful.com Want to start a podcast on Transistor? Justin has a special coupon for you: get 15% off your first year of hosting: transistor.fm/justin★ Support this podcast on Patreon ★
How can asynchronous conversations help us achieve work goals? Our guest today is Brian Casel, founder of ZipMessage. You'll learn why async is so important for remote workers, how it can improve your hiring process, where realtime calls still work better, and more.Download the MP3 audio file: right-click here and choose Save As.Podcast feed: subscribe to https://feeds.simplecast.com/4MvgQ73R in your favorite podcast app, and follow us on iTunes, Stitcher, or Google Podcasts.Show NotesZipMessage — Brian's product, a tool for asynchronous communicationAudience Ops, ProcessKit — Brian's previous productsUI Breakfast Podcast. Episode 85: Validating Your SaaS Product with Brian Casel2021, a 'shake-up' yearHow Stripe Manages Remote & Hybrid Work and CultureBasecamp, Tailwind CSS, Userlist, SavvyCal — several product inspirations for BrianUI Breakfast Podcast. Episode 154: Refactoring UI with Adam Wathan and Steve SchogerSend Brian a ZipMessageFollow Brian on TwitterBootstrapped Web — Brian's podcast with Jordan GalOpen Threads — Brian's personal podcastToday's SponsorThis show is brought to you by Userlist — the best tool for sending onboarding emails and segmenting your SaaS users. To follow the best practices, download our free printable email planning worksheets at userlist.com/worksheets.Interested in sponsoring an episode? Learn more here.Leave a ReviewReviews are hugely important because they help new people discover this podcast. If you enjoyed listening to this episode, please leave a review on iTunes. Here's how.
On today's episode, our hosts Sarah and Bryan are chatting about Documentation with Adam Wathan from Tailwind CSS. To talk about this today, we invited (for the second time in the show) Adam Wathan, creator of Tailwind CSS. Tailwind is a CSS framework optimized for building custom designs really quickly without having to start totally from scratch.Documentation is a tremendous topic, especially in tech. We often joke that "people don't read the docs". But when documentation is judged insufficient by the community, you will hear about it. Sarah, Bryan and Adam are going to go over the following questions:- What makes truly great documentation?- What is the difference between the bare minimum and exceeding users' expectations?- How do you account for multiple audiences?- What is the business risk of having poor documentation?Adam Wathan: @adamwathanSarah Dayan: @frontstuff_io / sarahdayan.devBryan Robinson: @brobTailwind CSS: @tailwindcss / tailwindcss.comAlgolia: @algolia / algolia.com
Tubby's Taste, website - https://www.tubbystaste.com/Tubby's Taste, Twitter - https://twitter.com/tubbystasteTubby's Taste, Facebook - https://www.facebook.com/tubbystasteTubby's Taste, Instagram - https://www.instagram.com/tubbystaste/City Year - https://www.cityyear.org/Teach for America - https://www.teachforamerica.org/AmeriCorps - https://americorps.gov/Ocean's, Hillsong UNITED - https://www.youtube.com/watch?v=OP-00EwLdiUInto the Unknown, Frozen 2 - https://www.youtube.com/watch?v=gIOyB9ZXn8sSweet Architect, Emeli Sandé https://youtu.be/QWGLskYHjg4Future Founders - https://www.futurefounders.com/Vegout Magazine Article - https://vegoutmag.com/food-and-drink/black-owned-vegan-business-spotlight-tubbys-taste/Jeni's Ice Cream - https://jenis.com/Urban Market - https://urbanmarketchicago.com/George Floyd - https://en.wikipedia.org/wiki/Murder_of_George_FloydBreonna Taylor - https://en.wikipedia.org/wiki/Killing_of_Breonna_TaylorAhmaud Arbery - https://en.wikipedia.org/wiki/Murder_of_Ahmaud_ArberyBuilding a Business you want with Adam Wathan, video - https://youtu.be/CKBR_Xq90fgBuilding a Business you want with Adam Wathan, audio - https://thingsworthlearning.show/episodes/building-a-business-you-want-with-adam-wathan
Adam's Twitter - https://twitter.com/adamwathanAdam's Blog - https://adamwathan.me/Tailwind - https://twitter.com/tailwindcssFull Stack Radio - https://twitter.com/fullstackradioFull Stack Radio: Matt Stauffer - CSS Semantics - https://fullstackradio.com/1Steve Schoger - https://twitter.com/steveschogerRefactoring UI, book - https://www.refactoringui.com/bookShape Up - https://basecamp.com/shapeupRadical Candor - https://www.radicalcandor.com/Marje Holmstrom-Sabo - https://twitter.com/minn_finnDan Sheetz - https://twitter.com/dsheetzMontessori - https://en.wikipedia.org/wiki/Montessori_education
In this first episode, we dive deeper into what is developer experience with Adam Wathan from Tailwind Labs and Lee Robinson from Vercel. Why did developer experience become so important? Concretely, what does it mean and how do you achieve it? Sarah Dayan chats with our 2 guests to uncover what makes awesome DX, what are the best examples out there, and how they imagine the future.Adam Wathan is the creator of Tailwind CSS, one of the most popular and the fastest growing CSS framework, which popularized utility-first CSS. He has since then founded his own company, Tailwind Labs, where he builds the best tools for CSS developers.Lee Robinson is the Head of Developer Relations at Vercel, the company behind Next.js, which is rapidly becoming the most popular React-based framework out there. He's built tons of learning material, including blog posts and courses, and you can always count on his video tutorials to learn how to build anything with Next.
Jacob Baker-Kretzmar Twitter - https://twitter.com/bakerkretzmarJacob's GitHub Account - https://github.com/bakerkretzmarJacob's Website - https://bakerkretzmar.ca/Laravel Documentation: Helpers - https://laravel.com/docs/8.x/helpersLaravel Documentation: Collections - https://laravel.com/docs/8.x/collectionsRasmus Lerdorf Twitter - https://twitter.com/rasmusLaravel Documentation: Dataget - https://laravel.com/docs/8.x/helpers#method-data-getLaravel News: Laravel Collection “Tap” Method - https://laravel-news.com/collection-tapLaracasts: Fluent Strings Manipulations - https://laracasts.com/series/whats-new-in-laravel-7/episodes/2Laravel News: Using the Laravel Optional Helper and the New Optional Closure - https://laravel-news.com/laravel-optional-helperLazy Collections in Laravel - https://josephsilber.com/posts/2020/07/29/lazy-collections-in-laravelRefactoring to Collections, by Adam Wathan - https://adamwathan.me/refactoring-to-collections/Laravel: Up & Running, by Matt Stauffer - https://laravelupandrunning.com/ Episode SponsorshipTranscription sponsored by LarajobsEditing sponsored by Tighten
Adam Wathan, the creator of Tailwind CSS, joins full stack developers Ken Wheeler and Jared Palmer on The Undefined to talk about his path to becoming a developer, the big problems traditional CSS frameworks, what it's like to bootstrap a company, and the future of Tailwind.FeaturingAdam Wathan - Twitter, Github, WebsiteKen Wheeler – Twitter, GitHub, WebsiteJared Palmer – Twitter, GitHub, WebsiteNotes / LinksTailwind CSS: Utility-focused CSS FrameworkTailwind UI: Pre-built Components and Snippets for Tailwind CSSAlpine.jsLaravel PHP FrameworkSponsor: PrismaAs a frontend developer, if you want to become fullstack, you'll find that the hardest part of backend development is working with a database.Prisma is a next-generation ORM and database toolkit that makes working with databases easy and helps frontend developers become fullstack!Visit the prisma-examples repo for lots of ready-to-run starter projects with various frameworks and libraries, like Express, Apollo, NestJS or hapi. If you're a Next.js developer, be sure to visit prisma.io/nextjs to learn more about how easy it is to integrate Prisma in your Next.js apps!Prisma has a very active and welcoming community on Slack and on GitHub where you can find help for any questions about the Prisma ecosystem.ICYMI: The Undefined ShopWe launched an online store! Checkout https://shop.undefined.fm for the dankest swag and accessories. 20% off all items during our Black Friday / Cyber Monday sale.
Adam Wathan's Twitter Account - https://twitter.com/adamwathanAdam's Blog - https://adamwathan.me/Tailwind - https://tailwindcss.com/Tailwind UI - https://tailwindui.com/Test Driven Laravel - https://course.testdrivenlaravel.com/Test Driven Laravel Laracon Talk - https://www.youtube.com/watch?v=MdApmmK71WM&ab_channel=AdamWathanDave Marshall - https://twitter.com/davedevelopment Mockery - http://docs.mockery.io/en/latest/Mail Thief - https://github.com/tighten/mailthiefStripe - https://stripe.com/Xdebug Video - https://www.youtube.com/watch?v=qVfqfJ7-grk&ab_channel=MattStaufferLies you've been told about testing - https://www.youtube.com/watch?v=LdUKfbG713MR Spec Book - https://www.amazon.com/RSpec-Book-Behaviour-Development-Cucumber/dp/1934356379Growing Object Oriented Software Guided by Tests book - http://www.growing-object-oriented-software.com/Practical object oriented design in Ruby book - https://www.poodr.com/Jason McCreary, Start Testing Your Laravel Applications - https://jasonmccreary.me/articles/start-testing-laravel/Laravel Docs: Testing - https://laravel.com/docs/8.x/testing#introductionLaracasts - https://laracasts.com/skills/testingGhosts of War, Slayer - https://www.youtube.com/watch?v=TU0RIt2TeSg&ab_channel=TheHeavyMetalHDThe County Medical Examiners - https://thecountymedicalexaminers.bandcamp.com/Fullstack Radio - https://fullstackradio.com/Jack McDade - https://twitter.com/jackmcdade Episode SponsorshipTranscription sponsored byLarajobsEditing sponsored byTighten
Laravel News: https://laravel-news.com/Laracasts: https://laracasts.com/Laravel News Newsletter: https://laravel-news.com/newsletterEric Barnes' web site: https://ericlbarnes.com/Eric Barnes on Twitter: https://twitter.com/ericlbarnesUserScape: https://userscape.comLarajobs: https://larajobs.com/Laracon Online: https://laracon.net/Tumblr: https://tumblr.com/Popular YouTube Laravel teachersMatt's streams: https://youtube.com/mattstaufferCoder's Tape: https://www.youtube.com/channel/UCQI-Ym2rLZx52vEoqlPQMdgTraversy: https://www.youtube.com/channel/UC29ju8bIPH5as8OGnQzwJyAPopular Laravel blogsMatt Stauffer: https://mattstauffer.com/Tighten: https://tighten.co/blogLaravel Daily: https://laraveldaily.com/Freek: https://freek.dev/Adam Wathan's video coursesRefactoring to Collections: https://adamwathan.me/refactoring-to-collections/Test-Driven Laravel: https://course.testdrivenlaravel.com/News podcastsLaravel News Podcast: https://laravel-news.com/category/podcastLaravel Snippet: https://podcasts.apple.com/us/podcast/the-laravel-snippet/id1451072164Todo app tutorials in the Laravel docsLists of open source Laravel apps:https://github.com/chiraggudeawesome-laravel#codebases-for-referenceTighten open source SaaSesNovaPackages: https://github.com/tightenco/novapackagesOnramp: https://github.com/tightenco/onrampSymposium: https://github.com/tightenco/symposiumOzzie: https://github.com/tightenco/ozzieGistlog: https://github.com/tightenco/gistlogGiscus: https://github.com/tightenco/giscusLaravel: Up and Running: https://laravelupandrunning.com/Onramp: https://onramp.dev/Transcription Sponsored by LarajobsEditing Sponsored by Tighten