Minimal Systems
Posted Aug 17th, 2025
- How complicated, robust, performant, scalable can a system be that is created with a minimal toolset?
- How minimal can the toolset of a complicated, robust, performant, scalable system be?
I spend an insane amount of time on the computer and have for many years. I find software deeply facinating. I feel that there are secrets still hidden within the nature of computing.
However, computing is just a piece of the puzzle. The world is an integrated system - every part is of at least some interest to me.
Most important is my wife Anna, Mr. Moose, Calvin, and our family and friends.
Posted Aug 17th, 2025
Posted Aug 14th, 2025
Updated Aug 17th, 2025
A download code hit my inbox the other day for the new AWS-backed Kiro AI IDE.
The Kiro AI IDE boasts "spec-driven development" as its unique take on AI assisted coding. This had me excited initially. I have advocated for something like spec-driven development for years - before vibe coding was coined a term.
After a couple hours of using it to build a complex enterprise-grade home health agency management system / EHR system, I conclude the following:
Overall, Kiro, at this early stage, provides very little structure over the typical AI assisted coding workflow established by other tools like Cursor, Copilot, Claude Code. It needs to be more structured, more streamlined, otherwise it feels like a weird middleground that is not better than vibe coding.
P.S. A few folks have developed workflows with other tools that are inspired by Kiro/spec-driven development. This is my recommendation for any AI coders. Fork one of these workflows or create your own that is agnostic to any specific AI coding brand. You really dont want to be locked into a specific tool right now.
Posted Aug 14th, 2025
I recently went down the rabbit hole of learning Prolog, one of the original logic programming languages. In simple terms, Prolog allows you to define a knowledge base of facts and rules, then query the knowledge base to ask questions or find solutions that satisfy all the constraints.
I've yet to find a real use-case for Prolog in my line of work. Though, I will keep it as a tool in my toolbox, because I have a gut feeling it will be useful one day. Or at least, the understanding of logic programming will be useful.
Additionally, I hypothesized that an LLM could produce Prolog facts, rules, and queries in two useful ways. 1. simply dumping its internal knowledge into Prolog knowledge 2. translating ambiguous, fuzzy human language into unambiguous, precise Prolog. I found that LLMs are no more capable of doing this for Prolog than other programming languages or formalisms. Also, LLMs suffer from context windows and context rot which limits the size of the Prolog knowledge base it can reason over - akin to codebases scale issues in other languages. Lastly, trust in LLM output remains low, and that undermines the guarantees Prolog has to offer.
Posted May 7th, 2025. Updated August 14th, 2025
Three back of the napkin statements that I believe hold true about artificial intelligence:
Posted May 5th, 2025
On many occasions i've stuffed data into a json column instead of a proper normalized schema.
Most of the time, i'm just trying to implement something fast, for one reason or another. Rarely is there a true technical justification.
However, there are good use cases for json columns:
There could be more, but the above are the reasons i've encountered.
Posted May 4, 2025
My blog was previously a multi-page blog statically generated using my Minimum Static Site Generator (minssg). 5-20s from commit to published. Yet, that's not simple enough for me. Still needed the Bun runtime, a Github Action, template syntax, etc.
Introducing, single file site:
and a couple other things about this new site:
I suspect I could have 100s of blog posts on this page before noticing any latency. And with modern HTTP streaming, I might not even notice the latency because the first few posts load instantly and the rest stream in below the viewport.
This desire for ultra minimalism is catalyzed by my day job experience where it takes 10m to deploy the simplest frontend update. THOUSANDS of indirect dependencies, npm vulnerability warnings, constant breaking changes, bugs unfixed for years, abstraction lock-in, etc.
Posted Aug 22, 2024
Good, Bad, or Ugly
Recently came across a software company with over a dozen patent numbers listed at the bottom of their website. In looking at a few I noticed a pattern.
The patent filing includes a beefy PDF specification thats around 40 pages long. The core idea is usually captured by the abstract and perhaps a single diagram. The rest of the PDF is filled in with many different use case examples, variations of the same diagram, and pages of text explaining each diagram.
Most importantly I noticed that the core idea is very high-level. The specification is NOT nearly enough instruction to develop the actual thing. It takes considerable time and technical effort to take one of these ideas and create an actual working system.
So i'm left wondering:
Do these patents exist to protect ideas that would otherwise be too easy to "steal" or re-invent independently?
Is the idea worth more than the implementation? Perhaps, but implementation is hard, and there's almost always multiple ways of doing it, each way with pros and cons over others. There's so much room for competition just within implementation of the same idea.
If I were to build a system similar to the one described in one of these patents - where is the line of infringement? What can be similar and what must be different?
Posted on August 17th, 2024
Solve puzzles - make money.
I discover the ARC-AGI challenge a couple months ago.
It is a challenging series of puzzles with human scores around 80% while the state-of-the-art algorithm has achieved only 43% as of August 2024.
ARC-AGI is explicitly designed to compare artificial intelligence with human intelligence. To do this, ARC-AGI explicitly lists the priors knowledge human have to provide a fair ground for comparing AI systems. These core knowledge priors are ones that humans naturally possess, even in childhood. ... ARC-AGI avoids a reliance on any information that isn’t part of these priors, for example acquired or cultural knowledge, like language.
Discovering ARC-AGI reminded me of a thought experiment I was obsessed with a few years ago. An idea of "Universl Econimic Value".
Adjacent to universal basic income (UBI), UEV is where there is some way to capitilize on the basic value of human intelligence to give everyone some baseline economic worth.
Physical labor is UEV historically, but we observe how wages stagnate while costs explode, and we also observe how labor, of all types, becomes automated overtime.
ARC-AGI rekindled the idea by demonstrating there is still some fundamental disparity between human and machine intelligence.
What if any human could earn a wage by completing small cognitive tasks within a larger information system. Similarly to how car manufacturing pipelines work - where there are big complicated machines doing large portions - alongside humans doing smaller more intricate segments.
Posted on August 13, 2024
Like wikipedia but queryable, highly structured, programatically interactive.
Like Wolfram Language but open source, open data, and a simpler interface.
The schema of this database and query interface must be intuitive, and grow at a significantly slower rate than the data. If the schema and interface grow in complexity equal to the data - then it adds litte to no value. I'm not sure if it's possible to find a schema and interface that are static. I have to imagine at least in the beginning, as data is added, new requirements of the schema and interface will be discovered frequently.
A semi-automated or fully-automated ingestion pipeline will be key to success. In comparison, Wolfram Language started development over 30 years ago. There is a massive amount of knowledge and it exists in an unstructured form or has a different structure. My hope is that scripts and language model technology can aid in the import of knowledge into the system from sources like Wikipedia, academic papers, open source projects, text books, and more.
Large language models are in some sense type of knowledge engine - just with a different architecture than imagined here. LLMs are neural, stochastic, evolved via gradient descent, tokens in and tokens out. This is a very powerful type of knowledge engine. However, the type of knowledge engine I'm talking about is more classical, built on a relational/graph database, with a query interface. The advantages of the classical type of knowledge engine is efficiency (speed, scale, energy), structure/determinism, and interpretability. The beauty is that both types of knowledge engines compliment one another.
Posted August 12, 2024
One of the most important topics in the history of human technology.
Cellular agriculture focuses on the production of agricultural products from cell cultures using a combination of biotechnology, tissue engineering, molecular biology, and synthetic biology to create and design new methods of producing proteins, fats, and tissues that would otherwise come from traditional agriculture.[1] Most of the industry is focused on animal products such as meat, milk, and eggs, produced in cell culture rather than raising and slaughtering farmed livestock which is associated with substantial global problems of detrimental environmental impacts (e.g. of meat production), animal welfare, food security and human health.
— Wikipedia
Further scaling will require commercial production in significantly larger facilities than what currently exists. Scaling will also require solving an array of complex challenges that will influence the cost of production. These challenges span five key areas: cell lines, cell culture media, bioprocess design, scaffolding, and end product design and characterization.
— Good Food Institute
Posted on August 8, 2024
Most programming languages drop you off the IO cliff, leave you in the middle of turing complete nowhere, invoice you after "it works on my machine".
We end up installing huge graphs of dependencies, some well maintained, some not, some secure, some vulnerable, some synergize with eachother, many don't.
We end up paying for and fetching against third-party APIs to do things our language cannot do, or there is no open source package for, or our hardware cannot do.
We end up setting up docker stacks, kubernete clusters, "App Platform" stacks, insert orchestration abstraction here, composed of proprietary and open source images that are wired together to have some emergent behavior.
We use postgres or msql because we need persistence, it's too hard to manage a database, so we use managed database service in the cloud, but those managed services have bad DX and are limited so we use PaaS that are wrappers over the same managed service.
We don't test our systems - or orchestrate dependencies, mocks, pipelines, headless browsers wrapped in SaaS products, to give developers who don't test a reason to stick to their ways.
Some language ecosystems are better at X, don't have problem Y, can do Z, can't do V, language U is better than language P for B but not A, good for E but slow for anything else. Language 123 is perfect and solves all problems but won't be 1.0 for 10 years. Language AAA solves 90% of all problems, but it doesn't have any open source packages I can leech off of to build an app - and I'll still be fired for using it in production even if it can serve 10 billion hello world requests per second.
We write our code on OS 1 but it doesn't work on OS 2, and we search the internet for wrappers that will port it to mobile, or we'd like to run it on an Arduino that has 2kb of flash memory but a hello world has 4MB runtime overhead.
Making computers is insaley insanely insanely complicated. Many many many humans are needed to build one like we expect today. Software is also quite complicated. Many many humans are needed to develop the stuff we use today. It is a shock that any of it works at all.
So many humans involved makes things even more complicated. There is intrinsic complexity to computation and engineering - but emergent complexity in so many humans developing the technology in parallel.
Standards and protocols are something we humans developed to wrangle the mess. k is a protocol - a way to talk to computers and for computers to talk to each other.
Posted on August 6, 2024
javascript object syntax over sqlite
GITHUB SOURCE CODEi've long felt there could be a more idiomatic database for javascript.
i.e. one that feels more like javascript and less an SQL interface
Posted August 3, 2024
Just completed the first pass at writing a basic TCP relay server "Written in Rust"™️®. Getting Rust programs to compile has a similar feeling of doing a newspaper sodoku. Its been a good learning experience.
The purpose of this tcp relay server is to eventually act as a relay for replicas in a distributed pubsub cluster. Replicas that receive a message from client A and need to broadcast to client B that is connected to another replica will broadcast the message through the relay.
Without the relay server, the replicas would need to connect to each other directly, which is a possible alternative btw.
Source codePosted on August 1, 2024.
Update on August 8, 2024: I'm thinking about jsolite instead.
Can S3 be used in place of a database? Should S3 be used in place of a database?
I saw a comment on stackoverflow "s3 wasn't designed for that". Perhaps they're right, but this is just an excercise at this point. If it were to work out and actually be good for some situations - then fantastic! If it sucks - then I know more about databases and distributed systems.
Posted on July 31, 2024. Update on August 3, 2024
Today I'm starting a thought diet. Here are the guidelines:
I'll keep this page updated (I think) as I go.
a few days later, i'm doing ok with it. I have violated the first guideline several times. I give myself slack, it's a longterm lifestyle goal, not a fad.
Peace and love,
Kole