Programming Throwdown: Recent Episodes

Patrick Wheeler and Jason Gauci

Programming Throwdown educates Computer Scientists and Software Engineers on a cavalcade of programming and tech topics. Every show will cover a new programming language, so listeners will be able to speak intelligently about any programming language.

View Details

Things to consider when choosing a database

  • Speed & Latency
  • Consistency, ACID Compliance
  • Scalability
  • Language support & Developer Experience
  • Relational vs. Non-relational (SQL vs. NoSQL)
  • Data types
  • Security
  • Database environment
    • Client vs Server access

Info on Kris & Harper:

  • Website: harperdb.io
  • Twitter: @harperdbio, @kriszyp
  • Github: @HarperDB, @kriszyp

★ Support this podcast on Patreon ★

View Details

Episode 163 - Recursion

Intro topic: Electric Cars

News/Links:

  • Snake Game in 101 Bytes in a QR Code
    • https://www.reddit.com/r/programming/comments/15ab4ct/my_qr_code_snake_game_is_now_only_101_bytes/
  • Superconductor Rumors abound
    • https://arstechnica.com/science/2023/08/whats-going-on-with-the-reports-of-a-room-temperature-superconductor/
  • OpenWorm
    • https://github.com/openworm/OpenWorm
  • Creator of vim passes away
    • https://news.itsfoss.com/vim-creator-passed-away/

Book of the Show

  • Patrick:
    • Little Book of Common Sense Investing by Jack Bogle https://amzn.to/43YqANR
  • Jason:
    • Mistborn Saga: https://amzn.to/3DJkUN8

Patreon Plug https://www.patreon.com/programmingthrowdown?ty=h

Tool of the Show

  • Jason:
    • reMarkable https://remarkable.com/
  • Patrick:
    • Stellarium (iOS and Android)

Topic: Recursion

  • What is it
    • Divide-And-Conquer
    • Fibonacci numbers
  • How to (not) teach recursion
  • Practical Applications
    • Graph operations
      • Tree retrieval, balancing
      • Graph Search
    • Spatial partitioning
  • Pitfalls
    • Stack size
  • How to solve problems with recursion
    • (1) Consider the base cases
    • (2) Build the recursive step
    • (3) Look for ways the recursion will not terminate and fix
    • (4) (rest are optional) Remove global contexts
    • (5) Add memoization
    • (6) Build solutions incrementally

★ Support this podcast on Patreon ★

View Details

In the latest episode of Programming Throwdown, we delve into the captivating world of interactive fiction. We explore: Wordnet, Inform, and how games in the past have been the forerunners of today’s NLP challenges.

00:00:22 Introductions

00:00:39 To hard mode or not to hard mode

00:08:58 No moats in Google

00:16:37 Stable Diffusion blows Jason’s mind

00:21:31 Putting beats together

00:23:38 GPT4All

00:27:44 White Sand

00:35:28 Fortuna

00:38:55 Patrick’s ‘dirty’ secret

00:47:20 Wordnet

00:53:56 Procedural generation

00:57:29 On tabletop RPGs

01:00:48 Inform

01:07:27 Farewells

Resources mentioned in this episode:

Join the Programming Throwdown Patreon community today: https://www.patreon.com/programmingthrowdown?ty=h

Subscribe to the podcast on Youtube: https://www.youtube.com/@programmingthrowdown4793

News/Links:

  • Google: We have no moat and neither does OpenAI
    • https://www.semianalysis.com/p/google-we-have-no-moat-and-neither
  • Stable Diffusion QR Codes
    • https://stable-diffusion-art.com/qr-code/
  • Beginning to Make Music
    • https://learningmusic.ableton.com/
  • GPT4All
    • https://gpt4all.io/index.html
  • Wordnet:
    • https://wordnet.princeton.edu/
  • Inform:
    • https://en.wikipedia.org/wiki/Inform

Book of the Show

  • Patrick:
    • White Sand https://amzn.to/43CPMKA
  • Jason:
    • The Fortuna https://www.generativefiction.com/

Tool of the Show

  • Jason:
    • Gatsby.js https://www.gatsbyjs.com/
  • Patrick:
    • Peglin https://store.steampowered.com/app/1296610/Peglin/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM | Youtube

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

MosaicML’s VP Of Engineering, Hagay Lupesko, joins us today to discuss generative AI! We talk about how to use existing models as well as ways to finetune these models to a particular task or domain.

00:01:28 Introductions

00:02:09 Hagay’s circuitous career journey

00:08:25 Building software for large factories

00:17:30 The reality of new technologies

00:28:10 AWS

00:29:33 Pytorch’s leapfrog advantage

00:37:24 MosaicML’s mission

00:39:29 Generative AI

00:44:39 Giant data models

00:57:00 Data access tips

01:10:31 MPT-7B

01:27:01 Careers in Mosaic

01:31:46 Farewells

Resources mentioned in this episode:

Join the Programming Throwdown Patreon community today: https://www.patreon.com/programmingthrowdown?ty=h

Subscribe to the podcast on Youtube: https://www.youtube.com/@programmingthrowdown4793

Links:

  • Hagay Lupesko:
    • Linkedin: https://www.linkedin.com/in/hagaylupesko/
    • Twitter: https://twitter.com/hagay_lupesko
    • Github: https://github.com/lupesko
  • MosaicML:
    • Website: https://www.mosaicml.com/
    • Careers: https://www.mosaicml.com/careers
    • Twitter: https://twitter.com/MosaicML
    • Linkedin: https://www.linkedin.com/company/mosaicml/
  • Others:
    • Amp It Up (Amazon): https://www.amazon.com/Amp-Unlocking-Hypergrowth-Expectations-Intensity/dp/1119836115
    • Hugging Face Hub: https://huggingface.co/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM | Youtube

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

Where are you now? It’s a question that may seem easy to answer on the surface, but in truth hides more complexity than people expect. In today’s episode, we tackle the latest that they’ve found online on AI, creative endeavors, and more before diving into the meaty discussion of position localization.

00:01:13 Steam Deck
00:11:22 Summoning Salt on Mario
00:16:49 100k stars
00:24:26 ChatGPT spam call
00:25:31 Build Your Own DB (from scratch)
00:29:50 DuckDB
00:35:07 Jason has an idea
00:37:58 Fighting Fantasy Classics
00:41:52 Patrick’s bread
00:47:52 Support the show
00:53:54 Awkward CRM emails
00:56:07 Rill
01:00:29 Position localization in detail
01:17:15 Common filter
01:25:22 Simultaneous localization
01:28:59 Farewells

Resources mentioned in this episode:
Join the Programming Throwdown Patreon community today: https://www.patreon.com/programmingthrowdown?ty=h

Subscribe to the podcast on Youtube: https://www.youtube.com/@programmingthrowdown4793

News/Links:

  • The History of Super Mario Bros 3 100% World Records (Summoning Salt)
    • https://www.youtube.com/watch?v=_EsFyogVvkw
  • AutoGPT hits 100k stars
    • https://twitter.com/AlphaSignalAI/status/1649524105647906819
  • Build Your Own Database from Scratch
    • https://build-your-own.org/database/
  • Asking generative art AI to render mathematical theorems
    • https://twitter.com/TivadarDanka/status/1649721970886594561
  • DuckDB:
    • https://duckdb.org/

Book of the Show:

  • Jason: Fighting Fantasy Classics
    • https://play.google.com/store/apps/details?id=com.tinmangames.ffhub&hl=en_US≷=US
    • https://apps.apple.com/us/app/fighting-fantasy-classics/id1261201650
  • Patrick: Evolutions in Bread: Artisan Pan Breads and Dutch-Oven Loaves at Home
    • https://amzn.to/44kW4iE

Tool of the Show:

  • Jason: Jinja
    • https://jinja.palletsprojects.com/en/3.1.x/
  • Patrick: Rill
    • https://www.rilldata.com/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM | Youtube

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

GraphQL is one of the biggest API enablers in software development, but just how complicated can things be? Tanmai Gopal – Hasura’s CEO extraordinaire – talks with Jason and Patrick about how the secret sauce gets made. They dive deeply from how APIs function to having them managed in practice – among several other topic, making this a must-listen episode.

00:01:19 Introductions

00:01:48 Tanmai’s late start in programming

00:05:48 Plinko

00:13:06 Coursera

00:23:28 The question of API development

00:30:30 API layer functionality

00:34:58 How Hasura leverages JSON

00:39:08 GraphQL

00:42:49 Worse than an API call

00:49:15 The potential REST minefield

00:53:41 JSON Web Tokens

01:11:34 Scaling writes

01:15:17 Careers with Hasura

01:22:35 Farewells

Resources mentioned in this episode:

Join the Programming Throwdown Patreon community today: https://www.patreon.com/programmingthrowdown?ty=h

Subscribe to the podcast on Youtube: https://www.youtube.com/@programmingthrowdown4793

Links:

  • Tanmai Gopal:
    • Website: https://hasura.io/blog/@tanmaig/
    • Linkedin: https://www.linkedin.com/in/tanmaig/
    • Twitter: https://twitter.com/tanmaigo
    • Github: https://github.com/coco98
  • Hasura:
    • Website: https://hasura.io/
    • Careers: https://hasura.io/careers/
    • Twitter: https://twitter.com/HasuraHQ
    • Github: https://github.com/hasura
    • Linkedin: https://www.linkedin.com/company/hasura
  • Others:
    • Good Strategy, Bad Strategy (Amazon): https://www.amazon.com/Good-Strategy-Bad-Strategy-audiobook/dp/B07R6XQ8YP
    • Modern Application Development (IIT Madras, archived): https://archive.nptel.ac.in/courses/106/106/106106156/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM | Youtube

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

Yonatan Cohen – Co-Founder & CTO of Quantum Machines – joins us in this episode to tackle quantum computing! Did you know anyone can run quantum programs on Amazon Web Services for mere dollars? Learn about this field early to take pole superposition in the race to understand and use quantum computers!

00:00:45 Introductions

00:01:20 Yonatan’s beginnings

00:03:49 The simulation question

00:05:51 How physics led to quantum computing

00:14:56 Richard Feynman

00:16:44 On the irreversibility of normal computers

00:21:25 Logic gates

00:25:04 Qubits

00:30:11 An example of qubits

00:38:19 Why simulating a quantum computer matters

00:42:23 NP-complete problems

00:48:57 More people at a higher development level are needed

00:54:16 Quantum machines in the middle layer

01:02:56 Working at Quantum Machines

01:05:05 Farewells

Resources mentioned in this episode:

Links:

  • Quantum Machines:
    • Website: https://www.quantum-machines.co/
    • Careers: https://www.quantum-machines.co/careers/
  • Yonatan Cohen:
    • Linkedin: https://www.linkedin.com/in/yonatan-cohen-10076b113/

References:

  • Getting Started with Quantum Computing
    • https://builtin.com/software-engineering-perspectives/how-to-learn-quantum-computing

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

In this tour-de-force, Mike Dalessio – Engineering Director at Shopify – and Evan Phoenix – self-described “long-time Rubyist” – join us for a practical discussion of all things Ruby! Ruby is a beautiful language, and we're really excited to cover the history and present of this language with two experts.

00:01:03 Introductions

00:01:49 Mike’s Ruby journey

00:12:28 Evan’s own Ruby experience

00:18:20 The pickaxe book

00:20:34 Weird programming interests

00:25:11 MINASWAN

00:30:33 Language conferences

00:36:38 Wrong answers on StackOverflow

00:41:53 RubyCentral

00:44:50 In-depth examination of Ruby

00:47:57 How Shopify sticks to vanilla Rails

00:50:28 A tale of two developers

00:59:59 Bringing Ruby up to Python’s level

01:04:48 Shopify’s largest app monolith

01:11:12 Tuning the knobs

01:18:01 How not to learn the hard way

01:18:57 Opportunities at Shopify

01:29:14 Working with the RubyShield program

01:32:07 Rails for API servers

01:33:21 Mike and Evan’s advice for listeners

01:36:00 Farewells

Resources mentioned in this episode:

Links:

  • RubyCentral:
    • Website: https://rubycentral.org/
    • RubyShield: https://rubycentral.org/ruby-shield
    • Twitter: https://twitter.com/rubycentralorg
  • Shopify:
    • Website: https://www.shopify.com/
    • Careers: https://www.shopify.com/careers
    • Dev Degree Program: https://devdegree.ca/pages/program
  • HashiCorp
    • Website: https://www.hashicorp.com/
    • Careers: https://www.hashicorp.com/jobs
  • Mike Dalessio:
    • Website: http://mike.daless.io/
    • Twitter: https://twitter.com/flavorjones
  • Evan Phoenix:
    • Website: https://github.com/evanphx
    • Twitter: https://twitter.com/evanphx
  • RubyConf 2022 (Nov. 29 – Dec. 1, 2022):
    • Website: https://rubyconf.org/

Other Episodes:

  • Episode 47: Ruby
    • Show Link: https://www.programmingthrowdown.com/2015/10/episode-47-ruby.html

References:

  • “The Pickaxe Book” aka Programming Ruby: The Pragmatic Programmer’s Guide 2nd Edition:
    • Amazon: https://www.amazon.com/Programming-Ruby-Pragmatic-Programmers-Second/dp/0974514055

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

Today we discuss adventures, books, tools, and art discoveries before diving into unsupervised machine learning in this duo episode!

00:00:22 Introductions

00:01:28 Email & inbox organization is very important

00:07:28 The Douglas-Peucker algorithm

00:11:48 Starter project selection

00:17:01 Tic-Tac-Toe

00:21:41 Artemis 1

00:26:25 Space slingshots

00:29:47 Flex Seal tape

00:32:38 The Meditations

00:37:58 Flour, Water, Salt, Yeast

00:40:55 Pythagorea

00:46:13 Google Keep

00:48:05 Visual-IF

00:50:49 Data insights

01:03:07 Self-supervised learning

01:10:26 A practical example of clustering

01:15:10 Word embedding

01:24:02 Farewells

Want to learn more? Check out these previous episodes:

  • Episode 27: Artificial Intelligence Theory
    • https://www.programmingthrowdown.com/2013/05/episode-27-artificial-intelligence.html
  • Episode 28: Applied Artificial Intelligence
    • https://www.programmingthrowdown.com/2013/06/episode-28-applied-artificial.html
  • Episode 109: Digital Marketing with Kevin Urrutia
    • https://www.programmingthrowdown.com/2021/03/episode-109-digital-marketing-with.html

Resources mentioned in this episode:

News/Links:

  • Simplify lines with the Douglas-Peucker Algorithm
    • https://ilya.puchka.me/douglas-peucker-algorithm/
  • How to pick a starter project
    • https://amir.rachum.com/blog/2022/08/07/starter-project/
  • Tic-Tac-Toe in a single call to printf()
    • https://github.com/carlini/printf-tac-toe
  • Artemis 1
    • https://www.nasa.gov/artemis-1/
  • Visual-IF
    • https://www.visual-if.com/

Book of the Show:

  • Jason’s Choice: “The Meditations” by Marcus Aurelius
    • https://amzn.to/3C3Kg7b
  • Patrick’s Choice: “Flour, Water, Salt, Yeast” by Ken Forkish
    • https://amzn.to/3CqFwKa

Tool of the Show:

  • Jason’s Choice: Pythagorea
    • Android: https://play.google.com/store/apps/details?id=com.hil_hk.pythagorea&hl=en≷=US
    • iOS: https://apps.apple.com/us/app/pythagorea/id994864779
  • Patrick’s Choice: Google Keep
    • https://keep.google.com/

References:

  • Clustering: https://en.wikipedia.org/wiki/Cluster_analysis
  • Autoencoding: https://en.wikipedia.org/wiki/Autoencoder
  • Contrastive Learning: https://towardsdatascience.com/understanding-contrastive-learning-d5b19fd96607
  • Matrix Factorization: https://en.wikipedia.org/wiki/Matrix_factorization_(recommender_systems)
  • Stochastic factorization: https://link.medium.com/ytuaUAYBjtb
  • Deep Learning: https://en.wikipedia.org/wiki/Deep_learning

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

Today we go back to our programming language roots with author, KT Academy founder, and Kotlin rockstar Marcin Moskala. We talk about how Kotlin makes itself doubly useful for app and backend development.

00:00:55 Introductions

00:01:38 Java frustrations

00:09:37 Why a well-organized typing system is important

00:11:59 What Kotlin is

00:14:58 Obsidian

00:20:13 Learning new things can be a prudent future investment

00:23:46 A pleasant coding experience

00:26:41 Co-routines in Kotlin

00:34:37 Where co-routines are best in app development

00:44:54 Thread balancing in practice

00:57:39 Kotlin’s integrated cancellation mechanism

01:05:10 Getting started with Kotlin

01:18:16 Farewells

Resources mentioned in this episode:

Marcin Moskala:

  • Website: https://marcinmoskala.com/
  • Twitter: https://twitter.com/marcinmoskala
  • KT Academy: https://kt.academy/

Kotlin Learning Resources

  • Marcin on KT: https://kt.academy/user/marcinmoskala
  • Kotlin Coroutines: https://leanpub.com/coroutines
  • Effective Kotlin: https://leanpub.com/effectivekotlin
  • Functional Kotlin (Early Access): https://leanpub.com/kotlin_functional
  • More Kotlin Publications on Leanpub

Information Organization Tools

  • WorkFlowy: https://workflowy.com/
  • Obsidian: https://obsidian.md/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

Finding something online might seem easy - but as Marcus Eagan tells it, it’s not easy to get it right. In today’s episode, MongoDB’s Staff Product Manager on Atlas Search speaks with Jason and Patrick about his own journey in software development and how to best use search engines to capture user intent.

00:00:34 Introductions

00:01:30 Marcus’s unusual origin story

00:05:10 Unsecured IoT devices

00:09:56 How security groupthink can compromise matters

00:12:48 The Target HVAC incident

00:17:32 Business challenges with home networks

00:21:51 Damerau-Levenshtein edit distance factor ≤ 2

00:23:58 How do people who do search talk about search

00:30:35 Inferring human intent before they intend it

00:46:13 Ben Horowitz

00:47:32 Seinfeld as an association exercise

00:52:27 What Marcus is doing at MongoDB

00:58:30 How MongoDB can help at any level

01:01:00 Working at MongoDB

01:08:14 Farewells

Resources mentioned in this episode:

Marcus Eagan:

  • Website: https://marcussorealheis.medium.com
  • The Future of Search Is Semantic & Lexical: https://marcussorealheis.medium.com/the-future-of-search-is-semantic-and-lexical-e55cc9973b63
  • 13 Hard Things I Do To Be A Dope Product Manager: https://marcussorealheis.medium.com/13-hard-things-i-do-to-be-a-dope-database-product-manager-7064768505f8
  • Github: https://github.com/MarcusSorealheis
  • Twitter: https://twitter.com/marcusforpeace

MongoDB:

  • Website: https://www.mongodb.com/
  • Atlas: https://www.mongodb.com/cloud/atlas/register
  • Careers: https://www.mongodb.com/careers

Others:

  • Damerau-Levenshtein distance: https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance
  • Lucene: https://lucene.apache.org/core/
  • Target HVAC Incident (2014, Archive Link): https://archive.is/Wnwob

Mergify:

  • Website: https://mergify.com/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

Douwe Maan’s journey sounds too fantastic to be true, yet the tale that Meltano’s founder shares with Jason and Patrick today is very, very real. Whether it’s about doing software development by 11, joining Gitlab while juggling college responsibilities, or building his own company during today’s challenging times, he has quite the story to tell. In today’s episode, he speaks on Twitter, his perspective on remote work, and why data operations are a critical part of developer stacks in today’s world.

00:01:00 Introductions

00:03:44 Hustling online at 11

00:08:08 From iOS to web-based development

