Full Width [alt+shift+f] Shortcuts [alt+shift+k]
Sign Up [alt+shift+s] Log In [alt+shift+l]

Notes on software development

Notes on software...
From web developer to database developer in 10 years Last month I completed my first year at EnterpriseDB. I'm on the team that built and...
a week ago
9
a week ago
Last month I completed my first year at EnterpriseDB. I'm on the team that built and maintains pglogical and who, over the years, contributed a good chunk of the logical replication functionality that exists in community Postgres. Most of my work, our work, is in C and Rust with...
Notes on software...
Edit for clarity I have the fortune to review a few important blog posts every year and the biggest value I add is to...
3 weeks ago
14
3 weeks ago
I have the fortune to review a few important blog posts every year and the biggest value I add is to call out sentences or sections that make no sense. It is quite simple and you can do it too. Without clarity only those at your company in marketing and sales (whose job it is to...
Notes on software...
An explosion of transitive dependencies A small standard library means an explosion in transitive dependencies. A more comprehensive...
4 weeks ago
13
4 weeks ago
A small standard library means an explosion in transitive dependencies. A more comprehensive standard library helps you minimize dependencies. Don't misunderstand me: in a real-world project, it is practically impossible to have zero dependencies. Armin Ronacher called for a vibe...
Notes on software...
Embedding Python in Rust (for tests) This is an external post of mine. Click here if you are not redirected.
a month ago
Notes on software...
Logical replication in Postgres: Basics This is an external post of mine. Click here if you are not redirected.
a month ago
Notes on software...
How I run a coffee club I started the NYC Systems Coffee Club in December of 2023. It's gone pretty well! I regularly get...
a month ago
41
a month ago
I started the NYC Systems Coffee Club in December of 2023. It's gone pretty well! I regularly get around 20 people each month. You bring a drink if you feel like it and you hang out with people for an hour or two. There is no agenda, there is no speaker, there is no structure....
Notes on software...
Picking up volleyball in NYC with Goodrec and New York Urban I was so intimidated to go at first, but it is in fact easy and fun to start playing beginner...
a month ago
42
a month ago
I was so intimidated to go at first, but it is in fact easy and fun to start playing beginner volleyball in New York. The people are so friendly and welcoming that it has been easy to keep playing consistently every week since I started for the first time this August. It's been a...
Notes on software...
1 million page views I was delighted to notice this morning that this site has recently passed 1M page views. And since...
2 months ago
21
2 months ago
I was delighted to notice this morning that this site has recently passed 1M page views. And since Murat wrote about his 1M page view accomplishment at the time, I felt compelled to now too. I started regularly blogging in 2018. For some reason I decided to write a blog post...
Notes on software...
Active and influential NYC infrastructure people These are some of the most influential (mostly due to experience or expertise) and active folks (I...
3 months ago
17
3 months ago
These are some of the most influential (mostly due to experience or expertise) and active folks (I actually see them attend events) in the NYC infrastructure scene (that I have a personal connection to). If you're running a dinner or are just looking to meet interesting people in...
Notes on software...
Exploring Postgres's arena allocator by writing an HTTP server from scratch This is an external post of mine. Click here if you are not redirected.
3 months ago
Notes on software...
Effective unemployment and social media Being unemployed can be incredibly depressing. So much rejection. Everything seems to be out of your...
3 months ago
13
3 months ago
Being unemployed can be incredibly depressing. So much rejection. Everything seems to be out of your control. Everything except for one thing: what you produce. You might know that repeatedly posting on social media that you are looking for work is ineffective. That it looks (or...
Notes on software...
Checking linearizability in Go You want to check for strict consistency (linearizability) for your project but you don't want to...
3 months ago
12
3 months ago
You want to check for strict consistency (linearizability) for your project but you don't want to have to deal with the JVM. Porcupine, used by a number of real-world systems like etcd and TiDB, has you covered! Importantly, neither Jepsen projects nor Porcupine can...
Notes on software...
Build a serverless ACID database with this one neat trick (atomic PutIfAbsent) Delta Lake is an open protocol for serverless ACID databases. Due to its simplicity, scalability,...
4 months ago
13
4 months ago
Delta Lake is an open protocol for serverless ACID databases. Due to its simplicity, scalability, and the number of open-source implementations, it's quickly becoming the DuckDB of serverless transactional databases for analytics workloads. Iceberg is a contender too, and is...
Notes on software...
Be someone who does things I wrote last month that what you want to do is one of the most useful motivations in life. I want to...
5 months ago
10
5 months ago
I wrote last month that what you want to do is one of the most useful motivations in life. I want to follow that up by saying that the only thing more important than wanting to do something is to actually do something. The most valuable trait you can develop for yourself is to...
Notes on software...
Obsession In your professional and personal life, I don't believe there is a stronger motivation than having...
6 months ago
8
6 months ago
In your professional and personal life, I don't believe there is a stronger motivation than having something in mind and the desire to do it. Yet the natural way to deal with a desire to do something is to justify why it's not possible. "I want to read more books but nobody reads...
Notes on software...
What's the big deal about Deterministic Simulation Testing? Bugs in distributed systems are hard to find, largely because systems interact in chaotic ways. And...
6 months ago
10
6 months ago
Bugs in distributed systems are hard to find, largely because systems interact in chaotic ways. And even once you've found a bug, it can be anywhere from simple to impossible to reproduce it. It's about as far away as you can get from the ideal test environment: property...
Notes on software...
Delightful, production-grade replication for Postgres This is an external post of mine. Click here if you are not redirected.
6 months ago
Notes on software...
A reawakening of systems programming meetups This year has seen a resurgence in really high quality systems programming meetups. Munich...
7 months ago
11
7 months ago
This year has seen a resurgence in really high quality systems programming meetups. Munich Database Meetup, Berlin Systems Group, SF Distributed Systems Meetup, NYC Systems, Bengaluru Systems, to name a few. This post summarizes a bit of disappointing recent tech meetup history,...
Notes on software...
A write-ahead log is not a universal part of durability A database does not need a write-ahead log (WAL) to achieve durability. A database can write its...
7 months ago
10
7 months ago
A database does not need a write-ahead log (WAL) to achieve durability. A database can write its long-term data structure durably to disk before returning to a client. Granted, this is a bad idea! And granted, a WAL is critical for durability by design in most databases. But I...
Notes on software...
The limitations of LLMs, or why are we doing RAG? This is an external post of mine. Click here if you are not redirected.
8 months ago
Notes on software...
Confusion is a muse Some of the most interesting technical blog posts I read come from, and a common reason for posts I...
8 months ago
9
8 months ago
Some of the most interesting technical blog posts I read come from, and a common reason for posts I write is, confusion. You're at work and you start asking questions that are difficult to answer. You spend a few hours or a day trying to get to the bottom of things. If you ask a...
Notes on software...
How I run a software book club I've been running software book clubs almost continuously since last summer, about 12 months ago. We...
8 months ago
9
8 months ago
I've been running software book clubs almost continuously since last summer, about 12 months ago. We read through Designing Data-Intensive Applications, Database Internals, Systems Performance, and we just started Understanding Software Dynamics. The DDIA discussions were...
Notes on software...
Implementing MVCC and major SQL transaction isolation levels In this post we'll build a database in 400 lines of code with basic support for five standard SQL...
9 months ago
7
9 months ago
In this post we'll build a database in 400 lines of code with basic support for five standard SQL transaction levels: Read Uncommitted, Read Committed, Repeatable Read, Snapshot Isolation and Serializable. We'll use multi-version concurrency control (MVCC) and optimistic...
Notes on software...
What makes a great technical blog I want to explain why the blogs in My favorite technical blogs are my favorite. That page is solely...
10 months ago
10
10 months ago
I want to explain why the blogs in My favorite technical blogs are my favorite. That page is solely about non-corporate tech blogs. So this post is too. I'll have to make another list for favorite corporate tech blogs. In short, they: Tackle hard and confusing topics Show working...
Notes on software...
A paper reading club at work; databases and distributed systems research I started a paper reading club this week at work, focused on databases and distributed systems...
10 months ago
8
10 months ago
I started a paper reading club this week at work, focused on databases and distributed systems research. I posted in a general channel about the premise and asked if anyone was interested. I clarified the intended topic and that discussions would be asynchronous over email, run...
Notes on software...
Finding memory leaks in Postgres C code This is an external post of mine. Click here if you are not redirected.
11 months ago
Notes on software...
Zig, Rust, and other languages Having worked a bit in Zig, Rust, Go and now C, I think there are a few common topics worth having a...
11 months ago
10
11 months ago
Having worked a bit in Zig, Rust, Go and now C, I think there are a few common topics worth having a fresh conversation on: automatic memory management, the standard library, and explicit allocation. Zig is not a mature language. But it has made enough useful choices for a number...
Notes on software...
First month on a database team A little over a month ago, I joined EnterpriseDB on a distributed Postgres product (PGD). The...
11 months ago
8
11 months ago
A little over a month ago, I joined EnterpriseDB on a distributed Postgres product (PGD). The process of onboarding myself has been pretty similar at each company in the last decade, though I think I've gotten better at it. The process is of course influenced by the team, and my...
Notes on software...
An intuition for distributed consensus in OLTP systems Distributed consensus in transactional databases (e.g. etcd or Cockroach) is a big deal these days....
a year ago
8
a year ago
Distributed consensus in transactional databases (e.g. etcd or Cockroach) is a big deal these days. Most often under the hood are variations of log-based Paxos-like algorithms such as MultiPaxos, Viewstamped Replication, or Raft. While there are new variations that come out each...
Notes on software...
Writing a minimal in-memory storage engine for MySQL/MariaDB I spent a week looking at MySQL/MariaDB internals along with ~80 other devs. Although MySQL and...
a year ago
10
a year ago
I spent a week looking at MySQL/MariaDB internals along with ~80 other devs. Although MySQL and MariaDB are mostly the same (more on that later), I focused on MariaDB specifically this week. Before last week I had never built MySQL/MariaDB before. The first day of this hack week,...
Notes on software...
Make your own way Over the years, I have repeatedly felt like I missed the timing for a meetup or an IRC group or...
a year ago
8
a year ago
Over the years, I have repeatedly felt like I missed the timing for a meetup or an IRC group or social media in general. I'd go to a meetup every so often but I'd never make a meaningful connection with people, whereas everyone else knew each other. I'd join an IRC group and...
Notes on software...
Exploring a Postgres query plan I learned this week that you can intercept and redirect Postgres query execution. You can hook into...
a year ago
7
a year ago
I learned this week that you can intercept and redirect Postgres query execution. You can hook into the execution layer so you're given a query plan and you get to decide what to do with it. What rows to return, if any, and where they come from. That's very interesting. So I...
Notes on software...
Writing a storage engine for Postgres: an in-memory Table Access Method With Postgres 12, released in 2019, it became possible to swap out Postgres's storage engine. This...
a year ago
10
a year ago
With Postgres 12, released in 2019, it became possible to swap out Postgres's storage engine. This is a feature MySQL has supported for a long time. There are at least 8 different built-in engines you can pick from. MyRocks, MySQL on RocksDB, is another popular third-party...
Notes on software...
io_uring basics: Writing a file to disk King and I wrote a blog post about building an event-driven cross-platform IO library that...
a year ago
9
a year ago
King and I wrote a blog post about building an event-driven cross-platform IO library that used io_uring on Linux. We sketched out how it works at a high level but I hadn't yet internalized how you actually code with io_uring. So I strapped myself down this week and wrote...
Notes on software...
Go database driver overhead on insert-heavy workloads The most popular SQLite and PostgreSQL database drivers in Go are (roughly) 20-76% slower than...
a year ago
9
a year ago
The most popular SQLite and PostgreSQL database drivers in Go are (roughly) 20-76% slower than alternative Go drivers on insert-heavy benchmarks of mine. So if you are bulk-inserting data with Go (and potentially also bulk-retrieving data with Go), you may want to consider the...
Notes on software...
Intercepting and modifying Linux system calls with ptrace How software fails is interesting. But real-world errors can be infrequent to manifest....
a year ago
13
a year ago
How software fails is interesting. But real-world errors can be infrequent to manifest. Fault injection is a formal-sounding term that just means: trying to explicitly trigger errors in the hopes of discovering bad logic, typically during automated tests. Jepsen and ChaosMonkey...
Notes on software...
How do databases execute expressions? Databases are fun. They sit at the confluence of Computer Science topics that might otherwise not...
a year ago
7
a year ago
Databases are fun. They sit at the confluence of Computer Science topics that might otherwise not seem practical in life as a developer. For example, every database with a query language is also a programming language implementation of some caliber. That doesn't include all...
Notes on software...
Eight years of organizing tech meetups This is a collection of random personal experiences. So if you don't want to read everything, feel...
a year ago
11
a year ago
This is a collection of random personal experiences. So if you don't want to read everything, feel free to skip to the end for takeaways. I write because I'd like to see more high-quality meetups. And maybe my little bit of experience will help someone out. 2015: Philadelphia I...
Notes on software...
Thinking about functional programming Someone on Discord asked about how to learn functional programming. The question and my initial...
a year ago
7
a year ago
Someone on Discord asked about how to learn functional programming. The question and my initial tweet on the subject prompted an interesting discussion with Shriram Krishnamurthi and other folks. So here's a slightly more thought out exploration. And just for backstory sake: I...
Notes on software...
We put a distributed database in the browser – and made a game of it This is an external post of mine. Click here if you are not redirected.
a year ago
Notes on software...
Metaprogramming in Zig and parsing CSS I knew Zig supported some sort of reflection on types. But I had been confused about how to use it....
a year ago
9
a year ago
I knew Zig supported some sort of reflection on types. But I had been confused about how to use it. What's the difference between @typeInfo and @TypeOf? I ignored this aspect of Zig until a problem came up at work where reflection made sense. The situation was parsing and storing...
Notes on software...
Implementing the Raft distributed consensus protocol in Go As part of bringing myself up-to-speed after joining TigerBeetle, I wanted some background on how...
a year ago
11
a year ago
As part of bringing myself up-to-speed after joining TigerBeetle, I wanted some background on how distributed consensus and replicated state machines protocols work. TigerBeetle uses Viewstamped Replication. But I wanted to understand all popular protocols and I decided to start...
Notes on software...
Two books I recommend to developers Originally published on February 1, 2021. The original version included two books I don't think...
a year ago
7
a year ago
Originally published on February 1, 2021. The original version included two books I don't think are actually so worthwhile. This list is down to two. I think that's a good thing actually. These are the books I recommend to developers wanting to improve their skills as...
Notes on software...
My favorite software subreddits Originally published on December 5, 2021. If you are an experienced software developer whose only...
a year ago
9
a year ago
Originally published on December 5, 2021. If you are an experienced software developer whose only exposure to reddit is dank memes, proggit or even language-specific subreddits like /r/python, you're missing out. What follows are my favorite subreddits in tech. My criteria is...
Notes on software...
Errors and Zig At TigerBeetle these last few weeks I've been doing a mix of documenting client libraries, writing...
a year ago
10
a year ago
At TigerBeetle these last few weeks I've been doing a mix of documenting client libraries, writing sample code for client libraries, and writing integration tests against the sample code. The client library documentation is generated with a Zig script. The sample code is...
Notes on software...
Notes from Neal Gabler's Walt Disney Disney was a celebrity by his mid-30s, Disney the company was famous by 1930s. Even though...
over a year ago
8
over a year ago
Disney was a celebrity by his mid-30s, Disney the company was famous by 1930s. Even though politically the 1930s was considered the decade of Roosevelt (elected President in 1933), culturally the 1930s was considered the decade of Mickey Mouse. Almost every new...
Notes on software...
Lessons learned streaming building a Scheme-like interpreter in Go I wanted to practice making coding videos so I did a four-part series on writing a basic Scheme-like...
over a year ago
9
over a year ago
I wanted to practice making coding videos so I did a four-part series on writing a basic Scheme-like language (minus macros and arrays and tons of stuff). I picked this simple topic because I wanted a low-stakes way to learn what I did not know about making videos. Here was the...
Notes on software...
An effective product manager There are three specific activities I have loved in some product managers I've worked with (and...
over a year ago
9
over a year ago
There are three specific activities I have loved in some product managers I've worked with (and missed in others). tldr; Talk with customers and prospects Develop and share a vision Evangelize Talk with customers and prospects As a product manager, your superpower over...
Notes on software...
The year in books: 2022 In 2022 I finished 20 books spanning 15,801 pages. 3 more than I read in 2021, but about twice the...
over a year ago
9
over a year ago
In 2022 I finished 20 books spanning 15,801 pages. 3 more than I read in 2021, but about twice the number of pages. 3 fiction and 17 non-fiction. Another ~30 started but not finished. I had a hard time reading books while I was trying to start my own company. But I also...
Notes on software...
Favorite compiler and interpreter resources This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
General book recommendations This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
In response to a frontend developer asking about database development This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Is it worth writing about? You acquire a skill or experience through time and effort, then downplay the impact of writing and...
over a year ago
9
over a year ago
You acquire a skill or experience through time and effort, then downplay the impact of writing and sharing the learning process. Professionals seem naturally to imagine a high bar for what is worth writing about. I think that's misguided. This article is not criticism of folks...
Notes on software...
A Programmer-Friendly I/O Abstraction Over io_uring and kqueue This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Writing a SQL database, take two: Zig and RocksDB For my second project while learning Zig, I decided to port an old, minimal SQL database project...
over a year ago
9
over a year ago
For my second project while learning Zig, I decided to port an old, minimal SQL database project from Go to Zig. In this post, in ~1700 lines of code (yes, I'm sorry it's bigger than my usual), we'll create a basic embedded SQL database in Zig on top of RocksDB. Other than the...
Notes on software...
A minimal RocksDB example with Zig I mostly programmed in Go the last few years. So every time I wanted an embedded key-value database,...
over a year ago
10
over a year ago
I mostly programmed in Go the last few years. So every time I wanted an embedded key-value database, I reached for Cockroach's Pebble. Pebble is great for Go programming but Go does not embed well into other languages. Pebble was inspired by RocksDB (and its...
Notes on software...
A database without dynamic memory allocation This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
A minimal distributed key-value database with Hashicorp's Raft library When I wrote the "build a distributed PostgreSQL proof of concept" post I first had to figure...
over a year ago
11
over a year ago
When I wrote the "build a distributed PostgreSQL proof of concept" post I first had to figure out how to use Hashicorp's Raft implementation. There weren't any examples I could find in the Hashicorp repo itself. And the only example I could find was Philip O'Toole's hraftd. It's...
Notes on software...
What's the big deal about key-value databases like FoundationDB and RocksDB? Let's assume you're familiar with basic SQL databases like PostgreSQL and MySQL, and document...
over a year ago
9
over a year ago
Let's assume you're familiar with basic SQL databases like PostgreSQL and MySQL, and document databases like MongoDB and Elasticsearch. You probably know Redis too. But you're hearing more and more about embedded key-value stores like RocksDB, LevelDB, PebbleDB, and so on....
Notes on software...
SQLite has pretty limited builtin functions This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Container scheduling strategies for integration testing 14 different databases in Github Actions This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Implementing a simple jq clone in Go, and basics of Go memory profiling In this post we'll build a basic jq clone in Go. It will only be able to pull a single path out of...
over a year ago
10
over a year ago
In this post we'll build a basic jq clone in Go. It will only be able to pull a single path out of each object it reads. It won't be able to do filters, mapping, etc. $ cat large-file.json | head -n2 | ./jqgo...
Notes on software...
One year as a solo dev building open-source data tools without funding This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Let's build a distributed Postgres proof of concept What is CockroachDB under the hood? Take a look at its go.mod and notice a number of dependencies...
over a year ago
8
over a year ago
What is CockroachDB under the hood? Take a look at its go.mod and notice a number of dependencies that do a lot of work: a PostgreSQL wire protocol implementation, a storage layer, a Raft implementation for distributed consensus. And not part of go.mod but still building on 3rd...
Notes on software...
SQLite in Go, with and without cgo This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
HTML event handler attributes: down the rabbit hole This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Interview With Phil of DataStation This is an external interview. Click here if you are not redirected.
over a year ago
Notes on software...
Surveying SQL parser libraries in a few high-level languages This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Writing a document database from scratch in Go: Lucene-like filters and indexes In this post we'll write a rudimentary document database from scratch in Go. In less than 500 lines...
over a year ago
6
over a year ago
In this post we'll write a rudimentary document database from scratch in Go. In less than 500 lines of code we'll be able to support the following interactions, inspired by Elasticsearch: $ curl -X POST -H 'Content-Type: application/json' -d '{"name": "Kevin", "age": "45"}'...
Notes on software...
Speeding up Go's builtin JSON encoder up to 55% for large arrays of objects This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
SMTP protocol basics from scratch in Go: receiving email from Gmail I've never run my own mail server before. Before today I had no clue how email worked under the hood...
over a year ago
10
over a year ago
I've never run my own mail server before. Before today I had no clue how email worked under the hood other than the very few times I've set up mail clients. I've heard no few times how hard it is to send mail from a self-hosted server (because of spam filters). But how hard can...
Notes on software...
The world of PostgreSQL wire compatibility This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
How to recommend books, or, stop recommending SICP Many "must-read" books are not well-written. I try to read a lot, but I still have a low tolerance...
over a year ago
9
over a year ago
Many "must-read" books are not well-written. I try to read a lot, but I still have a low tolerance for bad writing and bad editing. I write this post both to discourage thoughtless recommendations and to encourage the receivers of bad recommendations. For software developers,...
Notes on software...
Bootloader basics I spent a few days playing around with bootloaders for the first time. This post builds up to a text...
over a year ago
12
over a year ago
I spent a few days playing around with bootloaders for the first time. This post builds up to a text editor with a few keyboard shortcuts. I'll be giving a virtual talk based on this work at Hacker Nights on Jan 27. There are a definitely bugs. But it's hard to find...
Notes on software...
dsq: Commandline tool for running SQL queries against JSON, CSV, Excel, Parquet, and more. This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Analyzing large JSON files via partial JSON parsing This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
The year in books: 11 to recommend in 2021 Last year (2021) I finished 17 books, a five year low. But that's ok! 4 fiction and 13 non-fiction....
over a year ago
7
over a year ago
Last year (2021) I finished 17 books, a five year low. But that's ok! 4 fiction and 13 non-fiction. Another 30 started but not finished. Non-fiction It seems I was pretty focused on business history books and history of tech. The 8 non-fiction books I liked the most: Designing...
Notes on software...
Writing a minimal Lua implementation with a virtual machine from scratch in Rust By the end of this guide we'll have a minimal, working implementation of a small part of Lua from...
over a year ago
7
over a year ago
By the end of this guide we'll have a minimal, working implementation of a small part of Lua from scratch. It will be able to run the following program (among others): function fib(n) if n < 2 then return n; end local n1 = fib(n-1); local n2 = fib(n-2); ...
Notes on software...
Running SQL Server in a container on Github Actions This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Implementing zip archiving in Golang: unzipping All code for this post is available on Github. Let's take a look at how zip files work. Take a small...
over a year ago
9
over a year ago
All code for this post is available on Github. Let's take a look at how zip files work. Take a small file for example: $ cat hello.text Hello! Let's zip it up. $ zip test.zip hello.text adding: hello.text (stored 0%) $ ls -lah test.zip -rw-r--r-- 1 phil phil 177 Nov 23 23:04...
Notes on software...
Benchmarking esbuild, swc, tsc, and babel for React/JSX projects This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Building a fast SCSS-like rule expander for CSS using fuzzy parsing This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Exploring PL/pgSQL part two: implementing a Forth-like interpreter Previously in exploring PL/pgSQL: Strings, arrays, recursion and parsing JSON In my last post I...
over a year ago
8
over a year ago
Previously in exploring PL/pgSQL: Strings, arrays, recursion and parsing JSON In my last post I walked through the basics of PL/pgSQL, the embedded procedural language inside of PostgreSQL. It covered simple functions, recursions and parsing. But there was something very...
Notes on software...
Exploring PL/pgSQL: Strings, arrays, recursion, and parsing JSON Next in exploring PL/pgSQL: Implementing a Forth-like interpreter PostgreSQL comes with a...
over a year ago
9
over a year ago
Next in exploring PL/pgSQL: Implementing a Forth-like interpreter PostgreSQL comes with a builtin imperative programming language called PL/pgSQL. I used to think this language was scary because it has a bit more adornment than your usual language does. But looking deeper,...
Notes on software...
Experimenting with column- and row-oriented datastructures This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Notes on running Electron This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Enumerating and analyzing 40+ non-V8 JavaScript implementations V8 is, I'm sure, the most used implementation of JavaScript today. Used in Chrome, (and by...
over a year ago
8
over a year ago
V8 is, I'm sure, the most used implementation of JavaScript today. Used in Chrome, (and by extension) Microsoft Edge, Node.js, etc. Safari's JavaScriptCore and Firefox's SpiderMonkey are also contenders for extremely mainstream implementations. But what else is out there? What if...
Notes on software...
Writing a simple JSON library from scratch: a tour through modern C++ Modern C++ has a lot of cool features. Move semantics means passing around structs in functions is...
over a year ago
7
over a year ago
Modern C++ has a lot of cool features. Move semantics means passing around structs in functions is cheap. std::shared_ptr means I don't have to manage any memory; no more new/delete! (But try as I might to understand std::unique_ptr, I'm just not there yet.) The syntax has also...
Notes on software...
Parser generators vs. handwritten parsers: surveying major language implementations in 2021 Developers often think parser generators are the sole legit way to build programming language...
over a year ago
9
over a year ago
Developers often think parser generators are the sole legit way to build programming language frontends, possibly because compiler courses in university teach lex/yacc variants. But do any modern programming languages actually use parser generators anymore? To find out, this post...
Notes on software...
Practical? Common Lisp on the JVM: A quick intro to ABCL for modern web apps In a ridiculous attempt to prove an internet wrong about the practicality of Lisp (Common Lisp...
over a year ago
9
over a year ago
In a ridiculous attempt to prove an internet wrong about the practicality of Lisp (Common Lisp specifically), I tried to get a simple (but realistic) web app running. After four days and a patch to ABCL I got something working. The code I had in mind would look something like...
Notes on software...
Writing an efficient object previewer for JavaScript This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
React without webpack: fast path to a working app from scratch This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Controlled HTML select element in React has weird default UX This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Leaders, you need to share organization success stories more frequently This post goes out to anyone who leads a team: managers, directors, VPs, executives. You need to...
over a year ago
4
over a year ago
This post goes out to anyone who leads a team: managers, directors, VPs, executives. You need to share organization success stories with your organization on a regular and frequent basis. Talk about sales wins, talk about new services released, talk about the positive impact of a...
Notes on software...
Languages you can run in the browser, part 1: Python, JavaScript, SQLite This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
Coolest hard-tech companies in NYC 2021 For years I've kept a private list of really cool tech companies in NYC. Now that I'm funemployed...
over a year ago
6
over a year ago
For years I've kept a private list of really cool tech companies in NYC. Now that I'm funemployed it's the perfect time to publish. This list is influenced by 1) my perception of the difficulty of the engineering behind the product and 2) the company's educational and OSS...
Notes on software...
Writing a Jinja-inspired template library in Python In this post we'll build a minimal text templating library in Python inspired by Jinja. It will be...
over a year ago
9
over a year ago
In this post we'll build a minimal text templating library in Python inspired by Jinja. It will be able to display variables and iterate over arrays. By the end of this article, with around 300 lines of code, we'll be able to create this program: from pytemplate import...
Notes on software...
Learning a new codebase: hacking on nginx I have never contributed to nginx. My C skills are 1/10. But downloading the source, hacking it up,...
over a year ago
8
over a year ago
I have never contributed to nginx. My C skills are 1/10. But downloading the source, hacking it up, compiling it, and running it doesn't scare me. This post is to help you overcome your own fears about doing so. Not necessarily because you should be running out-of-tree diffs in...
Notes on software...
How to get better at recursion tldr; reimplement standard library functions in your favorite language without loops. Background For...
over a year ago
8
over a year ago
tldr; reimplement standard library functions in your favorite language without loops. Background For a few years after college I spent a lot of free time doing projects in Standard ML and Scheme. As a result I got really comfortable doing recursion. The two big reasons for this...
Notes on software...
Extending gosql to supporting LIMIT and OFFSET It's been a few months since I picked up gosql and I wanted to use it to prototype a SQL interface...
over a year ago
10
over a year ago
It's been a few months since I picked up gosql and I wanted to use it to prototype a SQL interface for data stored in S3. But one missing critical feature in gosql is LIMIT and OFFSET support. This post walks through the few key changes to gosql to support LIMIT and OFFSET. You...
Notes on software...
The year in books: 20 to recommend in 2020 This year I finished 47 books, up from last year but not a personal best. The breakdown was 17...
over a year ago
8
over a year ago
This year I finished 47 books, up from last year but not a personal best. The breakdown was 17 non-fiction and 30 fiction. Another 20-30 remain started but unfinished this year. Non-fiction The 8 non-fiction books I most recommend are: Fashionapolis: The Price of Fast Fashion and...
Notes on software...
Static analysis with semgrep: practical examples using Docker In this post we'll get a basic semgrep environment set up in Docker running some custom rules...
over a year ago
11
over a year ago
In this post we'll get a basic semgrep environment set up in Docker running some custom rules against our code. Existing linters Linters like pylint for Python or eslint for JavaScript are great for general, broad language standards. But what about common nits in code review like...
Notes on software...
Emulating linux/AMD64 userland: interpreting an ELF binary In this post we'll stumble toward a working emulator for a barebones C program compiled for...
over a year ago
8
over a year ago
In this post we'll stumble toward a working emulator for a barebones C program compiled for linux/AMD64. The approach will be slightly more so based on observation than by following a spec; a great way to quickly become familiar with a topic, and a bad way to...
Notes on software...
The impact of management teams as a decision-making group, in startups and enterprise Ambitious companies form management teams at every level above you, sometimes including you....
over a year ago
7
over a year ago
Ambitious companies form management teams at every level above you, sometimes including you. Management teams meet periodically and have private chat rooms. They discuss customers, product and organizational direction. Sometimes discussions are well documented and...
Notes on software...
Standard ML in 2020 Incredibly, Standard ML implementations are still actively developed. MLton, Poly/ML, MLKit, SML#...
over a year ago
10
over a year ago
Incredibly, Standard ML implementations are still actively developed. MLton, Poly/ML, MLKit, SML# and SML/NJ are the most prominent. Discussion on the future direction of Standard ML remains healthy as well. And somehow OCaml's lesser known cousin still beats out OCaml...
Notes on software...
The case for comments in code When I first started programming, especially when asked for code samples, my comments lacked purpose...
over a year ago
9
over a year ago
When I first started programming, especially when asked for code samples, my comments lacked purpose and would often duplicate in English what the code clearly indicated. I knew that "commenting is good" but as a beginner I had no further insight. Over time with the help of books...
Notes on software...
Writing a simple Python compiler: 1. hello, fibonacci In this post we'll write a Python to C compiler in Python. This is especially easy to do since...
over a year ago
9
over a year ago
In this post we'll write a Python to C compiler in Python. This is especially easy to do since Python has a builtin parser library and because a number of CPython internals are exposed for extension writers. By the end of this post, in a few hundred lines of Python, we'll be able...
Notes on software...
A single-node Kubernetes cluster without virtualization or a container registry This post is a recipe for setting up a minimal Kubernetes cluster on Fedora without requiring...
over a year ago
5
over a year ago
This post is a recipe for setting up a minimal Kubernetes cluster on Fedora without requiring virtualization or a container registry. These two features make the system cloud-agnostic and the cluster entirely self-contained. The post will end with us running a simple Flask...
Notes on software...
Generating a full-stack application from a database DBCore can now generate a TypeScript/React CRUD UI that is automatically hooked up to the generated...
over a year ago
8
over a year ago
DBCore can now generate a TypeScript/React CRUD UI that is automatically hooked up to the generated REST API (in Go). The UI has full support for login, viewing (and filtering), editing, and creating database entities. PostgreSQL, SQLite and MySQL are supported. How to use? The...
Notes on software...
Generating a REST API from a database I recently published an alpha version of a code generation tool, DBCore, that reads a...
over a year ago
10
over a year ago
I recently published an alpha version of a code generation tool, DBCore, that reads a database schema from PostgreSQL or MySQL and generates an entire Go API with CRUD operations, pagination, filtering, and authentication. But more than just generating code like xo/xo or...
Notes on software...
RFCs and asynchronous-first culture I hated writing documentation before working on features. But after a while I realized I couldn't...
over a year ago
10
over a year ago
I hated writing documentation before working on features. But after a while I realized I couldn't communicate well enough, even with folks I had a good connection with. It took me a number of mistaken deliveries to get the message. Sketches and mockups Designers solve this by...
Notes on software...
Writing a SQL database from scratch in Go: 4. a database/sql driver Previously in database basics: 1. SELECT, INSERT, CREATE and a REPL 2. binary expressions...
over a year ago
6
over a year ago
Previously in database basics: 1. SELECT, INSERT, CREATE and a REPL 2. binary expressions and WHERE filters 3. indexes In this post, we'll extend gosql to implement the database/sql driver interface. This will allow us to interact with gosql the same way we would...
Notes on software...
Writing a SQL database from scratch in Go: 3. indexes Previously in database basics: 1. SELECT, INSERT, CREATE and a REPL 2. binary expressions...
over a year ago
10
over a year ago
Previously in database basics: 1. SELECT, INSERT, CREATE and a REPL 2. binary expressions and WHERE filters 4. a database/sql driver In this post, we extend gosql to support indexes. We focus on the addition of PRIMARY KEY constraints on table creation and some easy...
Notes on software...
Writing a SQL database from scratch in Go: 2. binary expressions and WHERE filters Previously in database basics: 1. SELECT, INSERT, CREATE and a REPL 3. indexes 4. a...
over a year ago
7
over a year ago
Previously in database basics: 1. SELECT, INSERT, CREATE and a REPL 3. indexes 4. a database/sql driver In this post, we'll extend gosql to support binary expressions and very simple filtering on SELECT results via WHERE. We'll introduce a general mechanism...
Notes on software...
Studying foreign languages with inbox zero The only time I've been able to seriously, rapidly improve my ability to speak a foreign language...
over a year ago
8
over a year ago
The only time I've been able to seriously, rapidly improve my ability to speak a foreign language was through intensive language courses in college. I was forced to actively speak, read, and write Chinese for 6-8 hours a week (1-2 hours every day). Then study another 5-10 hours a...
Notes on software...
Reviewing the Surface Book 2 The first few paragraphs cover what I was looking for and what I considered. Then the review. Why...
over a year ago
9
over a year ago
The first few paragraphs cover what I was looking for and what I considered. Then the review. Why the Surface Book 2 I used a Macbook throughout my professional career until I had the choice a few years ago when I started my current job. Here, I ran Gentoo, then FreeBSD, then...
Notes on software...
Writing a SQL database from scratch in Go: 1. SELECT, INSERT, CREATE and a REPL Next in database basics: 2. binary expressions and WHERE filters 3. indexes 4. a...
over a year ago
8
over a year ago
Next in database basics: 2. binary expressions and WHERE filters 3. indexes 4. a database/sql driver In this series we'll write a rudimentary database from scratch in Go. Project source code is available on Github. In this first post we'll build enough of a parser to...
Notes on software...
A minimal REST API in Java There's a style of Java that is a joy to write. This post will cover how to set up a basic...
over a year ago
10
over a year ago
There's a style of Java that is a joy to write. This post will cover how to set up a basic PostgreSQL-integrated REST API using Jersey and JOOQ in a style not dissimilar to Flask and SQLAlchemy in Python. In particular, we'll try to avoid as much runtime reflection/class-loading...
Notes on software...
Writing a lisp compiler from scratch in JavaScript: 6. an x86 upgrade Previously in compiler basics: 1. lisp to assembly 2. user-defined functions and variables ...
over a year ago
11
over a year ago
Previously in compiler basics: 1. lisp to assembly 2. user-defined functions and variables 3. LLVM 4. LLVM conditionals and compiling fibonacci 5. LLVM system calls This post upgrades the ulisp x86 backend from using a limited set of registers (with no spilling...
Notes on software...
Confusion and disengagement in meetings The quickest way to cut through confusion or disagreement among otherwise amiable and honest folks...
over a year ago
9
over a year ago
The quickest way to cut through confusion or disagreement among otherwise amiable and honest folks is to ask questions. Ask early so you don't waste time. But it's not enough to just ask clarifying questions because the answers won't always be clear. Sounds like Human Interaction...
Notes on software...
Interpreting Go After spending some time at work on tooling for keeping documentation in sync with Go struct...
over a year ago
10
over a year ago
After spending some time at work on tooling for keeping documentation in sync with Go struct definitions I had enough exposure to Go's built-in parsing package that next steps were clear: write an interpreter. It's a great way to get more comfortable with a language's AST. In...
Notes on software...
Administering Kubernetes is hard Kubernetes is easy to use after some exposure; it's pretty convenient too. But it is super hard to...
over a year ago
8
over a year ago
Kubernetes is easy to use after some exposure; it's pretty convenient too. But it is super hard to set up. eksctl is a good tool for folks who don't want to spend hours/days/weeks debugging VPC configuration in 1000s of lines of CloudFormation. None of the other tools seem to be...
Notes on software...
Unit testing C code with gtest This post covers building and testing a minimal, but still useful, C project. We'll use...
over a year ago
12
over a year ago
This post covers building and testing a minimal, but still useful, C project. We'll use Google's gtest and CMake for testing C code. This will serve as a foundation for some upcoming posts/projects on programming Linux, userland networking and interpreters. test/CMakeLists.txt...
Notes on software...
Writing an x86 emulator from scratch in JavaScript: 2. system calls Previously in emulator basics: 1. a stack and register machine In this post we'll extend x86e...
over a year ago
7
over a year ago
Previously in emulator basics: 1. a stack and register machine In this post we'll extend x86e to support the exit and write Linux system calls, or syscalls. A syscall is a function handled by the kernel that allows the process to interact with data outside of its memory....
Notes on software...
Writing a lisp compiler from scratch in JavaScript: 6. LLVM system calls Previously in compiler basics: 1. lisp to assembly 2. user-defined functions and variables ...
over a year ago
9
over a year ago
Previously in compiler basics: 1. lisp to assembly 2. user-defined functions and variables 3. LLVM 4. LLVM conditionals and compiling fibonacci 5. an x86 upgrade In this post we'll extend the ulisp compiler's LLVM backend to support printing integers to...
Notes on software...
Writing an x86 emulator from scratch in JavaScript: 1. a stack and register machine Better yet, take a look at this post walking through emulating x86 ELF binaries in Go: Emulating...
over a year ago
10
over a year ago
Better yet, take a look at this post walking through emulating x86 ELF binaries in Go: Emulating linux/AMD64 userland: interpreting an ELF binary 2. system calls In this post we'll create a small virtual machine in JavaScript and use it to run a simple C program compiled...
Notes on software...
Tail call elimination In this post we'll explore what tail calls are, why they are useful, and how they can be eliminated...
over a year ago
10
over a year ago
In this post we'll explore what tail calls are, why they are useful, and how they can be eliminated in an interpreter, a compiler targeting C++, and a compiler targeting LLVM IR. Tail calls A tail call is a function call made at the end of a block that returns the value of the...
Notes on software...
Writing a lisp compiler from scratch in JavaScript: 4. LLVM conditionals and compiling fibonacci Previously in compiler basics: 1. lisp to assembly 2. user-defined functions and variables ...
over a year ago
11
over a year ago
Previously in compiler basics: 1. lisp to assembly 2. user-defined functions and variables 3. LLVM 5. LLVM system calls 6. an x86 upgrade In this post we'll extend the compiler's LLVM backend to support compiling conditionals such that we can support...
Notes on software...
Responsibility and ownership Responsibility is only possible by granting ownership and setting expectations. If you don't turn...
over a year ago
8
over a year ago
Responsibility is only possible by granting ownership and setting expectations. If you don't turn over ownership, don't expect folks to take responsibility. When you grant ownership and set expectations, you'll be astounded what folks will accomplish without you. I am astounded.
Notes on software...
Interpreting TypeScript In addition to providing a static type system and compiler for a superset of JavaScript, TypeScript...
over a year ago
9
over a year ago
In addition to providing a static type system and compiler for a superset of JavaScript, TypeScript makes much of its functionality available programmatically. In this post we'll use the TypeScript compiler API to build an interpreter. We'll build off of a...
Notes on software...
Writing a web server from scratch: 1. HTTP and sockets Say we have some HTML: <html> <body> <h1>Hello world!</h1> </body> </html> And say we'd...
over a year ago
10
over a year ago
Say we have some HTML: <html> <body> <h1>Hello world!</h1> </body> </html> And say we'd like to be able to render this page in a web browser. If the server is hosted locally we may want to enter localhost:9000/hello-world.html in the address bar, hit enter, make a...
Notes on software...
Writing a simple JSON path parser Let's say we want to implement a simple list filtering language so we can enter a.b = 12 and return...
over a year ago
9
over a year ago
Let's say we want to implement a simple list filtering language so we can enter a.b = 12 and return only results in a list where the a column is an object that contains a field b that is set to the value 12. What would a filter(jsonPath, equals, listOfObjects) function...
Notes on software...
Writing a lisp compiler from scratch in JavaScript: 3. LLVM Previously in compiler basics: 1. lisp to assembly 2. user-defined functions and variables ...
over a year ago
7
over a year ago
Previously in compiler basics: 1. lisp to assembly 2. user-defined functions and variables 4. LLVM conditionals and compiling fibonacci 5. LLVM system calls 6. an x86 upgrade In this post we'll extend the compiler to emit LLVM IR as an option instead of...
Notes on software...
AOT-compilation of Javascript with V8 tldr; I'm working on a AOT-compiled Javascript implementation called jsc. Many dynamically typed...
over a year ago
10
over a year ago
tldr; I'm working on a AOT-compiled Javascript implementation called jsc. Many dynamically typed programming languages have implementations that compile to native binaries: Python: Cython Common Lisp: SBCL Scheme: Chicken Scheme The benefits of compiling dynamically typed...
Notes on software...
Transparency and communication on small teams I saw a post on dev.to that talks about dysfunctional teams. This is a response that...
over a year ago
9
over a year ago
I saw a post on dev.to that talks about dysfunctional teams. This is a response that focuses specifically on how to prevent burnout from overworking. This is aimed at senior/lead engineers and engineering/project managers -- because everyone in a leadership role is responsible...
Notes on software...
Windows It has been six years since I last used Windows for any remotely serious software development. I've...
over a year ago
7
over a year ago
It has been six years since I last used Windows for any remotely serious software development. I've used Ubuntu, Arch, or FreeBSD since. But eventually I spent so much time working around common workplace tasks that I decided to put Windows 10 Pro on my work laptop. Windows...
Notes on software...
Writing a lisp compiler from scratch in JavaScript: 2. user-defined functions and variables Previously in compiler basics: 1. lisp to assembly 3. LLVM 4. LLVM conditionals and...
over a year ago
9
over a year ago
Previously in compiler basics: 1. lisp to assembly 3. LLVM 4. LLVM conditionals and compiling fibonacci 5. LLVM system calls 6. an x86 upgrade In this post we'll extend the compiler to support defining functions and variables. Additionally, we'll require the...
Notes on software...
Make small changes and solve the problems you have Two frustrating things that can happen in an organization are 1) big changes and 2) changes that...
over a year ago
12
over a year ago
Two frustrating things that can happen in an organization are 1) big changes and 2) changes that aren’t clearly associated with a known problem. It’s even worse in that order. These situations tend to happen when a problem remain unaddressed for too long. These situations tend to...
Notes on software...
Writing a lisp compiler from scratch in JavaScript: 1. lisp to assembly Next in compiler basics: 2. user-defined functions and variables 3. LLVM 4. LLVM...
over a year ago
8
over a year ago
Next in compiler basics: 2. user-defined functions and variables 3. LLVM 4. LLVM conditionals and compiling fibonacci 5. LLVM system calls 6. an x86 upgrade In this post we'll write a simple compiler in Javascript (on Node) without any third-party libraries....
Notes on software...
On NYC, Tokyo and Seoul I’ve lived in NYC for the past year — moved here after years in Philly and after growing up in a...
over a year ago
7
over a year ago
I’ve lived in NYC for the past year — moved here after years in Philly and after growing up in a rural community a few hours west of there. My wife is South Korean and last week concluded my second trip to the suburbs of Seoul to visit her family. We finished up that trip with a...
Notes on software...
Why (and how) to read books The last time I read for fun was in elementary school. Since college I knew I must read more, but I...
over a year ago
7
over a year ago
The last time I read for fun was in elementary school. Since college I knew I must read more, but I never forced myself to build the habit. Then three years ago I spent time around my brother and a coworker who were avid readers. This "peer pressure" helped me get started. Since...
Notes on software...
Compiling dynamic programming languages It can be difficult to disassociate the idea that dynamically typed programming languages are tied...
over a year ago
9
over a year ago
It can be difficult to disassociate the idea that dynamically typed programming languages are tied to byte-code interpreters (e.g. YARV Ruby, CPython, V8, Zend Engine, etc.). But for many languages, a compiled implementation also exists. Cython, Chicken Scheme and SBCL are good...
Notes on software...
btest: a language agnostic test runner btest is a minimal, language-agnostic test runner originally written for testing compilers. Brian,...
over a year ago
8
over a year ago
btest is a minimal, language-agnostic test runner originally written for testing compilers. Brian, an ex- co-worker from Linode, wrote the first implementation in Crystal (a compiled language clone of Ruby) for testing bshift, a compiler project. The tool accomplished exactly...
Notes on software...
Writing to be read There is a common struggle in the writing and maintenance of documentation, checklists, emails,...
over a year ago
9
over a year ago
There is a common struggle in the writing and maintenance of documentation, checklists, emails, guides, etc. Each provides immense value; a document may be the key to an important process. The goal is to remove barriers -- to encourage understanding and correct application of...
Notes on software...
Writing a simple JSON parser Writing a JSON parser is one of the easiest ways to get familiar with parsing techniques. The format...
over a year ago
10
over a year ago
Writing a JSON parser is one of the easiest ways to get familiar with parsing techniques. The format is extremely simple. It's defined recursively so you get a slight challenge compared to, say, parsing Brainfuck; and you probably already use JSON. Aside from that last point,...
Notes on software...
Finishing up a FreeBSD experiment I've been using FreeBSD as my daily driver at work since December. I've successfully done my job and...
over a year ago
7
over a year ago
I've been using FreeBSD as my daily driver at work since December. I've successfully done my job and I've learned a hell of a lot forcing myself on CURRENT... But there's been a number of issues with it that have made it difficult to keep using, so I replaced it with Arch Linux...
Notes on software...
Book Review: ANSI Common Lisp Score: 4.5 / 5 Paul Graham and his editor(s) are excellent. His prose is light and easy to follow....
over a year ago
6
over a year ago
Score: 4.5 / 5 Paul Graham and his editor(s) are excellent. His prose is light and easy to follow. The only awkward component of the book's organization is that he tends to use a concept one section before explicitly introducing and defining that concept. I'm not sure yet if this...
Notes on software...
Starting a minimal Common Lisp project If you've only vaguely heard of Lisp before or studied Scheme in school, Common Lisp is nothing like...
over a year ago
7
over a year ago
If you've only vaguely heard of Lisp before or studied Scheme in school, Common Lisp is nothing like what you'd expect. While functional programming is all the rage in Scheme, Common Lisp was "expressly designed to be a real-world engineering language rather than a theoretically...
Notes on software...
Interview with the D Language Blog: BSDScheme This is an external post of mine. Click here if you are not redirected.
over a year ago
Notes on software...
First few hurdles writing a Scheme interpreter I started working on BSDScheme last October, inspired to get back into language implementation after...
over a year ago
11
over a year ago
I started working on BSDScheme last October, inspired to get back into language implementation after my coworker built bshift, a compiler for a C-like language. BSDScheme is an interpreter for a (currently small subset of) Scheme written in D. It implements a few substantial...
Notes on software...
Deploying FreeBSD on Linode unattended in minutes I became a FreeBSD user over 2 years ago when I wanted to see what all the fuss was about. I swapped...
over a year ago
8
over a year ago
I became a FreeBSD user over 2 years ago when I wanted to see what all the fuss was about. I swapped my y410p dual-booting Windows / Ubuntu with FreeBSD running Gnome 3. I learned a lot during the transition and came to appreciate FreeBSD as a user. I soon began running...
Notes on software...
Walking through a basic Racket web service Racket is an impressive language and ecosystem. Compared to Python, Racket (an evolution of Scheme...
over a year ago
6
over a year ago
Racket is an impressive language and ecosystem. Compared to Python, Racket (an evolution of Scheme R5RS is three years younger. It is as concise and expressive as Python but with much more reasonable syntax and semantics. Racket is also faster in many cases due in part to: JIT...