I’ve had the exact opposite journey. Native apps, disillusioned and frustrated with the backwards tooling, moved on to more open platforms (web apps and backends)
I’m curious what you find “backwards” about native tooling. I know the sentiment is common, and there must be some truth to it. But my partner works in web infra and frequently laments her inability to trace a single request through her company’s monolith while trying to reconstruct a failure from logs, and I am baffled that there’s no equivalent to attaching a debugger and stepping through execution.
If there was an infinite App Store, we wouldn't have scarcity and I'd be doing literally anything else other than selling my time for money. I'd also be killed because there's no point to my owners/the world keeping me around anymore in that scenario, except, maybe for my winning personality/companionship.
Would love to chat, I recently wrapped up an initial version of an automated real estate appraisal review app which appears to have some of the same technical challenges and risks. https://getvalara.com / jwillis@valara.net
Would love to share notes. I was able to get away with landing.ai and some really careful schema design and multi-step workflow with a few agents sprinkled in at the end.
Not that much! Not life-changing. It was my first startup, and didn’t know what questions to ask when being hired. I was stupid enough to assume that I would be taken care of. To date, it’s been my only successful exit, and I was granted waaaaay below typical equity for how early I was and how much blood and sweat I gave. This was typical for non-founders and below-directors from what I have ascertained.
https://getvalara.com - PDF appraisal document in, grounded appraisal review out in 5-10 minutes to aid in risk management for lending institutions and individual appraisal reviewers.
We use landing.ai to parse the PDF, as well as useworkflow.dev to durably perform other work such as rendering PDF pages for citations, and coordinating a few lightweight agents and deterministic checks that flag for inconsistencies, rule violations, bias, verify appraiser credentials, etc. etc. Everything is grounded in the input document so it makes it pretty fast and easy. We’re going to market soon and have an approval sign up gate currently. Plenty of new features and more rigorous checks planned to bring us to and exceed parity with competition and human reviewers.
There’s plenty of margin for cost and latency versus manual human review, which takes an hour or more and costs $100 or more.
Getting tons of Gell-Mann from this one. On the surface level, a more rigid type system helps, but it doesn't remove all potential classes of bugs. For example, if you're using Rust to interact with LLM APIs, you're still sending strings around. If those prompt string reference code such as a field name as a string literal, and you rename the field name, but forget to update the string, you've got a bug. You can, of course not use a string literal, but hey, it happens. I'm not sure if Rust can reference field names at compile time and get them into string, but I do know TypeScript can.
Which brings me to... choosing to throw TypeScript under the bus for having an "unsound" type system ignores the fact that you can just throw more tooling at the problem (e.g., a linter that disallows `any`, since that one example cited in the article), and glazes over the fact that the JS ecosystem has a lot more examples in the training data for many LLMs. The further you deviate from the slop-mean, the worse time you're going to have using LLMs to generate code, slop or otherwise.
reply