Kylee Tilley

Kylee Tilley

@testingrequired.com

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: https://github.com/kyleect Rarely updated: testingrequired.com

335 followers696 following1.9K posts

Kylee Tilley reposted

make your programming language playgrounds usable on mobile please. don't make it more torturous than it is already

Kylee Tilley reposted

Replying to @dollspace.gay

After all, if an autistic person is expected to learn an entire foreign social grammar, why isn't an allistic person expected to learn even a little of theirs?

The current E2E suite for the language. Total: 3369 | Passed: 3369 | Failed: 0 | Skipped: 0 | Suites: 1123 Overall coverage rate: source files: 34 lines.......: 91.5% (8616 of 9420 lines) functions...: 97.5% (699 of 717 functions)

Powered by a single bash file running 1123 source files through the CLI + test snapshots against stdout, stderr, and exit code. Takes about 25~ seconds to run without any parallelization.

I was pairing with a dev who commented on the fact that I always resolved merge conflicts by hand versus using a UI. I joked that it's because I'm a control freak and without missing a beat responded "Yup." 😅 Let me tell you about my experiences with agentic coding these last 3 months...

View full thread

It was actually an enlightening conversation as I could tell this IC, with 30+ years of .NET enterprise experience and extremely strong opinions on systems design, was fully in on telling the agent what to build, not how to build it.

Just to emphasize how strongly opinionated this IC was, who will literally be retiring in months, he asked for an additional interview to talk more about system design. I got the job.

I was pairing with a dev who commented on the fact that I always resolved merge conflicts by hand versus using a UI. I joked that it's because I'm a control freak and without missing a beat responded "Yup." 😅 Let me tell you about my experiences with agentic coding these last 3 months...

View full thread

The interview went well, they scheduled a second one that was supposed to be with an executive if they wanted to offer but it was the IC again. He grilled me on my thoughts on system design, on software delivery, and building robust systems. This spoke to me, it's in my handle here.

When answering his questions, I talked about my thoughts on designing for testability, on the development practices I strongly align with. To my surprise, the IC dismissed these ideas with the idea that with agentic coding, none of that is important any more. This struck at my core.

I was pairing with a dev who commented on the fact that I always resolved merge conflicts by hand versus using a UI. I joked that it's because I'm a control freak and without missing a beat responded "Yup." 😅 Let me tell you about my experiences with agentic coding these last 3 months...

View full thread

I'm curious how someone could be such a full believer after my experiences. I asked them a lot of questions to understand because they were clearly very experienced devs. How were they actually using it?

I thought it was interesting the approach was using agents to document at first. When this senior IC was picking up support stories, using the agent to document what the APIs, libraries, functions, actually did. Documenting it in to a huge markdown wiki + skills while the IC reviewed it.

I was pairing with a dev who commented on the fact that I always resolved merge conflicts by hand versus using a UI. I joked that it's because I'm a control freak and without missing a beat responded "Yup." 😅 Let me tell you about my experiences with agentic coding these last 3 months...

View full thread

What was interesting to me was how they were using agents. These were 50 java/spring boot services/libraries and that senior IC about to retired? A C# dev their entire career. No joke. I luckily have a ton of java/spring boot experience.

After that the interview was entirely focused on system design at a high level. The senior IC is a full believer full agentic coding where you tell it what to build, not how. The control freak in me is twitching a little. The tester in my is reeling in my chair.

I was pairing with a dev who commented on the fact that I always resolved merge conflicts by hand versus using a UI. I joked that it's because I'm a control freak and without missing a beat responded "Yup." 😅 Let me tell you about my experiences with agentic coding these last 3 months...

View full thread

They were also very open about this team being the first to be using agentic coding at a large level. They were looking for a senior level developer to take over the support side of things so a replacement system could be developed by the IC dev about to retire. I didn't know what to think honesty.

I asked a lot of questions. I had JUST gotten access to Junie in my then current role and it was complete garbage if I can be honest. An agent harness built in to a Java focused IDE that never once was able to run the tests in maven or gradle. It was bad. It left a terrible taste in my mouth for AI.

I was pairing with a dev who commented on the fact that I always resolved merge conflicts by hand versus using a UI. I joked that it's because I'm a control freak and without missing a beat responded "Yup." 😅 Let me tell you about my experiences with agentic coding these last 3 months...

View full thread

So back to my current role. So 50~ APIs & libs exposing a common interface for data from a range of sources out to app dev teams to use. The two senior ICs that have been developing and maintaining this retired. The only dev on the team is a senior architect about to retire. I have an interview.

The interview is /w a lead architect & the senior architect (who is months from retiring himself) that was keeping lights on so the app dev teams had access to this data. So clearly I'm curious about the "AI augmented" phrasing and they're very open to tell me the situation with the 2 retired devs.

I was pairing with a dev who commented on the fact that I always resolved merge conflicts by hand versus using a UI. I joked that it's because I'm a control freak and without missing a beat responded "Yup." 😅 Let me tell you about my experiences with agentic coding these last 3 months...

View full thread

I mentioned being a control freak when it comes to dev & honestly its less about control and more about understanding the systems at work. That is a direct factor in my enjoyment with coding. Analyzing the problem, designing a solution, and iterating. Vibe coding does not check that box for me.

