Sign in

Kylee Tilley

@testingrequired.com
326 followers 695 following 1.9K posts

Changing hearts & minds about dev & testing. ❤️🧠🧪 I sometimes talk about language stuff, compilers, type systems, gamedev & chess I write all my own posts. Expct typos! Some stuff I work on: github.com/kyleect Rarely updated: testingrequired.com

PostsRepliesMedia
Kylee Tilley @testingrequired.com · 29/09/2026
Almost 90% line coverage, 95%+ function coverage. 2346 E2E tests + a few dozen unit tests. There's a lot of low hanging fruit that could push this close to 98% across the board.
A code coverage report showing several programming language implementation files.
100
Kylee Tilley @testingrequired.com · 15/09/2026
More shots from Cyberpunk.
000
Kylee Tilley @testingrequired.com · 14/09/2026
I'm close to getting (unbounded) generics mostly working. Don't mind the lambda syntax, I'm working on that. I'm still running in to situations where type params aren't available. Like the Box#map method, `T` from Box[T] isn't found for the lambda's type signature `fun (T) => U`
Screenshot of an implementation of a Box[T] struct in my language

```
struct Box[T] {
  pub var value: T;
}

impl Box[T] {
  pub fun new(value: T): Self[T] = Self {
    value: value
  };

  pub fun get(self): T = self.value;

  pub fun map[U](self, map: fun (T) => U): Self[U] = Self.new(map(self.value));
}

let box_a = Box.new(5);
let box_b = box_a.map(fun (value: f64): f64 { value * 2 });

print box_a.get(); // 5
print box_b.get(); // 10
```
110
Kylee Tilley @testingrequired.com · 06/09/2026
A very very basic version of traits has been merged. No, this isn't Rust.
A kirby source file implementing a string builder struct

struct StringBuilder {
    var value: Array;
}

impl StringBuilder {
    pub fun add(self, add: string): Self {
        arrPush(self.value, add);

        self
    }
}

impl Default for StringBuilder {
    fun default(): Self = Self { value: [] };
}

impl Display for StringBuilder {
    fun toString(self): string = arrJoin(self.value, "");
}

let builder = StringBuilder.default()
    .add("Hello")
    .add(" ")
    .add("World");

print builder.toString();
000
Kylee Tilley @testingrequired.com · 31/08/2026
As someone with severe ADHD, let me tell you this is an accomplishment.
58 day streak
000
Kylee Tilley @testingrequired.com · 14/08/2026
I'm still really happy with this test setup. It uses the languages own CLI. All the test related files are pure text snapshots from the CLI's outputs. The runner itself is a single bash file and that includes updating snapshotting. It makes writing E2E tests really easy to write.
A table explaining the different files relating to a single language test

test.krb	Source test file
test.krb.out	Expected stdout output
test.krb.err	Expected stderr output
test.krb.exit	Expected exit code
test.krb.in	Text sent to stdin
test.krb.env	Environment Variables
100
Kylee Tilley @testingrequired.com · 09/08/2026
I should watch the matrix again soon
A shot looking up in an alley, the whole shot tinted green
100
Kylee Tilley @testingrequired.com · 08/08/2026
Cyberpunk is a gorgeous game.
A foggy walk way light by lights
100
Kylee Tilley @testingrequired.com · 08/08/2026
I've been having too much fun with photo mode.
Street photo during a sand storm Looking up at a building during a sandstormLooking up at a building during a sandstormLooking up at a building during a sandstorm
110
Kylee Tilley @testingrequired.com · 08/08/2026
I've been playing Cyberpunk lately.
A rainy street scene at nightA walk way in Night CityA half lit door at the end of a dark building topNight city skyline at night
210
Kylee Tilley @testingrequired.com · 03/08/2026
I'm toying with ideas on how to add static fields to structs. Right now static methods are just methods in the `impl` block that aren't passed `self`.
Example code in my programming language.

There is

- A "struct Point" declaration with two instance fields: x, y
- A "static Point" block defining static fields and methods
- A "impl Point" block defining instance methods
100
Kylee Tilley @testingrequired.com · 24/07/2026
I was losing in this game bad before this. Sac the queen then put three more on the board put of spite.
010
Kylee Tilley @testingrequired.com · 24/07/2026
After a month of hard work the conversion from single pass to a multi pass compiler is almost done Before: scanner & compiler After: scanner & lexer -> parser -> compiler Tooling will be easier to implement. You can generate tokens and an AST as actual values. They're not ephemeral anymore!
Screenshot of a draft PR in github titled Implement a multipass compiler

+3,484 -1,147

Introduce `lex` function which produces `TokenStream`

Introduce `parse` function which consumes `TokenStream` and produces `AstNode**`

Update `compile` function to consume `AstNode**` to produce bytecode

