miniblog.

Shims (implementations of built-in functionality missing from your current interpreter) are a mature concept in JS. I love that there are even standards now, setting expectations for how to plug them in: https://github.com/es-shims/es-shim-api (An incomplete, best-effort shim is a "sham"!)
Creating a new PL is so different from changing an existing one. You need to worry about syntax, locals, scope, error checking, conditionals, interpreter loop, stdlib etc. You can work on these in isolation once you have a working implementation. (My toy PL now does fizzbuzz!)
Creating a new PL is so different from changing an existing one. You need to worry about syntax, locals, scope, error checking, conditionals, interpreter loop, stdlib etc. You can work on these in isolation once you have a working implementation. (My toy PL now does fizzbuzz!)
Typescript's union types are really nice for writing interpreters. type Value = NumberValue | StringValue; function add(array<Value> args): NumberValue { ... } I often find that primitive functions get little checking (e.g. just returning a Value) in the host language.
The line between 'group chat' tool and 'web forum' seems increasingly blurry. What are the essential differences? The ability to edit? "$USER is typing" information? Threading? Simply the culture around the tool?
GitHub is backing up public repositories in a long-term archive format in the arctic! https://github.blog/2020-07-16-github-archive-program-the-journey-of-the-worlds-open-source-code-to-the-arctic/ Overall this is a great idea, but I have a few old scrappy public repos that *really* don't need to last hundreds of years.
On effective user invitation design: https://blog.sentry.io/2020/02/12/how-we-grew-sentrys-monthly-active-users-by-rethinking-invitations
I never know whether to write bool or boolean. I try to avoid excessive abbreviations, but bool is so snappy and very common.
Why 'holy wars' in technology arise, and where to expect them: https://www.gwern.net/Holy-wars
An optimistic take on neural networks for programming: https://medium.com/@karpathy/software-2-0-a64152b37c35 It makes some good points about predictable runtime performance, ability to trade CPU for accuracy, and the ease of hardware acceleration.
Using machine learning to decide what structure to use for your neural net: https://arxiv.org/pdf/1703.01041.pdf It's pretty meta, but ML is often good at trading computation for results.
I've always written dumb lisp parsers in the past: a list is just "(" EXPR* ")". Checking came later. I'm trying something different in my current project, pushing special forms into the parsing logic. This means that e.g. (if) is a parse error. It has a different vibe.
I'm developing a theory that IRC bots are a petri dish of chat tool ideas. Most bots have poor discoverability and limited value, but it's so easy to try new ideas that some real innovation crops up.
Emacs package of the day: amx. https://github.com/DarwinAwardWinner/amx This makes your M-x better, by prioritising recently used commands, hiding irrelevant commands, and showing shortcuts! (Shown with the excellent counsel package here.)
Photo
One cute property of the typescript/javascript relationship is that you can toggle whether (and when) you want static types. At ~500 LOC I realised I had an error handler I'd refactored but missed an argument at a call site. Time to try some typescript!
Showing 181-195 of 378 posts