RSSAmplifier

Blog

Blog on pid1

Recent content in Blog on pid1

pid1.devRSS feed ↗23 posts

Latest posts

Concepts, Techniques, and Models of Computer Programming: Chapter 5

Chapter 5 is about message-passing concurrency. Message-passing concurrency is defined as independent entities send each other messages asynchronously. It was introduced by Carl Hewitt when describing the actor model . There are three areas that message-passing concurrency is important: Complex systems can be represented as multi-agent systems which operate independently and communicate via…

Concepts, Techniques, and Models of Computer Programming: Chapter 4

Chapter 4 is about declarative concurrency. This takes what we’ve learned about declarative programming and applies it to a concurrent execution model. A challenge of concurrent programming is nondeterminism. A source of many painful, and in some cases fatal , bugs in software. A declarative concurrent model means that any nondeterminism is not visible to the programmer. There are two reasons:…

Concepts, Techniques, and Models of Computer Programming: Chapter 3

After a long hiatus, I’m back to doing the CTM bookclub. It’s been quite busy at work, but we (Terrateam) delivered GitLab support, are working on Bitbucket, and we’ve delivered a host of other changes. Needless to say, I’ve been too busy for other fun activities like blogging. But I’ve scraped some time together and going to aim to be more consistent. What’s helping is I’m doing this bookclub…

I'm a scrappy startup and I care about all our customers' usecases

I was a big fan of the original Chromecast. The UX was simple: install the thing, get it on your Wifi, and then just send stuff to it from your phone. The end. No remote. No account. Barely even any security! It didn’t do anything other than be a destination for whatever content I want to see on my TV. I recently bought whatever Google is calling the latest generation of Chromecast and it involves…

Concepts, Techniques, and Models of Computer Programming: Chapters 1 & 2