Forward referencing functions (use before declaring)
200
Kylee Tilley @testingrequired.com · 14/07/2026
More garbage behavior leaking into Google apps After a few minutes and restarting the app a few times it fixes it self.
Screenshot of YouTube app where the styling/layout is messed up.
100
Kylee Tilley @testingrequired.com · 14/07/2026
Top notch design Google. That save button can not be tapped.
An app screen for selecting an icon

The save button is blocked by the phones bottom button bar
100
Kylee Tilley @testingrequired.com · 06/07/2026
Me to this fledgling language. Seriously, no more declare before use! That's a huge win. Static analysis is actually possible now.
2 panel comic. Bob from Bob's Burgers

Panel 1: I mean, I don't want to oversell it.
Panel 2: but it changes you forever
000
Kylee Tilley @testingrequired.com · 27/06/2026
I made a simple TUI (using ratatui) just to test things.
000
Kylee Tilley @testingrequired.com · 24/06/2026
Another game idea from the backlog. A farming RPG like (Rune Factory, Stardew Valley) made with Bevy. Each movement or action increments the time. Most of the time was spent implementing the date time logic. A separated into it's own crate of course.
220
Kylee Tilley @testingrequired.com · 20/06/2026
I finally added code highlighting to my blog posts! 🎉
Screenshot of a blog post that features a code snippet with syntax highlighting
000
Kylee Tilley @testingrequired.com · 19/06/2026
A (buggy and unfinished) terminal hacking game in the style of Fallout. Written in Rust with Bevy.
110
Kylee Tilley @testingrequired.com · 07/06/2026
After several hours on the road, we've arrived.
Photo of a bridge against a blue sky with clouds Photo of a country highwayPhoto of some odd looking clouds
100
Kylee Tilley @testingrequired.com · 28/05/2026
We've all seen the time knife
012
Kylee Tilley @testingrequired.com · 26/05/2026
So I'm sitting here trying to figure out why the compiler is still outputting OP_PROPERTY on instance field access instead of the new OP_FIELD op. This input source code generates 834 lines of trace logs.
class Class {
    var fn;
}

var instance = Class();

fun fn() {
    print "Hello World";
}

instance.fn = fn;

instance.fn();
100
Kylee Tilley @testingrequired.com · 13/05/2026
I'm trying to get better at regular releases versus working on the language for months. github.com/kyleect/clox
Release notes for v0.2.0
110
Kylee Tilley @testingrequired.com · 10/05/2026
Ok so maybe it's time to organize the tests into directories 😅
Screenshot github showing a warning in the language's tests directory

Sorry, we had to truncate this directory to 1,000 files. 107 entries were omitted from the list. Latest commit info may be omitted.
000
Kylee Tilley @testingrequired.com · 10/05/2026
Just 12 files and 344 lines are actual implementation here. Everything else is either documentation, or tests (nearly all of it).
A github PR showing 237 files changed. Lines changed: +5602, -11
100
Kylee Tilley @testingrequired.com · 10/05/2026
Ok, probably more than 900 tests... 🥲
A markdown list showing new native functions added for handling arrays. More than half are marked as not yet completed
100
Kylee Tilley @testingrequired.com · 10/05/2026
Now that's a name I haven't heard in a long time.
DivX is a family and brand of video codec products developed by DivX, LLC. There are three DivX codecs: the original MPEG-4 Part 2 DivX codec, the H.264/MPEG-4 AVC DivX Plus HD codec and the High Efficiency Video Coding DivX HEVC Ultra HD codec. The most recent version of the codec itself is version 6.9.2, which is several years old. New version numbers on the packages now reflect updates to the media player, converter, etc.
000
Kylee Tilley @testingrequired.com · 02/05/2026
My entire test framework for this C project is a single bash file. - E2E - Snapshot testing - Asserts expected stdout, stderr, exit code - Inputs per test file: stdin, env vars Right now I have 429 tests generated from 143 *.lox files.
Screenshot from a test run

Total: 429 | Passed: 429 | Failed: 0 | Skipped: 0 | Suites: 143
210
Kylee Tilley @testingrequired.com · 02/05/2026
Syntax highlighting and some very simple hover text implementation. Tooling always makes it feel real.
000
Kylee Tilley @testingrequired.com · 02/05/2026
I've added enough native functions to the language make really basic applications
A very simple cat implementation in clox
110
Kylee Tilley @testingrequired.com · 09/04/2026
I think this is the first bit of brilliance I've seen in C. This bit (no pun intended) really made C click for me. The power of memory control outside of manual memory management. 🤯
An excerpt from "Crafting Interpreters" showing how "embedding" a struct as the first field you can simulate inheritance by taking advantage of how structs are laid out in memory
000
Kylee Tilley @testingrequired.com · 25/03/2026
Has software you use gotten significantly worse in the last year or so? It's wild to think it's almost certainly due to all slop being frantically shoveled in to code bases from all angles.
Kramer saying "Loves it. Eats it up. Eats the slop. Born to slop."
011
Kylee Tilley @testingrequired.com · 12/02/2026
So I replaced the textarea, where you edited the request file directly, with request, config, and optional response assertion forms. Only a handful of things left on this "draft file" feature.
100
Kylee Tilley @testingrequired.com · 09/02/2026
This is also a first step towards editing the request files on the file system. Right now they are read only/run only.
Screenshot of the app. A draft request file has been created and it defaults to the "edit" tab for the draft.Screenshot of the app. This is showing the "run" tab of the draft. It's a form that lets you run the request defined in the draft.Screenshot of the app. It's the results of the ran draft request.Screenshot of the app. It's the results of the ran draft request but on the history page.
100
Kylee Tilley @testingrequired.com · 09/02/2026
I started adding "draft" request files to this REST client. The primary purpose of this client is to run request files already in your project. This change will let you create temporary request files, run them, and eventually save them to your project if they're useful.
Screenshot of a web app screen. It shows header text "reqlang", a side nav of links, and a main section.

