Hacker Newsnew | past | comments | ask | show | jobs | submit | dhamidi's commentslogin

> So an engineer who knows your codebase and tests can sneak in malicious code/backdoors because you're high trust.

What is the alternative? Bumping a dependency in a PR and getting a LGTM can also introduce a backdoor.

That's another form of high trust: your trusting the publisher of the dependency.

High trust comes with high responsibility, which is easier to enforce when the trusted party is an individual on your team with generally aligned incentives, rather than an organization or unpaid individual on the internet serving many.


Working at Amp

We...just read the commits, and talk to each other.

We're also pretty trigger happy with the Huddle button in Slack.

Nobody on the team would go back to mandatory PRs


Do you read them before someone pushes them?


HTMX is great, Hypermedia and HATEOAS are great, HTML-string-templates are not great.

For some reason they are still popular.

A fun experiment is to use a JS runtime with React but render the component tree on the server onto a Writeable stream.

Very easy to understand, no useEffect footguns, great composability.


You can swipe the Termux special ribbon to the left and then get a native text input where dictation etc all work.


Cheers, you just changed my life.


Exactly, thats what makes it work with FUTO stt!


Neat trick. I had no idea.


This:

    node + npm + vitest + vite
Turns into:

    bun
That's the benefit


Throwing out a couple more benefits: bun is faster than node, dramatically so in some specific cases (websockets). Bun also has been doing a great job at building out core libs that probably don't make sense for node, such as the native inbuilt sqlite module, thereby reducing your dependency graph.

People shit on the node/npm ecosystem relentlessly for the typical inauditable deep dependency graph, and bun makes substantial improvements to that situation.

Edit: bun recently added an inbuilt api for manipulating images (resize, change formats, etc). Another good example of them adding native/faster functionality that replaces significant dependencies (in this case, likely sharp: https://www.npmjs.com/package/sharp?activeTab=versions)


I rather replace bun with deno, given that now both bun and deno are written in Rust, and Deno have even more node compatibility than bun. Deno and Node both runs on V8, while Bun runs on JSC, and Deno has a killer feature that you don't have to even run npm install to use package, you can just top-level import or await import an URL (given that you allowed it with a command prompt or bypass it competely with -A but discouraged).

I've used Deno, CucumberJS and Playwright to write E2E test suites. Zero npm install and not even deno.json or package.json


To say nothing of `bun install` being about 50 times faster than npm, and disabling most post-install hooks by default.


I understand the sentiment. Rails was my introduction to hypermedia and it was convenient and easy, so experiencing friction when building with Go/HTMX came as a surprise.

After a few attempts I learned that abstractions are important :D

Without a component builder and reversible router is indeed pretty painful (and Rails just ships with these things so you didn't have to worry about it).

The biggest benefit for me personally is that computation and data live in one place, which carries you very far. Also, machines like hypermedia: LLMs are great at using and testing hypermedia apps because they are self-contained and the cycle time is lower because you don't need to wait for JS.

And yes, no easy off the shelf component library makes starting harder.


I’m struggling myself a bit with the components and routers in HTMX/go. Can you recommend any source code or reading on that topic?


There's vuego: https://github.com/titpetric/vuego

And my own version (I learned of vuego only after): https://htmlc.sh

Not a fan of html/template and tmpl myself, because HTML should be treated as tree and not as strings, but everybody has different preferences.

For routing I now use my own library in all projects: https://github.com/dhamidi/dispatch

It's relatively easy to generate your own nowadays, I mostly go through the Ruby on Rails guides and mix and match the pieces I want for go and turn them into libraries :)


Disclaimer: I'm part of the team building it

That's what Amp is built around!

By default conversations are shares in your team (you can also make them private), and the agent has access to them.

So you can do things like "how would $teammate think about this" and the agent will read your colleague's conversations with Amp to get a feel for that and evaluate your work based on that.

Or just figuring out what everyone is doing at the moment is much easier that way


I know it's in vogue to bash Bash but I feel that criticism is unfair.

Shell scripting is a victim of its own success: it is _so easy_ to get started that most users get value out of knowing the first one percent and never bother to actually learn the rest.

There aren't many who have read the Bash manual, or know what zsh can do that Bash cannot, etc.

"Shell scripting is a hot, slow mess" is the same hot slow mess that you get wherever the barrier to entry is extremely low (e.g. early PHP, early JavaScript/frontend development, game development with a game engine where you can just click around in the editor, etc).


There’s also the fact that shell scripting is for automation of what you may do interactively. It’s not for stuff where you want data structures to manipulate in memory. Trying to use it like python is an exercise in frustration.


I remember a friend saying they had a university assignment to implement something like a spreadsheet program in bash - I suppose it was to teach them the intricacies of bash but the big takeaway was meant to be - don't use bash for anything too complicated.


Maybe useful inspiration from TCL: there are many commands that define new variables, which makes modeling the stack unnecessary.

For example:

  lappend responses [dict status 200 body ...]
Appends a new dict to the list held in the variable responses, creating the variable if necessary.

I can see that being an attribute:

  <request-send url="..." as="greeting" />
  <response-text response="greeting" as="text" />
  <selection-set-text text="text" />


The main reason for using a stack was reducing verbosity because for short scripts using variables felt unnecessary when the type-prefix of the command already communicates the variable contents. But it could still be a good idea to have a shorter syntax for assigned variables.

Accessing a variables works like this at the moment:

  <selection-set-text $text="varname">
Keeping the dollar syntax, setting the return value to a named variable could look like this:

  <response-get-text $="varname">


Feather, a fresh implementation of TCL: https://www.feather-lang.dev

Command languages are underrated, and being able to add a Bash-like REPL for agents and users alike is something I want to see more of.

Feather solves the "rest of the Owl" problem: agents/users get loops, conditionals, online help for free from Feather, as the embedder you only need to add application-specific commands.

Feather itself has no GC (uses the host's), no own data structures (uses the host's, e.g. JavaScript arrays for lists in the js version), and no I/O.

The core is implemented in stdlib-less C


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: