Jimmy Miller projects posts advent talks github I am incredibly grateful that Sean Goedecke published his beautifully written article Seeing like a Software Company . In it, you will find a wonderfully balanced presentation of why companies often choose legible practices over more efficient, illegible ones. Sean very clearly details the kind of (in my words) doublethink that goes on at companies…
Jimmy Miller projects posts advent talks github The biggest shock of my early career was just how much code I needed to read that others wrote. I had never dealt with this. I had a hard enough time understanding my own code. The idea of understanding hundreds of thousands or even millions of lines of code written by countless other people scared me. What I quickly learned is that you don't…
Jimmy Miller projects posts advent talks github I am a digital hoarder. Probably not an extreme one. I don't have some fancy complicated raid system for endless terabytes of media. But when I find a link or a pdf to some interesting article, I want to save it. But I almost never review it. That isn't to say I don't read articles. I read plenty. But I also collect them. But I've…
Jimmy Miller projects posts advent talks github Type checkers are a piece of software that feel incredibly simple, yet incredibly complex. Seeing Hindley-Milner written in a logic programming language is almost magical, but it never helped me understand how it was implemented. Nor does actually trying to read anything about Algorithm W or any academic paper explaining a type system. But thanks to…
Jimmy Miller projects posts advent talks github The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility - Edsger W. Dijkstra The Humble Programmer Humble is a rather unlikely term to be found in a description of the "modern programmer". Can I suggest: proud, grandiose, delusional, self-absorbed,…
Jimmy Miller projects posts advent talks github I can't count the number of times I started trying to build a programming language just to get stuck in the parser. Some of this was certainly my lack of experience writing parsers, but it was also just how many different choices I had to make. Which way would I parse things? What syntax am I going to use for X? How do I deal with parse errors?…
Jimmy Miller projects posts advent talks github The first programming language I ever learned was ActionScript. Writing code for Macromedia's Flash might be the furthest away from "bare metal" as you can possibly get. As I continued learning new languages, this starting heritage stuck with me. I was mostly interested in high-level, "web languages". Low-level languages felt impenetrable. Over…
Jimmy Miller projects posts advent talks github I don't take notes; I don't outline, I don't do anything like that. I just flail away at the goddamn thing. - Stephen King In writing (particularly fiction writing), there is a generally accepted distinction between authors who start by writing an outline and those who discover their stories through the process of writing. For some…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Against a universal definition of ‘type’ ( pdf ) This is the final entry in the series and I'll be honest, I'm a bit glad it's over. It's been hard to consistently find the time every day to 1) find a paper I'm truly interested in writing about 2) read that paper in a way I can summarize it…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Do Artifacts Have Politics? ( pdf ) One question that I don't think gets asked enough is how "good code at work" differs from "good code at home"? For many years I didn't quite see the distinction between the two. Isn't it a fact of the matter what things make for good code? Why would code I write for…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Once More—A Computer Revolution - Joseph Weizenbaum ( pdf ) Summary # Ran out of time today. Will the home computer be as pervasive as today's television se,s? The answer almost certainly is no. The home, pictured in the accounts of home computer advocates, is middle class, or even upper middle class. There are…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . What is Conceptual Engineering and What Should It Be? ( pdf ) I've loved choosing philosophy papers for this series. And so, I decided today to do the same. But before you click away, this one is incredibly applicable to software. In fact, David Chalmers thinks that Software Engineering helps address a worry…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Three Paradigms of Computer Science ( pdf ) In late 2019, I was invited to give a talk at Rebase in Berlin during the summer of 2020. As you can imagine, that didn't happen at least not in person. Instead, I gave a pre-recorded talk. I tried over and over again to sit at a desk and give a talk as I'd seen…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Everybody Clap Your Hands ( pdf ) Have you ever been at a wedding and thought, "You know what would really spice up this dance floor? Arbitrary computation!" this paper is for you. Today, was a busy day for me, so you will get a very short summary of a very silly paper. Everybody Clap Your Hands: The Cha-Cha Slide…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . The Structure and Legal Interpretation of Computer Programs ( pdf ) I do not have much time to write today. I've been dealing with the seemingly never-ending problem of getting a bed frame delivered properly. It's been weeks of dealing with customer support to get the hardware, for it to arrive today, and…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . The Cultural Part of Cognition ( pdf ) As part of this series, I set out to read papers in my backlog of papers, that I literally hadn't read at all. This paper is one of them. It's a paper published in 1981 that from the abstract seems to be drawing a comparison between "cultural programs" and computer…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Will Computers Ever Become Easy to Use? ( pdf ) This paper brings back some nostalgia for me. Not because I was around when it was written (I was 5), but because my computing journey saw me growing up with a different Raskin, Jef's son Aza. Some of the first programs I wrote that had real utility were for the…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Programming Languages as Technical Artifacts ( pdf ) At first blush, the topic of this article may seem no different than our day 2 article Software is an Abstract Artifact . However, Raymond Turner's notion is quite different. First I think it's important that we make clear in this article we are talking…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Bidirectional Type Checking ( pdf ) Type checking is one of those topics in programming that I feel is often taught in a way that makes it rather confusing. Hindley Milner is a rather elegant, but confusing algorithm. Seeing how easy it is to make in mini-Karen, certainly didn't give me any insight into how it…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . What Knowledge Isn't ( pdf ) I read four different papers today. None of them stuck with me. There were a few papers on social aspects of programming, all of the empirical bent. I was hoping to find a good paper that captured the sense of frustration I feel with Agile; a paper that could summarize the perverse…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Lazy Evaluation of Transactions in Database Systems ( pdf ) This is a paper I have found utterly fascinating since I first read it many years ago. Is it a good idea? I have no clue. Does the data in the paper make me think it is a good idea? Probably not. But why should that be the bar? If there is anything this…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . On Understanding Data Abstraction, Revisited ( pdf ) One of my meta-criteria for choosing a paper in this series is the likelihood we will cover the paper on the future of coding. I won't completely rule out covering papers I think we will do at some point. But for the most part, I've decided to steer…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Large Models of What? ( pdf ) We haven't really talked about LLMs much on the future of coding . In many ways, this may seem like a striking omission. Isn't it a podcast called the "future of coding" and aren't LLMs so obviously some part of that future? I think that is undoubtedly true. I don't…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . What is a Game? ( pdf ) Okay, so I'll come clean, I might be cheating with today's paper. Does this paper have anything to do with computing? No. But can we make it have something to do with computing? Absolutely! I mean, games have to be one the best things we've done with computers, so a paper…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Beyond Being There: Making Remote Work Better ( pdf ) I absolutely love remote work. I've been doing it since before the pandemic. I am more productive doing it, I don't have to deal with all of the annoyances and politics that automatically occur when you get a bunch of people in an office. But I have to…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Implementation is Semantic Interpretation ( pdf ) I read this paper this morning and I had the time to just finish this post before my day began. But as has been the case for these posts so far, I procrastinated on it until bedtime. Maybe tomorrow we will break that pattern. Anyway, this is another in the series of…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Intuition in Software Development ( pdf ) If you haven't read Peter Naur's papers you should. If there is one thinker in the computing space I wish I could emulate, it is Peter Naur. This paper is no exception. It is about the role of intuition in software development but is ultimately an argument against…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Worlds: Mutability with Control ( pdf ) Today's paper is a bit different. Rather than philosophical musings or a rant, we will be looking at a fascinating language feature that has not made its way into any programming languages I'm aware of. A feature first presented in this early paper by Alessandro…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Is the Brain a Computer? ( pdf ) I can't help but write about these more philosophical papers. Perhaps you think I'm taking advantage of this "related to computers" aspect of my advent of papers. But I think it couldn't be further from the truth. In order to understand if the brain is a computer, we…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Google's Awful Paper on Technical Debt ( pdf ) Okay, I'll admit that I didn't have a ton of time today, so I picked a paper that doesn't require much deep thought. A paper that isn't weird at all. I tried for quite longer than I should have to find a paper I could adequately cover in the…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . What is Software Anyways? Where Does it Exist? ( pdf ) For this next paper, we are looking at a question I'm sure many will think is pointless. What exactly is software? But by this, we mean something a bit different than offering a definition. The goal here isn't to figure out how to split the world into…
Jimmy Miller projects posts advent talks github This is part of an Advent Series . Advent of Papers: Elephant 2000 ( pdf ) I hereby kick off the first annual advent of papers (2024) - Speech Act by Jimmy You may know John McCarthy as the creator of Lisp. But did you know he created another programming language? Sadly, just like Lisp, McCarthy merely wrote about the idea, not an implementation. But…
Jimmy Miller projects posts advent talks github I grew up relatively poor. I was fortunate enough to have a roof over my head, clean water, electricity, a computer, internet, and cable tv. But food was often harder to come by. This may seem like a contradiction, but when your mom has left to marry her uncle and your dad has schizophrenia, you aren’t really in charge of how the money is spent.…
Jimmy Miller projects posts advent talks github Oh the merchants2 table? Yeah, we ran out of columns on merchants, so we made merchants2 When I started programming as a kid, I didn't know people were paid to program. Even as I graduated high school, I assumed that the world of "professional development" looked quite different from the code I wrote in my spare time. When I lucked my way into…
Jimmy Miller projects posts advent talks github I remember starting my first job, excited that this hobby I had as a kid could pay so well. 55k, more than double what my parents had ever made. Diving into code written by other people for the first time was exciting. Hundreds of thousands of lines of hastily written code, a lot of C# some VB, every javascript framework that had ever existed, and a…
Jimmy Miller projects posts advent talks github There are three types of technical debt articles: Taxonomies of Technical Debt Redefinitions of Technical Debt Technical Debt is (Good|Bad) None of these articles ultimately help you with technical debt. Instead, they continue our endless dialogue around technical debt, perpetuating a programming culture that loves to talk about technical debt but…
Jimmy Miller projects posts advent talks github Software development can be an incredibly frustrating venture. Not primarily because programming is hard and we often make mistakes. Nor because there are countless tedious things like dependency management that we have to deal with. Nor because we are confronted by an overwhelming number of choices on what library or framework to use. Instead, I…
Jimmy Miller projects posts advent talks github ChatGPT doesn’t “know” anything about recent events. ChatGPT “hallucinates” facts. ChatGPT can “understand” many different kinds of questions. ChatGPT doesn’t “care” about truth. ChatGPT is “lying” to you. For some reason, we have collectively chosen to talk about ChatGPT using words typically reserved for humans. More precisely, we have chosen…
Jimmy Miller projects posts advent talks github There is a growing body of literature studying software engineering from the empirical perspective. There is perhaps no greater resource for discovering this content than It Will Never Work in Theory . Here you will find short reviews of countless empirical studies about software engineering. Some reviewed quite favorably, and others questioned quite…
Jimmy Miller projects posts advent talks github The “space” between our programs is an aspect we almost entirely overlook, yet, it is crucial to many aspects of our design. By “space”, I don’t mean the interface that the program exposes. Nor do I mean the means of communication (http, a queue, a log, etc). I am instead looking at something more amorphous. If we think about programs and their…
Jimmy Miller projects posts advent talks github As programmers, we love to act as if everything is cut and dry, unaffected by social circumstances. The mindless execution of our code makes us believe that all aspects of coding practice are equally mindless, equally free from social influence and opinion. Perhaps we don’t consciously think this, we aren’t completely naive. And yet, I think, many of…
Jimmy Miller projects posts advent talks github I've always wanted to build a text editor. I've played around before with trying to modify existing editors like codemirror. But ultimately those just felt incredibly unsatisfying. While I was able to make some fun little experiments with them, I was just gluing code together. As I started to play with Rust, it seemed like the perfect…
Jimmy Miller projects posts advent talks github Programming styles are immediately recognizable. And yet, the elements that contribute to these styles remain unnamed. What is it that separates the classic Scheme style of programming from a modern OO java style of programming? It is not the language. It is possible to write scheme, javascript, or whatever in the style of a modern OO java program.…
Jimmy Miller projects posts advent talks github I have written previously about how Card Driven Development is extremely detrimental to the development process. In that essay I pegged the problem on CDDs lack of proper knowledge sharing and its incorrect splitting of responsibility. Today I want to focus on a different attribute of CDD that has been bothering me lately. This is the start of me…
Jimmy Miller projects posts advent talks github In the last post , I mentioned how we ought to learn from philosophers who have already explored these notions of Conceptual Engineering. Here we will do exactly that by focusing on the work by philosopher Matthew Lindauer Conceptual Engineering as Concept Preservation . Despite the title, Lindauer is not arguing that conceptual engineering is merely…
Jimmy Miller projects posts advent talks github Naming things is one of the hardest things to do in software. Why? Is it because all the names have been taken? Is it because we are trying to get at some essence that our words need to capture? (Like some sort of fantasy magic system.) Perhaps at times, we feel both of these things. But I think that the difficulties we feel naming things stem from…
Jimmy Miller projects posts advent talks github Meander has been (in my personal opinion) a wonderful success. With meander.epsilon, we can express most of the data transformations we are interested in. There are of course a few rough edges, a few things we'd change. But as more people have begun to use meander and more people present problems they are tackling with meander, it becomes clear…
Jimmy Miller projects posts advent talks github Every company I've worked for has practiced what I call "Card Driven Development" (CDD). CDD is an umbrella term meant to encompass quite a few different development processes. The name comes from the use "cards" (digital or physical) found in the Scrum and Kanban processes as a means of organizing work, but CDD extends further than these two…
Jimmy Miller projects posts advent talks github Meander is heavily inspired by the capabilities of term rewriting languages. But sadly, there aren't many introductions to term rewriting aimed at everyday software engineers. Typically introductions to term rewriting immediately dive into discussing mathematical properties or proving theorems. These can be interesting and useful in their own…
Jimmy Miller projects posts advent talks github As Clojure programmers we love data. We believe that, at its core, programming is just data manipulation. To that end, Clojure provides fantastic data literals for its immutable data structures. Moreover core provides tons of functions for the manipulation of data. But as our data grows more complex, things become difficult. Our beautiful declarative…