My First Tech

My First Tech

By Dayan RubenTechnology
Download on the App Store

My First Tech episodes

  • System Design Deep Dive: Beyond the Code

    Dive into the core of software engineering and system design with us! This episode, we're breaking down key concepts, real-world case studies, and emerging trends using the fantastic insights from ByteByteGo's System Design 101. Whether you’re prepping for an interview, just curious about how systems work, or simply love a good tech deep dive, we've got you covered. We demystify everything from programming languages and network protocols to API security and cloud-native architectures. Get ready to unlock the secrets behind building, deploying, and managing modern applications.


    Key Themes Covered:

    - Programming Languages (Compiled vs Interpreted)
    - Network Protocols (HTTP, TCP, UDP)
    - API Security and Authentication
    - Software Architecture Patterns (MVC, MVP, MVVM)
    - Design Patterns
    - Solid Principles and "KISS"
    - Microservices
    - Database Types and Management
    - Cloud Computing (IaaS, PaaS)
    - Cloud Native Approach
    - CI/CD
    - Technical Interviews
    - Object Oriented Programming
    - The Human Side of Software Development

    ByteByteGo's System Design 101: repository and document.

    26 min
  • Machine Learning Mastery: Strategies for Success with Andrew Ng

    Are you working on a machine learning project and feeling overwhelmed? This episode dives into the practical strategies outlined in Andrew Ng's "Machine Learning Yearning", offering a roadmap for building and improving your AI systems. Learn how to avoid common pitfalls and make rapid progress by understanding key concepts like:

    • Setting up effective development and test sets: Discover how to choose data that reflects your future needs, and why your dev and test sets should come from the same distribution. Avoid the pitfall of using training data that does not match what you want to perform well on.
    • The importance of a single-number evaluation metric: Understand how to establish a clear, measurable goal for your team, and how to combine multiple metrics into one. Learn the difference between optimizing and satisficing metrics.
    • The power of iterative development: Learn to quickly build a basic system and then use error analysis to identify the most promising directions for improvement.
    • Error analysis techniques: Explore how to manually examine misclassified examples to identify error categories and prioritize your work. You will also learn how to evaluate multiple ideas in parallel. Discover the importance of cleaning up mislabeled data.
    • Understanding bias and variance: Learn to diagnose and address the two main sources of error in machine learning models. Explore how to interpret learning curves and compare your algorithm to human-level performance.
    • The critical role of human-level performance: Discover how comparing your system to human-level performance can help you estimate optimal error rates and set achievable goals.
    • Tackling data mismatch: Learn strategies for addressing situations where your training and dev/test sets come from different distributions, including how to create artificial data.
    • Debugging inference algorithms: Use the Optimization Verification test to pinpoint problems in your scoring function or search algorithm.
    • End-to-end learning: Understand the pros and cons of end-to-end learning, and how to decide when to use it.
    • Pipeline design: Learn how to choose appropriate components for your pipeline, balancing data availability with task complexity. Understand how to analyze your pipeline by parts to focus on specific improvements.

    • This episode will equip you with actionable strategies to make your machine learning projects more efficient and effective, helping you become a "superhero" in your field.

      23 min
    • Diving into Operating Systems: Virtualization, Concurrency, and Persistence

      Join us to discuss about the book "Operating Systems: Three Easy Pieces" which teaches operating system concepts through a dialogue format between a professor and student. The excerpts cover various topics, including CPU and memory virtualization, concurrency, persistence (file systems and devices), scheduling algorithms (like MLFQ, lottery, and CFS), process management, memory management (paging, segmentation, allocation), and distributed systems. The book uses a combination of explanation, code examples, and figures to illustrate concepts, and includes homework assignments and references to seminal operating systems papers. It emphasizes the importance of understanding the underlying mechanisms of operating systems and the trade-offs involved in designing them.

      22 min
    • Thinking Like a Computer Scientist: A Python Programming Journey

      This episode explores how to approach problem-solving through computer programming using Python. We'll learn about the core concepts in "Think Python," including variables, expressions, functions, and control structures, and how these elements work together to create effective programs. We'll focus on developing a "computer science" mindset, and using concepts like incremental development and debugging to tackle complex problems. We will also discuss data structures like lists and dictionaries, object-oriented programming, and file handling to write practical programs, with examples drawn from the textbook.


      Think Python 2nd edition: book


      19 min
    • Structure and Interpretation: Exploring the Foundations of Computer Science

      Join us as we delve into the classic textbook, "Structure and Interpretation of Computer Programs" (SICP), exploring its key concepts and timeless principles. From abstraction and recursion to metacircular evaluators and logic programming, we unpack the ideas that have shaped generations of programmers. We’ll discuss how these ideas are still relevant today, drawing on concrete examples and explanations from the text and our own exploration. We will be referencing different concepts in the text, including Lisp as a language for describing processes, data abstraction, generic operations, message passing, stream processing and the implementation of evaluators, to fully understand this foundational text.

      11 min
    • Logic, Proofs, and the Mathematics of Computation: From Simple Predicates to Complex Algorithms

      This episode explores the mathematical concepts underlying computer science. We'll begin with logic and proofs, examining predicates, propositional formulas, and truth tables. We'll then discuss induction, recursive definitions, and structural induction for analyzing data types. The podcast will cover state machines, the stable marriage problem, and how derived variables help in proving termination. We'll also touch on binary relations, generating functions, and basic probability. Finally, we'll delve into the connections between these concepts, random walks, and a simplified version of Turing's code, showing the link between math and cryptography. This episode is ideal for anyone wanting to grasp the mathematical side of computer science.


      Mathematics for Computer Science: https://ocw.mit.edu/courses/6-042j-mathematics-for-computer-science-spring-2015/mit6_042js15_textbook.pdf


      34 min
    • Unlocking the Power of Algorithms: A Deep Dive into Competitive Programming

      This episode delves into the fascinating world of competitive programming, exploring the crucial role of algorithms and their real-world applications.

      • Uncover the importance of time complexity in crafting efficient solutions, going beyond simple code to strategies that optimize performance.
      • Explore a variety of fundamental algorithms, from classic sorting techniques like binary search to powerful data structures like vectors, sets, and maps.
      • Gain insights into the art of complete search, a powerful approach to problem-solving that guarantees correct answers by systematically exploring all possibilities.
      • Journey into the realm of greedy algorithms, understanding how making the best choice at each step can lead to elegant and efficient solutions.
      • Discover dynamic programming, a technique that blends the thoroughness of complete search with the speed of greedy algorithms.
      • Join us as we unravel the secrets of competitive programming and learn how to master the algorithms that power the digital world.


        Competitive Programmer’s Handbook: book

        28 min
      • Mobile App Reliability: An SRE Perspective

        Mobile apps are complex systems with unique reliability challenges. Unlike servers, where engineers have complete control, mobile app reliability depends on billions of devices and user behaviors. This episode explores how Site Reliability Engineering (SRE) principles can be applied to build and manage reliable native mobile applications.


        Join us as we discuss:

        • Key concepts in engineering reliable mobile apps.
        • Unique challenges of mobile app reliability such as scale, control, monitoring, and change management.
        • Real-world case studies of mobile app outages at Google and the lessons learned.
        • Practical strategies for measuring and improving app availability, performance, and efficiency.
        • The impact of mobile app changes on server-side infrastructure.

        • Whether you are a mobile app developer, an SRE, or just interested in learning about mobile app reliability, this episode has something for you.


          Book Engineering Reliable Mobile Applications: https://sre.google/resources/practices-and-processes/engineering-reliable-mobile-applications/

          19 min
        • From Zero to Rust Hero: Exploring Google's Comprehensive Rust Course

          Join us as we explore Google's in-depth course, "Comprehensive Rust," a free resource designed to take you from Rust novice to proficient developer.


          • ​We'll discuss the course's structure, covering Rust fundamentals, specialized deep dives into Android, Chromium, and bare-metal development, and a full day dedicated to concurrency.


          • ​We'll highlight the course's hands-on approach, emphasizing practical examples and exercises that solidify your understanding of key concepts like memory management, ownership, borrowing, and error handling.


          • ​We'll also touch upon the course's focus on real-world applications, showcasing how Rust integrates with Android, Chromium, and embedded systems.


          • ​Whether you're a seasoned programmer or just starting your Rust journey, this episode will offer valuable insights and practical tips to accelerate your learning and empower you to build robust and efficient software with Rust.



          Comprehensive Rust course: https://google.github.io/comprehensive-rust


          Rust programming language: https://www.rust-lang.org

          18 min
        • Kotlin Unlocked: Your Gateway to Modern Programming

          In this debut episode, we dive into the world of Kotlin, the modern programming language that’s taking the tech world by storm. Whether you’re a beginner or an experienced developer, Kotlin offers a fresh, efficient way to code—whether for Android apps, server-side development, or even multiplatform projects. We’ll explore what makes Kotlin unique, why it’s loved by developers worldwide, and how you can get started with it today. Tune in to learn about its concise syntax, powerful features, and why it’s the future of programming!


          Learn more about Kotlin: https://kotlinlang.org

          17 min

        About My First Tech

        From the publisher's feed

        Reflecting on our first experience with technology is like stepping back into a moment of pure discovery. This podcast from a software creator for those shaping the tech world and curious minds. Each episode dives into a new language, tool, or trend, offering practical insights and real-world examples to help developers navigate and innovate in today’s evolving landscape.