00:10:20 How Douwe balanced school and work

00:12:05 Sid Sijbrandij

00:19:13 Why Twitter was integral in Douwe’s journey

00:21:01 What Meltano offers for data teams

00:22:01 Remote work

00:30:59 Gitlab’s data team and what they do

00:44:40 What tools do data engineers use

00:47:40 Singer

00:50:26 Game designer travails

00:58:59 Where data operations come in

01:05:12 Getting started with Meltano

01:12:00 Meltano as a company

01:22:09 Farewells

Resources mentioned in this episode:

Douwe Maan:

  • Website: https://douwe.me/
  • Twitter: https://twitter.com/douwem
  • GitLab: https://github.com/DouweM

Meltano:

  • Website: https://meltano.com/
  • Careers: https://boards.greenhouse.io/meltano

Singer:

  • Website: https://www.singer.io/

Mergify:

  • Website: https://mergify.com/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

00:01:03 Introductions

00:04:47 Mojovision

00:06:07 Chips’ storied journey

00:11:06 Project Xanadu

00:18:45 Getting into Lucasfilm

00:31:31 Artificial Intelligence in games

00:39:48 GTA MP

01:00:10 How the game industry drives people

01:08:29 Agoric and its niche in the blockchain

01:20:12 Javascript’s securability

01:22:46 Working with Agoric

01:32:20 What skills Agoric’s team looks for

01:35:31 Chip’s parting thoughts

01:37:00 Farewells

Resources mentioned in this episode:
Chip Morningstar:

  • Twitter: https://twitter.com/epopt

Agoric:

  • Website: https://agoric.com/
  • Careers: https://agoric.com/careers/

Habitat Chronicles:

  • Website: http://habitatchronicles.com/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/
Reach out to us via email: programmingthrowdown@gmail.com
You can also follow Programming Throwdown on
Facebook | Apple Podcasts | Spotify | Player.FM
Join the discussion on our Discord
Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

00:00:57 Introductions

00:01:51 How Ronak got started in programming

00:06:03 The first encounter with burnout

00:11:49 Double-edged benefits

00:17:23 Spoon theory

00:19:07 Why relationship clarity matters

00:25:11 A cold room story

00:30:59 Context switching’s relevance

00:35:45 QTorque’s solution to monitor cloud automation costs

00:39:19 Setting up lifetimes

00:42:17 Bom lists

00:49:19 How Quali helps with the challenges

00:54:40 What to do to actualize your true self

00:58:00 Farewells

Resources mentioned in this episode:

Ronak Rahman:

Twitter: https://twitter.com/ofronak

Quali:

Website: https://www.quali.com/
Linkedin: https://www.linkedin.com/company/qualisystems/
QTorque Free Tier: https://www.qtorque.io/pricing/
Join QTorque: https://portal.qtorque.io/join

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

00:00:45 Introductions

00:02:22 The sluggish Python-based system that Guido revitalized

00:06:03 Meeting the challenge of adding necessary complexity to a project

00:11:59 Excel in banking

00:18:15 Guido’s shift into Coil

00:19:29 Scooby-Doo pajamas

00:20:21 What motivates people to come in to the office today

00:24:09 Pandas

00:35:35 Why human error can doom an Excel setup

00:39:29 BLAS

00:46:20 A million lines of data

00:51:43 How does Dask interact with Gambit

00:54:40 Where does Coil come in

00:59:34 The six-o-clock question

01:03:53 Dealing with matters of difficult decomposition

01:12:07 The Coil work experience

01:15:37 Why contributing is impressive

01:20:20 Coil’s product offering

01:21:19 Farewells

Resources mentioned in this episode:

Guido Imperiale:

  • Github: https://github.com/crusaderky

Coiled:

  • Website: https://coiled.io
  • Careers: https://coiled.io/careers/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

00:00:24 Introductions

00:00:49 IP v6

00:04:50 OSI

00:12:53 The IP v7 debate

00:20:18 The definition of an address’s scope

00:21:38 Why John feels DNS was a mistake

00:26:40 How IP mobility works

00:32:13 Bluetooth

00:41:41 Where will Internet architecture go from here

00:49:49 Understanding the problem space

00:59:04 The angels in the details

01:00:53 Scientific thinking vs engineering thinking

01:04:01 Victorian architecture

01:06:11 John’s career advice

01:11:18 Garbage Can Model

01:14:38 How to make the most out of college today

01:27:05 Farewells

Resources mentioned in this episode:

Professor John D. Day:

  • Wikipedia: https://en.wikipedia.org/wiki/John_Day_(computer_scientist)
  • Website: https://www.bu.edu/met/profile/john-day/
  • Book: https://www.oreilly.com/library/view/patterns-in-network/9780132252423/

Terminologies:

  • CIDR: https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing
  • OSI: https://en.wikipedia.org/wiki/OSI_model
  • Connectionless Network Protocol: https://en.wikipedia.org/wiki/Connectionless-mode_Network_Service
  • SIP (Session Initiation Protocol): https://en.wikipedia.org/wiki/Session_Initiation_Protocol
  • Garbage can model: https://en.wikipedia.org/wiki/Garbage_can_model

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

00:01:01 Introduction

00:01:28 COVID and the challenge of teaching

00:04:11 John’s academic and career path

00:08:14 LSI technology

00:12:13 Collaborative software development in the day

00:15:24 ARPANET’s early use

00:20:08 Atom bomb and weather simulations

00:26:55 The message-switching network

00:34:57 Pouzin

00:38:00 Every register had a purpose

00:45:15 The Air Force in 1972

00:52:10 Low memory

00:59:14 Early problems with TCP

01:11:51 The separation of mechanism and policy

01:23:25 Farewells

Resources mentioned in this episode:

Professor John D. Day:

  • Wikipedia: https://en.wikipedia.org/wiki/John_Day_(computer_scientist)
  • Website: https://www.bu.edu/met/profile/john-day/
  • Book: https://www.oreilly.com/library/view/patterns-in-network/9780132252423/

Pouzin Society:

  • Website: https://pouzinsociety.org/
  • Twitter: https://twitter.com/pouzinsociety

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

136: Metaverse with Daniel Liebeskind

Decentralizing the future can often lead to missing out on genuine human communication. Daniel Liebeskind, Cofounder and CEO of Topia, talks about how they’re working to avoid that pitfall while building the foundation of a better online experience. Whether its his lessons from Burning Man, keeping the human spirit alive in today’s technological frontier, or how Topia fits in the future, Daniel has something for listeners.

00:01:34 Introduction

00:02:15 Daniel and early programming experience

00:07:51 How coding felt like sorcery

00:09:35 Skill trees

00:16:10 Second Life

00:19:56 Enhancing versus replacing real life experiences

00:26:28 A decentralized Metaverse

00:29:54 Web 2 versus Web 3

00:34:15 /r/place

00:44:16 Why boom cycles are important for tech

00:46:03 Topia for consumers

00:52:47 Topia as a company

00:55:50 Opportunities at Topia

00:58:00 Topia.io

01:03:50 Farewells

Resources mentioned in this episode:

Daniel Liebeskind, Cofounder and CEO of Topia:

  • LinkedIn: https://www.linkedin.com/in/dliebeskind/
  • Website: https://medium.com/@dliebeskind
  • Twitter: https://twitter.com/dliebeskind

Topia:

  • Website: https://topia.io/topia/careers
  • LinkedIn: https://www.linkedin.com/company/topia-io/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

00:00:15 Introduction

00:01:03 Aran Khanna and his background

00:05:12 The Marauder’s Map that Facebook hated(Chrome Extension)

00:20:11 Why Google made Kubernetes

00:31:14 Horizontal and Vertical Auto-Scaling

00:35:54 Zencastr

00:39:53 How machines talk to each other

00:46:32 Sidecars

00:48:25 Resources to learn Kubernetes

00:52:59 Archera

00:59:31 Opportunities at Archera

01:01:08 Archera for End Users

01:02:30 Archera as a Company

01:05:46 Farewells

Resources mentioned in this episode:

Aran Khanna, Cofounder of Archera:

  • LinkedIn: https://www.linkedin.com/in/aran-khanna/
  • Website: http://arankhanna.com/menu.html
  • Twitter: https://twitter.com/arankhanna

Archera:

  • Website: https://archera.ai/
  • LinkedIn: https://www.linkedin.com/company/archera-ai/
  • Twitter: https://twitter.com/archeraai

Kubernetes:

  • Website: https://kubernetes.io/
  • Documentary: https://www.youtube.com/watch?v=BE77h7dmoQU

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

134: Ephemeral Environments with Benjie De Groot

Download

How do you test changes to your web backend or database? Many people have a "production" and one "development" database, but the development database can easily become broken by one engineer and thus unusable for the rest of the team. Also, how would two engineers make changes in parallel to the development environment? What if you could spin up hundreds or thousands of development databases as you need them? Today we have Benjie De Groot, Co-Founder and CEO of Shipyard to explain ephemeral environments and how virtual machines and containers have made massive improvements in devops!

00:00:15 Introduction

00:00:24 Introducing Benjie De Groot

00:01:26 Benjie’s Programming Background

00:06:34 How Shipyard started

00:09:17 Working in Startups vs. Tech Giants

00:19:28 The difference between Virtual Machines and Containers

00:26:17 Local Development Environment

00:40:27 What is a DevOps engineer and what does it entail?

00:45:42 Zencastr

00:50:12 Shipyard as a company

00:55:29 How Shipyard gets clients

01:06:48 Farewells

Resources mentioned in this episode:

Benjie De Groot, Co-Founder & CEO at Shipyard:

  • LinkedIn: https://www.linkedin.com/in/bueller/
  • Podcast: https://www.heavybit.com/library/podcasts/the-kubelist-podcast/

Shipyard:

  • Website: https://shipyard.build/
  • Careers: https://shipyard.build/careers/
  • LinkedIn: https://www.linkedin.com/company/shipyardbuild/
  • Twitter: https://twitter.com/shipyardbuild
  • Community Website: https://ephemeralenvironments.io/
  • GitHub: https://github.com/shipyard

Heavybit:

  • Website: https://www.heavybit.com/
  • LinkedIn: https://www.linkedin.com/company/heavybit/
  • Twitter: https://twitter.com/heavybit

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

As anyone who listens to the show regularly knows, I've always been fascinated by marketplaces. How do we figure out what to charge for something, and how do we match buyers and sellers? How does a company like Uber match drivers to riders so quickly? Today we have Andrew Yates, Co-Founder & CEO at Promoted.ai, to talk about marketplaces and how to optimize for this two-sided problem.

00:00:15 Introduction

00:00:27 Introducing Andrew Yates

00:00:50 Andrew’s Programming Background

00:04:19 Andrew at Promoted.AI

00:08:17 What is a Marketplace?

00:17:45 Marketplace Rankings

00:22:50 Short-term vs Long-term Experience

00:24:43 Machine Learning and the Marketplace

00:34:57 Measurements

00:37:09 Promoted.AI Integration

00:38:31 How Promoted.AI Measures Success

00:41:14 Auction Theory

00:46:08 Experience with YCombinator

00:50:34 Promoted.AI as a Company

00:55:47 Farewells

Resources mentioned in this episode:

Andrew Yates, Co-Founder & CEO at Promoted.ai:

  • LinkedIn: https://www.linkedin.com/in/andrew-yates-0217a985/
  • Twitter: https://mobile.twitter.com/ayates_promoted

Promoted.ai:

  • Website: https://www.promoted.ai/
  • LinkedIn: https://www.linkedin.com/company/promoted-ai/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

00:00:15 Introduction

00:01:24 Gaming setups

00:12:25 News

  • 00:12:27 I was wrong, CRDTs are the future
  • 00:17:18 How we lost 54k Github stars
  • 00:21:10 DALL-E
  • 00:25:45 Inside the Longest Atlassian Outage of All Time

00:35:11: Sponsor

00:36:22 Book of the Show

  • 00:36:38 Indie Boardgame Designers Podcast
  • 00:37:24 The Laundry Files

00:40:35 Tool of the Show

  • 00:40:39 Zapier
  • 00:42:21 Earthly

00:46:46 Funding open-source projects

01:19:44 How to get funding for open-source projects

01:22:47 Farewells

Resources mentioned in this episode:

Media:

  • The King of Kong: A Fistful of Quarters (2017)
  • Class Action Park (2020)
  • Indie Boardgame Designers Podcast: https://indieboardgamedesigners.com/
  • GitHub Stars Won’t Pay Your Rent: https://medium.com/@kitze/github-stars-wont-pay-your-rent-8b348e12baed

News:

  • I Was Wrong, CRDTs Are The Future: https://josephg.com/blog/crdts-are-the-future/
  • How We Lost 54k GitHub Stars: https://httpie.io/blog/stardust
  • DALL-E: https://openai.com/blog/dall-e/
  • Inside the Longest Atlassian Outage of All Time: https://newsletter.pragmaticengineer.com/p/scoop-atlassian?s=r

Books:

  • Indie Board Game Designers Podcast
  • The Laundry Files: https://amzn.to/3kdWWQg

Tools:

  • Zapier: https://zapier.com/
  • N8n: https://n8n.io/
  • Earthly: https://earthly.dev/

Adam Gordon Bell:

  • Twitter: https://twitter.com/adamgordonbell
  • Website: https://adamgordonbell.com/
  • LinkedIn: https://www.linkedin.com/in/adamgordonbell/
  • CoRecursive: https://corecursive.com/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

I've been a big fan of Brave Browser ever since attending a presentation from Brandon Eich back in 2017. Brave was one of the first browsers to aggressively block the ability for websites to share information on your computer without your consent (i.e. third party cookies). I'm so excited to sit down with Jimmy Secretan, VP of Ads and Premium Services of Brave, and talk about all things Brave, from the Browser to the other products to the way Brave takes privacy on the internet to a whole new level, while also empowering content creators and advertisers who depend on ads for income and to promote their businesses.

00:00:15 Introduction

00:00:44 Introducing Jimmy Secretan

00:01:10 How Brave started

00:09:33 Brave and internet advertising

00:21:13 Local machine learning

00:32:07 What is BAT (Brave Attention Tokens)

00:42:59 Cross-platform data synchronization

00:44:28 Chromium

00:50:22 Public and Private key encryption and authentication

00:54:27 Brave for Content Creators

00:59:03 Where is Brave now and what is its trajectory

01:05:40 Opportunities in Brave

01:13:10 Farewells

Resources mentioned in this episode:

Jimmy Secretan, VP of Ads and Premium Services:

  • Twitter: https://twitter.com/jsecretan
  • LinkedIn: https://www.linkedin.com/in/jimmysecretan/

Brave:

  • Website: https://brave.com/
  • Brave Careers: https://brave.com/careers/
  • Twitter: https://twitter.com/brave
  • LinkedIn: https://www.linkedin.com/company/brave-software/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

"Hacking" is a word that evokes awe from the public, laughter from developers, and pure fear from technology leaders. But what really is hacking? What does trust really mean and how do we acquire and keep trust on the Internet? It turns out that, while hacking is associated with computers, the methods behind it have been around since the dawn of time. Today we have Ted Harrington from ISE to dive deep into hacking, all the way from the medieval times to today.

00:00:15 Intro

00:01:25 Introducing Ted Harrington

00:07:10 Ethical Hackers, Non-Ethical Hackers, and Productivity

00:11:58 Starting out in Ethical Hacking/Security

00:14:40 Imposter Syndrome

00:19:34 What is Hacking?

00:30:48 Is Hacking like magic?

00:38:14 Defense in Depth

00:42:04 Earning trust and The Departed movie (Spoiler alert)

00:59:52 DEF CON® Hacking Conference

01:02:46 Tips on how not to get hacked

01:10:08 ISE.io culture and opportunities

01:24:13 Farewells

Resources mentioned in this episode:

Companies:

ISE (Independent Security Evaluators)

o Website: https://www.ise.io/

o LinkedIn: https://www.linkedin.com/company/independent-security-evaluators

o Twitter: https://twitter.com/ISEsecurity

o Facebook: https://facebook.com/ISE.infosec

People:

Ted Harrington

o Website: https://www.tedharrington.com/

o LinkedIn: https://www.linkedin.com/in/securityted/

o Twitter: https://twitter.com/SecurityTed

o Book: https://www.amazon.com/Hackable-How-Application-Security-Right/dp/154451767X

Sponsor:

MParticle

o Website: https://www.mparticle.com/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

Brief Summary:

What is Web 3.0? Guest speaker Michelle Lee, Product Lead of Protocol Labs, shares how web 3.0 will revolutionize the Internet and bring trust back into the web.

00:00:25 Introduction

00:01:36 Michelle Lee’s career

00:03:10 What is human-computer interaction?

00:04:55 The Google Sheets user experience

00:06:19 Google Checkout, user feedback, and emails

00:10:23 Code for America

00:13:47 The real power of Open Source

00:14:14 Web 3.0

00:23:04 IPFS network accessibility

00:26:14 How does IPFS handle bogus content?

00:38:56 Network storage costs

00:43:03 Privacy and identification on IPFS

00:45:23 Content moderation from the Web 3.0 perspective

00:49:48 Audius

00:54:20 Protocol Labs and IPFS

00:55:26 Working with Protocol Labs

01:05:00 Farewells

Resources mentioned in this episode:

Companies:

  • Protocol Labs:
    • Website: https://protocol.ai/
    • Twitter: https://twitter.com/protocollabs
    • LinkedIn: https://www.linkedin.com/company/protocollabs/
    • Youtube: https://www.youtube.com/ProtocolLabs
    • Filecoin: https://filecoin.io/
    • Hackathons @ Protocol Labs: https://hackathons.filecoin.io/
    • Course Learning @ Protocol Labs: https://proto.school/
  • Metamask:
    • https://metamask.io/
  • Fleek:
    • Website: https://fleek.co/
    • Space Storage: https://fleek.co/storage/
  • Estuary:
    • Website: https://estuary.tech/
  • Audius:
    • Website: https://audius.co/

Social Media:

  • Michelle Lee, Product at Protocol Labs
    • Twitter: https://twitter.com/mishmosh
    • LinkedIn: https://www.linkedin.com/in/michellelee3

Sponsor:

  • Rollbar
    • Website: https://rollbar.com/
    • Freebies: https://try.rollbar.com/pt/

Download the episode here

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

Summary:

What is WebAssembly? Guest speaker Kevin Hoffman, CTO of Cosmonic shares what WebAssembly is, why it exists, and what kind of things you can do with it.

Notes:

00:00:16 Introduction

00:00:52 Cosmonic during COVID

00:02:45 Kevin Hoffman’s career and Cosmonic’s begginings

00:12:39 WebAssembly integrations

00:16:20 What is WebAssembly?

00:27:30 The developer experience

00:30:30 WebAssembly, JSON, and other object interactions

00:36:35 Rollbar

00:41:08 Compiler linking

00:49:27 wasmCloud

00:54:21 Decoupling clouds

01:01:51 Cosmonic fostering wasmCloud/WebAssembly

01:03:28 Cosmonic as a company

01:09:33 Opportunities at Cosmonic

01:13:03 Farewells

Resources mentioned in this episode:
Companies:

  • Cosmonic
  • Website: https://cosmonic.com/
  • Twitter: https://twitter.com/cosmonic
  • LinkedIn: https://www.linkedin.com/company/cosmonic-corp/

People:

  • Kevin Hoffman, Chief Technology Officer at Cosmonic
  • Twitter: https://twitter.com/KevinHoffman
  • LinkedIn: https://www.linkedin.com/in/%F0%9F%A6%80-kevin-hoffman-9252669/

Sponsor:

  • Rollbar
  • Website: https://rollbar.com/
  • Freebies: https://try.rollbar.com/pt/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

Brief Summary:

