Three Devs and a Maybe

Three Devs and a Maybe

By Michael Budd, Fraser Hart, Lewis Cains, Edd MannTechnologyEducation
Download on the App Store

Three Devs and a Maybe episodes

  • 104: Falling into the Pit of Functional Success with Jimmy Burrell

    In this weeks episode we are lucky to be joined by Jimmy Burrell for a long over-due ‘geek out’.

    We start off discussion around his recent functional programming exploration, and how you can take many of these principles into your day-to-day OOP language.
    Following this we chat about what drew Jimmy to F#, the REPL, making illegal states unrepresentable and reasoning about immutable data-structures.
    From here we highlight some of F# capabilities including, pattern matching, computational expressions, type providers, currying and concurrency paradigms.
    Finally, we wrap up the show discussing our experiences learning about monads, the continuation passing style, and thinking in terms of data transformations.

    Show Links
    • F# Software Foundation
    • OCaml
    • F# Acknowledgements - Microsoft Research
    • Don Syme - Researcher at Microsoft Research
    • The Racket Language
    • Scripting in F#
    • FAKE - F# Make - A DSL for build tasks
    • Designing with types: Making illegal states unrepresentable - F# for fun and profit
    • Immutability - F# for fun and profit
    • Discriminated Unions - F# for fun and profit
    • Suave.IO
    • F Sharp Programming - Computation Expressions
    • Continuation-passing style
    • Idris - A Language with Dependent Types
    • Type Providers
    • F# Data: Library for Data Access
    • Railway Oriented Programming - F# for fun and profit
    • Learning Elixir’s with - Learning Elixir
    • Concurrency - F# for fun and profit
    • Functional reactive programming - Wikipedia, the free encyclopedia
    • Ionide - Crossplatform F# Editor
    • Visual Studio Code - Code Editing. Redefined
    • Mobile App Development & App Creation Software - Xamarin
    • Scala comes to .Net
    • GitHub - clojure/clojure-clr
    • GitHub - Microsoft/dotnet
    • Embrace, extend and extinguish
    • Functional Geekery Episode 08 - Jessica Kerr
    • Currying
    • 1 hr 17 min
    • 103: Caching up with Joe Watkins

      In this weeks episode we are lucky to be joined by Joe Watkins.

      We start off discussion around the development of PHP 7.1 and the recent initial alpha release.
      Following this, we give an update on a couple of previously mentioned RFC’s, along with how Joe’s ones are doing.
      This leads us on to highlight how some small proposed changes are paving the way to optimal machine-code and finally integration of a JIT compiler.
      Some of these proposed changes may result in backwards compatibility breaks, we discuss this topic and when it is deemed acceptable to permit this.
      Finally, we chat about memorisation, caching and how it is not really feasible to distill a standard caching interface that fits all requirements.

      Show Links
      • PHP 7.1.0 Alpha 1 Released
      • PHP: rfc:typed-properties
      • PHP: rfc:functional-interfaces
      • PHP: rfc:attributes
      • PHP: rfc:simple-annotations
      • PHP: rfc:too_few_args
      • Semantic Versioning
      • PHP: rfc:union_types
      • GitHub - krakjoe/memoize
      • PSR-6: Caching Interface - PHP-FIG
      • PHP: rfc:iterable
      • 39 min
      • 102: Postgres Performance Tuning and Query Planner with Bruce Momjian

        In this weeks episode we are very lucky to be joined by Bruce Momjian to discuss Postgres Performance Tuning and Query Planner.

        We start off discussion around how Bruce got interested in Database Systems, a brief history of Postgres and his involvement with the project over the years.
        Following this we highlight the three main areas which affect database performance - hardware, server configuration and SQL/indexing.
        With this knowledge in hand, we then delve into the Query Planner, demystifying some of the terminology and concepts used (i.e. cost, scan methods and join methods).
        Finally, we summarise how these concepts are used by Postgres to decide which query plan to pick for a supplied query.

        Show Links
        • Bruce Momjian
        • tnm/shql: shell sql
        • SHQL
        • PostgreSQL Performance Tuning - Bruce Momjian
        • Database Hardware Selection Guidelines - Bruce Momjian
        • dalibo/pgbadger: a fast PostgreSQL Log Analyzer
        • pg_stat_statements
        • PostgreSQL - Reliability
        • Building Microservices
        • Replication, Clustering, and Connection Pooling - PostgreSQL wiki
        • PostgreSQL - How the Planner Uses Statistics
        • pg_stats
        • Explaining the Postgres Query Optimizer - Bruce Momjian
        • Explaining the Postgres Query Optimizer Slides - Bruce Momjian
        • PostgreSQL - Routine Vacuuming
        • Non-Relational Postgres - Bruce Momjian
        • 55 min
        • 101: Introduction to Webpack with Juho Vepsäläinen

          In this weeks episode we talk to Juho Vepsäläinen about all things Webpack.

          We start off discussion with how he got into JavaScript and what drew him to write the SurviveJS books.
          Moving onto Webpack, we chat about the problem it is trying to solve, what a bundler is and how it differs from a task runner.
          We highlight some of the interesting features that Webpack has to offer such as bundle splitting, integration with UglifyJS/Babel and lazy loading.
          Finally, we discuss the road-map for Webpack 2, new concepts which are being integrated such as tree shaking for dead code elimination and weighing up use of CDN’s for dependencies.

          Show Links
          • Juho Vepsäläinen on Twitter
          • Juho Vepsäläinen’s Blog
          • Shaun Townsned on Twitter: “@LCainsWebDev, @edd_mann, @FraserHartDev, @michaelbud6 #survivejs is a great book for people starting with Webpack and React.”
          • webpack module bundler
          • SurviveJS
          • SurviveJS - React
          • SurviveJS - Webpack
          • christianalfoni/react-webpack-cookbook
          • Browserify
          • js-dxtools/webpack-validator
          • survivejs/webpack-merge
          • systemjs/systemjs
          • Tree-shaking with Webpack 2 and Babel 6
          • mishoo/UglifyJS
          • purifycss/purifycss
          • CDNperf
          • jspm.io
          • 49 min
          • 100: The One Hundredth Episode!

            We have a full host podcast for the 100th episode!

            Starting off the show by thanking all of our previous guests and you the audience, we then move on to discuss our recent catchup in-person and reflection on the past three years of podcasting.
            During which, we have a déjà-vu moment with another audio blip similar to what occurred in the first episode.
            This leads us on to discuss testing in React/Flux and moving away from the reliance on jQuery as a dependency.
            Edd has ran some stats on the previous 99 episodes and with these results we then have a quick quiz.
            Finally, we discuss how/why we started the podcast in the first place, encourage anyone who is thinking of starting a podcast to do it and bring back hot picks of the week!

            Show Links
            • Vive
            • Oculus
            • Vive - Reddit
            • Oculus - Reddit
            • Three Devs and a Maybe - Silly Billy Tax Mug
            • Uploadcare
            • bshaffer/oauth2-server-php
            • lucadegasperi/oauth2-server-laravel
            • Shallow Rendering in React
            • BEM — Block Element Modifier
            • How to do x in JavaScript (with no jQuery results)
            • jQuery vs. document.querySelectorAll - Stack Overflow
            • Can I use… querySelector
            • Can I use… classList
            • Joe Watkins on Twitter: “Rocking the @3DevsAndAMaybe look”
            • Rogue Amoeba - Audio Hijack
            • How to Record and Mix Multiple Hosts in Audacity (Double-Ender)
            • Podtrac
            • Laravel Homestead
            • Laravel Valet
            • PhpStorm
            • WebStorm
            • Atom
            • Browsersync
            • Recordit
            • LICEcap
            • 1 hr 5 min
            • 99: Working Remotely with Justin DeLucia

              On this weeks episode we are lucky to be joined by good friend of the show Justin DeLucia.

              We start off discussion with what Fraser has been up-to recently, porting a code-base over to Webpack and experimenting with VR headsets.
              This leads us on to chat about Justin’s recent move to Wales, reflecting on his experiences working remotely, the value of communication and how he now handles clients.
              Finally, Justin then highlights the differences in work and web cultures in his new surroundings and the pros n’ cons he has faced since moving away from the office setting.

              Show Links
              • Derek Morr’s comment on Types vs. Tests
              • Amanda Laucher - Types vs. Tests
              • BUNDY BUNDY
              • Total boss @miley_robert sporting his @3DevsAndAMaybe t-shirt in space… Like a total boss.
              • webpack module bundler
              • SurviveJS
              • Vive
              • Oculus
              • Fraser making a Sandwich
              • Job Simulator
              • Giphy on Slack
              • Boom - Mac Volume Booster, Advanced Equalizers & Audio Effects
              • Worms
              • Dota
              • Ellie Williams
              • 56 min
              • 98: Instant Feedback on your Pizza Oven

                On this weeks episode Edd and Mick start off discussion around productivity, quick feedback cycles with clients and building pizza ovens.

                We then move on to chat about how Edd ‘maybe’ accident prone, how MVCC works at a high-level and why you need to vacuum your tables in Postgres.
                Finally, we bring up Uncle Bob’s recent ‘Type Wars’ article and highlight the different variants of typing (static, dynamic, weak and strong).

                Show Links
                • Clojure Applied
                • Alex Miller and Ben Vandgrift - Cognicast Episode 86
                • Why is it a vacuum not needed with MySQL compared to the PostgreSQL?
                • Multiversion concurrency control
                • PostgreSQL Interval Type
                • Interval Datatype in MySQL
                • Screenhero
                • Clean Coder Blog - Type Wars
                • TDD vs Static Typing - Type Inference
                • What To Know Before Debating Type Systems
                • TDD Addict: Code coverage - meaningless number or the Holy Grail?
                • 58 min
                • 97: RFC Showdown for PHP 7.1 with Joe Watkins

                  In this episode we are joined by Joe Watkins to discuss the many RFC’s that are in contention to be approved for PHP 7.1.

                  We start off with a congratulations to Joe for his first PHP Release Manager position, highlighting what the role entails and how it is going.
                  We then discuss the RFC process and how there has been a lot of activity over the past couple of weeks within this space.
                  The concept of ‘Null’ is the first group of RFC’s we discuss, followed by union/intersection types and the pipe operator.
                  We then move on to chat about short closure syntax, functional interfaces and lexical scope within anonymous classes.
                  Finally, we bring up the comparable RFC which has been around for many years and the benefits of having attributes within the language.

                  Show Links
                  • PHP: rfc:void_return_type
                  • PHP: rfc:typed-properties
                  • PHP: rfc:nullable_types
                  • PHP: rfc:nullable_returns
                  • PHP: rfc:nullsafe_calls
                  • PHP: rfc:union_types
                  • PHP: rfc:intersection_types
                  • PHP: rfc:pipe-operator
                  • Tacit programming
                  • Clojure’s threading macro
                  • PHP: rfc:short_closures
                  • PHP: rfc:arrow_functions
                  • PHP: rfc:functional-interfaces
                  • PHP: rfc:callable-types
                  • PHP: rfc:lexical-anon
                  • PHP: rfc:null_coalesce_equal_operator
                  • PHP: rfc:comparable
                  • PHP: rfc:attributes
                  • Design By Contract
                  • 58 min
                  • 96: Application Performance with Jonathan Klein

                    On this weeks episode we are joined by Jonathan Klein to discuss all things application performance.

                    We start off the show with chat about how he got into performance, why it is so important and how he thinks of it throughout the development process.
                    From here we discuss his recently released Pluralsight course on ‘High Performance PHP’ and touch upon some of the key performance areas within the stack.
                    Starting with micro-optimisations at the code level, we highlight their value and caching mechanisms.
                    We then move onto the web server, process managers and the importance of a correct configuration.
                    The Database layer is then brought up, discussing forks of MySQL, handling slow-queries and data-denormalizations.
                    Finally, profiling and monitoring tools are discussed (such as New Relic and Seige) and where you can typically find the most wins within a typical stack.

                    Show Links
                    • Jonathan Klein
                    • Jonathan Klein on Twitter
                    • Jonathan Klein on GitHub
                    • Jonathan Klein - Talks
                    • High Performance PHP - Pluralsight
                    • GitHub - etsy/feature: Etsy’s Feature flagging API used for operational rampups and A/B testing.
                    • Feature Toggles
                    • Premature Optimization
                    • PHPBench
                    • Firefox and Page Load Speed - Blog of Metrics
                    • XHProf
                    • Application performance management
                    • New Relic
                    • Two Hard Things
                    • memcached - a distributed memory object caching system
                    • Redis
                    • Cache-Aside Pattern
                    • Nginx
                    • Performance of Apache 2.4 with the event MPM compared to Nginx
                    • Serving static files: a comparison between Apache, Nginx, Varnish and G-WAN
                    • PHP-FPM
                    • Atomic deploys at Etsy
                    • Varnish HTTP Cache
                    • Edge Side Includes
                    • Percona Server - Feature Comparison
                    • Performance evaluation of MariaDB 10.1 and MySQL 5.7
                    • Siege
                    • 49 min
                    • 95: Queued Work with Matt Davis

                      On this weeks episode we are lucky to be joined by Matt Davis.

                      We start off the show with discussion surrounding how Matt got into programming, the Symfony certification system and his experiences working with both Symfony and Laravel.
                      With Edd’s recent guest appearance on Full Stack Radio just being released, we then touch upon this experience and the PostgreSQL topics covered.
                      Following this we chat about working with external API’s, testing logic dependent on these services and how Matt has been using RabbitMQ and the Laravel Queue abstraction.
                      This leads us on to discuss the concept of queued work in more depth, along with how to design computation in such a manner.
                      Finally, we chat about the pros n’ cons of moving away from jQuery and back to vanilla JavaScript.

                      Show Links
                      • Matthew Davis
                      • Matthew Davis on Twitter
                      • Matthew Davis on GitHub
                      • 40: Edd Mann - You Should Switch to Postgres - Full Stack Radio
                      • Validating 32-bit Integers using PHP
                      • SensioLabs - Symfony Certification exam
                      • RabbitMQ - Messaging that just works
                      • Queues - Laravel
                      • Domain-Driven Design in PHP
                      • CAR LEASING CHEAP LEASE CARS SALES CAR LEASING CHEAP BUSINESS HIRE DEALS
                      • Element.classList - Web APIs - MDN
                      • Document.querySelector() - Web APIs - MDN
                      • You Might Not Need jQuery
                      • vue.js
                      • 55 min

                      About Three Devs and a Maybe

                      From the publisher's feed

                      Join us each week as we discuss all things software development. Frequently joined by a far more intelligent guest on the show's topic, we by no means know everything, but love what we do. Topics…