Regular Programming

Regular Programming

Conversations about programming. By Andreas Ekeroot and Lars Wikman, funded by Underjord.io.

About Ending Things

The End.LinksLADOKSanne Kalkman - companies should hire junior developersMünchenbryggerietThe art of gatheringDead dog partyNobody wants thisNeon genesis evangelionGhost in the shell: stand alone complexSerial experiments LainHackersBlack mirrorWilliam GibsonBurning chromeNeil StephensonThe Bridge trilogys-CRY-edFullmetal alchemistHellsingSamurai ChamplooBlack lagoon

01-20
40:47

About the Least Powerful Abstraction

Imagine Andreas going around making annoying electronic sounds all the time.Strike that. Andreas and Lars discuss using less power - less fancy abstractions - to make things easier to understand. Andreas likes to do a de-powering pass to code.Avoid making something which is more general than is useful.Lars goes into the lure of event sourcing - going for very high data resolution - it might come in handy! - at the cost of a lot of other things - how do we prevent duplicate user names?You've got to love a JSON blob.Finally, Lars derails Andreas' arrow of time and discussion of locking things down early when possible.LinksPower gloveGhost in the shell 2Stand alone complexUnlimited power!For-comprehensionsNerveshubRESTSquiggleThe lenses paper - Functional Programming with Bananas, Lenses, Envelopes and Barbed WireNot hot dogDomain-driven designEvent sourcingCQRSSaga - event sourcing patternData lakeData lakehouseEctoPenny Arcade - On discomfortPrince of Persia: The sands of time

12-23
42:19

About Licenses

How do people learn about licenses?If you entered into software in a certain way, it's easy to assume that everyone is a part-time license attorney. But how do other people pick up license knowledge? And what does one really need to know?Licenses underpin open source but seem kind of dull. But they are also a cool and special thing about the software industry.Lars provides his licenses 101 thoughts and looks forward to becoming open source grandpa.LinksGPLBSD licenseMIT licenseApache licenseLGPLAGPL - Affero licenseOSIOpen source licenses tried in courtSource-availableCockroachBSL - business source licenseFOSDEMOxide & friends on how they handle the CockroachDB thingForkingTerraformOpentofuElasticsearchOpensearchRedisValkeyThe Redis-Valkey-storyThe XZ backdoorAndres Freund - The Microsoftie who found the issueVisual studio codeVSCodiumGitpodcode-serverEmbrace, extend, extinguishDockerPodmanHashicorpSaltAnsibleTerraformStallmanCompisApple IIMySQLCLA - contributor license agreementKelsey HightowerVLCWinampSlackwareDebianCoding freedom - book by Gabriella Coleman (full PDF)FreeBSDIdeell föreningMoomin dadSnufkinPettsonJussi BjörlingGramophone player

11-25
45:23

About Learning New Languages

Everyone's favorite idempotent podcast returns to discuss learning new languages and concepts. Can mixing and matching new concepts and syntax help or hinder language adoption? A new concept but a familiar syntax might make a language easier for all the drifting Javascript developers to grab on to.Lars considers picking up a lisp at some point.It's harder to pick up new languages when you're mainly keen on building. Lars is very much in a building phase. He has problems, but they are his problems.Lars is currently learning - among other things - by working with other people, putting himself out there, and arranging a conference.LinksAlan PerlisA language that does not affect the way you're thinking is not worth knowingDomain-specific languagesRailsPhoenixElixirErlangPrologGleamElmThe CodeBEAM Gleam keynote by Hayleigh Thompson and Louis Pilfold is not out in video form yetAnt (the build system)BashXLST - Extensible Stylesheet Language TransformationsXquerySAX parserSweetXmlExercism course on GleamLustre web frameworkSprocket web framework - Gleam-style implementation of LiveviewOTPAtomVMCardputerREPL - read-eval-print loopNIFGHC - the Haskell compilerLuaDave Lucia and Robert Virding talking about Lua on the BEAM - also not out in video form yetThe Konami codeUiuaZFSEvan - creator of Elm - in Kodsnack 604SmalltalkPony