Programming is difficult as it is, but imagine how difficult it was without all the current tools, compilers, synthesizers, etc. that we have today. Eran Yahav, Chief Technology Officer at Tabnine shares how AI is currently helping with code writing and how it could change in the future.

00:00:16 Introduction

00:00:51 Eran Yahav’s programming background

00:08:11 Balance between Human and the Machine

00:11:49 Static Analysis

00:29:42 Similarities in Programming Constructs

00:25:30 Average vs Tailored tooling

00:36:19 Machine Learning Quality Metrics

00:38:27 Rollbar

00:40:19 Model Training vs Statistic Matching

00:50:19 Developers Interacting with their Code in the Future

01:00:18 Tabnine

01:08:17 Farewells

Resources mentioned in this episode:

Companies:

  • Tabnine:
    • Website: https://www.tabnine.com/
    • Twitter: https://twitter.com/Tabnine_
    • LinkedIn: https://www.linkedin.com/company/tabnine/

Social Media:

  • Eran Yahav, Chief Technology Officer at Tabnine
    • Twitter: https://twitter.com/yahave
    • LinkedIn: https://www.linkedin.com/in/eranyahav/

Sponsor:

  • Rollbar
    • Website: https://rollbar.com/
    • Freebies: https://try.rollbar.com/pt/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

Brief Summary:

Erez Berkner, CEO of Lumigo, talks about his company, going serverless, and why you should too. He shares his experience and tips regarding serverless computing and its ever-growing opportunities in modern computing.

00:00:16 Introduction

00:01:43 Introducing Erez Berkner

00:06:27 The start of Lumigo

00:10:42 What is Serverless

00:20:10 Challenges with going serverless

00:39:53 Securing Lambdas

00:46:50 Lumigo and breadcrumbs

00:55:46 How to get started with Lumigo

  • 00:57:06 Lumigo and databases
  • 00:58:20 Lumigo pricing

01:00:28 Lumigo as a company

01:06:30 Contacting Lumigo

01:11:01 Farewells

Resources mentioned in this episode:

Companies:

  • Lumigo: https://lumigo.io/
  • Lumigo Free Trial: https://platform.lumigo.io/auth/signup

Socials:

  • Erez Berkner:
    • Twitter: https://twitter.com/erezberkner
    • LinkedIn: https://www.linkedin.com/in/erezbe/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

Download

We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown

We are on Patreon! https://www.patreon.com/programmingthrowdown

T-Shirts! http://www.cafepress.com/programmingthrowdown/13590693

Join us on Discord! https://discord.gg/r4V2zpC

Object Caching Systems

Many people have heard the names "redis" or "memcached" but fewer people know what these tools are good for or why we need them so badly. In this show, Patrick and I explain why caching is so important and how these systems work under the hood.

Intro topic:
Public database & cache services (Planetscale & Upstash)

News/Links:

  • Log4J Vulnerability
    • https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/
    • https://www.microsoft.com/security/blog/2021/12/11/guidance-for-preventing-detecting-and-hunting-for-cve-2021-44228-log4j-2-exploitation/
  • Scan of the Month: Gameboys
    • https://scanofthemonth.com/game-boy-original/
  • Hyrum’s Law
    • https://www.hyrumslaw.com/
  • Make the Internet Yours Again With an Instant Mesh Network
    • https://changelog.complete.org/archives/10319-make-the-internet-yours-again-with-an-instant-mesh-network

Book of the Show

  • Jason: AI 2041
    • https://amzn.to/3fOqnWQ
  • Patrick: Dawnshard - Brandon Sanderson
    • https://amzn.to/3tFmuMi

Audible Plug http://www.audibletrial.com/programmingthrowdown

Patreon Plug https://www.patreon.com/programmingthrowdown?ty=h

Tool of the Show

  • Jason
    • Swagger: https://swagger.io/
  • Patrick
    • ripgrep https://github.com/BurntSushi/ripgrep

Topic: Object Caching Systems

  • The need
    • Latency
    • In memory
    • Caching
  • Disadvantages compared to DB
    • Size limits (memory)
    • Limited query support
    • Limited persistence options
    • Stale caches
  • How it works
    • Key-value stores
    • Special operations for multi-get /multi-step
    • Expiry timers on each key
    • Hashing
  • Examples
    • Redis
    • Memcached
    • DynamoDB
    • Google datastore
    • Firebase database

00:00:15 Introduction

00:00:54 New Year’s Resolutions

00:03:59 Saving money on cloud servers

00:17:20 Scan of the Month

00:20:14 Hyrum’s Law

00:25:30 Make the Internet Yours Again with an Instant Mesh Network

00:31:45 Book of the Show

00:31:56 AI 2041

00:35:25 Don Shard

00:37:35 Tool of the Show

00:38:17 Swagger

00:59:10 ripgrep

0:45:31 Object Caching Systems

01:10:22 High Frequency Trading

01:14:07 Farewells

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com
You can also follow Programming Throwdown on
Facebook | Apple Podcasts | Spotify | Player.FM
Join the discussion on our DiscordYou can also help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

In this holiday episode, Jason and Patrick answer questions from listeners. They also look back at the past year’s challenges and victories.

00:15:35 (Kevin)

What's been the biggest thing that pushed you to learn more during your career?
Was it taking a new job and moving somewhere, doing stuff in your spare time or something like a new hobby or anything else?

00:29:38 (Kevin)

Favorite city to live in or visit?

00:31:29 First Winner (James B.)

00:32:21 (Clever Clover/James)

Next biggest tech prediction.

00:36:28 (Paul)

If we could standardize all the code there is out there to one particular language, which language would it be and why would it be Python?

00:40:40 Second Winner (Collin G.)

00:41:21 (Necrous)

If you could redo your career and education path, what would you change?

00:47:12 Third Winner (Matt I.)

00:47:48 (MQNC)

What is the dirtiest hackiest anti-pattern piece of code you ever wrote in full consciousness and even maybe enjoying the thrill and why was it the way to go?

00:54:36 (Leedle)

Thoughts on server side rendering React and NextJS?

00:57:00 Fourth Winner (Glenn S.)

00:57:25 (NC Plattipus)

The visual programming language, LabVIEW?

01:05:02 Fifth Winner (James F.)

01:05:53 (Gethan)

Future technology or big technologies, what about AR?

01:10:18 (Gethan)

On the topic of getting a master's degree or classes, do you see a benefit of getting certifications?

01:18:16 Sixth Winner (Don R.)

01:19:38

Predictions we made last 2020 and how they held up.

01:26:00

Farewells

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

How do you stay focused when working on large projects that span many months? In this duo episode, we talk about Project Planning techniques and trends! We also cover solving personal data storage problems and building CNC machines & printers.

00:00:15 Introduction

00:01:33 UML

00:05:22 Home NAS and other personal storage solutions

00:18:09 Homebrew CNC machine

00:29:37 Raft (Consensus Algorithm)

00:36:54 The Mathematics of 2048

00:45:44 Book of the Show

  • 00:45:57 Manager Tools
  • 00:49:10 Make Magazine

00:57:50 Tool of the Show

  • 00:57:51 Workflowy
  • 00:59:10 GitHub Desktop

01:01:00 Project Planning

01:22:11 Farewells

Resources mentioned in this episode:

Tools:

  • Workflowy: https://workflowy.com/b/
  • Github Desktop: https://desktop.github.com/

Companies:

  • Manager Tools: https://www.manager-tools.com/
  • Make Magazine: https://makezine.com/

Other references:

  • QT Designer: https://www.qt.io/
  • Shapeoko: https://carbide3d.com/shapeoko/
  • Curves and Surfaces by Bartosz Ciechanowski: https://ciechanow.ski/curves-and-surfaces/
  • Inkscape: https://inkscape.org/
  • Raft: https://raft.github.io/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

When you ask Alexa or Google a question and it responds, how does that actually work? Could we have more in-depth conversations and what would that look like? Today we dive into conversational AI with Joe Bradley and answer these questions and many more.

Thanks for supporting the show!

00:00:15 Introduction

00:01:24 Introducing Joe Bradley

00:04:44 How Joe got into Conversation AI

00:21:35 Zork and WordNet

00:27:48 Automatic Image Detection/Captioning

00:39:31 MuZero

00:45:27 Codex

00:50:15 GPT and businesses

00:55:16 Artificial General Intelligence

01:00:05 What is LivePerson

01:16:30 Working at LivePerson

01:21:18 Job opportunities in LivePerson

01:27:04 How to reach Joe

01:32:40 Farewells

Resources mentioned in this episode:

Companies:

  • LivePerson: liveperson.com
  • PyTorch: pytorch.org
  • TensorFlow: tensorflow.com

★ Support this podcast on Patreon ★

View Details

What is "The Edge"? The answer is that it means different things to different people, but it always involves lifting logic, data, and processing load off of your backend servers and onto other machines. Sometimes those machines are spread out over many small datacenters, or sometimes they are in the hands of your customers. In all cases, computing on the edge is a different paradigm that requires new ways of thinking about coding. We're super lucky to have Jaxon on the show to share his experiences with edge computing and dive into this topic!!

00:00:23 Introduction

00:01:15 Introducing Jaxon Repp

00:01:42 What is HarperDB?

00:08:10 Edge Computing

00:10:06 What is the “Edge”

00:14:58 Jaxon’s history with Edge Computing and HarperDB

00:22:35 Edge Computing in everyday life

00:26:12 Tesla AI and data

00:28:09 Edge Computing in the oil industry

00:35:23 Docker containers

00:42:33 Databases

00:48:29 Data Conflicts

00:55:43 HarperDB for personal use

01:00:00 MeteorJS

01:02:29 Netflix, as an example

01:06:19 The speed of edge computing

01:08:43 HarperDB’s work environment and who is Harper?

01:10:30 The Great Debate

01:12:17 Career opportunities in HarperDB

01:18:56 Quantum computing

01:21:22 Reach HarperDB

01:23:53 Raspberry Pi and HarperDB home applications

01:27:20 Farewells

Resources mentioned in this episode:

Companies

  • HarperDB https://harperdb.io/
  • MeteorJS https://www.meteor.com/

Tools

  • Raspberry Pi https://www.raspberrypi.org/
  • Docker https://www.docker.com/

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

00:00:24 Introduction
00:02:19 Edo's Background
00:08:20 What are Embeddings?
00:14:00 Self-Organizing Maps & how humans store data
00:22:27 The lifecycle of a machine learning system
00:34:40 The weirdness of high-dimensional spaces

00:42:20 How to manage a vector database

00:47:01 Pinecone the company

★ Support this podcast on Patreon ★

View Details

We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown

We are on Patreon! https://www.patreon.com/programmingthrowdown

T-Shirts! http://www.cafepress.com/programmingthrowdown/13590693

Join us on Discord! https://discord.gg/r4V2zpC

The Art of Vacations

Taking a good vacation is as important as getting a good night's sleep (very important). It may sound silly on its face, but planning a vacation and planning around your vacation is extremely important to ensure that you are in the right headspace the rest of the year. This is especially true in the COVID era where many of us are working from home. In this episode, we dive into why vacations are so important, how to plan a relaxing vacation, and how to make sure that your team is supported while you are out.

Intro topic:
Virgin Galactic and Virgin Orbit and Blue Origin

News/Links:

  • TextStyleBrush: Transfer of Text Aesthetics from a Single Example
    • https://deepai.org/publication/textstylebrush-transfer-of-text-aesthetics-from-a-single-example
  • Berkshire Hathaway Stock Price integer overflow
    • https://www.theregister.com/2021/05/07/bug_warren_buffett_rollover_nasdaq/
  • LineageOS
    • https://lineageos.org/
  • Crafting Interpreters is now an actual book
    • https://craftinginterpreters.com/

