HN user

Simplita

31 karma

Doctor | Founder & CEO at Simplita.ai | Building a Visual Agentic AI Full-Stack Builder for Business Automations

Posts0
Comments31
View on HN
No posts found.

This looks nicely aligned with Bret Victor’s ideas around tight feedback loops. One thing I’m curious about is how you’re thinking about debugging and state visibility as programs grow beyond small examples.

In reactive systems, we’ve found the learning experience improves a lot when users can inspect how a value changed over time, not just its current output. Do you see Weft moving toward any kind of execution history or state timeline, or are you intentionally keeping it minimal for teaching?

We ran into the same gap after MacUpdater started drifting. What worked reasonably well for us was splitting the problem instead of trying to replace it 1:1.

Homebrew (plus brew outdated) covered CLI tools and a subset of apps. For GUI apps, we relied on Sparkle-based self-updaters where available and a small script that checks bundle versions against a curated list for the rest.

It’s more manual than MacUpdater, but the upside is you control what’s checked and when. In practice, most actively maintained apps do self-update now, so the remaining pain tends to be niche or enterprise software rather than mainstream apps.

This pattern shows up a lot once content filtering becomes part of the delivery path instead of a pre-check. Failures feel “network-y” but are really policy decisions leaking into transport. In systems we’ve worked on, the hardest part wasn’t blocking content, it was making the failure mode explicit so retries and debugging didn’t spiral.

I’ve seen similar issues once hooks start doing more than fast checks. The moment they become stateful or depend on external context, they stop being guardrails and start being a source of friction. In practice, keeping them boring and deterministic seems to matter more than catching everything early.

This lines up with what we’ve seen too. The moment execution becomes non-deterministic, retries stop being a safety net and start compounding failures. Treating decisions as explicit inputs and keeping execution dumb made long-running workflows far easier to reason about.

Visual explanations like this make it clearer why models struggle once context balloons. In practice, breaking problems into explicit stages helped us more than just increasing context length.

One thing that helped us as codebases grew was separating decision-making from execution. Let the model reason about intent and scope, but keep execution deterministic and constrained. It reduced drift and made failures much easier to debug once context got large.

I’ve noticed the same pattern. Most “rules” break down once systems get long-running or stateful. Separating decision-making from execution solved more issues for us than any single framework change.

This matches my experience too. Rust really shines once the app grows beyond simple flows. The upfront friction pays off later when debugging and concurrency issues would otherwise start piling up.

One thing that surprised us when testing local models was how much easier debugging became once we treated them as decision helpers instead of execution engines. Keeping the execution path deterministic avoided a lot of silent failures. Curious how others are handling that boundary.

Patterns.dev 7 months ago

This resource aged surprisingly well. Still one of the clearest ways to understand common frontend patterns.

Size of Life 7 months ago

Crazy how something so simple hits so hard. Always wild to see how much meaning people can pack into a minimal format.

Funny how nostalgia smooths out the parts that were actually painful. The post is a good reminder that every era only looks simple in hindsight.

Using LLMs at Oxide 8 months ago

Oxide’s approach is interesting because it treats LLMs as a tool inside a much stricter engineering boundary. Makes me wonder how many teams would avoid chaos if they adopted the same discipline.

Perl shaped so much of early web culture. It’s interesting how a language can fade not because of capability, but because the community’s momentum shifted elsewhere.