10-28
42:28

About C

Wherein the wonders of C are explored.But first, let Andreas tell you what's so great about Chalmers' approach to teaching computer engineering. Spoiler: starting with Haskell, close to math.The tooling around C: cultural mystery meat.Lars tries out a shocking plan for a productive framework for C!It's very cool to be able to just poke memory. Memory, arrays, structs, and strings are discussed. Strings are a bundle of fun. Arrays are desugared.Finally, a dive into the wonderful world of interoperability, both with and without C directly involved.LinksRustCD latchesGymnasiet - roughly upper secondary school or high schoolC++AutotoolsAutoconfLinux from scratchSlackwareDebianMakefilesBashGNU MakeBuildrootCmakeZigTOMLIsaac who does Zigler for ElixirPOSIXWin32 API:sLibuvSIMDB-treeRedisErlang NIFCocoa - the wild Elixir community member integrating stuffOpenCVPythonx - run Python from within ElixirLuaLuerlLFE - Lisp flavoured ErlangFennel - lispier LuaChicken Scheme

10-14
53:39

About Defining Functional Programming

What is functional programming?Andreas grabs his whiteboard and his Turing machine, and starts from laziness, while Lars thinks of immutability, functions, and data.Is syntax important for being functional or not?The functionalness of various languages are delved into, from Haskell to Rust via Python, Go, and Ruby. And, of course, the evil version of Elixir.A good pipeline can be really nice.Oh, and you shouldn't use witchcraft anymore.LinksFunctional programmingHaskellLazy evaluationLambda calculusTuring machinesAlonzo ChurchGödel - "A German guy" who formalized the definition general recursive functionsImmutabilityPure functionsWitchcraftContinuation passingPartial applicationCurryingThe ML language familyWhy the lucky stiffSam AaronSonic piRocClojureAST - abstract syntax treeUVThe UV company: AstralMemoizationSingleton

09-30
37:54

About Giving Talks

Lars wants a less demanding way to prepare for giving talks, but he doesn't have the time right now.Andreas knows a cheat code for public speaking. Lars uses slides like a blunt instrument.How should you wield your slides? How do you weigh information content against entertainment value? Should you try to reach precisely everyone with your talk? Many slides, or few? Lars has the questions, and some of the answers, at least for himself.Last but not least, Lars reveals his current way of preparing for talks. It ideally involves getting quite bored.LinksProof of Andreas speaking in publicSverokBeamer - write your slides in LaTeXLars' Gigcity Elixir talkJosé ValimChris McCordØredevLars' Øredev talkLars Lisbon talk - Lively LiveViewCode BEAM BerlinJon CarstensNull modemErlang clustersWireguardOpen source summitAnother brick in the wall

09-02
27:47

About Developer Experience

What are people talking about when they talk about developer experience? Pretty colors in the terminal?What is worth improving, what is not? Lars has thoughts about all of developer experience, not least the one of Nerves. How flaky do you accept, for how fast?Revealed: why all Andreas' Elm programs are one line long.Also: Why not attend the Øredev developer conference in Malmö this November? LinksDX - developer experienceElmLanguage serverElixir's brand new official language server team unifies the work of the previous separate teamsThe Elm language serverMix - Elixir build toolNervesNervesHubNerves CloudBuildrootVintage - network configuration and management for Nerves devicesREPL - Read-evaluate-print loopCcacheIEx - Elixir's interactive shellHyllieØredevYoctoSKFBredbandsbolagetNervesHubLinkOTPSmalltalkLisp machinesBeam RadioBryan HunterRebar3

08-19
34:48

About Endings and Beginnings