Book of the Show

  • Jason: How to lead in product management
    • https://amzn.to/2UcPzPK
  • Patrick: Holy Sister (Book of the Ancestor #3) by Mark Lawrence
    • https://amzn.to/3fVZscn

Audible Plug http://www.audibletrial.com/programmingthrowdown

Patreon Plug https://www.patreon.com/programmingthrowdown?ty=h

Tool of the Show

  • Jason: 7 Billion Humans
  • Patrick: Moss (Oculus VR, PC VR, PS VR)

Topic: Vacations

  • Why
    • 7 types of rest https://ideas.ted.com/the-7-types-of-rest-that-every-person-needs/
    • Gives you energy for the next crunch
    • Stepping back provides perspective
    • Preparing the team for unexpected absences
  • Why not
    • Can lose context
    • Missed opportunities
    • Slipped deadlines
  • How to set up the perfect vacation
    • Handing off responsibility
    • Documenting code
    • Decide how much to work on vacation
  • How to be on vacation
    • Pre-cation
    • Handling crises / unexpected events
    • Post-cation
  • How to come back from vacation
    • Create email filters / smart folders
    • Skim new pull requests / scrum documents
    • Review chat logs
  • Types of vacations
    • 1-3 days: delay results
    • 1-2 weeks: Deputize
    • 3+ weeks: Replace

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com
You can also follow Programming Throwdown on
Facebook | Apple Podcasts | Spotify | Player.FM
Join the discussion on our DiscordYou can also help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

You’ve seen the dancing Boston Dynamics dogs, Honda’s ASIMO greeting people at malls, and the half-court-shooting robot at the Olympics, among other awe-inspiring robot stories that nowadays are getting increasingly more common. But equally fascinating, especially for us programmers, is the amount of programming and structure needed to make sure these robots work as intended. In this episode, we talk with Abhay Venkatesh, Software Engineer at Anduril Industries, about Platforms for Robotics (PFRs), and the intricacies happening inside these mechanical wonders.

This episode touches on the following key topics and ideas:

00:00:24 Introduction

00:01:10 Introducing Abhay Venkatesh

00:03:00 What robotics is as a field or practice

00:07:18 Platform for Robotics (PFRs)

00:10:07 OODA loop

00:12:27 What makes up a Platform for Robotics?

00:14:17 Raspberry Pi

00:15:30 Nvidia Tegra

00:17:17 Edge computing

00:19:29 Telemetry

00:22:06 Ad: SignalWire, a next-gen video collaboration platform

00:23:30 Real-time constraints and safety challenges

00:28:31 Formal verification and defensive programming

00:32:28 Operating systems in robotics

00:34:27 Nix and reproducible hermetic builds

00:37:52 Key aspects in robotics software development

00:41:14 Deployment

00:46:24 Simulation

00:48:51 Google testing pyramid

00:52:01 Actuators

00:55:27 Future of PFRs

01:02:49 Farewells

Resources mentioned in this episode:

Companies

  • Anduril Industries https://www.anduril.com/
  • Nvidia https://www.nvidia.com/en-us/
  • Boston Dynamics https://www.bostondynamics.com/

Tools

  • Arduino https://www.arduino.cc/
  • Raspberry Pi https://www.raspberrypi.org/
  • Nvidia Tegra https://developer.nvidia.com/tegra-development
  • NixOS https://nixos.org/
  • Docker https://www.docker.com/
  • Bazel https://bazel.build/

Our sponsor for this episode is SignalWire

https://signalwire.com/

Use code THROWDOWN for $25 in developer credit

Abhay’s website: https://abhayvenkatesh.com/

Abhay on Twitter: https://twitter.com/AbhayVenkatesh1

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

Help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

Brief Summary:

Authentication has become a necessity in a digital world that’s ever-increasing in complexity. What can you do to arm yourself against the constant threat of data breaches and hacks? In this episode Jason sits down with Aviad Mizrachi, CTO and Co-Founder of Frontegg, to give us valuable insight into how Authentication works, and how these help you become more defensible against attacks.

This episode touches on the following key topics and ideas:

00:00:24 Introduction

00:01:10 Introducing Aviad Mizrachi

00:04:36 The login

00:06:32 The many intricacies of Authentication

00:10:25 How are passwords sent to servers?

00:11:26 Query param

00:16:59 Multi-factor authorization (MFA)

00:20:11 Time-based One-Time Password (TOTP)

00:28:05 Single Sign-on (SSO) Cross-site scripting

00:33:38 Ad: SignalWire, a next-gen video collaboration platform

00:35:03 Session tokens

00:36:36 Cross-site scripting (XSS)

00:39:24 JSON web tokens (JWTs)

00:41:24 Difference between session token and refresh token

00:49:33 More about Frontegg, Aviad’s company

00:54:14 SQL injection attack

00:56:11 Auditing and audit logs

00:59:42 Authentication in mobile apps

01:00:50 Frontegg hiring and intern opportunities

01:05:22 Frontegg product offerings

Resources mentioned in this episode:

Tools

  • Frontegg https://frontegg.com/
  • TypeScript https://www.typescriptlang.org/
  • Angular https://angular.io/guide/architecture
  • Microsoft Identity and Access Management https://www.microsoft.com/en-ww/security/business/identity-access-management
  • Google Identity https://developers.google.com/identity
  • Okta https://www.okta.com/

Articles:

  • How Twitter CEO Jack Dorsey's Account Was Hacked https://www.wired.com/story/jack-dorsey-twitter-hacked/

Our sponsor for this episode is SignalWire

https://signalwire.com/

You can reach Aviad on:

LinkedIn | GitHub

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

You can also help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

In this duo episode, Jason and Patrick introduce us to the world of hash maps, from buckets and hash functions, to differences between open and closed addressing, to minimal perfect hashes and locality sensitive hashing. A familiarity with hash maps is an oft-overlooked but highly sought-after skill, and it can be a valuable asset for those eyeing a career in programming.

Along with the main topic, Jason and Patrick also talk about some of their latest interests: books, gadgets, tools and games.

This episode touches on the following key topics and ideas:

00:01:27 Playing games with Oculus Quest: Acron, Racket: Nx, Gorn, Superhot

00:11:05 News: “I Made a Water Computer” by Steve Mould

00:14:56 colinfurze

00:15:52 News: Comprehensive guide to Attention Mechanisms

00:21:53 News: Starship SN15

00:25:18 News: MailSync now Open source (GPL)

00:28:34 Jason’s Book of the Show: Elon Musk

00:32:04 Patrick’s Book of the Show: Ready Player Two

00:33:40 Jason’s Tool of the Show: Datadog

00:38:44 Patrick’s Tool of the Show: I Expect You to Die

00:40:30 Escape rooms

00:45:39 Sudoku

00:48:35 Hash maps: the promise and idea

00:50:59 Hash Functions

00:52:34 Examples of hash functions: Cryptographically Secure and Non-Crypto

01:01:05 Load Factors

01:03:43 Open vs Closed Addressing

01:15:10 Minimal Perfect Hash

01:16:25 salts

01:19:00 Locality Sensitive Hashing

Resources mentioned in this episode:

Tools

  • Mailsync http://mailsync.sourceforge.net/
  • Mailspring https://getmailspring.com/
  • Datadog https://www.datadoghq.com/
  • SHA https://en.wikipedia.org/wiki/Secure_Hash_Algorithms
  • MD5 https://en.wikipedia.org/wiki/MD5
  • MurmurHash https://github.com/aappleby/smhashera
  • xxHash https://cyan4973.github.io/xxHash/
  • MapReduce https://www.ibm.com/analytics/hadoop/mapreduce

Books

  • Elon Musk: Tesla, SpaceX, and the Quest for a Fantastic Future by Ashlee Vance
  • Ready Player Two by Ernest Cline

Gadgets

  • Oculus Quest 2 https://www.oculus.com/quest-2/
  • Oculus Link https://www.oculus.com/accessories/oculus-link/

Games

  • Acron: Attack of the Squirrels! https://www.resolutiongames.com/acron
  • Racket: Nx https://www.oculus.com/experiences/quest/2255408847836468
  • Gorn https://www.oculus.com/experiences/quest/3349689215139117
  • Superhot https://www.oculus.com/experiences/quest/1921533091289407
  • I Expect You to Die https://www.oculus.com/experiences/quest/1987283631365460
  • The Legend of Zelda: Breath of the WIld https://www.zelda.com/breath-of-the-wild/

Videos:

  • I Made A Water Computer And It Actually Works https://www.youtube.com/watch?v=IxXaizglscw
  • colinfurze YouTube channel https://www.youtube.com/user/colinfurze

Articles:

  • Comprehensive guide to Attention Mechanisms https://www.analyticsvidhya.com/blog/2019/11/comprehensive-guide-attention-mechanism-deep-learning/
  • Starship SN15 https://www.space.com/spacex-starship-sn15-launch-landing-success
  • MailSync is now Open Source (GPL) https://community.getmailspring.com/t/a-free-open-source-future-for-mailspring/484

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

You can also help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

Ever wondered how route planning apps, well, plan routes? In this episode, we navigate through this fascinating topic, a field as data-driven and systemic as it is magical and compelling.

Joining us is Parker Woodward, Route Expert and Marketing Director for Route4Me. We discuss how route planning works, the intricacies behind it, and how services like Route4Me perform complex balancing acts between machine learning and user-generated feedback.

This episode touches on the following key topics and ideas:

00:00:23 Introducing Parker

00:01:54 Becoming a Route Expert

00:04:22 Getting started through smaller startups

00:12:41 Leveraging technology for the greater good

00:14:36 The magic of route planning

00:23:30 Homomorphism and satisfiability

00:31:18 Geocoding

00:33:06 User-generated feedback

00:37:08 Importance of statistics knowledge

00:39:34 The degree of automation in route planning

00:42:54 Inverse decision-making

00:48:47 Operations Research

00:53:42 Dwarf Fortress

00:56:40 US vs European routes

00:57:51 What Route4Me does

01:05:38 Working at Route4Me

01:10:26 Route4Me API

Resources mentioned in this episode:

Tools

  • Route4Me https://route4me.com
  • Route4Me API https://route4me.io
  • Waze https://www.waze.com
  • Google Maps https://www.google.com/maps
  • OpenStreetMap https://www.openstreetmap.org
  • MapQuest https://www.mapquest.com
  • DeepMind https://deepmind.com

Books

  • Sapiens by Yuval Noah Harari

Games

  • Dwarf Fortress http://www.bay12games.com/dwarves/

Links

  • Waymo https://waymo.com/
  • Upwork https://www.upwork.com/

Reach out to Parker via email: parker@routeforme.com

Catch Parker on LinkedIn

If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/

Reach out to us via email: programmingthrowdown@gmail.com

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

Join the discussion on our Discord

You can also help support Programming Throwdown through our Patreon

★ Support this podcast on Patreon ★

View Details

What makes for good documentation? In this episode, we dive into one of the most important yet overlooked facets of coding. With us are Omer Rosenbaum and Tim Post of Swimm.io. Swimm is an app that allows you to create docs coupled with your code, which are auto-synced and integrated into your workflow. It makes for much more efficient, elegant, and accessible documentation.

Omer is the CTO of Swimm, and Tim is Principal Development Relations and User Advocate. They are the experts who will guide us through good code documentation practices and tools, as well as share some fascinating real-life examples and stories.

This episode touches on the following key topics and ideas:

00:01:20 Introducing Omer and Tim

00:03:28 Omer: learning tech while in the military

00:06:36 Israel Tech Challenge

00:08:32 Impostor Syndrome

00:12:15 Tim: the consulting career route

00:18:15 Stack Overflow elected moderator

00:20:59 ZFS and Btrfs

00:22:49 What is good code documentation?

00:34:48 Documentation and remote work

00:36:99 Good practices

00:40:37 Code comments

00:45:20 How to write documentation

00:46:59 Signs of bad code documentation

00:48:05 Swimm overview

00:53:21 PyTorch documentation

00:54:45 PHP documentation

00:56:34 Swimm’s CLI tools

01:01:16 Code documentation horror stories

01:07:26 Swimm offers for open-source projects and enterprises

01:13:47 Working at Swimm

01:19:54 The value of remote work

Resources mentioned in this episode:

Tools

  • Swimm https://swimm.io/
  • ReiserFS https://en.wikipedia.org/wiki/ReiserFS
  • PyTorch https://pytorch.org/docs/stable/index.html
  • Electron https://www.electronjs.org/
  • Git https://git-scm.com/
  • Stack Overflow https://stackoverflow.com/

Catch Swimm on:

Twitter | Facebook | LinkedIn

If you’ve enjoyed this podcast, you can listen to more programming news and updates like this one on Programming Throwdown’s website: https://www.programmingthrowdown.com/, or send us an email at programmingthrowdown@gmail.com.

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

You can also help support Programming Throwdown through our Patreon.

★ Support this podcast on Patreon ★

View Details

In this episode, we’re excited to have Meredydd Luff, the founder of Anvil. Anvil is a powerful tool that allows you to build full stack web apps with just Python. Without the need to be fluent in Javascript or other languages, Anvil is easy enough for beginners, but robust enough for professional work. We talk to Meredydd about Anvil and its features, as well as delve into the importance of making programming more accessible to more people.

This episode touches on the following key topics and ideas:

00:00:17 Jason introduces Meredydd and Anvil
00:01:06 What is Anvil?
00:09:27 Web hydration
00:11:00 Jupyter Notebook
00:12:49 The Uplink
00:14:02 GraphQL
00:23:06 How Anvil works
00:24:19 Skulpt
00:28:09 Brython
00:29:04 Pyodide
00:32:46 Javascript daisy chaining
00:37:11 GRPC and protocol buffers
00:39:03 “Anvil is an abstraction.”
00:40:09 Escape hatches
00:43:10 Anvil and Webpack
00:44:35 “Learn Python and build a website.”
00:45:02 Accessibility
00:47:16 Meredydd’s personal background, and Anvil’s beginnings
00:52:56 Putting your work out there
00:56:01 Logging and capturing what people want
01:01:06 Ad: ConfigCat
01:03:04 Anvil’s parent company, The Tuesday Project Ltd.
01:05:22 Meredydd’s take on venture capitalism on developer tools
01:08:42 Working in Anvil
01:17:02 Contact details for Meredydd and Anvil

Resources mentioned in this episode:

Tools
Anvil https://anvil.works/
Python https://www.python.org/
Jupyter Notebook https://jupyter.org/
GraphQL https://graphql.org/
Skulpt https://skulpt.org/
Brython https://brython.info/
Transcrypt https://www.transcrypt.org/
Pyodide https://pyodide.org/en/stable/

Videos
Meredydd’s Lightning Talk in PyCon 2017 https://www.youtube.com/watch?v=IHUw3N15v38
Turning a Jupyter Notebook into a Web App with Anvil https://www.youtube.com/watch?v=yh0B4HjQxOU

Podcast
Stories from the Workshop, Anvil’s podcast https://anvil.works/podcast

Catch Meredydd on Twitter @meredydd

Anvil’s features are offered completely free for teachers and educators. Send Meredydd an inquiry through email at education@anvil.works.

Get ConfigCat: https://configcat.com/
Get Audible: http://www.audibletrial.com/programmingthrowdown

If you’ve enjoyed this podcast, you can listen to more programming news and updates like this one on Programming Throwdown’s website: https://www.programmingthrowdown.com/, or send us an email at programmingthrowdown@gmail.com.

You can also follow Programming Throwdown on
Facebook | Apple Podcasts | Spotify | Player.FM

You can also help support Programming Throwdown through our Patreon.

★ Support this podcast on Patreon ★

View Details

In another duo episode, Jason and Patrick give an in-depth introduction to trees, their many types, approaches and functions, and their importance in modern programming. Also, peppered throughout the episode are the games, books, tools, and ideas that have currently piqued their interest.

This episode touches on the following key topics and ideas:

00:00:17 Avoiding drama at work

00:07:10 News: C++20 (7:10)

00:09:37 News: Play Co-op Diablo II in the browser

00:12:58 Wreckfest

00:15:07 Kaboom

00:17:45 The future of remote work

00:24:46 Jason’s Book of the Show: Debt: The First 5000 Years

00:27:08 fractional-reserve banking

00:31:30 DeFi, distributed finance

00:33:08 Patrick’s Book of the Show: Harry Potter and the Sorcerer's Stone, the Illustrated Edition

00:35:49 (Ad) Audible

00:37:05 Jason’s Tool of the Show: Vagrant

00:41:04 Patrick’s Tool of the Show: Zach Gage Games

00:45:03 (Ad) ConfigCat

00:46:03 feature flags

00:47:03 Trees: why are they important?

00:49:43 The divide and conquer approach

00:51:34 The agglometric approach

00:55:57 Choosing the right tree and algorithm

00:57:56 Keeping trees balanced

01:01:10 binary trees

01:02:52 binary trees and machine learning

01:05:28 b-trees

01:10:04 spatial trees: the k-d tree

01:16:50 k-d trees and multidimension

01:18:42 quadtrees and octrees

01:21:44 r-trees

Resources mentioned in this episode:

Books

  • Debt: The First 5000 Years, by David Graeber https://amzn.to/3uKEoe9
  • Harry Potter and the Sorcerer's Stone, The Illustrated Edition, by JK Rowling https://amzn.to/2R6ILSs

Games

  • Diablo II browser game http://clouddiablo.com/
  • Wreckfest https://www.thqnordic.com/games/wreckfest
  • Zach Gage Games http://stfj.net/

Tools

  • Vagrant https://www.vagrantup.com/
  • Kaboom https://replit.com/kaboom

Articles

  • Article on C++20: https://oleksandrkvl.github.io/2021/04/02/cpp-20-overview.html
  • The debate over remote work: https://www.bbc.com/news/technology-56771539

Get ConfigCat: https://configcat.com/

Get Audible: http://www.audibletrial.com/programmingthrowdown

If you’ve enjoyed this podcast, you can listen to more programming news and updates like this one on Programming Throwdown’s website: https://www.programmingthrowdown.com/

You can also follow Programming Throwdown on

Facebook | Apple Podcasts | Spotify | Player.FM

You can also help support Programming Throwdown through our Patreon.

★ Support this podcast on Patreon ★

View Details

In this episode, we talk with Frank McSherry, Gödel Prize-winning data scientist, and Co-founder and Chief Scientist at Materialize, Inc. Frank shares expert viewpoints drawn from his years as an academic, as well as personal insights on helping run a company at the cutting edge of real-time data streaming.

Show Notes: https://www.programmingthrowdown.com/2021/05/episode-111-real-time-data-streaming.html

★ Support this podcast on Patreon ★

View Details

Programming Throwdown talks cybersecurity with Dotan Nahum, CEO and Co-founder of Spectral. Dotan provides us with a high-level overview of the role of cybersecurity, its definition, evolution, and current challenges. He also shares tips for small- and medium-sized ventures on how to develop best practices.

The episode touches on the following key topics and ideas:

00:01:12 Evolution of modern cybersecurity

00:06:06 When to integrate security in a design

00:11:54 Shadow IT

00:13:50 Hacker motives and motivations; SQL Injection explained

00:16:48 Firewalls and WAFs

00:20:29 Cybersecurity for small- and medium-sized companies

00:23:52 “The last mile of developers”

00:26:47 dotfiles

00:32:23 Simple tools and good practices

00:40:42 Attack vectors, attack factors

00:44:16 Ransomware and phishing

00:48:19 Unsafe languages

00:50:02 Fuzzing

00:54:11 Rust programming language

00:55:54 Example security scenario with IntelliJ

00:59:42 More about Spectral, Dotan’s company

01:03:40 Staying virtual using Discord

Transcript:
Episode 110 Computer Security with Dotan Nahum

Jason Gauci: Programming Throwdown Episode 110, Security with Dotan Nahum. Take away, Patrick.

[00:00:21] Patrick Wheeler: Hey everybody. We're here with a hundred and tenth episode, which is pretty exciting. And we have our guest to-- oh, yeah, go ahead. You want to...

[00:00:30] Jason Gauci: I'm just saying, yeah! (laugh)

[00:00:32] Patrick Wheeler: So we're here with our guest today, Dotan, and you are CEO of Spectral. Why don't you go ahead and introduce yourself briefly, and then we'll get started.

[00:00:42] Dotan Nahum: Yep. So hi, guys. So I am Dotan, and by the way, 110 is binary, right?

[00:00:48] Patrick Wheeler: Oh, there we go. That's right. (laugh)

[00:00:52] Dotan Nahum: So yeah, so I'm Dotan, CEO of Spectral. It's a cybersecurity company, geared towards developers. I mean, we like to say that we create tools for developers with security as a side effect. So yeah, so that's, that's, you know, that's what our focus is.

[00:01:12] Patrick Wheeler: Awesome. Well, I mean, I guess that's a lot to unpack, so I think everybody would agree, security is very important, but maybe everyone doesn't understand what security is. So we were talking about this a little when we were doing, doing warmups. So if we talk about security, does that mean that you are developing antivirus for computers, for developers, or does it mean something more?

[00:01:35] Dotan Nahum: Yeah, I mean, I mean, it's kind of all goes back to, I guess, evolution of our, I guess it is our domain, our, our world, which is kind of a high-tech or softer, softer world? Time really gets compact with all these revolutions. We have a, we have evolution revolution.

[00:01:57] So, I mean, if you go back to 2007, that was just before Facebook and just before iPhone, I guess. And if you go back to 2005, that that was before the rise of Microsoft, I guess the major rise of Microsoft as a .net shop, which really made, you know, made all the enterprise software come along and then kind of '98, 2000, the first bubble.

[00:02:27] So all these stages, they had, it's kind of a sprint to create technology. And, the focus is on creating technology that is supposed to give developers productivity, and supposed to make, you know, make companies very productive and create a very nice portfolio of products.

[00:02:48] And almost always, I mean, maybe not intentionally, but almost always the security side of things, was kind of left behind. You know, I'm sure no one intended for it to be, but, there's a lot of more velocity under creating a great product at the time. Every, each and every step of this, like in the first bubble, and then in 2005, and then into 2007 and so on, rather than, okay, so let's create the technology and the product, and let's also make it, you know, kind of, dependent on making great security, be there for us.

[00:03:35] So almost every time, security came after the revolution, after the evolution. So we had from, simple firewalls, to intrusion detection, which is, you know, the large kind of, systems that try, try their best to find anomalies in the, in the area of 2000, to the smarter firewalls. And even today, those like, this, mini kind of firewalls, of WAFs that you integrate as an SDK into your app. So yeah, so it's kind of come, it comes in waves, technology, and then, security comes in waves as well.

[00:04:17] And yeah. So the latest, the latest we're seeing right now in terms of the evolution of software is that yeah, we know that software eats the world, but we are kind of feeling that it already ate the world? So, you know, you can do so much today that you couldn't have done, I mean, as little as three or four years ago, actually. You know, it can take a Lambda and you can pick up a bunch of SAS services and you're done. I mean, you build a product that used to be maybe three, four, five years ago, you know, used to take much more energy to build.

[00:04:58] So in that sense, as a developer, you have so much more power and so many more paths to get to the same end goal that... I'm not sure, I mean, I feel it for myself. I'm not sure the security world can even begin to realize, because they need, I mean, if we, if we think about them as they, then they need to understand how to develop as well as developers in order to give, to create great solutions for that developer, that glue stuff together, and, you know, invent stuff from existing, existing parts.

[00:05:37] Jason Gauci: Yeah, that that makes a bunch of sense.

[00:05:39] Patrick Wheeler: I say, yeah, that covered, I mean, you, you went to the whole history of modern or last couple of decades of, computer software there, but I was going to say, so one of the interesting things I think before we get into the kind of specifics about, what needs to be secured, this, this kind of, thing you mentioned where people build a product first and then try to figure out security later.

[00:06:02] I guess that's an interesting balance where, if you're building something until it's built, maybe it doesn't really need security. Right? If this was a thought in my head, I don't need security. If people are going to start using it though, immediately, you need to start having some amounts of security. Do you have opinion on like, what is the balance there?

[00:06:19] So if you don't know yet what you're doing and what may be your risks, when is the right time to start considering security and what are some of the good, you know, first things to start considering?

[00:06:30] Dotan Nahum: Yeah, so that, that's a great, great question. I mean, I think the balance is shifting towards really taking the time, in development time, in design time, and think about security on the security model.

[00:06:46] So, you know, this was kind of theoretical, yeah, everyone should do threat modeling and everyone should do secure by design and so on. And, and frankly, you know, you'll, you'll find these people who are extremely into security that are actually doing these things. But the thing is, it wasn't being done properly or, you know, by everyone as kind of a development workflow. You know, when you come to develop a feature, then you have the design and you have maybe a POC and, and you're supposed to have this small, or maybe large threat modeling box, but, you know, no one actually does it, or, you know, most people kind of, focus on the other or other areas of developing a new feature.

[00:07:35] So it is that way because we're used to, taking a product and pushing it into, you know, your traditional server farm, or you're really a secure and isolated cloud operation, whatever. And you're, you're pretty sure that within this closed garden, even if you didn't do the proper, you know, threat modeling as a developer, then things will be okay.

[00:08:04] However, this kind of understanding is changing because it's no longer pushing to a server. Or to a kind of a closed garden environment. It's, you know, taking your function and placing it somewhere. And now someone can ask a question, which is, I don't know, I didn't have the answer. If I push a function to whatever, you know, I don't want to name any, any service, but, you know, it's kind of a, any of the new hip cool services out there that really, make you productive.

[00:08:40] If you push that function, did the other side do everything they need to do in terms of their traditional threat modeling to keep you safe? Are they're obligated to do it? Do they have, you know, let's say a WAF to identify SQL injections for you maybe, or maybe to, drop someone who's attacking your service, and so on?

[00:09:04] I'm not sure actually. So, so it kind of shifts the responsibility to the developer. Because you're building a function, you're dropping it on a whatever cloud provider and your function is now live, you know, it's up to you, right?

[00:09:22] Patrick Wheeler: Yeah. I guess you were talking about deploying these functions and applications to public-facing cloud, or do you think that the same applies to, internally deployed app, like an enterprise software that would just be used, sort of within your corporate firewall? I think you were sort of referring to this when you mentioned walled garden approaches. Right?

[00:09:45] Dotan Nahum: Right. So, so I, I believe like eventually the enterprises, the closed enterprises really adopt whatever's happening on the open, let's say end up on wild world. So, you know, maybe we need to give one realistic example.

[00:10:03] So let's say I'm working at kind of an Acme Corp, some kind of corporation, doesn't matter. And I'm a developer and basically I have, you know, the service, small service to build, and I decide to build it on, I don't know, Heroku or I don't know, Vercel. I do that, no one is stopping me. I, I can do it.

[00:10:27] And then I can plug it into my existing infrastructure inside the corporation. And I don't know if, if, you know, if that would be something that is, you know, okay. I mean, as a developer, I'm just, you know, shipping software, but here's something that, you know, an ability or a possibility that wasn't there.

[00:10:52] Five years ago, you know, Heroku was there, but the culture of shipping things fast and, and being able to take things to the, you know, to the extreme, end to end, wasn't there. So here's one, you know, one path that is now open, you know, and, and now people can actually wake up tomorrow and figure out, scan their code and look for external services to, you know, exist in the code base and try to figure out how many are there that they know of.

[00:11:25] And how many are they didn't, don't know of. And that's just, you know, SAS services. now we can take the same analogy and try to think about what kind of libraries do you use. And everyone remembers left-pad, right? When it was just suddenly pulled out of NPM, breaking half the internet. That's, that's kind of the new world that's happening, in the last few years that I'm not sure, ah, everyone are ready for.

[00:11:54] Patrick Wheeler: So what would be an example of, like you mentioned, you know, building a Heroku based, you know, application and deploying it and scanning for, what services that you may not have been, may not have realized. Do you have examples there of like, what would be something that you may not intend to have exposed that got exposed?

[00:12:11] Dotan Nahum: Well, yeah, I mean... Well first, there's this kind of a, the cyberworld calls it, Shadow IT, where people basically, what they want to do is be more productive inside the organization. So it's kind of two sides of the coin. One is, one is positive. One is negative. And the positive side is do you have a team that thinks it can move quickly and adopts, you know, unvetted software, so to speak, and then ships it to production.

[00:12:44] And that creates a bunch of, you know, IT assets, I dunno, services, SAS services, whatever you, you, whatever you can think of that actually, no one knows exists, in production.

[00:12:58] On the other side, if from a cyber perspective, that is an unauthorized use of software, which is kind of giving it a kind of a warfare kind of name, like a Shadow IT, like shadow ops.

[00:13:14] So, so this is, this example, you know, if you guys even, check your, your stuff, then maybe you can find many examples of that, but, you know, it's, it's kind of a productivity thing.

[00:13:27] Patrick Wheeler: Yeah, I think so. Maybe just, just stepping back a bit, like, like, it'd be really good to explain to folks like what, what are the different components of, of computer security, like what actually a firewall is and, and, and how to, protect and it's like, like, what is a SQL injection? You know, like what are the kinds of threats that you encounter, you know, and how do those things work?

[00:13:50] Dotan Nahum: Oh, yeah. So I think first of all, let's, let's try to get the motives out there. Right? So there's hackers and there's the good people and bad people, right? So to speak.

[00:14:01] So I guess developers build software and they're trying their best to actually add value. And the hacker is trying to, to, I dunno, remove value or try to, gain the system and gain some profit really quickly. So basically when I build, for example, when I build a function, I don't know, that takes, a parameter from a URL from a website.

[00:14:27] And, you know, maybe it's a page number, you know, traditional paging, feature. Then I, I, take this parameter and I, you know, inject it into an SQL query that I have on my backend. And my goal is, is to just give you page number two. So that's, you know, that's my perspective as a developer, I see nothing, you know, no harm done.

[00:14:52] I mean, I'm taking a value and dropping it in a inside the string, which contains an SQL query and I'm done, like I pushed this feature, I go home and that's it.

[00:15:02] But the other side of it is that, when a hacker look at, looks at it, then first of all, there's, "what is it for me"? Like what's there to gain, but first of all, the company needs to be really attractive in terms of, hacking anything.

[00:15:17] And there's has to be some kind of trophy on the other side. So if I'm looking at something, it's some company as a hacker, and I realized they might have sensitive data because they're, I don't know, healthcare, whatever. Then at least I have now the motive or incentive to actually, try to figure out where can I hack into.

[00:15:41] So looking at this naive, SQL thing that the developer just built. So I'm looking at the parameter and what I'm trying to do is take, instead of giving the parameter, what it expects, which is a number, I'll try as a hacker to, you know, try to inject some malicious SQL code. Maybe if I, if I'm in for doing some damage, maybe I'll try some drop tables instead of a number.

[00:16:08] If I have reason to believe that the backend will actually give me the results, as I wanted, then I, I'll try to inject an actual query into the number instead of a number. And what I'll hope for is for the developer not to actually be defensive, which means the developer forgot or didn't bother to actually sanitize the parameters and make sure that if the developer expects a number, there only should be a number there.

[00:16:38] So that, that is kind of the gist of. SQL injection. So this is, you know, one, one kind of attack.

[00:16:47] So just a little bit about firewalls. So basically a firewall is something that sits between a machine and the outside internet, or maybe internally, it doesn't matter, the outside world. And what it tries to do is to monitor traffic and figure out which traffic is strange, and which traffic is normal.

[00:17:10] So it used to be, you know, it used to be very simple. It used to be basically looking at open ports and trying to block irregular ports on machines. That is like 20 years ago, and today it's a lot smarter. So today a firewall is maybe not the, you know, the correct name anymore, but it's, it's a system that looks at anomalies in your traffic.

[00:17:39] And that is, the acronym is WAF, which is web application firewall. So many cloud providers have that and you can actually flip a switch and have the, have it as a feature. And basically it looks at your traffic and it can recognize what is normal and what is not normal. And usually that is backed by some kind of machine learning.

[00:18:00] So, yeah, so these are two categories, I guess, of, of attacks. And basically the, the reality is that the amount of attacks always, you know, always grows. There are always new attacks because there's always new code and there's always new features and new products being launched. That makes sense?

[00:18:21] Patrick Wheeler: Yeah. So you mentioned this, the WAF is web application framework and trying to understand, like, what is questionable traffic.

[00:18:28] So if you're deploying, you know, some new new website and some new API, and it doesn't kind of know what to expect, how does it understand what is questionable and what is considered pretty normal traffic?

[00:18:42] Dotan Nahum: Right. So, so there's that, I guess, like in every machine learning operation, there's the cold boot problem. So if you have something new, then obviously it hasn't yet learned enough traffic to tell you what's normal and what's not. But, luckily, you know, I guess if someone would look at most of the internet traffic, they realize there's like clusters of normal traffic and there's clusters of irregular traffic.

[00:19:11] So, and again, probably this is a, you know, the secret recipe of every different, vendor of, of such firewalls.

[00:19:19] Patrick Wheeler: Fair enough.

[00:19:20] Dotan Nahum: But yeah, but, but you know, the generic cases, that there's, you know, there's normal behavior and you have so much traffic these days, public traffic, and so on that you can analyze and build on.

[00:19:32] And there's like, you know, irregular traffic that is very specific to a certain service. And I can tell you from experience that yeah, definitely. It takes time for this, for these technologies to actually learn what is normal. Then you get a small amount of false positives at the, at the beginning. But the good news is that if you have traffic, then it learns, and if you don't have traffic, then maybe this service is not that, you know, popular or risky because you don't have traffic.

[00:20:00] So yeah, so in this specific case, it's kind of, it kind of creates a nice, a nice closure on it. So there's no gaps.

[00:20:09] Patrick Wheeler: So I'm going to take a step back and come back to this in a second and, and correct me if my, I could be completely wrong here. So, if I'm thinking from the shoes of an individual developer, like myself or Jason or anybody, who's just, you know, developing software and I'm going to assume which you might have to help correct me.

[00:20:30] So if you're at a really big company, chances are, you're not able to deploy straight to the cloud, or at least that's been my experience, as they typically have it pretty locked down. There's like procedures and reviews to go through. And there's a whole organization kind of devoting to that. So if I flip to the other side, if you're a super, super small, like only a single developer or a couple of developers, then you probably are the whole entire stack.

[00:20:55] And then my guess is there's a, a sort of gradient in the middle where like, you kind of mentioned before this, you know, Shadow IT, where maybe there's people who are trying to do IT or monitor it, but they're not everywhere, you could get around them. And it's not that you intentionally or unintentionally meant to, it just sort of, kind of happens.

[00:21:12] Where along the spectrum, do you find that many of the developers kind of live in, like, I, I, I'm not clear from my side, like I've spent most of my life working at relatively large companies where these kinds of things you're talking about have always been of interest. They've always kind of been handled by someone else or handled by the platform.

[00:21:32] So if you're building something yourself or in a company that's, let's say sort of medium or small sized, how do you sort of figure out like who the right people to contact are? How do you kind of figure out for yourself, what is the best development approaches to make sure that you aren't accidentally going to, you know, expose all your data to the world.

[00:21:50] Dotan Nahum: Right. Right. So, so the thing is, is that, and that's why I kind of connect it to a kind of an evolution. So there used to be good news for this, you know, there used to be a good, a good answer for your question. And the good answer would be, Oh yeah. Once you have a few controls in your organization, basically 90% of the problem, of the risk, is gone, but that's no longer the answer, you know, for the big, big corporations, you know, that, I don't know, the Apples, Facebooks, Amazons, I believe it's so, it's so, you know, insanely sophisticated there that there's very little chances of, of a developer, adding risk in terms of, security, because the investment is probably huge.

[00:22:39] But for the medium-sized and the emerging companies that have to deliver and ship fast, which is probably the majority of the companies these days, there, isn't this kind of resources. So, and, and also the times of one solution to rule them all, this is gone. So you can't really buy, a system, put it in, in your network and now all of your security issues are gone, because ways to, ways to do things are just growing.

[00:23:13] So, so just for example, if you look at your machine right now, I mean, ignoring where you currently work at, if you look at your machine and, you know, have a, have a small thought: what's in your bash history, assuming you use the, you know, your terminal? What's... do you have a dotfiles? What's in your, if you use VIM what's in your VIM VMRC? Do you have any secrets there, any tokens, anything that is maybe issued by a company, organization, but you have it right there, and guess what's the first thing hackers want to steal, right?

[00:23:50] Patrick Wheeler: It has logins and passwords.

[00:23:52] Dotan Nahum: Exactly. So, and you know, don't tell me, but, by all means, have a look after, after this, just, you know, you know, do a less on your, seashell history, and figure out what's in there. What's the material? How many times do you export a token? Maybe, even if a mirror token, something temporary, but still it gives clues. It gives clues to how systems work and, you know, how many of the tokens are temporary and how many of them are permanent and how does one look like, and then so on and so forth.

[00:24:31] So all these things are kind of happening on the last mile, which is us, the developers. So, you can look at an organization and say, wow, that's, that's a fully secure organization, but, the last mile is probably us.

[00:24:46] We use all the, you know, in terms of R&D ,we use the assets, we connect them. We take on the risk of, yeah, I'm going to use this token and this password and this secret. And I'm going to connect this to this external service and to this external machine. And I'm going to store some stuff on my machines and all these things combined are just, you know, ways that I'm, I've adopted to be super productive.

[00:25:17] And as the world of software grows, the ways to be super productive also gets, get more sophisticated. And that creates an impossible, an impossible problem for one, you know, one cyber or security solution to solve. It, it's basically, you need to solve all of the habits of developers at once.

[00:25:44] Patrick Wheeler: Yeah, I guess I don't, I security is not my, not my background or my forte, but I always hear security and depth and layers of security. And, and I guess this is what you're sort of mentioning, like the last mile of developers. And, we were talking at, at my company a little bit about social engineering and just, my takeaway was basically like if someone targets to social engineer, you're kind of hosed, like, the amounts of sophistication in some of the attacks that have been uncovered.

[00:26:12] It's just insane, that, no matter what you do that, someone could probably figure out your username and password without you, kind of knowing that you've turned it over. And I guess as you're mentioning, if you store stuff on your computer and your dotfiles, or even just in your history, and they get access to your computer, they're going to learn a lot.

[00:26:32] And, I guess that makes sense. That kind of brings to light to me the why you have to have so many layers of security. It's not just the firewall, the outside or the intrusion detection on the inside, but also like, even on individual computers, like having people have good habits and stuff.

[00:26:47] Dotan Nahum: Right, right. And you can't not, not have your dotfiles. Right. Because first of all, dotfiles indicate, a kind of, progression, right? Because you're, you're using something that supports 12 Factor Apps and is considered as a best practice. Right?

[00:27:08] But, and there's like a huge warning here that I think we all miss, is that somewhere we should have a dotfile that is not meant to be in a repo, but it's laying on our, on our computers. And what's in these dotfiles, I don't know, but I'm quite sure that a hacker learning these best practices, they also want to learn how to abuse these best practices. So I would, I dunno, I would build a script that searches for dot and dot production.

[00:27:44] Jason Gauci: Yeah. I think--

[00:27:45] Dotan Nahum: And grabbing it from your computer, right?

[00:27:47] Jason Gauci: Oh yeah. Yeah. I think, I think I took, I also like Patrick don't have a strong background in cybersecurity, but I did take the, a, a course on it in university. And I remember at one point someone was, you know, the, the, the lecture was talking about, you know, the magnetic hard drives and how, when you just erase something, it's not actually gone.

[00:28:06] It's just, you know, some reference to the data's gone, you can still recover it. And someone started kind of challenging and saying, well, if I do all of these things in this course, then, you know, I'm totally untraceable. I'm totally secure. And the professor had a really insightful answer that always stuck with me.

[00:28:23] He said, You know, yes, he said, but if you're a criminal, and this was for like cyber forensics type stuff, if you're a criminal, you know, you have to, you know, make sure like in the world of atoms, you're totally, you know, untraceable and in the world of bits, you're untraceable and you didn't leave any footprints and you didn't, you know?

[00:28:41] And so when you, when you started accumulating all of this, it becomes harder and harder and harder to, to, to get away with something. And so, and so this is also true where there's so many different systems we work with, we, we, we use 10 different languages and we're, you know, having, we're on three different public clouds and there's four different machine type.

[00:29:00] When you start adding it all up, if you have a problem, even once, that could be enough to get access to everything else.

[00:29:08] Dotan Nahum: Right. And that, that is, I think this is completely what's, what's happening right now. And, you know, unfortunately a lot of it is happening, in our domain, like, in the developer space, because, because the general sense is that if we get more power and, you know, I can look at the, Docker, just as something that happened that gives us developers more power.

[00:29:36] Because now I can, you know, I know previously I could use VMs, but now I can, you know, kind of juggle machines and plug and play them and, you know, build so many things in a better way. So I have so much more power, using, using Docker and all these things kind of shift the power towards the developer and shift the responsibility also to the developer.

[00:30:02] And, and the big question is, did you, or did we know that these, that happen, that we have more responsibility now? Because as far as we care. you know, we have more, stuff to play with. I mean, it's, you know, I'm super productive and much more productive than 10 years ago. But did I know that I, I now have much more responsibilities in terms of security?

[00:30:29] So, so yeah, so I think that the answer for that is that, I'm seeing, we're seeing that not everyone realizes that, you know, with that extra, extra oomph that we got with all these technologies that we actually have now, we're taking more risk as developers. So that, that is, you know, that is the friction that, that we see.

[00:30:55] And the answer is to try to use the same, the same tools that we use to build features in products. And to figure out what do we, you know, what do we miss? so I just said, yeah, if I'm a hacker, let me just build a scanner that, you know, tries to find your dot and dot production. Right? So how about we use that and build a developer tool that actually can tell me that before the hacker knows it.

[00:31:28] So here's the goal. Here's an idea, build a tool that scans for all these kind of, of, of the, these files that you know, that you have in the back of your head, on your computer. And, and that is a tool that you build for yourself and put it in your own toolbox. And now you're, you feel much more secure and now you can work in a, in a safer, in a safer way.

[00:31:53] It's like, you know, it's like a carpenter working with a security goggles, right? So this is how you can actually build the tools for yourself. So that you can actually take on more responsibility. So, so that, that is, that was basically my thinking, I guess, throughout all of my career. So that every step you need to actually make your toolbox bigger so that you can actually take on more responsibility.

[00:32:23] Patrick Wheeler: Yeah. So when you talk about like, I guess your throughout your career, you're saying, you know, thinking about this, this toolbox, I guess it's probably bad, but I'll admit it. Like, I, I don't really spend much of my day thinking about what tools could I add to my toolbox to help make sure that I don't leak secrets.

[00:32:40] I'm a bad, bad engineer, I guess. But how does someone go from the mindset of like, my job is to sit here and as you were mentioning faster and faster to, to ship a product, to see what sticks, so what is the phrase to move fast and break things. Right. I didn't invent that.

[00:32:56] And like, how do you, go from that mindset to sort of culturing a sense of like, Hey, wait a second, I'm taking these risks. And they're really easy to not take these risks. You know, these are the common dotfiles that people would, would scan for.

[00:33:12] I mean, it makes sense when you told it to me, it seems obvious, but I won't admit that I probably ever thought about it before. How does someone go from my sitting here and just developing code to, I also need to have tools in my toolbox for not just developing my code, but for making sure my code is safe and secure.

[00:33:29] Dotan Nahum: Yeah. So, so actually it's, it's it can be very simple. I mean, to me it's, it's, it's very clear and I will try to give the same clarity in how I think about it. So I remember the day, when, we used to ship software and zero tests, that was around 2005-6, maybe. Yeah, no, no such thing as unit tests, no one even knew about that.

[00:34:02] And basically you would ship your software you've you wouldn't even test it, you know, properly and you'll figure out, yeah, we have a QA somewhere down the line, they'll do the work, tell me what's wrong. And I'll just, you know, wake up and fix this stuff they found.

[00:34:17] That, that was life. So, and that was not long ago in terms of, you know, in normal professions, like 15 years in, I dunno, in car making, that's nothing. Right?

[00:34:30] So that's, that's 15 years in software. So that, that was the reality. But since then, in terms of, quality and, QA, I mean, we almost obliterated that, that kind of workflow and we have unit tests, end to end tests, and so on and so forth, and everyone knows that you need to have coverage. So here's, that's one thing to think about.

[00:34:54] And another thing to think about is distributed systems, right? So there was a time where we built, you know, a server, you know, a server, a service doesn't matter, and we deployed it to one single server. And that again was at the same kind of, area of fears. and maybe we used views too. That was like amazing, you know, and the load balancer was kind of a hardware thing that you had to, you know, you had to put out from a box and install it somewhere.

[00:35:28] And, and, and, you know, we never thought about redundancy in that in the way that we do today. and today it's, it's insanely more involved and so much, you know, so much better. And, and again, today, what we do is we plan a service. And, I mean, almost before the first line of code, we think about how is it going to be deployed in how many instances and how would it fail and so on and so forth.

[00:35:58] And I think security will go through the same, same evolution. I mean, what changed? The only thing that changed is the responsibility. So on the QA story, there was a group of people who were responsible to test your code, but not you as a developer. And, on the, on the redundancy side, there was the group of people called it, not even ops, and they were supposed to make sure your service is always live, which is absurd these days, because how do, how would they even know back then?

[00:36:35] And I mean, today, you, I mean, you guys just said it, I mean, in, in some organizations, do you build your code in this. A bunch of people who are responsible to make sure you don't do a mistake or don't put the company in risk. So, I mean, just, you know, just, from a history point of view the story should repeat itself, right?

[00:36:59] Patrick Wheeler: Yeah. I mean, I think as you mentioned, like a single developer becoming more and more, I mean, in the beginning, there was only the developer and then there was the organization and then now we're going back to only the developer. So yeah, I would say it's a fair bet to say that it's going to go back to a combination of people and we'll see of it, I sometimes think that the, the roles can be embedded within the team.

[00:37:24] So, you know, we talk about like deploying on Docker or whatever. Like it's not that you have an ops team that is responsible for deploying everything, but maybe you have, you know, a person or a consultant on your team who helps you do it. And so the team's responsibility, but there's someone there to help it.

[00:37:40] So I guess if I hear what you're saying about security, you know, thinking, thinking similar to like having someone who isn't there to just, you know, send you emails when you've accidentally leaked your password. But actually, you know, help you guys develop good practices and sort of look over what you're doing and make good suggestions and is a shared goal with your team. Yeah. I think that can make a lot of sense.

[00:38:05] Dotan Nahum: Yeah. And I mean, and you ask how, like how can actually, teams can improve and, you know, and take more, more of that ownership over security. So that's the first, that's the first step, realization, you know, history repeats itself.

[00:38:22] And, I'm a huge fan of philosophy. And, what I see here is a pattern that repeats and I'm quite convinced it will repeat itself, because we are all people and humans and, we collaborate and work in fairly the same way. You know, what's the difference between quality and, and quality of service, which is actually kind of, you know, what distributed systems come to solve and then quality of your security.

[00:38:53] So it's all the same. so that's, that's one part. And the other part that I, I believe in personally is trying to instill the mentality of, you know, fresh perspectives and learning from mistakes. So if you have these kinds of processes in your, in your company, in your culture, then you can always use these processes to actually have, you know, plugin a space for, Hey, we're doing a pre-mortem or a post-mortem, let's talk about how security is a in this whole picture.

[00:39:29] So we talked about redundancy and deployment and, how's the, you know, capacity planning. how about we talk a little bit about, security, which means sometimes you can either simulate attacks. Sometimes you can either prove that, you know, prove that a certain service is secure, or sometimes you can just, you know, list what your, what your risks are. And that, that is a great conversation opener.

[00:39:57] So if you have a billing service, you know, then you can actually state your fears and you can just say in that same form, your fear is that someone can go in and, I don't know, steal what? Credit cards, transaction numbers and so on. So just by stating, what's valuable for you in that same forum of a pre-mortem retrospective, whatever. You know, you can actually start a great conversation, and you can discover that people didn't even realize that the service you're building is actually holding a lot of value for a potential attacker. And that is, you know, 50% of the job.

[00:40:42] Patrick Wheeler: Yeah. You're kind of describing now. We've kind of covered a lot of ground already, but you're describing now you were mentioning, sort of thinking about the attack vectors and what is, you know, where could people attack?

[00:40:54] What would they think about evaluate sort of thinking about coming from someone on the outside, not just, Hey, I'm playing with your service, but I'm looking at it. I'm analyzing what I could get from it. And then I'm deciding how much time to spend, whether it's just to crash your site or to, to drop your data.

[00:41:10] Or if there's something here I could extract. And I guess that even in itself is a useful way to think about it is I'm deploying the service, which is valuable to end users. But in some ways like the more personal data or credit card, whatever those things that might be most valuable to delivering really awesome experiences to end users would also be very juicy targets for attackers.

[00:41:35] And I guess the juicier the target, the more concerned you have to be with, making sure your stuff is very secure.

[00:41:42] Dotan Nahum: Right. And always, I try to keep it very, very simple. I mean, I mean, there's, you know, think about what you're doing in a day to day, you know, is your computer filled with, with sensitive material?

[00:41:56] Did you encrypt your drive? Because, you know, once, you know, at the times when we used to go to conferences, then I literally saw, I won't name the company, but it's a big cloud company, to, solution architects, just living their, laptop on, on the chair and going for the restroom. And I was kind of looking at two laptops with, obviously the company sticker on them, just telling me, steal me, right? I mean, so once that happens, if you didn't encrypt your hard drive, basically, it's just, you know, five minutes and I have all of your data. So these are the small, simple stuff that, that I like to think that these are the terms that I like to think in.

[00:42:45] So it's very, very simple. It's connect to the, you know, the stuff that you're doing on a day-to-day basis that you're feeling uncomfortable with and, try to figure out what that is. And on the other side is also, you know, in terms of organization and teams, it's also very, you know, very simple is connect to the things that you think you're fearing from, like your fears.

[00:43:13] So basically when you, when you're about to deploy a service, I'm sure as hell, like as a developer, your fear is that this service is going down, right. So you'll try to figure out how to keep it alive and, you know, avoid waking up at night because, you know, you, you didn't, I dunno, throttle something properly or you didn't think of an edge case.

[00:43:37] So, and so just add another layer of fear, which is, I think this service is storing sensitive data and I want to just state that. And that is just, you know, a simple way to start a conversation with other intelligent people and, you know, brainstorm and think what, what you can do.

[00:44:02] And obviously when you do that a few times, you probably get to a more advanced levels of thinking of attack factors and, you know, kind of instilling this culture and it will, it'll just happen from itself.

[00:44:16] Patrick Wheeler: Yeah, I, I think you're right. I think realizing it's an issue thinking about it, these things are, you know, important. I feel like it's a, yeah, like you said, from philosophy, you know, applies over and over again, not just that things repeat itself, but that kind of the path to learning about it is first realizing there is something to learn.

[00:44:35] And I think the topics we're discussing here are interesting approaches. So we've talked about on a developer computer that, you know, having something that scans for maybe secrets that you wouldn't want pushed out, or that you wouldn't want someone to get on your computer. We talked about application firewalls and traditional firewalls.

[00:44:58] We talked about a little about SQL injection. So we talked about a little bit like someone getting on your computer or stealing your computer hard drive. We talked a little bit about like the end deployed app. What are other areas? I mean, there's a whole pipeline there, I guess, of. You know, not just developing the code, but then pushing the code, serving the code, you know, like the distributed systems themselves, like what are other areas that are important to think about security?

[00:45:23] Dotan Nahum: Yeah. So, so, so there's two, niche areas, I would say. I would be careful with calling these niche. But there's a reason I didn't mention these, first. So one is, I believe maybe the scariest of all, which is, you know, getting an email, clicking on something and then bam, your computer is now locked with all the data and you need to pay someone millions of dollars.

[00:45:52] Right? So this is like the whole ransomware thing. And, and yeah, as you mentioned, the best way to combat this is to actually, you know, be aware, so have awareness training, and make sure, you know, what phishing is.

[00:46:07] And, you know, some, sometimes, email specifically, sometimes, in terms of emails, that there is some email providers that are very advanced, that can tell you, listen, this email came from outside of your organization. And, you know, I, I'm a fan of Gmail in that sense. you know, they can color the out of your context thing. I don't know if that exists in other clients. I hope it is.

[00:46:34] But this is a good part of awareness that I thought should be there. And it wasn't there for a long while. I mean, if you're an email client and you have any working in, you know, you're giving a service to an enterprise and, obviously you can identify who's in the organization, who's outside. And then just give me a color. Tell me, listen, someone from outside the organization is now sending you an email. That's a great, great thing to know.

[00:47:02] Patrick Wheeler: And flagging hyperlinks that don't match the URL they point to as another one that shocks me, that email clients don't do today.

[00:47:09] Dotan Nahum: Right, right, right. And obviously all the DNS typos, which is fun, you know, you have a company name and then someone changes a letter. Maybe it turns an "i" into a capital "I", which looks like an "L" and then you have something which looks familiar, but isn't, so that also, you know, that is also something.

[00:47:33] I don't know if to call it funny, but it's, it's when you, when you realize that you can do it, then you go and buy the domain for like four bucks. And then, then you have something in your hand that, you know, someone can use for, for attacking. So basically by the way, this is something I do in almost every company I joined, they look at the domain and then I go and buy all the similar looking domains and hand them over to the ops and IT people to just have these domains, you know, just by them. So no one else can buy them and it's very cheap. So I really encourage everyone to do that for their companies. So yeah, so this is one, one category, which I, I would call niche of, of kind of attacks, because they are very, specific.

[00:48:19] And the other one is, actually that would feel nice to people who works with embedded systems. Maybe more because in there, there is, there's a category of languages with are, which are considered unsafe, I guess that's, that's the category of languages that was kind of born these days.

[00:48:41] And the idea is that, I mean, To me, it's strange because, I remember programming in C and C++ like it was yesterday and also assembly, I'm from this generation.

[00:48:59] And these days, these languages are kind of portrayed as unsafe. And, you know, basically because they are not providing the right checks, for your, memory usage, out of the box by default. So this class of languages, you have a whole, I dunno, domain of proper usage so you could actually build secure software, but it is secure in the sense that when you, I don't know, when you put this software on a pacemaker, then no hacker can actually hack that I guess, or a spaceship or whatever.

[00:49:44] So yeah, so there's this whole domain of security geared towards making sure these, these things are, are as safe as possible. And just to look at this from a developer point of view, then, when you build this kind of software.

[00:50:02] So one of the most accessible tools to use is a fuzzer, which basically means it's a kind of a tool or a library that you can use. It's, I try to explain it in a simple term. If you have a function that is supposed to receive a string and an integer, for example, then this tool would look at this function, analyze it and try to inject kind of brute force all of the strings in the world, like strings, strings with binary characters in them, strings with Unicode characters in them, and we'll do it by brute forcing.

[00:50:41] It won't try to be smart about it. And if it's an integer, it, obviously it will try to overflow it, or give it some bad numbers. And basically it takes some time. And then it will come up with a combination which is bad for your, for your software. So basically you you'll be fuzzing this for weeks and weeks and weeks, and then you'll be able to see if there's any result.

[00:51:07] And this result would be gold for you because you just exchange time, with something which is very sensitive. If this, for example, if this was a spaceship, right? so that is a whole category of security and very geared towards the developer. And also, you know, in the realm of embedded or, or things that are, you know, in that sense are, can become very, very costly.

[00:51:33] Patrick Wheeler: Just to rip on that for a second, for people who may not realize. So if you run a fuzzer and your program crashes, there's a number of different reasons why it could be a problem. So the first reason is that obviously, like if you were running a spacecraft or a service, if it crashes it down and then you have, you know, an outage, right? And so someone could keep sending malformed data and crashing your system.

[00:51:59] And if they do that enough, then you have a sort of denial of service problem or, you know, even worse. And so in that way, you know, that's kind of like the first class of problems. The second class of problem though, is that sometimes it crashes because you are not checking the data properly, and the crash can actually lead to a buffer overflow that allows someone to exploit your code and then actually read contents of your computer or your memory, and actually, steal results, which is much worse than just, crashing it.

[00:52:30] And so running a fuzzer and finding those things is super useful, because in, many times it's an obvious, especially if you depend on, another library for doing something like json parsing or your, you know, any kind of data consumption, and someone can feed in there. And if there's a problem in that library, which you used, because you liked the fact that it had a lot of, convenient functions in it, you could be opening yourself to a whole host of problems that you didn't realize.

[00:52:57] Dotan Nahum: Right. You just said it much better than me, (laughs)

[00:53:01] But yeah, I, you know, you can, you can, you can claim, I dunno, maybe, you know, as you know, we have Space X and all these, maybe there's many more developers that are being called in shipping, shipping into a spacecraft these days, then, you know, there was when there was only NASA. So I don't know, maybe fuzzers will come into fashion.

[00:53:29] Patrick Wheeler: Yeah. So we talked about, okay. A couple other, other niche areas, and then one of the other things I know people kind of mentioned is, you see every so often is someone will publish a report where they scanned a GitHub and they found, you know, 10,392 places where someone had their database password stored.

[00:53:52] What are the, so obviously, like that's a huge problem. Like, is that something that you see people doing? Is pushing code itself up to repository where they put something in there? Unintentionally?

[00:54:02] Dotan Nahum: Yeah, yeah. I mean, first of all, a quick disclaimer, this is part of what we do at Spectral.

[00:54:08] Patrick Wheeler: Okay. Well, I guess I teed one up for you then. (laugh)

[00:54:11] Dotan Nahum: Yeah. And by the way, just to close a small circle, which, you know, it's, it's so much fun to recommend when I can recommend it. So I've been through, I don't know, since assembly, probably through almost every programming language. Including Haskell and Erlang and some wacky languages. And, at Spectral we use Rust, which on the, on the, on the, on the, fuzzing, unsafe languages, part of things, is, supposed to be safe.

[00:54:41] And, as far as I can tell it is. And, and there hasn't been a morning where I wake up and look at the code and say, this is an amazing program language that gives, you know, it gives me the Holy Grail.

[00:54:56] So just to encourage, encourage people to just try out Rust, it's an amazing, language that, is, you know, for me it's as performant as C++ and as expressive, with none of the disadvantages.

[00:55:12] It's amazing. And, and back to your question, so yeah, so people do, tend to do these mistakes. And I mean, it all, it's actually a reflection of, of the situation right now, which is there's so many tools. So many technologies, so much is being asked from a developer these days, that there's, you know, there's so much opportunity to make a mistake, and making a mistake is yeah, is, is, let me give you an example.

[00:55:47] Is using an IDE, that you think, you know, let's, let's use a concrete example. So, you have IntelliJ and IntelliJ likes to save some, some settings in a folder called .idea. And, as far as I can tell, and anyone else can tell, this folder is clean, it's safe.

[00:56:12] So if you like, you can actually push it to your GitHub repo, which is public and everything is great. because you get the guarantee that the common, the common sense thing to do from a intelligence point of view is, yeah, is make sure it's clean and, and let you publish your settings so that if someone else takes the project, then they will get a nicely configured environment for them in their own IntelliJ editor.

[00:56:40] So that's, that's the understanding that almost every developer has. But here's the twist, there's also plugins. And some developers would choose to install various plug-ins, unofficial ones. and I've seen in my own eyes, a plugin, that is actually doing something more than a search, like some hyper search something. And basically, I've seen a project where a developer pushed their own private settings. And in there they had this plugin installed. And what this plugin did is break the environment that I guess IntelliJ has that this folder has to be clean. So basically the plugins saved and cached the search terms of the developers inside this folder.

[00:57:35] Patrick Wheeler: Oh no.

[00:57:37] Dotan Nahum: And it's really funny because you could see how the developer cleaned up the project before publishing it. So you would see, the searches right there in a public repo. You would see, Amazon and then AWS and then Easy2, and then you'll see the actual Amazon key and secret. So basically what, what, what I've watched is the entire history of the developer, trying to clean up the project before publishing it and they search for the actual secrets, in order to remove them from the code, but the plugin re--

[00:58:16] Patrick Wheeler: Oh, they were trying--

[00:58:17] Dotan Nahum: Exactly. The plugin recorded everything and dropped it inside this .idea folder, which is supposed to be clean. That is that, you know, that is the understanding that every developer has a. So they pushed the project, published it.

[00:58:33] And basically, because it's a dotfile, I guess they all always, you know, they were all also on windows and by default on windows, you don't see hidden files or whatever. Yep. Completely didn't know about it. It was sitting there for at least six months until we reported it to the company that, that we saw this, exposing.

[00:58:56] And yeah, the story that we got after that was, basically, you know, they had minors and breaking into the cloud and whatever. So it was a mess for them.

[00:59:07] Patrick Wheeler: Oh, no.

[00:59:08] Dotan Nahum: So this is just one, one small example of, you know, so much, there's so much freedom, so much technology, so much to use and to experiment with.

[00:59:18] But you don't always get, you know, the best offering. Basically this one was down to adopting some plugin, which looks cool. but I guess the developer of the plugin didn't have security first, or didn't really understand, realize that, there's this kind of agreement that his folder needs to be clean. Yeah.

[00:59:42] Patrick Wheeler: I guess that serves as a, a pretty good transition as we, as we sort of wrap up here to, for you to talk a little bit about what Spectral is and sort of what it does.

[00:59:51] Dotan Nahum: Yeah. So Spectral is a, is a tool for developers. It's a security scanner. And it tries to do kind of things that we talk about today, which is, follow the habits of a developer and, be the best buddy and make sure that, you know, everyone can use it for themselves and make sure they scan the work and scan their computer and make sure that they don't do mistakes.

[01:00:16] And we say mistakes because that, that is what it is. It's, you know, you can say vulnerability, that's a different term, but, basically at Spectral, we'll, we're 50% coming from cyber and 50% pure engineers. So we like to keep this balance of productivity and security. So we just call it, you know, mistakes. I think that that is what it is.

[01:00:43] And a mistake is something that was made on a good intention. And, basically a whole class of mistakes is, you know, using and misplacing sensitive data, secrets, passwords, credentials, and so on, and, you know, placing different files somewhere you don't want them to be.

[01:01:04] And realizing we as a company are trying to realize the habits, and, and the workflows of a developer, and making sure there's always a great solution for that. So I think this week, or next week, we're going to release, an open source product. We're going to open source it. And what it does... so I want to, I don't want to jump the gun, but what it does is acknowledge that the whole, usage of vaults or dotfiles is not perfect.

[01:01:38] So it acknowledges it and gives you instead a nice tool, which is open source and you can build it and, you know, do whatever you want with it, which gives you a clean way to actually handle secrets, grab secrets from a vault or grab it from your disc, or from any other service and leave zero footprint on your hard drive.

[01:02:01] So basically everything is in memory. So this is something that we identify that, you know, developers are struggling with. So yeah, so this is just another example of something we, we do and we will launch next week.

[01:02:16] Patrick Wheeler: Oh, nice. I'll have to keep an eye out for that. And then what about Spectral as a company? So you said you were 50% sort of cyber 50% engineers. Are you guys looking for interns? Are you hiring? What is it like to work at Spectral?

[01:02:29] Dotan Nahum: Yeah, so, so first of all, we're hiring, basically we have kind of positions for, Rust engineers and go engineers and, no GS. And, I guess you could say we are always hiring.

[01:02:45] I mean, we're always, willing to meet great people. and in terms of the company, it's a, you know, the COVID thing, kind of caused us to be fully remote. But lucky enough, we're kind of, in terms of the experience in the company, then, some of us come from distributed companies by definition. So, we, we were able to create a really great infrastructure for being a nice, remote first or distributed company.

[01:03:17] And, and yeah, so we're being super productive, making sure we have all of the advantages of distributed and zero of the disadvantages. and yeah.

[01:03:30] Patrick Wheeler: Nice. Nice. So do you guys think you'll, I mean, you don't have the answer, but do you think you, will stay virtual, or are you guys, think you'll go back to a somewhat normal thing when this is all over?

[01:03:40] Dotan Nahum: Yeah, so, so, so we basically try to always think about the balance and think about the people first. so, you know, there's that, first of all, it's finding the right tools. So is Slack, the right tool is, email the right tools, right? So what we found is we use Discord, and, that was on a simple thesis, where if gamers are really lacking that platform, that coders properly would, and we found that it actually proved itself because when you share your screen and, and, share multiple screens and people can watch, you know, every everyone else's screens.

[01:04:20] And what I mean is editors, right, writing code, not games. (laugh) So you have zero latency and you have really great audio and everything just works. So you realize that this whole thing was optimized for sharing games and it's, it's more than enough for sharing code and doing, you know, pair programming, all these things.

[01:04:44] So, and you also have rooms, which are, we actually made a few rooms, just a few, not too many, just like in a real office. So we have, we have rooms that everyone wants, but are taken, right, the same, same frustrations. So basically our discord resembles a real office. You can just drop in a room, drop into a conversation, and it's, it's really, really fun.

[01:05:09] So that is one thing we realized and experiment with, experimented with, and really works well for us. But yeah, we're trying to create a balance and also, you know, when, when possible meet physically, but yeah, we're always thinking about this as a problem. How do we solve it? Kind of like an engineer's, like an engineering problem.

[01:05:28] Patrick Wheeler: Nice. This is a great heuristic that, if gamers like it, engineers might too. Yeah, I think that's a, that's a great takeaway.

[01:05:36] Dotan Nahum: Yeah, It's, it's great.

[01:05:38] Patrick Wheeler: And then what about you personally? You have a, are you on social media? Do you have any, I think you might be doing some other stuff. Anything you want to share with people?

[01:05:47] Dotan Nahum: Yeah. So I'm, I'm on a GitHub, Medium and Twitter. I'm Jondot, J O N D O T. And yeah, I kind of, I'm trying to be on everything at the same time. It doesn't work (laugh) so I'm dividing my energy. So you'll see me active, you know, periods of times on GitHub and periods of times on Twitter. So I, I just load balance. I can't do everything in parallel, so yeah.

[01:06:17] Patrick Wheeler: All right. Very cool. Well, thank you for your time, Dotan. We really appreciate it, that was really awesome. A high- level overview of security. I had a good time. Thank you for coming onto the show.

[01:06:26] Dotan Nahum: Perfect. Me too.

[01:06:36] VO: Music by Eric Barndollar.

[01:06:41] Jason Gauci: Programming Throwdown is distributed under Creative Commons, Attribution ShareAlike 2.0 license. You're free to share, copy, distribute, transmit the work, to remix, and adapt the work, but you must provide attribution to Patrick and I, and sharealike in kind.

★ Support this podcast on Patreon ★

View Details

We chat with Kevin Urrutia about why marketing is so important to any project, how digital marketing is different than traditional marketing, and what tools we can use to market our ideas. Thanks for listening!

Show notes: https://www.programmingthrowdown.com/2021/03/episode-109-digital-marketing-with.html

★ Support this podcast on Patreon ★

View Details

We’re having a duo episode for this month! Patrick and I discuss the relevance of Kotlin, a JVM language used for web backends and android development, and why you should look into it. Also we are testing out adding transcripts to the show notes. Let us know what you think! Show notes: https://www.programmingthrowdown.com/2021/03/episode-108-kotlin.html

★ Support this podcast on Patreon ★

View Details

Happy Holidays! In this show we make predictions about 2021 and take questions from YOU, our loyal fans! Show notes: https://www.programmingthrowdown.com/2021/01/episode-107-holiday-episode-2020.html

★ Support this podcast on Patreon ★

View Details

This month we are speaking with Connel Gauld from Zappar about Augmented Reality. Connel is an AR genius and blows our mind with details on how AR works under the hood and how it's easy for anyone to make AR apps and websites. AR is the next great platform, so it's good to get in early. Give it a listen and tell us what you built! Show notes: https://www.programmingthrowdown.com/2020/11/episode-106-augmented-reality-with.html Teamistry: https://link.chtbl.com/teamistry?sid=podcast.throwdown

★ Support this podcast on Patreon ★

View Details

The September episode did arrive.... somewhat delayed, but it's worth the wait!! We have NEW INTRO MUSIC by amazing recording artist Eric Barndollar. We have a NEW PODCAST DEPLOYMENT SCRIPT which means the podcast timestamp will be correct and people won't have to hunt for our latest episodes. Last but not least, we have an AMAZING EPISODE where we interview Peter Voss, founder and CEO of aigo.ai and inventor of the term "Artificial General Intelligence", to discuss chatbots and general AI. Geeking out about AI may be my favorite thing to do on Earth, so I can't put in words how incredibly excited I am to share this episode with everyone. Show notes: https://www.programmingthrowdown.com/2020/10/episode-105-chatbot-with-brain-with.html Teamistry: https://link.chtbl.com/teamistry?sid=podcast.throwdown

★ Support this podcast on Patreon ★

View Details

How do the most popular websites stay online? How do mobile app developers release new versions safely and monitor them? Today we have Matt Watson from Stackify on the show to talk about Developer Operations (DevOps) and site reliability. These two areas are critical for writing software that people depend on. DevOps is both a software exercise but also an exercise in process creation and process management. In this episode, we unpack these topics and do a deep dive to explain how to deploy software that other people can trust to remain online and secure. Do you have any questions about DevOps? Ask away in our #questions channel on Discord! https://discord.gg/r4V2zpC Show notes: https://www.programmingthrowdown.com/2020/08/episode-104-devops-and-site-reliability.html

★ Support this podcast on Patreon ★

View Details

Many of us have found ourselves working from home due to current events. In this show, we chat with Adam Bell who has been working from home for the past decade. We also do the show interactive on Twitch.tv and take your questions! Give it a listen for a ton of great advice on working from home and some pitfalls to avoid. Thanks again for your donations in these tough times. We really appreciate your support! Feel free to continue the discussion on Discord (link in the show notes)! Show notes: https://www.programmingthrowdown.com/2020/07/episode-103-working-from-home.html

★ Support this podcast on Patreon ★

View Details

Many people have asked us for more content on machine learning and artificial intelligence. This episode covers probability and Bayesian math. Understanding random numbers is key to so many different technologies and solutions. Max and I dive deep and try to give as many pointers as possible. Give it a listen and let us know what you think! Max also has an awesome podcast, The Local Maximum. Check out his show on any podcast app or using the link in the show notes! Show notes: https://www.programmingthrowdown.com/2020/06/episode-102-bayesian-thinking-with-max.html

★ Support this podcast on Patreon ★

View Details

Hey all! In this episode we chat with Guillermo Rauch, co-founder of Next.js, about ReactJS. ReactJS is an amazing framework for web development that I've been a huge fan of for years. We dive deep into how ReactJS works and why it can lead to clean, structured development. We Introduce Next.js, a ReactJS framework that supercharges web development at scale. I recently built a site using Next.js and loved the developer experience! Check out the show notes for links to learn more about Vercel and Next.js. Show notes: https://www.programmingthrowdown.com/2020/05/episode-101-reactjs-with-guillermo-rauch.html

★ Support this podcast on Patreon ★

View Details

I hope everyone out there is safe and healthy during these crazy times. The silver lining on all of this is that many of us have more time. Time is one of the greatest gifts that one can get. I hope you are able to spend more time with family and learning new skills. I'm looking forward to seeing all of the amazing innovations that people create when the world is back open for business. This is our 100th episode!!! In this milestone show, we reflect on our early episodes and how the field has changed over the years. Happy hacking! Show notes: https://www.programmingthrowdown.com/2020/04/episode-100-one-hundredth-episode.html

★ Support this podcast on Patreon ★

View Details

The best part of hosting Programming Throwdown is reading emails from people who listened to this show before they had any coding experience and went on to land jobs in tech. Thanks so much for inspiring us with your stories. My second favorite part of hosting the show is hearing about so many awesome programming tools and resources, often when they are just starting out. DeepCode is one of these amazing resources. DeepCode is a static analysis tool that looks at your code and, using AI trained on all code in github (!!!), finds common mistakes and offers suggestions on how to resolve. I am a heavy user of static analysis tools, and yet DeepCode was still able to find real issues in one of my python projects above and beyond pylint and mypy. Best of all, it's completely free to use for open source projects! Give it a shot and let us know what you think! Show notes: https://www.programmingthrowdown.com/2020/02/episode-99-squashing-bugs-using-ai-and.html

★ Support this podcast on Patreon ★

View Details

One of the most exciting but also overwhelming feelings in software engineering is starting a new project. Staring at an empty main.py file is intimidating for everyone. A great way to keep motivated and stay on course is to start by making a list of tasks. This is the first step to project management, and Agile is a set of methodologies for great project management. In this episode, we talk with Aaron Upright, cofounder of ZenHub, about Agile and project management. ZenHub is a quick and easy platform for Agile development that integrates seamlessly with GitHub. If this interview piques your interest and you are a GitHub user, grab a copy of ZenHub and check it out! In case you missed our last promotion with Educative, it's still possible to get 10% off if you sign up for one of their courses now! Try them out for free! educative.io/ProgrammingThrowdown Show notes: https://www.programmingthrowdown.com/2020/01/episode-98-agile-thinking-with-zenhub.html

★ Support this podcast on Patreon ★

View Details

Hey all! Patrick and I are so lucky to be spending another year with you all. In this episode, we answer a bunch of listener questions and give away some great prizes. Thanks to all of our listeners for helping us bring the power of programming to so many people. We have some super exciting content coming up in 2020, so stay tuned!

★ Support this podcast on Patreon ★

View Details

Most developers that I know use CircleCI every single day. It's both an honor and an amazing experience to learn about continuous integration and continuous deployment from Rob Zuber, CTO of CircleCI. We also cover a range of topics from staying motivated to working remotely. If you ever plan on writing software with a team of folks, you need to give this episode a listen! Also, I'm super excited to announce our partnership with Educative! Educative is an interactive way to learn how to code. Check out educative.io/ProgrammingThrowdown to get a 20% discount! Show notes: https://www.programmingthrowdown.com/2019/11/episode-96-continuous-integration-with.html

★ Support this podcast on Patreon ★

View Details

Everyone has used programs that talk to a server: Uber, podcast apps, etc.. Most people also know about peer-to-peer applications such as bittorrent, but did you know that video chat programs such as Skype and Google Hangouts are also peer-to-peer? You can even write your own peer-to-peer applications to communicate or share information without the need for a server to relay everything. In this episode, we sit down with Sean DuBois, creator of Pion, to talk about WebRTC: a specification and set of tools for peer-to-peer communication over the internet. We also discuss Pion, an implementation of WebRTC that you can embed in almost any program you write. Happy Hacking! Show notes: https://www.programmingthrowdown.com/2019/10/episode-95-webrtc-with-sean-dubois.html

★ Support this podcast on Patreon ★

View Details

What actually happens when you type something in the search bar at the top of etsy.com and hit enter? This awesome interview with Liangjie Hong, Director of Data Science and Machine Learning, answers that question all the way from the philosophical (what should we show first?) to the inner workings (what is a reverse index and how does it work?). We also dive into what it's like to intern at a tech company. Happy Hacking! Show Notes: https://www.programmingthrowdown.com/2019/10/episode-94-search-at-etsy.html

★ Support this podcast on Patreon ★

View Details

Every interview we do is such an exciting and unique experience. Patrick and I had great pleasure in hosting Andy and Dave, authors of "The Pragmatic Programmer". We pick their brains on a variety of topics including rapid prototyping, the 10x engineer, tech leadership, and how to get your first coding job. Their new book, "The Pragmatic Programmer: 20th Anniversary Edition" comes out today! I hope that this interview inspires you all to grab their new book; it will definitely be a book-of-the-show for me. Show notes: https://www.programmingthrowdown.com/2019/09/episode-93-journey-to-programming.html

★ Support this podcast on Patreon ★

View Details

Surprise! Weekend episode :-D Every piece of code you write is either going to be for computer-to-computer interaction, or for human-machine interaction. For the latter, how do you make your interface easy to understand and use? Erik Kennedy, independent UX/UI designer, dives into user interface (UI) design. We cover the best tools for making quick prototypes, common design mistakes, and his journey from software engineer to freelance designer. This episode is a great way to get excited about design and has plenty of resources for first-time designers. Check out the show notes for details! Show notes: https://www.programmingthrowdown.com/2019/07/episode-92-basics-of-ui-design-for.html

★ Support this podcast on Patreon ★

View Details

Hey all! Since episode 82, we received a ton of email asking for more info on functional programming (FP). To cover FP in great detail we are thrilled to chat with Adam Bell. Adam is the host of the Corecursive podcast and an engineer with many years of experience in FP. In this episode, we dive into what FP is all about, when it's useful, static/dynamic typing (our favorite topic), and other areas of FP. Thanks again for all of your emails and support. It is a treasure to hear your inspirational stories and we are so greatful to be creating content for over eight years. Happy hacking! Show notes: https://www.programmingthrowdown.com/2019/06/episode-91-functional-programming-with.html

★ Support this podcast on Patreon ★

View Details

Hey all!! Ask and ye shall receive! Someone in the Programming Throwdown discord suggested that we cover terminals and shells, so here we are! Despite sounding simple on the surface, there's decades of complexity around terminal emulators and system shells. Patrick and I unpack this and more in today's episode! Thanks so much for all of your emails and support on Patreon! It's your enthusiasm and financial support that enable us to teach so many people, and we are eternally grateful for your support! Show notes: https://www.programmingthrowdown.com/2019/05/episode-90-terminals-and-shells.html

★ Support this podcast on Patreon ★

View Details

Hey all!! Today we are sitting down with Jerome Hardaway. Jerome is an Air Force Veteran and the founder of Vets Who Code: a non-profit dedicated to training Veterans in web development and connecting Veterans to hiring managers around the World. Whether you have served in the military or not, this inspiring podcast gives us all a glimpse into the boots of someone who rotated into a career in software development after school, and is full of great advice for newcomers to the field. Learn more about Vets Who Code, including how to donate to the cause, in the show notes below! We have more interviews in the future, but the next two months will just be Patrick and I. Keep sending us emails with topics that you want us to cover! Show notes: https://www.programmingthrowdown.com/2019/04/episode-89-from-combat-to-code.html

★ Support this podcast on Patreon ★

View Details

If you use ASCII encoding, the entire Oxford dictionary is about 5 million bytes. A single 4K image contains 25 million bytes. If you watch a 4K video running at 60 frames-per-second, over 300 dictionaries worth of data are going through your tv every second. Let that sink in for a moment. One of the most magical areas of engineering is image processing. Everything from the way the images are stored to advanced AI techniques like face recognition have mind-boggling complexity. In this episode, we scratch the surface of image processing, but if an area from this show interested you and you would like to learn more, let us know! Show notes: https://www.programmingthrowdown.com/2019/04/episode-88-image-processing.html

★ Support this podcast on Patreon ★

View Details

While the web is one of the easiest platforms for deploying software, it can also be one of the trickiest to debug. People have many different browsers, and some have plugins or settings that restrict functionality. It may be extremely difficult to reproduce errors on your development machine. As a result, we want to discover as many errors as possible before we launch a new site. With node.js and people running javascript on the server, static checks become even more important. Enter typescript! Typescript is a language that transpiles to javascript, but along the way it adds type checking and advanced javascript features. After checking the types, typescript produces javascript that can run in almost any browser. Show notes: https://www.programmingthrowdown.com/2019/03/episode-87-typescript.html

★ Support this podcast on Patreon ★

View Details

Happy New Year! Today we are sitting down with Stephen Wolfram, inventor of Mathematica, Wolfram Alpha, and Wolfram Language! In this super interesting episode, Stephen talks us through his journey as a mathematician, software architect, and language inventor. It was truly an honor to talk to Stephen and hear about his decades of experience. Check this interview out and give us feedback! Show notes: https://www.programmingthrowdown.com/2019/01/episode-86-wolfram-language-and.html

★ Support this podcast on Patreon ★

View Details

Hey all! This is our annual holiday show! We give away prizes and talk about random news stories :-D. Thanks to everyone who chatted with us on Discord, and looking forward to a super exciting 2019! I'll be sending an email to all prize winners later today! Show notes: https://www.programmingthrowdown.com/2019/01/episode-85-holiday-party.html

★ Support this podcast on Patreon ★

View Details

Hey all! How do you find and triage bugs on other people's machines when they don't have the source code (or the knowledge to build it)? That's what we explain in today's episode! It's one of the topics that's rarely spoken about but extremely important to get right before shipping any software product. Happy hacking! This is the last episode before our Christmas special! If you are a patron, make sure Patreon has your up to date address so we can mail prizes! If you aren't on Patreon, sign up before our Christmas show to be entered in our raffle!! Show notes: https://www.programmingthrowdown.com/2018/12/episode-84-customer-bug-handling.html

★ Support this podcast on Patreon ★

View Details

Hey all! First of all, sorry for the delay in publishing Oct's episode. There are some pretty intense wildfires close to where we live, but it looks like things are getting under control. Huge thanks to all the firefighters! In this episode Patrick and I talk about teaching kids to code! We discuss how we learned to code and what are ways to build logic and reasoning skills in kids of all ages. Also we talk about ways to get kids excited about the fundamentals behind coding and solving problems. Check out the show notes here: https://www.programmingthrowdown.com/2018/11/episode-83-teaching-kids-to-code.html Do you have any good resources for teaching coding to kids? Let us know in the comments and we'll mention it in the next episode! Also this is the last chance to become a Patreon subscriber if you want to be entered in this year's annual give-a-away episode which will happen sometime in Dec! Last year we had a lot of trouble mailing the tokens to everyone, but our gears are turning around gift ideas for this year. Either way, a few lucky patrons will get free t-shirts! Become a patron here: https://www.patreon.com/programmingthrowdown Happy Hacking!

★ Support this podcast on Patreon ★

View Details

Hey everyone! This episode is an absolutely fascinating interview with Jonas Bonér, creator of Akka. We dive into reactive programming, the actor model, and the Akka toolkit. Jonas also describes his journey as a developer that led him to create Akka and found Lightbend with Martin Odersky, the creator of Scala. Jonas brings a ton of in-depth technical discussion, so buckle up! :-) Show Notes: https://www.programmingthrowdown.com/2018/09/episode-82-reactive-programming-and.html

