The Tuple Podcast

Ben Orenstein

Ben Orenstein interviews great programmers about their craft. read less
TechnologyTechnology

Episodes

Matt Swanson, CTO at Arrows
May 27 2024
Matt Swanson, CTO at Arrows
Ben and Matt discuss the role of a product engineer and Matt's journey as a content creator. Matt shares his experience working at a consulting agency and how it shaped his perspective on engineering. They also discuss the benefits of working in-person and the importance of the quality of coworkers. Matt reflects on his motivation for content creation and how it ties into his competitive nature. They touch on the changing landscape of content creation and the value of posting code snippets, and about Matt's experience getting hired at Arrows through Twitter and the value of demonstrating competence through content creation. They touch on the longevity of Ben's Ruby talk and the elements that make it stand out.LinksTuple.app (https://tuple.app) - The best app for pair programmingArrows.to (https://arrows.to) - An app for collaborative customer onboarding that Matt works onBoring Rails (https://boringrails.com) - Where Matt shares boring tools and practices to keep you as happy and productiveYAGNI (https://yagni.fm) - The podcast where Matt and look at software practices and tools and ask: "do we need it?"Key TakeawaysA product engineer is someone who writes code, cares about design and user experience, and is responsible for the end-to-end delivery of a feature.Working at a consulting agency can provide valuable experience by exposing developers to a variety of projects and domains.Content creation can be a way to contribute back to the community and establish oneself as an expert.Demonstrating competence through content creation can help in the hiring process.Long-lasting talks focus on practical ideas and good object-oriented design principles.Chapters(00:00) - Introduction and Matt's Role as a Product Engineer(07:11) - The Benefits of Working at a Consulting Agency(09:34) - The Importance of Quality Coworkers(13:41) - The Motivation for Content Creation(18:54) - The Value of Posting Code Snippets(24:03) - Packaging Content as an Event(26:40) - Demonstrating Competence through Content Creation(32:05) - Long-Lasting Talks: Practical Ideas and Object-Oriented Design(38:39) - 'Nathan for You': Creative and Mischievous Problem-Solving(41:30) - Unconventional Advertising: Selling Ads on the Penny(44:29) - Thinking Outside the Box: Unconventional Solutions
Derrick Reimer, Founder of SavvyCal
May 13 2024
Derrick Reimer, Founder of SavvyCal
In this conversation, Ben and Derrick discuss the challenges of growing a business and the decision to target specific market segments. They explore the trade-offs between serving a broad audience and focusing on a niche market. They also discuss the technical choices and architectural decisions in building a product, with Derrick sharing his positive experience with Elixir and the Phoenix framework.LinksTuple.app (https://tuple.app) - The best app for pair programmingSavvyCal.com (https://savvycal.com) - The scheduling tool Derrick createdPhoenix (https://www.phoenixframework.org) - the Elixir framework SavvyCal is built onRails (https://rubyonrails.org) - the Ruby framework Ben worked withKey TakeawaysElixir and the Phoenix framework offer a maintainable and explicit approach to building applications.Functional programming paradigms can simplify code organization and improve maintainability. Object-oriented programming and functional programming have different approaches to code organization and maintainability.The active record pattern in Rails can lead to large and complex models, while the repository pattern in Phoenix provides a more modular and explicit approach.Open source contributions can be seen as a good faith contribution to the commons and can provide benefits such as status and marketing opportunities.Developers can improve their design skills by studying resources like the book 'Refactoring UI' and being introspective about user interfaces in their daily lives.Chapters(00:00) - Introduction and Background(02:12) - Savvy Cal and Horizontal Products(05:56) - Choosing Between Niche and Broad Audience(15:59) - Phoenix vs. Rails(22:20) - Object Oriented vs. Functional Programming(36:02) - The Motivations Behind Open Source Contributions(43:20) - Improving Design Skills as a Technical Person
Thorsten Ball, Software Engineer at Zed
Apr 22 2024
Thorsten Ball, Software Engineer at Zed
In this episode, Ben chats with Thorsten Ball. This conversation fits neatly into two halves - in the first, Ben and Thorsten go deep on how to differentiate yourself, work in public, and make it easy for people to hire you. In the second part of the conversation, they talk more specifically about Zed, why it matters, and how it’s being built. LinksTuple.app (https://tuple.app) - The best app for pair programmingThorsten’s website (https://thorstenball.com) - Where you can find his books, blog, and other podcast appearancesZed (https://zed.dev) - The editor Thorsten is working onKey TakeawaysCultivating a diverse skill set can lead to unique opportunities and make you a valuable asset in a company.Evidence of competence, such as published work or open-source contributions, can significantly impact your chances of getting hired.Soft skills, such as communication and problem-solving, are essential for success in engineering roles.Taking initiative and adding value beyond your job description can make you stand out and contribute to the growth of a company.Interviews should be seen as a chance to demonstrate your skills and fit within a company's culture, rather than just answering questions. Visual cues and real-time interaction are important in conversations to gauge resonance and maintain engagement.Different business models exist in the tech industry, and investment can provide the time and resources needed for product development.Building high-quality products in open source requires a focus on performance, quality, and attention to detail.The landscape of text editors and funding is complex, with various models and approaches.Working on a quality product with a talented team can be fulfilling and contribute to personal growth.Noticing and writing about interesting ideas can enhance creativity and lead to new insights.Chapters(00:00) - Introduction and Background(00:21) - Combining Software Engineering and Content Production(04:41) - The Power of a Diverse Skill Set(07:40) - Creating Valuable Content(11:53) - Taking Initiative and Adding Value(18:47) - Reaching Out and Getting Hired(20:42) - The Power of Evidence of Competence(21:39) - The Myth of Not Hiring(25:35) - The Importance of Leaving Evidence(28:06) - Resumes and Demonstrating Competence(30:56) - Interviews as a Vibe Check(32:38) - The Bias in Interviews(33:55) - Hiring Process and Competence(34:22) - No Foolproof Hiring Process(35:20) - Evidence of Ability(37:00) - Accepting the Hiring Game(39:54) - Marketing and Self-Promotion(44:10) - Zed's Journey and User Availability(51:02) - Collaboration in Zed(56:02) - The Magic of Audio Calls(58:49) - The Intimacy of Voice-Only Communication(01:01:16) - The Distraction of Self-View in Video Calls(01:02:43) - The Importance of Visual Cues in Conversations(01:03:36) - The Value of Real-Time Interaction(01:05:34) - The Deep Knowledge and Complexity of Vim(01:06:00) - The Benefits of Noticing and Writing About Interesting Ideas(01:09:40) - The Habit of Writing and Its Impact on Thinking
Andreas Kling, Creator of SerenityOS and the Ladybird Browser
Apr 1 2024
Andreas Kling, Creator of SerenityOS and the Ladybird Browser
Ben interviews Andreas Kling, creator of SerenityOS and the Ladybird browser. They talk about the concept of lifestyle software and how it relates to the development of SerenityOS, Andreas’ vision of creating a Zen garden for developers, and the benefits of using a mono repo and a unified language in the development process. They also touch on the use of AI and language models for writing code, the art of using Copilot effectively, and the future of LLMs in pair programming.Enjoy!LinksTuple.app - The best app for pair programmingAndreas’ YouTube Channel - The home for Serenity, Ladybird, and other updates from AndreasSerenityOS - The operating system Andreas builtLadybird - The browser Andreas builtKey TakeawaysSerenity OS is an example of lifestyle software, where the focus is on the happiness of the developers and the joy of programming.The use of a mono repo and a unified language in Serenity OS allows for efficient development and easy cross-cutting changes.Onboarding new contributors by encouraging them to explore and find their own areas of interest leads to a diverse range of contributions.Raw coding videos and pair programming can be powerful tools for knowledge sharing and learning.Having a long-term vision and setting ambitious goals can help overcome the challenges of monumental projects.Continuous learning and improvement are essential for staying on top of new tools and technologies in the programming industry.Balancing programming and management responsibilities can be challenging, but leveraging the skills and expertise of a team can lead to greater productivity and growth. Building confidence in programming is crucial for productivity and success.Starting small and building miniature models can help understand complex concepts.Throwing away code and rebuilding with improved architecture can lead to better outcomes.Using AI and language models can significantly speed up coding tasks.Chapters(00:00) - Introduction(00:41) - Serenity OS and Lifestyle Software(03:40) - Building a Zen Garden for Developers(09:07) - Mono Repo and Unified Language(11:29) - Easy Onboarding and Contributions(13:05) - The Power of Raw Coding Videos(15:48) - Pair Programming and Knowledge Sharing(24:06) - Facing Intimidation at the Start of Projects(26:18) - Maintaining a High Clock Speed(32:34) - Continuous Learning and Improvement(36:44) - Balancing Programming and Management(39:07) - The Joys and Challenges of Company Growth(40:13) - Coaching and Mentoring(41:40) - Building Confidence in Programming(42:49) - Building Miniature Models(43:41) - Building to Throw Away(46:45) - Learning from Senior Engineers(48:09) - Using AI and LLMs for Writing Code(51:47) - The Art of Using Copilot(54:27) - The Future of LLMs in Pair Programming(57:47) - The Evolution of Open Source Projects(01:03:44) - Establishing Community Rules Organically
Fable Tales, Staff Engineer at Stripe
Mar 18 2024
Fable Tales, Staff Engineer at Stripe
In this conversation, Fable and Ben dig deep on building a technical career that balances programming and company leadership. Fable shares their experience working at Stripe and the different roles they have held, including being a technical advisor to the CTO. They also discuss Fable's career move from being a hands-on programmer to role where less hands-on coding is required, Fable's take on "code crimes", and how to find enjoyment and fulfillment in solving complex problems.LinksTuple.app - The best app for pair programmingStripe - The company Fable works atRuby Kaigi - An annual conference dedicated to the Ruby programming language.Sidekiq - A simple, efficient background processing library for RubySorbet - A fast, powerful type checker designed for Ruby.YubiKey - A hardware device designed for high-security two-factor authentication.Key TakeawaysMaking connections and friendships at conferences can be valuable in the programming community.Debugging and problem-solving skills are crucial for software engineers.Being willing to learn and work with different programming languages can enhance your skills.Prototyping and spiking can be effective ways to test and develop new ideas.Chapters(00:00) - Introduction and Conference Interaction(00:38) - Making Friends at Conferences(04:13) - Work at Stripe(06:17) - Becoming a Staff Engineer(06:53) - Getting Good at Programming(08:46) - Debugging and Problem Solving(11:22) - Working with C and C++(13:13) - Debugging with Print Statements and Debuggers(17:06) - Prototyping and Spiking(24:11) - Technical Advisor to the CTO(27:26) - Coding Hill to Die On(29:52) - Workflow Optimization(36:53) - Coding vs Non-Coding Time(39:08) - Transition to Leadership(41:07) - Motivation and Impact(42:13) - Love for Programming(44:14) - Coding Style: Short Methods and Small Classes(48:48) - Personal Style and Code Crimes(52:18) - Commercial Open Source(56:08) - Getting Involved in Open Source(01:04:52) - Wrap-up
Josh Pigford, Creator of Maybe.co
Feb 23 2024
Josh Pigford, Creator of Maybe.co
In this episode, Ben interviews Josh Pigford, founder of Maybe.co, about the company’s journey from VC-backed startup -> closed startup -> open source project -> funded open source project. They discuss JavaScript and Rails trade-offs, the challenges of building a personal finance software, and the operational difficulties of building a business based on open source software.LinksTuple.app - The best app for pair programmingMaybe.co - The fintech startup Josh foundedNodeJS - The starting framework for Maybe.coRuby on Rails - The new framework for Maybe.coKey TakeawaysChoosing the right tech stack is crucial for the success of a project.Running out of runway can force difficult decisions and pivots.Making a codebase public can generate interest and community engagement.Replacing third-party dependencies can be challenging but necessary.Rebuilding a software project requires careful planning and decision-making. Building a personal finance app involves challenges such as managing pull requests and issues in open source development.Transitioning to Rails can provide a more stable and efficient framework for building a complex application.The decision to rewrite the app from scratch allows for better decision-making and faster progress.Targeting Mint users with a budgeting tool presents an opportunity to capitalize on a fragmented market.Detangled, a project that simplifies legal documents, has the potential for commercial success. Moonshot ideas can be exciting and worth pursuing, even if the specific angle is unclear.ChatGPT has the potential to generate usable results, either through heavily massaged prompts or prewritten blocks.Tools like detangle can augment conversations with lawyers, providing insights and helping users know what questions to ask.There are commercial opportunities in selling services like detangle to companies that don't have full-time counsel.Finding the right balance between passion and traction is important when deciding which projects to pursue.Chapters(00:00) - Introduction(01:21) - Making the Codebase Public(07:21) - Community Engagement and Pull Requests(12:17) - Ripping Out Functionality(15:03) - Replacing Data Aggregator(16:10) - Building a Personal Finance App(17:39) - Challenges of Open Source Development(21:08) - Managing Pull Requests and Issues(23:35) - Struggles with React Next.js(27:45) - Choosing Rails for Development(32:40) - Targeting Mint Users with Budgeting Tool(35:45) - Modular Use Cases(38:53) - Open Source Contributions and Bounties(40:47) - Next Steps(45:16) - Detangled: Simplifying Legal Documents(48:32) - Exploring Moonshot Ideas(48:58) - The Potential of ChatGPT(49:45) - Augmenting Conversations with Lawyers(50:21) - Commercial Opportunities(50:53) - Balancing Passion and Traction(51:20) - Closing Remarks
Caleb Porzio, Creator of AlpineJS and Laravel Livewire
Feb 6 2024
Caleb Porzio, Creator of AlpineJS and Laravel Livewire
In this conversation, Ben interviews Caleb Porzio, the creator of AlpineJS and Laravel Livewire. The discussion ranges from discussions about life in general to specific testing practices and which notebook Caleb uses.LinksTuple.app - The best app for pair programmingAlpineJS Laravel Livewire Caleb's VSCode Course TakeawaysApply core truths to life outside of programming.Find ways to make difficult tasks easier.Change your environment to support your goals.Value tests as much as, if not more than, the code itself.Keep methods and functions short for better code quality.Embrace your strengths and delegate tasks that don't bring you joy.Focus on the meaty tasks that excite you.Consider rewrites carefully and prioritize other solutions first.Pull down unfamiliar code and interact with it to understand it better.Start the day with tasks that align with your goals and priorities.Chapters(00:00) - Introduction and Background(03:51) - Overview of LiveWire and Alpine(12:09) - Caleb’s Programming Style(20:09) - Functional vs Object-Oriented Programming(25:39) - The Appeal of Functional Programming(32:01) - The Challenges of Learning Object-Oriented Programming(33:06) - Memory Allocation and Functional Languages(36:30) - Starting Complicated Projects(40:10) - Writing Blog Posts as Problem-Solving(42:30) - Core Beliefs(48:21) - Materials(49:20) - Getting into the Zone(51:14) - The Value of Tests Over Code(55:27) - Transitioning to Non-Typical Apps(01:03:00) - Radical Practices at Tuple(01:05:50) - Managing Pull Requests and Code Reviews(01:06:33) - Starting the Day and Prioritizing Tasks(01:07:41) - Balancing Maintenance and Long-Term Goals(01:09:52) - Finding Motivation for Maintenance Tasks(01:10:50) - Embracing Strengths and Delegating Weaknesses(01:11:46) - Continuous Improvement and Learning(01:14:19) - Favorite Tools and Productivity Hacks(01:19:07) - Core Beliefs and Values in Coding(01:21:19) - Benefits of Short Methods and Single File Principle(01:21:57) - Approaching Unfamiliar Code(01:22:51) - The Pros and Cons of Rewrites(01:23:46) - Final Thoughts and Passion for Coding
Taylor Otwell, Creator of Laravel
Jan 24 2024
Taylor Otwell, Creator of Laravel
In this conversation, Ben interviews Taylor Otwell, the creator of Laravel. They discuss everything from the age-old argument of tabs vs. spaces to the origins of Laravel and how Taylor has turned it into a thriving, sustainable business.Links:Laravel, the framework Taylor createdTuple, used by the Laravel team to collaboratesTakeawaysCoding preferences and philosophies can vary among developers and programming ecosystems.Maintaining backwards compatibility is important for frameworks with a large user base.Clean code can be subjective and depends on the specific needs and goals of a project.Testing is crucial for shipping software with confidence. When starting a new project, consider writing documentation first to iron out any potential issues and ensure a user-centric perspective.Focus on high-level testing, such as feature-level or controller-level tests, to gain confidence in the functionality of your code.Challenge assumptions and ask questions to improve the quality of your code and avoid unnecessary complexity.Believe in the potential of your project and raise your ambitions to achieve greater success.Building a business around open source can be a sustainable model if you create commercial products that complement and support the open source project.Chapters(00:00) - Tabs or Spaces?(08:00) - Shells(10:46) - Minimalism in Coding(17:24) - Stripe and Their API(22:41) - Aesthetics(25:09) - A Coding Hill You Would Die On(28:09) - Clean Code(33:38) - Testing(40:30) - Personal Involvement With Code(45:00) - Notes and Manifestos(49:09) - Skill Over Time(51:49) - Ian Landsman and Laravel(55:49) - Businesses Based on Open Source