Andreas' place of work ceased to exist.It was mostly a relief.The main worry is about resting and recovering enough before whatever comes next begins. All the learnings about how not to do certain things live on.The right way of doing those things still remains to be learned.Lars is on the other end of the spectrum: beginning completely new things. Figuring out where exactly Delaware is, finding a Nerves-shaped Elixir hole, wading through Python scripts, and so much more.Also: Why not attend the Øredev developer conference in Malmö this November? LinksLönegaranti - wage guaranteeUppsägningstid - notice periodAriaHyllieØredevFrank Hunleth talking about NervesNervesRaspbianRaspberry pi 3Raspberry pi zeroAdafruitInky pHAT e-ink displayLars' ported Inky libraryBuildrootYoctoNervesHubJosh KalderimisTravis CINerves CloudMilwaukeeDelawareStripe AtlasHeartbleedShellshockStagefrightRow hammerCrowdStrikeFlickswitchSmartRent

08-05
28:31

About Non-CRUD

CRUD - a classic term among supposedly simple web apps. But, not always the right move? Not always all that mappable to the actual problem?Discussed: picking spicy architectures, non-CRUD data storage needs, slovely solutions, dirty refunds, and doing the OAuth dance.Hey, thing happened!Finally: a story where pubsub was reasonable, and some telemetry.LinksCRUD - Create, read, update, deleteDjangoRuby on railsPhoenixAshRethinkDBMnesiaPlausible analyticsTimescaleClickhouseNervesconfAlex McLainNervesCubDBRocksDBDynamoDBThe DynamoDB paperEctoOAuth

07-08
29:49

About Embedded

Embedded is a weird thing. Lars is all Nerves and tries to explain and report from a world where people know part numbers off the top of their heads. The physical device missing is rarely a thing that happens in web development.Embedded-style work can sneak into other areas as well. Without a root file system, everything is a lot more secure. Security is a deep topic in general, and WPA is not just for wifi.Andreas shares his view of what "embedded" means, plus the story of building a really bad audio cable.LinksRaspberry piNervesFrank HunlethThreadripperCoral TPUTensor processing unitsAI kit for Raspberry pi 5Lars' Nervesconf talk is not out yetTI AM625ZephyrReal-time operating systemHAL - hardware abstraction layerHAL 9000OxideArm TrustzoneBuildrootLinux from scratchAlpineWolfiVintagenetwpa_supplicantEduroam802.1xPAP MS-CHAPEAPEAP-TLSOrangepiGet secrets by shooting lasers at security chipsNonceHMAC

06-24
37:06

About Interviewing

Andreas is a man of many hobbies. Interviewing for example. But sometimes, you get strange questions from strange people, end up feeling scared, or start lying just a bit. Then, perhaps, you tell the story of a bug. Perhaps we shouldn't work during the winter?Lars doesn't have interviews. More like sales calls. H§e shares his experiences of how to recruitment, both as part of interviews and as a more straightforward recruiter.Finally: the secret to everything Lars does.LinksPercy NilegårdHiring Processes with Gergely Orosz - Oxide and Friends (podcast)The Indiana Jones switchGigcity ElixirLars' conference reportChattanoogaNervesAmazon AuroraRewriting the Technical Interview

05-27
31:10

About Ranting at Ecto

Stories about Ecto quickly redeeming itself, and of what it takes to introduce foreign keys.Some of us are super comfortable referencing the ID. Lars dislikes that Ecto needs to be more complicated because of SQL, but the abstractions do hold.Also: the biggest reason to ever use a ORM! It can be reallynice to come back to one after a tour of plain SQL-land.Some people have just been bitten so hard by cowboys.LinksEctoForeign keysRethinkDBReferential integrityAXALantmännenModelForm in DjangoCowboy and PlugDSLUpsertsFragmentsHaxl - DSL for creating queriesSQLAlchemyets

03-25
36:43

About Long-Lived Code

Fredrik wants to think about long-lived code. Lars is offended, Andreas only a little bit so.Are there other good software development practices out there? Other than the ones focusing on building something quickly? Practices for building software which lives on and is maintained for much longer than we seem to care to admit? Should we remove dependencies over time? The swamp of dependency management and vendoring is probed, gradually shifting into firmware, the horrors of floating point (proper excuses are made), small language models.Finally, of course, indecent cups of tea.LinksLagomReactFlux architectureReduxChangelog episode with Justin Searls about dependencies as liabilitiesKent Beck talking about managing risks in software developmentKent Beck drawing on a whiteboard and staring at the audienceMithril.jsInteract.jsVendoringWorking effectively with legacy code - the book about legacy systemsDelphi 5FlaskDynamic linkingSAMLPOSIXLibcGlibcMuslH.264MicrocodeOxide and friendsCoral TPU:sTensorflow lite286PentiumCUDAROCmQuantizationLLaMA

