Software Sessions cover image

Software Sessions

Latest episodes

undefined
Nov 6, 2019 • 1h 30min

Building Scalable Systems Safely in Ruby with Samuel Williams

Samuel is a member of the Ruby core team. He's working on making it safer and easier to write scalable applications in Ruby.Conference Talks:Fibers are the Right SolutionThe Journey to One MillionPosts:Asynchronous RubyFibers Are the Right SolutionEarly Hints and HTTP/2 Push with Falcon2019 Ruby Association GrantSource with comments on why the Global VM Lock existsRuby gems:AsyncFalconContact:@ioquatixSamuel's websiteTimestamps:0:51 - What's concurrency? What's parallelism?5:49 - Piping commands between Unix processes provides easy parallelism6:58 - Some types of applications abstract out threads/processes,9:27 - Many Ruby gems have thread safety issues10:44 - The CRuby Global VM Lock hides thread safety issues11:24 - The problems with threads and shared mutable state13:58 - Examples of mutexes causing problems in Ruby gems.19:09 - What a deadlock is and how it causes problems19:51 - Running separate processes to get parallelism and using an external database to communicate21:01 - Lightweight process model used by Go and Erlang vs threads in Ruby23:50 - Why async was created24:38 - What is Celluloid? (Actor based concurrency for Ruby)26:29 - Problems with shared global state in Celluloid27:12 - Lifecycle management problems (getting and cleaning up objects)28:19 - Maintaining Celluloid IO, issues with the library29:43 - What's async?32:00 - What's an event loop?35:20 - How tasks execute in an event loop37:29 - How IO tasks are scheduled with IO.select39:41 - The importance of predictable and sequential code41:48 - Comparing async library to async/await45:23 - What node got right with its worker model47:10 - How async/await works48:35 - Fibers as an alternative to callbacks51:10 - How async uses fibers, minimizes need to change code56:19 - Libraries don't have to know they're using async1:04:55 - Reasons for the CRuby Global VM Lock1:07:13 - Guilds as a solution1:09:14 - Sharing state across threads1:11:33 - Limitations of Ruby GC at 10-20K connections1:12:00 - Sharing state across processes1:13:12 - Handling CPU bound tasks with threads and processes1:17:42 - Which dependencies are messing with state? (Check memory allocations, sockets closed)1:25:00 - Async in production1:27:17 - Wrap up
undefined
Oct 24, 2019 • 1h 9min

How the Ruby Runtime Works with Aaron Patterson

Aaron is on both the ruby and rails core teams. He's best known for making puns, teaching others, and his contributions to the internals of ruby. Lately he's been focusing on a compacting garbage collector for ruby.This episode originally aired on Software Engineering Radio.Timestamps:00:40 - What Aaron likes about Ruby04:43 - Interpreted vs Compiled07:00 - Why the ruby interpreter is written in C11:00 - Other good languages to write virtual machines?15:20 - Moving from an Interpreter (MRI) to Virtual Machine (YARV)18:50 - Why there's no manual compilation step in Ruby23:28 - Why compile to bytecode instead of directly to machine code?26:34 - Stack based vs Register based VM28:00 - Differences between Core and Standard Library29:46 - Do you program more in ruby or C as a member of the ruby/rails core teams?30:30 - The Global Interpreter Lock (GIL / GVL)37:40 - Concurrency options in Ruby45:55 - Just in Time Compilation49:29 - Evolution of Garbage Collection in Ruby53:40 - Compacting Garbage Collection61:40 - Building a Compacting Garbage Collector without breaking C Extensions65:20 - Ruby's future, resources for learningLinks:Blog@tenderloveRuby Under a Microscope
undefined
Oct 10, 2019 • 58min

Pod Hunt and Side Projects with Mubashar Iqbal

Mubs is an amazingly prolific creator. He's built 85 side projects which are all listed on his website and was Product Hunt's Maker of the Year in 2016. His output is inspiring and he offers great advice on how to approach building side projects of your own.Mubashar IqbalPersonal Site@mubashariqbalProjectsProjectsPod HuntHacker News DayWill Robots Take My Job?Pod Hunt StackLaravelLaravel ForgeTailwind CSSVueJSMySQLTimestamps01:14 - What's Pod Hunt?03:42 - How are people using Pod Hunt?08:42 - Why Pod Hunt isn't a native app yet11:25 - How long to build the prototype?15:50 - Pod Hunt's Stack16:55 - Why Pod Hunt isn't a Single Page Application22:18 - No CDN yet23:24 - MySQL as the datastore24:24 - Laravel Forge for hosting28:13 - What's Hacker News Day?34:06 - Choose a side project that solves your own problem40:43 - The difference between projects for fun vs money50:20 - Will Robots Take My Job?
undefined
Sep 27, 2019 • 1h 2min

How to Teach Programming with Felienne

