RSSAmplifier

Blog

Gavin Ray Blog

gavinray97.github.ioRSS feed ↗16 posts

Latest posts

Design by Contract and effects are essential for LLM-generated code

As LLMs write more code, contracts and effect systems become essential tools for constraining behavior, exposing side effects, and verifying implementations.

Building from Zero After Addiction, Prison, and a Felony

I spent ages 14-16 in a maximum-security juvenile prison, became a felon at 19, lost almost everything to addiction, and later rebuilt my life through software, open source, and a few people who took a chance on me. This is the condensed story, written for anyone wondering whether they have a future.

The Race to Become the Context Layer for Agents

The next data platform may be less about storing data and more about deciding what AI agents should know, trust, and act on.

Bypassing noexec with memfd_create(2)

Using Linux's memfd_create(2) syscall to load shared libraries and execute binaries entirely from memory, bypassing noexec restrictions without ever touching disk.

Disposable Software: When generating code costs less than finding it

LLMs have made generating code nearly free, but maintaining it hasn't changed. On the growing plague of code that shouldn't exist and the discipline of searching before building.

The Absurdity of the term "AI Engineer"

Integrating a third-party LLM SDK does not make you an AI Engineer: a rant on the inflation of job titles in the age of ChatGPT wrappers.

Experimenting with SQL:2023 Property-Graph Queries in Postgres 18

Hands-on guide to the upcoming SQL/PGQ graph syntax using a patched Postgres 18 beta.

Psychedelics as Tools: Reflections After 20+ Compounds and a Decade of Experiments

Reflections and hard-won lessons from a decade exploring over 20 psychedelic compounds.

AI SQL Generation: Overcoming dialect-specific syntax errors

A discussion on techniques available to overcome semantic errors in syntax when generating dialect-specific SQL

What good are Record Patterns in Java? An example based on Spark's Catalyst Optimizer and it's Tree Rewriting Rules

A tutorial on how to use Java's new Record Patterns feature to write powerful, concise pattern matching code for usecases like AST transformations and rewrite-rules in compiler passes.

Building a PostgreSQL Wire Protocol Server using Vanilla, Modern Java 21

A dual-purpose tutorial to 1) Demonstrate how to implement the Simple Query Protocol, where Java is an implementation detail; 2) Show practical examples of most of the new features since JDK 17, including Records, Sealed Types, Pattern Matching for Switch, Virtual Threads, and Panama Foreign-Function & Memory API.

Adding Design-by-Contract [[invariant]] conditions to C++, via a GCC plugin

Design-by-Contract's invariant attribute allows you to enforce important properties of systems and data structures, making it an incredibly useful tool for developers. In this blog post, we'll be exploring the development of a GCC plugin that adds support for [[invariant]] conditions in C++ classes and structs. We'll also be looking at an example of how invariant can be used to improve the…

A Day Without a Copilot: Reflections on Copilot-Driven Development

A reflection on the impact of language models like Github Copilot on the experience on authoring software and the role of the developer

Building a high-performance database buffer pool in Zig using io_uring's new fixed-buffer mode

In this post, we will explore how to build a high-performance database buffer pool in Zig using io_uring's new fixed-buffer mode.

Panama: Not-so-Foreign Memory. Using MemorySegment as a high-performance ByteBuffer replacement.

An overview of how the Panama Foreign Memory API can be useful outside of foreign/native applications

Building a Query Expression Language in Kotlin, plus dynamic SQL Generation using jOOQ

A tutorial on building a Query Expression Language/AST in Kotlin and implementing SQL generation