★ Support this podcast on Patreon ★

View Details

Hey all! Since setting up the #questions channel in discord, a lot of you have written some phenominal and thought-provoking questions both there and via email, so this is a great time to go back through our favorites and answer them in a Mailbag episode! Thanks for your support by checking out our Books of the Show links and our audible and patreon links! I was able to send out all the domestic Christmas gifts (email me if you haven't gotten yours!) but we could not ship them Internationally. I'm still looking for a solution there, and will keep you posted! Show Notes: https://www.programmingthrowdown.com/2018/09/episode-81-2018-mailbag.html

★ Support this podcast on Patreon ★

View Details

What is a thread/process? How can you speed up a program that requires a lot of compute resources? How can you have a single machine serve web pages to 100s of people, some of whom have slow connections? Patrick and I answer these questions on today's show: Concurrency! We have also set up a discord channel! We will be posting news stories as we find them and also record the show live! Check out our channel here: https://discord.gg/r4V2zpC Show Notes: https://www.programmingthrowdown.com/2018/07/episode-80-concurrency.html

★ Support this podcast on Patreon ★

View Details

Sunday is a non-traditional day for a new episode and this is definitely a non-traditional episode! Today we are talking about Technical Arguments. We cover the most common arguments/debates you will have on the job as a software engineer and how to make the best arguments to reach the best decisions with the least amount of friction. Patrick and I tried not to inject our own opinions, but it's hard not to add our two cents (yes, spaces really are better). This episode is the first of a potential new genre of show, where we talk about non-technical facets of being a software engineer. Listen to this episode and report back on whether we should do more shows like this one! If you want us to stick to our existing formats (technical topic and interview) let us know that too! Show Notes: https://www.programmingthrowdown.com/2018/07/episode-79-technical-arguments.html