The main section has two buttons. One button for opening files, and a new button for creating a draft request file.
100
Kylee Tilley @testingrequired.com · 09/02/2026
Nested lists are still my primary form of organization and note taking
A nested list of todos on a project I'm working on. Some items have a bold "Requirement" at the beginning.
011
Kylee Tilley @testingrequired.com · 31/01/2026
Music/sound is central to the tiny game jam game I'm making so I got to spend some time today smashing sound together. 🤩
A small music production setup

- Macbook running Ableton Live
- Launchpad
- Mixer midi controller
- Full size midi keyboard
100
Kylee Tilley @testingrequired.com · 31/01/2026
My first night's progress. It's not much yet but it's a solid base for tomorrow.
010
Kylee Tilley @testingrequired.com · 24/01/2026
Starting to write some development docs for the app. This also involves cloning a clean copy of the repo and running the watch script. I got caught by surprise writing the github workflows that my local copy of node_modules was hiding a bug in the build process.
There are two binaries produced on build: reqlang-web-browser and reqlang-web.

reqlang-web-browser

The reqlang-web-browser binary is the server and client. The server acts as the backend API and statically serves the built client. This is primarily used during development.

Image of a simple architecture diagram showing a server and client connected

reqlang-web

The reqlang-web binary is the server and client wrapped in a native web view. This is primarily used when running as a standalone app.

Image of a simple architecture diagram showing the webview, server and client connected
010
Kylee Tilley @testingrequired.com · 22/01/2026
Lots of UI improvements, refactoring behind the scenes, and screenshots added to the README! github.com/testingrequi...
Screenshot of the home dashboardScreenshot of running a requestScreenshot of running a second requestScreenshot of the run history
010
Kylee Tilley @testingrequired.com · 17/01/2026
I signed up for a local gamejam after not touching game development for over a year (maybe two years now?). We'll see how this goes 😅 Image credit: www.reddit.com/r/Unity3D/s/...
The "putting on clown make-up" meme

1. I'll keep the scope small 
2. Okay, one extra feature 
3. Procedural generation! 
4 What about adding co-op?...
020
Kylee Tilley @testingrequired.com · 10/01/2026
If anyone wonders why I don't generally post anything related to the horrible world events going on out there...
Andor looking emotionally emotionally broken at the end of S2E8
000
Kylee Tilley @testingrequired.com · 28/12/2025
post a perfect album from the 90s that isn't nirvana, soundgarden, pearl jam, or alice in chains.
Album cover: The Fragile by Nine Inch Nails
000
Kylee Tilley @testingrequired.com · 26/12/2025
It's me and one other person in the office 😅
Photo of a parking garage. There's a sign that says PARK
000
Kylee Tilley @testingrequired.com · 22/12/2025
The run history page as more filters and those filters can be linked to via url search params.
000
Kylee Tilley @testingrequired.com · 22/12/2025
I made a lot of UI refinements in the last few days.
110
Kylee Tilley @testingrequired.com · 21/12/2025
I received two of my Xmas gifts early 😍🎉
Book cover: Crafting Interpreters by Robert NystromBook cover: Designing Software Synthesizer Plugins In C++ With Audio DSP by Will C. Prickle
010
Kylee Tilley @testingrequired.com · 20/12/2025
I love to build tooling. Want to parse then filter the AST? It's very nice having the project be 95% implemented and have so much tooling already done. I'm using that tooling to build more tooling 💪
Screenshot of the reqlang CLI parsing to AST then being piped to jq to filter for comment nodes in the AST.
010
Kylee Tilley @testingrequired.com · 20/12/2025
And the request file for using that access token to get user info
```%config
[[prompts]]
name = "token"

[envs.dev]
[envs.qa]
[envs.prod]
```

```%request
GET http://localhost:3003/{{@env}}/userinfo HTTP/1.1
Authorization: Bearer {{?token}}

```
100