I have to have hands at the wheel at all times. I care how something is implemented, even if the promise of AI exceeded our expectations. The idea of software being a blackbox is absurdist. Have you worked in enterprise software before? We tried speccing out behavior with gherkin already... Come on

I was pairing with a dev who commented on the fact that I always resolved merge conflicts by hand versus using a UI. I joked that it's because I'm a control freak and without missing a beat responded "Yup." 😅 Let me tell you about my experiences with agentic coding these last 3 months...

View full thread

I rejected code at a 20:1 ratio easily. It didn't feel like a performance gain. The bigger the task, the worse the rejection rate. It was frustrated as context slowly gets polluted and the problem got worse.

I was clear to me any AI usage during development was best, for me, when it's tiny and focused. When it was drudge work, not design work. For me telling it how to build worked better than what to build. I still feel this way...

I was pairing with a dev who commented on the fact that I always resolved merge conflicts by hand versus using a UI. I joked that it's because I'm a control freak and without missing a beat responded "Yup." 😅 Let me tell you about my experiences with agentic coding these last 3 months...

View full thread

Play testing was instant so having hands on the wheel was easy. But this was a well known algorithm. No heavy lifting here at all but that work flow of a tiny piece, rigorously reviewed and tested felt ok to me. Ok enough to see there might be use here.

That's how my AI uses with coding went for a few months up to, or to explore why code I wrote didn't work the way I expected. I didn't trust anything it said but it would atleast give me starting points.

I was pairing with a dev who commented on the fact that I always resolved merge conflicts by hand versus using a UI. I joked that it's because I'm a control freak and without missing a beat responded "Yup." 😅 Let me tell you about my experiences with agentic coding these last 3 months...

View full thread

Those two senior level ICs both retired at the same time. They were an all knowing, doing a lot of "hidden" work to keep things going and it was a complete silo. When I applied for the role, I missed the part about it being an AI "augmented" role. I noticed an hour before first the interview.

At this point I had used LLMs to explore implementation ideas at a small scale. My first attempt implementing Ackermann steering for a video game. It was a single function that I reviewed and integrated into the game. It worked.

I was pairing with a dev who commented on the fact that I always resolved merge conflicts by hand versus using a UI. I joked that it's because I'm a control freak and without missing a beat responded "Yup." 😅 Let me tell you about my experiences with agentic coding these last 3 months...

So this role I'm in now was a tiny 2 person team. Two senior ICs managing a family (50~) of APIs and libraries for that last decade. These services are providing a public interface for data produced from various sources (integrations, dev teams, jobs) back out to dev teams to work with.

I'd really like to start writing more code in this new language than in C 😅 I think I'm close to making that a reality. I just need monomorphization, modules, enums, pattern matching... 😭

I've started implementing a second number type in the language: u8 I figured it was about as distant to f64 (existing number type) as I could get. After that the rest will be a breeze. Plus that gives me a char type too.

The u8 number type is implemented but no casting yet though. I need to understand all the test cases around casting but I think once that's in place then adding more number types will be fairly easy.

Kylee Tilley reposted

Replying to @sunshowers.io

Code that works at a point in time is mostly uninteresting. What matters is building structures to ensure code stays correct over time. That to me is the essence of engineering in software

It brings me back my first dev/tester role. I didn't have a laptop/desktop for the work and I was a 1099 so they couldn't provide one. Instead they provisioned me an EC2 instance to SSH in and work on. tmux, vim were comoletely new to me. It was a learning experience for sure.

I've start implementing more than just basic examples in my language. Actually trying to built with it to feel the pain points. I started with a really basic stdout/stderr Logger with log levels. Not too bad but basic. Today I implemented a Date struct with to/from timestamp conversion.

That definitely makes the language feel more of a real thing. I haven't done as much tooling with on this language as I have on previous ones just because I'm less familiar with C. I haven't even looked in to LSP implementations in C yet.

Kylee Tilley reposted

Replying to @booch.com

But at the same time, let us remember that there is value in the activity of engaging one’s mind and body to discover, to understand, to create, and yes, even to struggle and overcome.

I got single file executables working for the language. After refactoring all of the frontend (lex, parse, compile) fully separated from the runtime, the compiled bytecode gets jammed at the end of a runtime executable. That executable then reads itself in to grab the bytecode to run. Neat!

Kylee Tilley reposted

this 9,076 character regex matches all 4,030 4 letter words in the Scrabble dictionary - and nothing else. Those words would add up to 16,120 characters total.

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.

I love this snapshot test setup. The disassembled code is also included in the snapshots so its easy to see how the bytecode is affected.

You know all those tests I mentioned here? Well they don't use the new builtin assert function I added. They're snapshot tests using the print statement I'm about to remove from the language. 5000+ instances of... print "Hello World"; changing to... @print("Hello World");

Kylee Tilley@testingrequired.com

This turned out to be more complex than it thought but anything involving expressions composing together can be complex. Nested placeholder braces 😵‍💫 Yeah, that was fun. Lots of breakage. I'm glad I have 2300+ full E2E tests in place at this point.

I might get string interpolation done tonight. We'll, the start of it at least. let name = "World"; $"Hello {name}"; Nesting is supported and eventually any value that implements the right trait will work.

This turned out to be more complex than it thought but anything involving expressions composing together can be complex. Nested placeholder braces 😵‍💫 Yeah, that was fun. Lots of breakage. I'm glad I have 2300+ full E2E tests in place at this point.