Conversations about programming. By Andreas Ekeroot and Lars Wikman, funded by Underjord.io.
The podcast Regular Programming is created by Lars Wikman, Andreas Ekeroot. The podcast and the artwork on this page are embedded on this page using the public podcast feed (RSS).
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.
Links
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.
Links
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.
Links
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.
Links
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.
Links
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.
Links
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?
Links
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?
Links
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.
Links
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.
Links
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.
Links
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.
Links
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.
Links
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.
Links
Quotes
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.
Links
Quotes
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?
Links
Quotes
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.
Links
Quotes
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.
Links
Titles
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.
Links
Quotes
Data has moved to a real database. Next, there may be brave attempts to add actual structure. Working with a real database is nice, as is not losing data, and being able to restore.
Not everything is ephemeral, after all.
Database service providers and cool stuff they do are discussed. The deal with Elastic is clarified. Finally, it is revealed where you should store your traces.
It is actually probably fine.
Links
Quotes
It seems a mingle is a thing, and not just in Swedish! But what do we want to get out of them, how do we go into them, and how do we create good ones?
Do you want resonance or hole-poking when you tell people about your plan to arm toddlers with nuclear weapons? Do you want to successfully mingle nerds, or just hit the snacks hard?
The foood, the cake, the coffee, and the old classmates. Too hot, too loud, too crowded.
Links
Quotes
Performance: we wish the incentives were there to focus on it more often.
Lars would like more opportunities and incentives to focus on making things fast, rather than just making them not slow. Unfortunately, things tend to line up so that fast enough and more features are in focus. Plus, performance and optimization can be very context sensitive and age out without anyone really noticing.
Also pondered: IRC, Gentoo, and the eldritch horrors buried within the x86 architecture.
Links
Quotes
CTOs want the ability to get prototypes built and out into production fast. Others preach the gospel of building things properly. How fast can you be? How much can you perpare before you hit the ice? And one you built and shipped that prototype, how can you get any kind of speed trying to maintain and evolve something where many corners were cut for speed?
How do we want things to work then? Having an algebra for things might be nice. A sprinkling of interface, things that break noisily, and nice toolboxes to work with structs are all discussed.
Links
Quotes
Did they do design, or did they just do a system?
Distributed systems are hard in many ways. Andreas describes a system communicating between backends and mobile phones in exciting ways with many exciting possibilities for errors. Like data format changes, loss of messages, having 1.5 source of truths, and of course ordering.
In certain cases, nobody likes an optimist.
The discussion then moves to discuss the working well-windows for various networking solutions, before diving into WebRTC and finishing up with the various dangers of auto.
Links
Quotes
Lars went to ElixirConf EU. Going to a conference can be a credibly incredible experience. Elixir has more clarity than Erlang.
Lars also gave a talk, a fact he was comfortably uncomfortable with. Giving a talk also comes with benefits such as being able to talk to fish in a barrel. But why did he choose to make the whole talk a demo? What is the goal of it all?
Gotta build things! Dive in, make stuff.
Links
Quotes
Text editors - which ones do we enjoy, which ones have we used, and what do we actually want and need in them?
Andreas has read about vim, sed and awk. Lars is quite comfortable in vim, but finds Visual studio code more than acceptable enough.
Andreas is excited to show Lars how to use Vim properly. Lars considers advanced setups something of a hellscape.
Lars has held a lecture about functional programming and wishes to provide a path for new .Net developers (dotnet dots?) to become free software zealots.
They both share their history of editors.
There are dreams of ergonomic editing - of code as well as text in general - on mobile devices.
Any other editors we should be trying? No, but you could hack together collaborative vim editing.
Links
Quotes
How do we feel about working remotely? Pretty good, on the whole.
Chairs and other basics are of course important, as is making your way of remote work a nice way of doing remote work for you. It is also nice to need to wear your work face less.
The challenges are more around the social sides - communicating differently, but generally replacing and rebuilding ways of being social with people both inside and outside of your work interests. That takes work.
Also, some talk about audio and video gear for remote meetings. It's nice to come off as full-fidelity people!
Links
Quotes
Lars is thinking about distributed systems, and Andreas kind of fears them. The best thing to do for most cases might be to avoid distributing things at all. But if you do end up needing to distribute, you may run into one of the places in the world where worse is better is not necessarily better? Adding distribution on top of something not really built for it is one of the hard problems.
There are deep dives into reconciliation, vector clocks, normalization, and places where fun goes to die. And there, still, are no magical solutions.
Links
Quotes
About Hackers Thinking about the term "hacker". Time to take it back to mean something rather down to earth, rather than a pedistal requiring years of C and a black hoodie?
What do airlines have against Erlang anyway?
There's also the mindset angle: the hacking mindset can be when exploring, versus when needing to solve a specific problem.
The discussion goes into labels one feels comfortable with, switching between different modes, and the ever present, ever hard to find dark matter developers.
Over time, labels can easily go bad in one way or another. But regardless of labels, we can all agree on duct tape and enthusiasm, right?
Links
Quotes
About Being Wrong
Wherein polite gentlemen at gaming conventions explain how people didn't have their variables separate enough with regard to the Dunning-Kruger effect. Lars thinks Andreas has drawn the wrong learnings from this.
It's a good idea to be humble … but strong opinions loosely held may not be the perfect thing, either?
Also discussed is the curse of the expert - teaching across a large gap in experience, and how to actually go about changing systems and having better discussions. Have you considered being god's advocate instead of the devil's when in a discussion?
Links
Quotes
About Estimates
Estimates are a nasty subject, Andreas doesn't know how to handle it.
Fortunately, Lars has one weird trick, which doctors hate.
When you have plenty of control, estimates can be useful.
Not useful: unexplained deadlines.
Finally: when things get stuck. (Lars is usually available to blame.)
(In an alternate timeline, Andreas' tells us everything his relatives taught him about quark cake.)
Links
Quotes
Passing pandemics make it possible to meet developers in real life again. Elixir-Lars makes a splash, and tells about recent and coming real-life events he's enjoyed. Things learned from real-life events and the need - or not - of constant learning are mentioned.
(It's not bit rot, it's data composting!)
Finally, a deep dive into the art of arranging good events, including preparatory pre-event events.
Who wouldn't like a movie night with a bunch of developers and pizza?
Linkable matter
Title-like quotes
The continued cratering of Twitter, and the joy of discovering open alternatives. Lars and many others find themselves on the open and federated Mastodon instead of Twitter, having a great time, and feeling more excited about open systems than in a long time.
On the level of individuals, owning and controlling your own data feels back in fashion, but there is even more to dig into on the level of large organizations.
Perhaps when GDPR says no and the good spirit of the internet is strong, there is a chance for municipalities and other public sector organizations to get and help build open alternatives to the closed, proprietary, and often hair-raisingly expensive and poorly received software they have today?
Lars sees exciting business opportunities, better software for all, as well as the interesting challenges of navigating tender processes and plain old corruption.
Links
Quotes
How to teach functional programming? What are the proper steps, beyond the first ones? Especially when you can't or don't want to point to a framework and say "we do it this way!"
Lars outlines his ideas for teaching Elixir to someone without requiring any prior programming experience.
There is also discussion of mapping, reducing, and representing one in terms of the other. Also things which are better in Haskell than Elixir, perfectly named modules, and - inevitably - why you don't just use Rust instead.
Links
Quotes
Archives are cool. How do you keep your digital things in order and, hopefully, backed up?
We need more archivists.
Andreas has re-read Snowcrash, and while it isn't the manual for the world to adopt it doesn't seem to stop the megacorps from thinking it is and trying. Where did Google go wrong, and why? And why aren't we jealous of their recruiting?
Linkable matter
Better titles
There are good things in programming, many of which are enumerated in this episode.
Among other nice things: the best features in Elixir. Lars won open source? Bots and realtime-y stuff. Not to mention a type system that screams at you.
Also: Lists in lists, in lists (in lists).
Code made by other people is not one of the things, however. Code made by other people is always upsetting. CSS does not make the list either, but Tailwind does, prompting a discussion of fractally difficult things, leaky abstractions, and progressive enhancement.
Linkable matter
Better titles
The hardware woes episode. But first: the joy and wonder of ID3v2.3.
Implementing the specification of a binary format as a library.
Lars' next laptop. Then Lars' gear situation. Power bricks and cable capabilities are … a labyrinth.
The trials and tribulations of getting and setting up a Steam deck.
Linkable matter
* The ID3v2.3 spec
* EXIF
* Fold left and fold right
* Lars' blog post about working with ID3
* CRDT
* Apple's WWDC keynote
* The M2 Macbook air
* The Framework laptop
* Linux on M*-chip computers
* Dell's XPS laptops
* RJ45
* Steam deck
* Slackware
* PopOS
* Regolith
* Frank Hunleth (of Nerves fame)
* Sony A7C
If we had titles
* Trying to be clever, and doing it poorly
* It still reverses the whole thing
* Arbitrary comments
* The future of mp3:s
* The world is less and less file-centric
* A USB-C-shape cable
Elon Musk wanting to buy Twitter leads naturally into the topic of cyberdecks and jacking in, which in turn naturally leads one to talk about audio on Linux.
But what is a cyberdeck? How do you build one? And when would you use it?
The sad state of video calls compared to Star Trek - why don't they have to install Teams to hail the Microsoft ship?
Lamenting the sad state of the current crop of dystopic overlords. Who runs Google, really? Amazon might be the most attractive target, just don't take down all our clouds by accident, okay?
Cyberpunk wasn't prepared for crypto, but when other things get bad enough that ceases to be a problem. Let's not papercut ourselves all the way to dystopia.
Linkable material
* Elon Musk has or has not yet bought Twitter
* Cyberdecks
* Jack - the sound library
* Shadowrun
* Keytar
* Pi 400
* Pi TFT
* Touchbar Lemmings
* The Framework laptop
* Google glass still exists
* FPGA
* Obsbot PTZ Camera
* Cory Doctorow on the Corecursive podcast
* Lightning - the on-top-of-Bitcoin payment system
* Podcast index
* Mer - the Swedish cordial-type drink
Alternate titles
* Jack in
* Something vulgar about it
* As far as cyberdecks go
* The keytar of keyboards
* Just hack the Gibson
* Rearview mirrors, but cameras
* Out cyberdecking
* The current crop of dystopic overlords
* Web-scale capitalism
* Our current psychopaths
* Papercut our way to dystopia
Notes will improve when beatings continue.
Hopefully some day :)
TBD
TBD
TBD
:)
TBD
Show notes may show up again some day. But right now we wouldn't be on it :)
Thanks to the listener who chimed in and wanted our thoughts on microservices. That wasn't what put it on the topic list but I think we still get credit for responding to input right?
We apologize for any discomfort in the audio. We lost the original Ekeroot recording and had to use the backup cloud recording. The people responsible have been sacked.
This episode was a bit delayed, sorry about that. Poor planning on our part :)
Show notes, hopefully some day :)
Show notes TBD, maybe :)
Running with show notes?
Some show notes might show up later if you are lucky :)
More notes TBD
We're talking gear and trying to answer the always relevant question of what is needed to program.
Painstakingly putting together a framework on frameworks. Also name dropping as if there was no tomorrow.
Show notes are on vacation time. Hopefully we'll have them expanded eventually :)
Notes will arrive if vacation allows.
All about that base, data base no, trouble.
Painstakingly putting together a framework on frameworks. Also name dropping frameworks and everything under the sun as if there was no tomorrow.
On the benefits and woes of written communication. Code reviews are usually written, so we revisit them again.
Sometimes you end up talking about Javascript.
En liten tjänst av I'm With Friends. Finns även på engelska.