03-04
42:08

About Fat Tuesday Buns

The Saint Valentine's peak passed without issue. Andreas had time for semlor.Lars has opinions on semlor, and can imagine many possible improvements. Like having an apple. Or a pizza.Lars has had a nice influx of work, including hardware work using Nerves. Testing and very hackish hot code reloading are both included.Finally, some thoughts on Linux audio, and musings about the possibility of creating really nice audio tools for the platform.LinksSaint ValentineThe strangler fig patternThe strangler patternPhoenixCowboySemlaMudcakeThe Swedish chef making chocolate mooseFinnish fastlagsbulle with jamOne of Lars' blog posts about NervesFrank Hunleth - also hot code reloads the way Lars has doneLars' Stream deck library for ElixirStream deckElgato key lightPulseAudioPipeWireRogue amoeba's audio tools for MacJACKCustom APT repositoryQuotesThe Nordics go all awkward and weirdIn my heart, it was a catastrophyHad time for semlorAn unimpressive pastryIt's less messy to have an appleProfessional nervesBuilding with nervesA reasonable enough abstractionThe Rogue Amoeba for Linux

02-19
31:08

About things you built long ago that start doing weird things

Andreas tells the story of a old system which suddenly exhibited a new and frightening bug. Lars shares similar experiences of things going wrong in new and novel ways.When things do go wrong, it is so nice to have supervision trees or other things which allow you to hear about problems, not to mention recover from them.Also covered are some stories about TCP, networks, and timeouts. And a realization that testing the frameworks upon which you build could have saved some bacon, had it just been done a long time ago.LinksDjangoModel-view-controllerDrupalUnicode collationSupervision treesOxide and friends - episode 27TCP_NODELAYQUIC and HTTP/3UDPNyqvist-Shannon sampling theoremHexagonal designQuotesGaming convention management systemWhen I say view, I mean controllerView is a better wordIf I ignore it, it will go awayDestructive favouritesAlternative class hierarchiesFailed in new and novel waysBoth a mistake, and interestingAaah, circumflex!TCP the good parts

02-05
28:21

About Data Pipelines

Lars dove into data pipelines, and emerged bearing arrows and wishing for a lot fewer copies.What is there to think about regarding data pipelines, what is interesting about them?Which tools are out there, and why might you want to use them?Why all this talk about making fewer copies of data?What does Lars' current ideal pipeline look like, and where does Elixir fit in?LinksMatt TopolApache ArrowLarge language modelsVector searchBigQuerysedAWKjqReplacing Hadoop with bash - "Command-line Tools can be 235x Faster than your Hadoop Cluster"HadoopMapReduceUnix pipesDirected acyclic graphtee - to "materialize inbetween states"Apache BeamApache SparkApache FlinkApache PulsarAirbyte - shoves data between systems using connectorsCronjobFivetran - Airbyte competitorApache AirflowETL - Extract, transform, loadDesigning data-intensive applicationsStream processingEphemeralityData lakeData warehouseThe people's front of JudeaDBT - SQL-SQL batch-work-thingySQL with Jinja templatesSnowflake - data warehouse thingScalaBroadwayOban - "robust job processing for Elixir"Dashbitpandas - Python data libraryAPLArrow flightGRPCDataFusion - query execution enginePolars - "DataFrames in Rust"Explorer - built on top of PolarsVoltron dataThe Composable CodexPyarrow - Arrow bindings for PythonQuotesI've been reading a lot about data pipelinesWhat's so special about data pipelines?There's a lot of special toolingThere's a lot of bad, bad toolingLess than optimal toolingConverging on something biggerlkHe got me eventuallyAll of your steps in one bucketWhat tools do you associate with data?I inherited a data pipelineBashReduceIterate on the L and the TThe modern data stackAnd then you demand more workNo unnecessary copiesBarely a copyReconnecting with my Python roots

