One advantage of not having types is having a repl, which party moves the pain of bugs from compile time to deployment time. Laarc almost never shuts down, since there is no reason to. Every function is reloadable, and the server is set up to hard-reset itself to latest master every 15 seconds. Most variables only initialize themselves once, for things like hash tables. This prevents a reload from wiping out the data already in memory. Other variables like constants (say, the topbar color or the name of the site) always set themselves, since they are configuration rather than data storage.
The takeaway is that I can ship a new feature or fix a bug in minutes, and occasionally a few seconds. It’s as simple as pushing the desired change to master and then waiting. If anything goes wrong, I can force-push back to an earlier version and trust that laarc will handle it.
(I have the option of reverting commits rather than force pushing. It’s just that you’re not forced into any particular style with this system, so you can work however is most effective for the situation at hand rather than following dogma.)
Secretly, I wish for types, but for a different reason than safety: performance. It’s not true that compiled languages are faster than dynamic languages. It is true that a dynamic language with type annotations can optimize itself to be more efficient.
I spend most of my development time pasting forms into laarc’s repl until they do the right thing. Burntsushi is much more capable since he’s able to design ripgrep without “doing it live” in the repl sense. It’s interesting that the styles seem to be complimentary, since they both have tradeoffs.