The first few chapters are dedicated to getting the user acquainted with the basics of the programming language, the system, and the base concepts that will be expanded on through the book. Preface [Programming is] the act of extending or changing a system’s functionality. Programming is a widespread activity that is done both by nonspecialists (e.g., consumers who change the settings of their…

Concepts, Techniques, and Models of Computer Programming

Concepts, Techniques, and Models of Computer Programming , otherwise called CTM, by Peter van Roy and Seif Haridi is my 'one book' for software development, if you need to pick one. What I love about CTM is that it covers a huge range in topics, from programming in the small to in the large, functional programming to object oriented programming, and sequential programming to concurrent…

Reasonable Arguments for AI Skepticism

Every few months there is a news story about some AI company CEO saying that in a year almost all code will be written by AI. The software engineer, where previously having tremendous bargaining power, is going from scarcity to redundant. The valuations are huge. Windsurf was recently bought for $3bn . Anthropic raises money on a bi-weekly cadence and most recently has a valuation of $61.5bn .…

Decoupling

The infrastructure startup Wing Cloud, creators of Winglang , recently shutdown , after receiving a $20 million investment in 2023 . I did not find this surprising. Not because the developers aren’t great or because I’m a genius business person. It wasn’t surprising because the idea of Winglang went against my mental model of how technical progress happens. The idea of Winglang is to combine…

On Bloat

I recently got sent the slides for a talk titled On Bloat by Rob Pike, that can be found here . I don’t know the origin of the talk or what the intention was and only have the slides to go by. The presentation makes the superficial observation that hardware has become significantly faster since the first mainframes yet software does not feel like it has utilized those gains well. Computers don’t…

Think Before Typing

One of the primary skills I try to impart to people that I mentor is to 'think before you type'. This is obviously not a new idea but I suspect, with the proliferation of LLMs to write code, that stopping to think will be a rarer skill in software engineering. An analogy I use is that coding is like getting from A to B. You don’t start going in a direction until you know which direction you need…

Match Tag/Query Pattern

This week I implemented a pattern I find myself reaching to quite often. I call it the Match Set/Query Pattern. The pattern is simple and requires two elements: Associating a piece of data with a Match Set. The match set describes the data, usually key-value, like a database. Maybe for a person you have first_name = John , last_name = Adams , occupation = President . Defining a small Match Query…

Design Needs More Brutalism

I was trying to use the mobile Google Authenticator app today and I couldn’t read the entire name of the last code I have installed because of the stupid floating '+' button. The reality is, I sort of know which codes I have installed so I knew which one it was but it struck me: someone thought it was a good design system to have something that obscures the data the user is trying to look at. The…

Discord

I created a Discord server. To join follow the link below. Join Discord Server

In Defense of -target

Warning Martin Atkins wrote a comment on reddit going into detail about how and when -target can get you into sticky situations. I have added it to the bottom of this post and linked out. I’ve been, rightly, downvoted in r/terraform for recommending using -target in production. I say 'rightly' because I know it’s a controversial suggestion and I’ve just sort of dropped it like a bomb without…

As Configuration

Mitchell Hashimoto post As Code this week reflecting on what 'as code' means to him. Different from the popular interpretation of being literal code, his view is that the 'code' in 'as code' is a 'system of principles or rules', like a 'code of ethics'. The poor guy has probably been the target of angry emails for a decade. My experience in the Infrastructure-as-Code world has been that a lot of…

Is the Unix Philosophy Still Taught in School?

The Unix Philosophy defines a culture of how to write tooling in the Unix world. At its core, the Unix Philosophy is about designing tools that work together. A consequence is that there must be some rules or convention such that programs can communicate. The power of the Unix Philosophy is that it lets us both automate our workflows and also build more sophisticated and powerful solutions by…

retry: My Favorite API

I like an API that captures a problem and expresses it concisely. I imagine this is how mathematicians feel when they create a beautiful proof. I’ve always enjoyed a good API but it wasn’t until I worked with one of my best friends, who has a background in type systems, that I really started to appreciate what it means to create a good API. I have a bunch of APIs I like but probably my favorite is…

Siren Call of SQLite on the Server

At Terrateam, we are big fans of Fly.io . The service is hosted there and it’s served us well. Just deploy your TOML file, get your infrastructure, do something else with the rest of your day. One of the interesting sides of Fly is that they invest heavily in server-side SQLite. They’ve written a number of blog posts on how they enable server-side SQLite: I’m All-In on Server-Side SQLite - Ben…

Terralith: The Terraform and OpenTofu Boogieman

Terrateam has a very expressive configuration file. We need it because, as any Terraform or Tofu user knows, there is no standard on how you should design your repository. The Eternal September question of r/terraform is asking how to structure a repository for multiple environments. It comes up so much that we even wrote a blog post about it. Terraform and Tofu users, in my experience, are…

The Enshittification of the Chromecast

My favorite Google product for a long time has been the Chromecast. It solved a problem, it was easy to use, and it just worked. It also turned watching YouTube into kind of a social experience, where everyone could connect and add videos to the queue. My favorite thing about it is you just had to be on the network to cast. I didn’t have to make an account and add myself to a friend’s house group…

Loops In Tofu Are Weird

Note I will refer to OpenTofu in this post, however everything I say applies equally to Terraform. Tofu uses HCL to define infrastructure. It’s fairly simple. Closer to a configuration language than a programming language. Choosing a DSL for a product can be hit-or-miss, but in this case I’m fairly pro-DSL. Given the goals of Terraform (the project OpenTofu is a forked from), using something like…

IaC and Abstraction

Note I will refer to OpenTofu but unless otherwise specified, everything applies to Terrraform as well. OpenTofu recently released 1.9.0 with provider for_each support, also known as dynamic provider configuration . This is actually a pretty old request. The original ticket is from 2019, before even version 1.0.0 of Terraform was released. A provider is a library that enables Tofu to interact with…

Initial Post

Welcome to the pid1.