Kawasaki
Joined March 2018
What AI lacks in terms of software engineering is not capability anymore. What it lacks is trust and accountability. SWE will likely pivot from solving first-order business problems directly into making the most out of the new scarce resource: accountability of human teammates.
1
37
I can think of two things that are the highest leverage items that humans can drive: test policies (what to test, how to test, how to discover what to test) and architecture (anticipating future changes).
26
Wow, GPT 5.3-Codex xhigh is much stronger than Opus 4.6 for the tasks I'm working on. Not even close.
72
AI generated code need not be hard to review. After the changes look more or less complete, make them create commits in logical* order. *Not necessarily in the order it was written, but in the order you (as a human) would like to review them.
38
I used to also avoid leaking mutation in public APIs, but at one point I realized my literal job was to write APIs that mutate state or do side effects, just over HTTP.
Replying to @olafurpg
Imperative core, functional shell is my favorite design principle. Many algorithms are dramatically simpler to implement with mutable state (for example, depth first search in graphs with cycles). Just don’t leak the mutation into your public API
2
115
Tried writing some decrel code today. Opus 4.1 has absolutely no idea what needs to be done to add a simple new feature even with ultrathink, despite relevant code fits entirely in its context size. I'll believe this AGI thing once it can write a substantial PR on decrel.
1
144
I wrote a blog post: Making Data Races Unrepresentable, or Read-Modify-Write Considered Harmful (for business logic flows) purelyimpure.com/data-races/
3
4
559
I find myself slowly going against the Scala trend: because you can do something at compile time, doesn't mean you have to.
3
8
475
It's a little annoying in Scala that with subtype overrides, I can define the output type to be a subtype to be of what's defined in the interface, but with typeclasses I can't. This with the fact that you implicit values requires type annotation makes a few tasks not so easy.
1
1
191
Wrote a blog post about code-level architecture for the ZIO stack. This is about a pattern I'm using more and more often that leverages ZPure, ZSTM and ZIO for simplifying business logic and concurrency. blog.pierre-ricadat.com/the-…
5
23
2
90
5,580
How do I compose generators so that the resulting generator is always coherent? Is it a matter of domain design or the generator composition? I have no idea how to even approach this when the composition depth (flatMap) can be arbitrarily deep.
1
167
I think it is hard to use generators for testing business logic flow. Thoughtfully crafted and hardcoded database state seems like a better idea.
1
1
128
Wait... isn't StateT enough to solve this? Why am I thinking so complicated 😅
1
90
If we assume relations between domain entities are immutable, they can be cached. Relation cache to the parent entity can always be trusted, but relation to the children entities may be missing new entries(?). In any case, we can offload some rdbms joins to the app and redis.
2
135
One unexpected (good) side effect of exposing a GraphQL schema is that it helps normalize my domain models. One field only ever have to be in one place, and there need not be a giant class that duplicates fields from other class, just so that REST api can expose it.
1
100
I am struggling to configure scalafmt, to add a newline after toplevel package statement line(s), but make it not touch anything else. Anyone has done this before? The align.tokens part is most confusing. scalameta.org/scalafmt/docs/…
1
52
OK this is what I got: newlines.topLevelStatementBlankLines = [ { blanks { after = 1 } } { regex = "^(Defn.*|Term.*|Decl.*)" } ] I ended up also getting the newline after import, if you don't want, also add `Import` in the negation group.
1
37
astexplorer.net/#/gist/ec561… The AST Explorer did help, but I wish I didn't have to use this. Rather, it would've been much easier if there was a pretty doc page with all of the possible regex matches.
52
Is it just me, or does sbt get extremely slow after sleep/wakeup in MacOS with Java 21? Up to 17 I didn't see this problem.
1
93