Felienne is an associate professor at Leiden University who brings a unique perspective on programming education backed by scientific research. She also runs the Programming Education Research Lab (PERL) in order to study the best ways to teach programming.Keynote at Strange LoopHow to Teach Programming (and other things?)Related Research PapersHow is Programming Taught at Code ClubsThe Effect of Reading Code Aloud on Comprehension: An Empirical Study with School StudentsCode PhonologyWhy Minimal Guidance During Instruction Does Not WorkCognitive Architecture and Instructional Design: 20 Years LaterPapers by Brianna MorrisonFelienneBlogTwitterPublicationsSoftware Engineering Radio PodcastBonusSt. Louis City MuseumTimestamps00:56 - Spreadsheets as programming04:57 - When do you build software vs use what's already there?10:14 - Direct instruction vs independent learning20:28 - How should you start teaching kids?24:39 - Is teaching kids different than older students?30:15 - Using rote memorization and saying code out loud35:15 - What is the role of Computer Science education?40:42 - Teaching IDEs, Git, Debugging, and Code Review45:43 - Problems with teaching Open Source49:12 - Incorporating live coding into university lectures56:18 - Podcasting and conference speaking
undefined
Sep 16, 2019 • 1h 12min

How HTTP Works with Julia Evans

Julia Evans is best known for her zines and blog posts that break down technical topics in a friendly way. She has written educational material on everything from Linux system calls to working with managers.She joins us to talk about what she learned while writing her latest zine: HTTP: Learn your browser's language.Timestamps:0:50 - Why write a zine about HTTP?1:21 - What's a header that could break your site?2:50 - What does HTTP look like?5:58 - What headers are most important?8:39 - Response Codes12:26 - Authentication14:57 - Cookies18:37 - Using browser development tools19:46 - Caching and CDNs25:46 - Referrer Header and Hotlinking images27:34 - Resuming file downloads 30:00 - URLs32:11 - Why webpages show different languages34:34 - Same Origin Policy / CORS43:42 - Compression / GZIP45:58 - Intermediate Programming Education49:35 - Picking topics for blogs and zines57:10 - Picking an audience to write to59:54 - Types of educational material (zines, books)64:03 - Why Julia likes the zine format65:53 - Working on education full timeLinks:HTTP: Learn your browser's languageJulia's blogJulia's twitterWizard ZinesMozilla Developer Networknetcat
undefined
Sep 13, 2019 • 1h 2min

Rust in Production with Armin Ronacher

Topics:Deciding when to use RustConcurrency in RustWhen to create a separate serviceIntroducing Rust at SentryChallenges of writing Python modules in RustCreating Symbolicator, a Rust web service that processes debug filesUsing Actix to create SymbolicatorWhy Rust doesn't need a Django or Rails equivalentConcerns about the stability of the Rust ecosystem and the lack of shared solutionsWhat's missing in the Rust ecosystemWhy developers need better debugging toolsIf you're interested in helping Armin build an open source debugging community, reach out to him via e-mail or twitter.This episode is part of the Rustacean Station feed. Check it out if you're interested in Rust podcasts.Links:Armin's TwitterArmin's BlogSentryActixRocketBuilding Sentry: SymbolicatorSymbolicatorSemaphoreMilksnakeWasmerExistential TypesTokio TowerRFC to add Backtraces to standard errorFutureErlangShow timestamps:0:37 - What got you interested in Rust?2:19 - Abstraction with good performance in Rust vs Python4:11 - Rust doesn't need asynchronous code5:31 - Building thread safe applications6:26 - What excited you about using Rust?8:20 - Sentry11:02 - Introducing Rust to Sentry13:10 - Anything easier to write in Rust vs Python?16:14 - Writing extensions vs writing services19:22 - Flow of sending a minidump to Symbolicator21:56 - Symbolicator makes sense as a service23:26 - Building a better debugging world24:33 - More things symbolicator does25:27 - What's Milksnake28:04 - Other ways to embed Rust in Python30:08 - Why use Actix for Symbolicator?34:44 - Is it too early to write web applications?37:30 - What would you do differently in hindsight?42:20 - Don't want a Django or Rails43:58 - When to write a web application?47:34 - What do you wish existed in Rust?49:57 - Game backends51:44 - Anything else?53:26 - Why companies aren't using Rust for web development54:23 - Why async/await is not the only blocker for web development56:43 - Resources for web development in Rust58:24 - Wrap Up

Get the Snipd
podcast app

Unlock the knowledge in podcasts with the podcast player of the future.
App store bannerPlay store banner

AI-powered
podcast player

Listen to all your favourite podcasts with AI-powered features

Discover
highlights

Listen to the best highlights from the podcasts you love and dive into the full episode

Save any
moment

Hear something you like? Tap your headphones to save it with AI-generated key takeaways

Share
& Export

Send highlights to Twitter, WhatsApp or export them to Notion, Readwise & more

AI-powered
podcast player

Listen to all your favourite podcasts with AI-powered features

Discover
highlights

Listen to the best highlights from the podcasts you love and dive into the full episode