★ Support this podcast on Patreon ★

View Details

Web services are for much more than building websites: they are one of the most common techniques for passing information among programs. Creating a web API for your program is a great way to access it from a browser, another program, or a mobile app. Today we chat with Abhinav Asthana, CEO of Postman, about building, scaling, and testing web services! Show Notes: https://www.programmingthrowdown.com/2018/05/episode-78-building-and-testing-web.html

★ Support this podcast on Patreon ★

View Details

Julia may be the most requested language we have ever received on the show, so Patrick and I took some time of the past few weeks to get familiar with Julia and share our findings. Overall, it's a really slick language that has data and process parallelism built into the language, so it will run on many threads or even many machines without having to design a communication system by hand. Show Notes: https://www.programmingthrowdown.com/2018/05/episode-77-julia.html

★ Support this podcast on Patreon ★

View Details

Writing documentation is an art and there aren't many cut-and-dry rules that will guarantee the right documentation quality. In this episode Patrick and I chat about our lessons learned and also cover a bunch of ways to document and write self-documenting code. Show Notes: http://www.programmingthrowdown.com/2018/04/episode-76-code-documentation.html

★ Support this podcast on Patreon ★

View Details

Ever want to build your own robot? We explain how to do this using Arduino! Show notes: http://www.programmingthrowdown.com/2018/03/episode-75-arduino.html