01-01
43:36

About Fun With GenServers

GenServers are fun! Andreas gives all the context. Things were learned, knowledge was aquired. You can do so much with GenServers, but make sure you have a good reason.If you don't watch out, this is where concurrency goes to die.Dynamic supervisors, and their children, are thoroughly considered.Also delved into is the mess other ecosystems make of doing things at the same time, waiting, and so on.The strange worlds of C and other unusual languages are considered.Finally, an interesting bug.LinksAlan TuringTuring machineGenServerCowboyPlugUmbrellaETS - Erlang Term StorageØredevThe actor modelVirding's first rule of programmingRegistryDynamicSupervisorThe Goth library - Google auth library for ElixirThe GIL - the global interpreter lockFriday afternoon deployPromisesEsbuildUiua - "A stack-based array programming language"Prefix treePackmatic library, by Evadne Wu - streaming zip archivesQuotesWhere the system grows horizontallyThe kind of thing that starts happening when you hire developersIt was missing a hatI have become nothing, the simplifier of thingsWhere all the concurrency goes to dieA whole dance party of sad, dark peopleThe children of the dynamic supervisorHomes can be nodesHundreds of interested partiesTurns life into promisesPoking some C programmers

11-20
01:06:17

About What Every Web App Needs But Your Developer Does Not Want You To Know About

Every web app starts out fine, the tabula rasa of an unwritten BODY. But sooner or later you need users. And a million other things which live in trees.Also: email.And that layer between the controller and the database where things like fine-grained access control goes.I'd like to have an admin, please.Eventually, web apps grows up. And while a larger framework with solutions and conventions for all those grown-up features may not necessarily be fun, it can certainly be useful.LinksAPM - Application Performance ManagementDjangoTeams should be an MVP feature!Bullet Train - a "Ruby on Rails SaaS framework"FlaskExpressSinatraScottyPhoenixAuth0OktaPostfixPostmarkDjango AnymailSwooshModel-view-templateACL:s - access-control listsEctoMultitenancyZack Daniel on Beam RadioZack's Elixirconf talkAsh frameworkPlugDSL - domain-specific languageBigquerygRPCHIPPAPostgrestFunction based viewsDjango RESTLaravelTitlesCheck in on your applicationDo you want details?The view is the controllerBecause namesI'd like to have an admin, pleaseThe admin is kind of roughAll the data is introspectableEndgame applicationNot another user management systemA very special can of worms

10-23
30:31

About Code Nerds

The software development industry is very much built for code nerds. It shouldn’t be.Many of us know many people who are really into coding. Not every working developer can, or even should, be though. Doesn't that create kind of a weird gap between professionals who live and breathe code both on and off work, and those who have a more balanced life?Being passionate about your job shouldn't be an expectation or requirement for anyone or anything.Is there too little space for learning - are we assumed to know too much, and assumed to spend our own time figuring out things we don't?Your path into coding is not, can not, and should not be the only path possible.LinksThe Python 2 to 3 transitionRobert A. Heinlein in 999 Words: What Every Human Should KnowGhost in the shellHarvest moon4x - Explore, expand, exploit, exterminateTDD - test-driven developmentBDD - behavior-driven developmentCharity Majors 2017 blog post about career paths for developers. (Bonus: 2019 follow-up about engineering managers)Late-stage capitalismQuotesI think that's perfectly healthySurrounded by themDelving into softwareSurrounded by nerdsMuch more reasonable answersWhere the nerd doesn't go so deepComputers are troublesomeWhy should you be passionate about your job?Squeeze the passion juiceToo passionate to defend themselvesExperience or scar tissue?Many developers have livesPopping out for the big pictureDoing good work takes all kinds

10-09
36:11

Recommend Channels