fcfim (@fcfimdev) header
fcfim (@fcfimdev) profile picture

Civil engineer building software. Mostly tools, with some games along the way.

Brazil
Joined August 2009
Photo by fcfim (@fcfimdev)Photo by fcfim (@fcfimdev)Photo by fcfim (@fcfimdev)Photo by fcfim (@fcfimdev)Photo by fcfim (@fcfimdev)Photo by fcfim (@fcfimdev)Photo by fcfim (@fcfimdev)Photo by fcfim (@fcfimdev)Photo by fcfim (@fcfimdev)Photo by fcfim (@fcfimdev)
Building a foundation sizing tool where the AI part doesn't get to pick anything It organizes the request, asks questions, looks up methods. The engineer OKs every assumption and the math runs in deterministic, tested code Missing data stays pending, never passes by default
5
What the API for my foundation design tool looks like so far. Column, soil and materials in. Footing size, rebar and the checks out Still in development, but it runs the same engine as the app. Engineer review comes back as not reviewed until a person does it
9
ran out of github actions minutes, so my old ryzen 3900x became the ci runner. works perfectly lol. rest of the day: progress on the action rpg i'm building, ui fixes and audited calcs on the engineering side
1
37
Every change in the foundation tool that moves a number the user sees, or flips pass, fail or pending, ships with a decision file in the same commit Context, sources, decision, alternatives, effect, how it was checked. Agent-made calls need independent review before merge
13
An optional input in the foundation tool showed 0 on screen while the engine got undefined. The check that used it just disappeared and the footing could pass A half-filled pair stays pending now. In the repro, actually typing that 0 made the same footing fail
14
burned through all 2,000 free github actions minutes this weekend lol. lots of shipping, a bit of engineering, a bit of the action rpg i'm building. any open source ci you'd self-host on a vps?
2
72
A pile result has several checks and the screen shows one as the reason. It was picking a pending check even when a firm failure was in the same list A sweep of 1296 inputs found 392 like that. A firm failure goes first now
23
There's also a file listing the places where the foundation tool is more conservative than it needs to be, on purpose It exists so nobody "fixes" that extra margin without a sign-off
1
50
Angular distortion in the foundation tool was only checked for the combination with the most settlement. A lighter one can be worse if the neighbor settles more One case showed 1/1084 and passed. Real worst was 1/277, limit 1/300. Every service combination is checked now
21
The foundation tool's screen showed the first column as the load origin while the calc was using values typed by hand. Nothing passed because of it, but the screen named a source that wasn't true Now it asks you to pick the origin and stays pending until you do
20
The foundation tool checked eccentricity per axis, each under 1/6. But the field promised full compression, and with eccentricity both ways the core is a diamond, eA/A + eB/B ≤ 1/6 Outside it, Navier was 7.7% low on edge pressure. One footing went from 180×200 to 230×250 cm
25
Besides the published examples, the foundation tool runs 200 random footings and 150 pile cases with a fixed seed and checks properties every result has to hold One already failed. Vesić was approving with φ above 50°. Now anything outside the 0 to 50° table gets blocked
19
The hard part of my foundation calc tool isn't the math, that's deterministic tested code. It's getting the inputs right Claude already reads soil reports and load sheets. GPT-6.1 Terra says it interprets technical drawings, so the column plan with its loads is my next test
37
Every calc run gets an id from a sha256 of the engine version, the methods and the input Same input, same id. Comparing two engine versions is basically a diff between runs
13
0.3 + 28 × 1.15 in JS is 32.49999999999999. Exact is 32.5 On a drawing's pixel height, that half rounds the wrong way: 56 instead of 57. Fix was toPrecision(12) before Math.round. 17 of 141 sample drawings moved by 0.1, all sitting on a half
16
When a pile is in tension the cap's own weight is working in your favor, so the tool now counts it at γg = 1.0 there instead of the usual factor
12
One formula in the calc engine had a comment citing an NBR 6118 edition and no source. For concrete above C50 it didn't match the 2026 text Checked it against the norm itself and fixed it. Only C50 to C90 change
15
Stuff the foundation tool won't approve yet, it just leaves them as pending: flexible footings, single piles, pile groups, steel piles, pile tip on declared rock They're all listed on the validation page
14
The foundation tool accepted any value for the Blévot KR factor on pile caps. Bastos gives 0.90 to 0.95. Typing 1.5 raised the stress limit 66.7% above the default and nothing complained Above 0.95 is an input error now, no clamp
20
Fixed how horizontal load reaches the pile heads in the cap check H·hb now goes to the head plane before the load gets distributed, and both directions of H are checked as an envelope
17