★ Support this podcast on Patreon ★

View Details

Today we discuss Cryptocurrency and Smart Contracts with Amy Wan, CEO of Sagewise. Amy has a legal background and combines this with expertise in cryptocurrency, blockchain, ICOs, and smart contracts. Show Notes: http://www.programmingthrowdown.com/2018/01/episode-74-cryptocurrency-smart.html

★ Support this podcast on Patreon ★

View Details

How can you use all of the computers in your lab/office at the same time to speed up tasks? Today we talk with Dori Exterman, CTO of Incredibuild, about parallel computing and the awesome tool Incredibuild has created that can run any multi-process program on several machines. Show Notes: http://www.programmingthrowdown.com/2017/12/episode-73-parallel-computing-with.html

★ Support this podcast on Patreon ★

View Details

How can you maintain a separate version of your app/site in all langauges and locales? How do you handle right-to-left text, various currencies, and a bunch of languages with non-ascii characters? We explain all this and more in Internationalization! Show notes: http://www.programmingthrowdown.com/2017/11/episode-72-internationalization.html

★ Support this podcast on Patreon ★

View Details

Today, we are going to talk about... office space! Not the hilarious 1999 movie directed by Mike Judge, but modern office spaces for engineers and developers. We cover office setups, desk setups, amenities, and more! We won't cover IDEs (check out episode 55 for that) but we do cover how to code comfortably. Show Notes: http://www.programmingthrowdown.com/2017/10/episode-71-office-spaces.html

★ Support this podcast on Patreon ★

View Details

Did you know that there was a programming language co-invented by a consortium of government offices and top businesses (at the time)? Today we talk about that language: COBOL, and also discuss the mainframe computers of that era that ran COBOL. Show notes: http://www.programmingthrowdown.com/2017/09/episode-70-cobol-and-mainframes.html

★ Support this podcast on Patreon ★

View Details

Today we chat with Mark Engelberg about his background in software engineering and game design. Show notes: http://www.programmingthrowdown.com/2017/08/episode-69-puzzle-games-with-mark.html

★ Support this podcast on Patreon ★

View Details

Today we chat with John Sonmez about soft skills: communication, self-motivation, learning to learn, and negotiation, Show notes: http://www.programmingthrowdown.com/2017/07/episode-68-soft-skills-with.html

★ Support this podcast on Patreon ★

View Details

Today we explain how cryptocurrency works and why it is possible to buy and sell electonic currency. Show notes: http://www.programmingthrowdown.com/2017/06/episode-67-cryptocurrency.html

★ Support this podcast on Patreon ★

View Details

In this episode we explain how code reviews work and why they are so important. Show notes: http://www.programmingthrowdown.com/2017/05/episode-66.html

★ Support this podcast on Patreon ★

View Details

In this episode we interview Josh and Adam from Kobiton. They describe the challenges with releasing a mobile app for many platforms, and how Kobiton allows one to test their app on many devices in the cloud. Show notes: http://www.programmingthrowdown.com/2017/05/episode-65-testing-on-mobile-with.html

★ Support this podcast on Patreon ★

View Details

In this episode we explain how data is encrypted and decrypted, and how you can use encryption in the things you build. Show notes: http://www.programmingthrowdown.com/2017/03/episode-64-cryptography.html

★ Support this podcast on Patreon ★

View Details

In this episode we interview Spencer Gibb and Mark Heckler from Pivotal, the company behind Spring Framework: a set of powerful enterprise Java libraries and services. Show notes: http://www.programmingthrowdown.com/2017/02/episode-63-spring-framework.html

★ Support this podcast on Patreon ★

View Details

On this show we discuss PHP and Hack, an language that extends PHP. Show notes: http://www.programmingthrowdown.com/2017/01/episode-62-php-and-hack.html

★ Support this podcast on Patreon ★

View Details

On this show we discuss Clojure and ClojureScript, and all the amazing things you can build with them. Show notes: http://www.programmingthrowdown.com/2016/12/episode-61-clojure-with-eric-normand.html

★ Support this podcast on Patreon ★

View Details

How to build great mobile apps with Javascript. Show notes: http://www.programmingthrowdown.com/2016/11/episode-60-javascript-for-mobile.html

★ Support this podcast on Patreon ★

View Details

How to distribute software so it works on other people's computers. Show notes: http://www.programmingthrowdown.com/2016/10/episode-59-deploying-software.html

★ Support this podcast on Patreon ★

View Details

This show is an interview with Daniel Moore about scaling web sites. Show notes: http://www.programmingthrowdown.com/2016/09/episode-58-scaling-web-sites.html

★ Support this podcast on Patreon ★

View Details

This show covers software optimization (how to make software run faster). Show notes: http://www.programmingthrowdown.com/2016/08/episode-57-optimization.html

★ Support this podcast on Patreon ★

View Details

This show is an intro to robotics. Blog post: http://www.programmingthrowdown.com/2016/07/episode-56-robotics.html

★ Support this podcast on Patreon ★

View Details

This show covers many different editors. Blog post: http://www.programmingthrowdown.com/2016/06/episode-55-editor-wars.html

★ Support this podcast on Patreon ★

View Details

On this episode we invite Mark Harris, Chief Technologist at NVIDIA, to talk about programming for the GPU. Show notes: http://www.programmingthrowdown.com/2016/05/episode-54-programming-for-gpu.html

★ Support this podcast on Patreon ★

View Details

On this episode we invite Mikeal Rogers, Community Manager at the Node.JS Foundation, to talk about open source communities and organizing large open source projects.

★ Support this podcast on Patreon ★

View Details

This show covers Scientific Python: A platform for data analysis, visualization, and reporting built on top of python. Book of the Show Jason: Masterminds of Programming Patrick: Redshirts

★ Support this podcast on Patreon ★

View Details

This show covers Online/Continuing education. We ask the experts: How can more people get jobs in programming?

★ Support this podcast on Patreon ★

View Details

This show celebrates 50 episodes of Programming Throwdown! We answer questions from the audience live on livecoding.tv .

★ Support this podcast on Patreon ★

View Details

This show covers Tamper Protection: How hackers are able to tamper with compiled programs and the programs that prevent tampering.

★ Support this podcast on Patreon ★

View Details

This show covers Source Control: Various tools that keep history of your code and enable code collaboration. Book of the Show Jason: Kobolds Ate My Baby Patrick: Firefight

★ Support this podcast on Patreon ★

View Details

This show covers Ruby: a multipurpose interpreted language for rapid development. Book of the Show Jason: Paranoia RPG Player’s Handbook Patrick: Lock In

★ Support this podcast on Patreon ★

View Details

This show covers R: a language suitable for data mining and machine learning. Book of the Show Jason: The hard thing about hard things http://amzn.to/1UqMjDD Patrick: Steel World http://amzn.to/1JMcsa5

★ Support this podcast on Patreon ★

View Details

This show covers game development at a AAA company, featuring Dave Smith from Naughty Dog Inc. and Florent Devillechabrol from Ubisoft. Jason: The Mythical Man Month http://amzn.to/1DGOwbW ; Patrick: Armada http://amzn.to/1L4j2Pj

★ Support this podcast on Patreon ★

View Details

This show covers several programming languages we used as kids. Book of the Show Jason: Gödel, Escher, Bach: An Eternal Golden Braid http://amzn.to/1LWYOpJ ; Patrick: Leviathan Wakes http://amzn.to/1HjpfAo

★ Support this podcast on Patreon ★

View Details

This show covers Debugging: how to fix and maintain code across any language. Book of the Show Jason & Patrick: Mindhacking http://www.mindhacki.ng/

★ Support this podcast on Patreon ★

View Details

This show covers Fortran: An old (but still very useful!) imperative language for numerical calculations. Books of the Show Jason: A Theory of Fun in Game Design http://amzn.to/1FShtR6 Patrick: Monster Hunter International http://amzn.to/1EeqWO2

★ Support this podcast on Patreon ★

View Details

This show covers Node.js: A server-side platform for developing network applications. Books of the Show Jason: You Can Draw in 30 Days: The Fun, Easy Way to Learn to Draw in One Month or Less http://amzn.to/1CsrFsO Patrick: Abyss Beyond Dreams (Peter F. Hamilton) http://amzn.to/1NYmqJZ

★ Support this podcast on Patreon ★

View Details

This show covers Unity: A Toolchain and set of three scripting languages primarily for making games. Tools of the show: Jason: Meld http://meldmerge.org/ Patrick: Space Marshals http://www.pixelbite.se/pbsite3/?page_id=7675

★ Support this podcast on Patreon ★

View Details

This show covers Rust: A memory-safe systems programming language. Tools of the show: Jason: This War of Mine Patrick: Vainglory.

★ Support this podcast on Patreon ★

View Details

This show covers SIMD: A set of languages for fast array operations. Tools of the show: Jason: OpenEmu Patrick: Mint.com. Books of the show: Jason: Emacs Quick Reference Card: http://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf Patrick: The Mote in God’s Eye http://amzn.to/1AwlOaf

★ Support this podcast on Patreon ★

View Details

This show covers Funky Languages: esoteric languages that are created mostly for fun. Tools of the show: Jason: Open Broadcaster Software Patrick: Plex. Books of the show: Jason: Impro for Storytellers: http://amzn.to/1sMohKv Patrick: The Android’s Dream (John Scalzi): http://amzn.to/1wHkOL0

★ Support this podcast on Patreon ★

View Details

This show covers Swift, a language developed by Apple for iOS and OS/X. Tools of the show: Jason: Nextdoor Patrick: Waze. Books of the show: Jason: Denial: Why Business Leaders Fail... http://amzn.to/1rvKXbP Patrick: Red Seas Under Red Skies http://amzn.to/1oZplmS

★ Support this podcast on Patreon ★

View Details

This show covers Haskell, a statically-typed functional language. Tools of the show: Jason: Uber Patrick: Store Coupon Apps. Books of the show: Jason: Start With Why http://amzn.to/1uNg61I Patrick: Childhood's End http://amzn.to/1s8Fmv

★ Support this podcast on Patreon ★

View Details

This show covers Databases. Tools of the show: Jason: nvAlt / nvPy Patrick: Arduino. Books of the show: Jason: Negotiating For Dummies http://amzn.to/1jS9Yem Patrick: Steelheart http://amzn.to/1lsRxBv

★ Support this podcast on Patreon ★

View Details

This show covers Design Patterns. Tools of the show: Jason: VirtualBox Patrick: Bittorrent Sync. Books of the show: Jason: HTML5 Game Development Insights http://amzn.to/1g94JVS Patrick: The Martian http://amzn.to/1smEYc8

★ Support this podcast on Patreon ★

View Details

This show covers OpenSCAD and 3d modeling. Tools of the show: Jason: uSelect iDownload Patrick: Skulls of the Shogun. Books of the show: Jason: My Friend Dahmer http://amzn.to/1eOLNL8 Patrick: Make Magazine http://makezine.com/

★ Support this podcast on Patreon ★

View Details

This show covers Unix Commands and How to Ace an Interview. Tools of the show: Jason: Duolingo Patrick: 123D Design. Books of the show: Jason: Locke and Key http://amzn.to/L2LmEq Patrick: Lies of Locke Lamora http://amzn.to/1dIUJjy

★ Support this podcast on Patreon ★

View Details

This show covers Field Programmable Gate Array (FPGA) programming. Tools of the show: Jason: Kaggle http://www.kaggle.com/ Patrick: KiCad http://www.kicad-pcb.org/ . Books of the show: Jason: Mahout in Action http://amzn.to/1eizgRS Patrick: Bebop to the Boolean Boogie http://amzn.to/1cGRdaD

★ Support this podcast on Patreon ★

View Details

This show covers CUDA and OpenCL, languages targeting the Graphics Processing Unit (GPU). Tools of the show: NES/SNES Together https://play.google.com/store/apps/details?id=com.github.mistertea.android.emu.nes https://play.google.com/store/apps/details?id=com.github.mistertea.android.emu.snes, JODA-Time http://www.joda.org/joda-time/. Books of the show: Understanding Computational Bayesian Statistics http://amzn.to/1cGrjEX and Going Postal http://amzn.to/13egaIw

★ Support this podcast on Patreon ★

View Details

This show covers Applied Artificial Intelligence, techniques for applying AI to work or hobby projects. Tools of the show: WebM and FFMpeg. Books of the show: 2br02b http://www.gutenberg.org/ebooks/21279 and The Code Book (Kindle: http://amzn.to/14zADaL), (Paperback: http://amzn.to/11j2l7G)

★ Support this podcast on Patreon ★

View Details

This show covers Theoretical Artificial Intelligence, a deep dive into what AI is all about. Tools of the show: TypeScript and Ridiciulous Fishing. Books of the show: Dungeon (Paperback: http://amzn.to/11Iares) and Hitchhiker's Guide to the Galaxy (Kindle: http://amzn.to/117nNv3) (Hardcover: http://amzn.to/11IaEyj)

★ Support this podcast on Patreon ★

View Details

This show covers Image Processing, techniques for manipulating images and extracting other useful information from them. Tools of the show: Moon+ Reader Pro and Spaceteam. Books of the show: Do Androids Dream of Electric Sheep? (Kindle: http://amzn.to/14mk17G ), (Paperback: http://amzn.to/XamtLA) and Foundation (Kindle: http://amzn.to/XamMWD), (Paperback: http://amzn.to/WUb1Cg)

★ Support this podcast on Patreon ★

View Details

This show covers unit testing, a way to put your code through the ringer before you show it to your users. Tools of the show: JsFiddle and towel.blinkenlights.nl. Books of the show: The Lean Startup (Kindle: http://amzn.to/157xbEl ), (Hardcover: http://amzn.to/12HwaDp) and Ender’s Game (Kindle: http://amzn.to/VcfVtD), (Paperback: http://amzn.to/Wg32hx)

★ Support this podcast on Patreon ★

View Details

This show covers some JVM languages, languages that are built on top of Java. Tools of the show: Ripple Emulator and Battle of the Bulge. Books of the show: Reinforcement Learning: An Introduction http://amzn.to/X6DpwS and Ready Player One http://amzn.to/Yg3zzP

★ Support this podcast on Patreon ★

View Details

This show covers Hadoop, a set of several languages and libraries for working with big data. Tools of the show: Emacs and Chrome Browser Sync. Books of the show: Hadoop: The Definitive Guide http://tinyurl.com/cp3mw32 and Anathem http://tinyurl.com/cas8bux

★ Support this podcast on Patreon ★

View Details

This show covers LaTeX, a digital typesetting language. Tools of the show: Cocos2d-X and Snapseed. Books of the show: Algorithms in C++ http://tinyurl.com/agbc8t7 and Head First Design Patterns http://tinyurl.com/ayxb7q6

★ Support this podcast on Patreon ★

View Details

This show covers some of the top questions asked by the fans.

★ Support this podcast on Patreon ★

View Details

This show covers Query Languages, programming languages designed at accessing data from databases. Tools of the biweek: Pixen and Downcast

★ Support this podcast on Patreon ★

View Details

This show covers Beginner's All-purpose Symbolic Instruction Code (BASIC), a starter language for many programmers. Tools of the biweek: Dungeon Crawl Stone Soup and Wireshark

★ Support this podcast on Patreon ★

View Details

This show covers Go, an interpreted, low-level language that has native coroutine support. News:100000 DPI printer, Joyent Cloud ending lifetime support, Apple buys fingerprint company, Twitter caps 3rd party apps.

★ Support this podcast on Patreon ★

View Details

This show covers Java, a semi-compiled language used heavily in web and mobile development. News: Ouya android gaming console, Is C/C++ Worth It?, Engineered Jellyfish. Tools of the BiWeek: Cygwin, MinGW and Macports, uShare.

★ Support this podcast on Patreon ★

View Details

This show covers build automation, scripts to streamline the build process. News: New Top Level Domains, Anatomy of Freemium, LinkedIn Passwords Leaked, $100 Masters Degree. The tools of the biweek are Apache Cordova (Formerly PhoneGap), Xbox Media Center (XBMC).

★ Support this podcast on Patreon ★

View Details

This show covers Lua, an interpreted language designed to be embedded into larger applications. News: Facbeook IPO, Javascript Arduino programming, Brain Controlled Robots. The tools of the biweek are JDBM/BerkeleyDB and Audacity.

★ Support this podcast on Patreon ★

View Details

This show covers Interface Descrption Languages (IDLs), such as thrift and protocol buffers. News: Sony fighting with PSP hackers, Pebble smartphone watch, Pacman runs on 0x10C, UF Computer Science cuts. The tools of the biweek are Sublime Text Editor and Luminance HDR.

★ Support this podcast on Patreon ★

View Details

This show covers C++, a general-purpose programming language. News: Visualizing code to fail faster, the future of the used game market, Prince of Persia source code found. The tools of the biweek are sfxr and DC universe online.

★ Support this podcast on Patreon ★

View Details

This show covers Dart, a client-side browser alternative to javascript. Dart currently only runs in Chrome, but dart code can be compiled to javascript and then run in any browser. News: Raspberry Pi, California allows autonomous cars, Stanford online courses. The tools of the biweek are Disk Usage Programs (WinDirStat, Disk usage Analyzer, and Disk Inventory X), and Spelunky.

★ Support this podcast on Patreon ★

View Details

This show covers Lisp, one of the first functional langauge that is often used for academic purposes, but also has a place in industry. The episode talks about Cuda, how to write a Roguelike, becoming a good programming, and DOS games on Chrome. The tools of the biweek are Google Native Client (NaCl), a way to run native C/C++ code in a browser, and Handbrake, a way to make copies of your video DVDs.

★ Support this podcast on Patreon ★

View Details

This show covers Javascript, the only client-side scripting language built into most modern browsers. The episode talks about Patrick's move to Silicon Valley, Codecademy, The HP Touchpad Fire sale, and Minecraft's Notch challenging Bethesda to Quake 3. The tools of the biweek are Low-Level Virtual Machine (LLVM), an open source virtual machine and suite of compilers that compile and run code from many languages. and Hamachi, a free virtual private networking solution.

★ Support this podcast on Patreon ★

View Details

This show covers HyperText Markup Language (HTML) and Cascading Style Sheets (CSS), two of the three languages that make up most client-side Internet programming. The episode talks about the Humble Indie Bundle 3, Linux Kernel reaching 3.0, and the end of manned space flight program. The tools of the biweek are Freemind, an open source brainstorming assistant, and Picasa, a free photo editing and hosting service.

★ Support this podcast on Patreon ★

View Details

This show covers Prolog (Programmable Logic), a rule based language based on deductive inferencing. The episode talks about the Zynga IPO, Google+, and types of coders (Computer Scientist, Programmer, and Developer). The tools of the biweek are FreeNX, a remote desktop server and client, and Evernote, a note taking application that stores notes in the cloud.

★ Support this podcast on Patreon ★

View Details

This show covers Objective-C, the premier language for iphone, ipad, and os/x app development. The episode talks about the upcoming Wii U console and Duke Nukem Forever, (possibly) the most offensive game ever made. After the news, the show discusses why and how Patrick and Jason got into programming. The tools of the biweek are JavE, an ascii art drawing and conversion tool, and Ascii Flow Diagram, an ascii art flowchart creator.

★ Support this podcast on Patreon ★

View Details

This show covers Assembly, the lowest level language used to program a computer. This episode talks about the amount of traffic Netflix is generating, how many ebooks Amazon now sells, Apple not standing up for its developers, how young is too young for facebook, working on open source projects, and a new tool called Hype. The tools of the day are FileZilla, a cross platform ftp client, and PuTTY, a Windows SSH tool.

★ Support this podcast on Patreon ★

View Details

This show covers C# a CLI language designed by Microsoft. This episode talks about over the air updates, decompiling, and Ubuntu. The tools of the day are VLC, a cross-platform video player and PortableApps, a collection of applications able to run off a USB drive.

★ Support this podcast on Patreon ★

View Details

This show covers Matlab, a matrix-based interpreted multiprocessing function language. This episode talks about cloud computing, gaming, and then DIY hardware. The tools of the day are TI MSP430 Launchpad, a hobbyist single board computer (SBC) and Sketchup, a 3d prototyping software.

★ Support this podcast on Patreon ★

View Details

This show covers Erlang, a multiprocessing function language. The show talks about latest updates in C++ and java, then talks about open sourcing hardware. The tools of the day are MS Dependency Walker, a DLL resolver and Keepass, a password multiplexer.

★ Support this podcast on Patreon ★

View Details

This show covers Python, a popular interpreted language. The show begins with discussion on javascript and browser updates, then goes into the Goldman Sach's stolen code trial, eco-friendly programming, and the origins of Oregon Trail. The tools of the day are Fossil a distributed version control system and Unison, a two-way file synchronization utilities.

★ Support this podcast on Patreon ★

View Details

This show covers C, the foundation of all programming languages. We begin by introducing ourselves, then jump into talking about the PS3 hack and Nokia cell phone strategy. The tools of the day are Comix the comix book reader and Bitcoin, a virtual currency.

★ Support this podcast on Patreon ★