miniblog.

I'm having fun writing a simple type checker, but I'm learning firsthand why syntax-directed checking doesn't work. It prevents inference. My checker catches real bugs, but it can't handle cases like this: [1, 2].map(fun(x) { x + 1; }) I think I need bidirectional checking.
I've been experimenting with an 'evaluate up to cursor' mode for my PL project. I love evaluating self-contained snippets in Lisp, this generalises the idea. The interpreter remembers the arguments when you run tests, then can re-use them when you say 'eval up to here'. What do you think?
Today I learnt that Emacs 28 shipped a context-menu-mode! https://oylenshpeegul.gitlab.io/blog/posts/20230129/ This seems quintessentially Emacs: deeply hackable, but building UI features in an order very different to the mainstream.
Individuals and interactions over processes and tools => Competence trumps process Working software over comprehensive documentation => Minimize time from program launch to deployment of simplest useful functionality I really like the DoD's phrasings of classic agile maxims:
Has anyone built a great solution to 'run all my unit tests automatically'? It's straightforward to write a while loop in bash, but handling timeouts, syntax errors etc well is hard. Running on save would be good, although I wonder if you could run fast tests on each keystroke.
New version of difftastic is out! * Fixed a nasty crash that was relatively common * Minor display and performance fixes
I've had a new Linux laptop for several weeks and only just realised that I didn't have `man` installed! Google is my default the vast majority of the time, and this seems to confirm it.
I'm designing a programming language and trying to decide the type of `let x = 1;`. Should it be Unit or Int? Advantage of Int: really convenient when evaluating snippets in a REPL. Advantage of Unit: It's much less confusing when type inference runs on an incomplete function.
`init` feels like an unhelpful name in OO. It doesn't give you an initial value, it initialises the instance that has already been created. Developers are often surprised that init doesn't return the instance, because they have a strong association with `new Foo()`. Perhaps `finish` would have been a less confusing name?
Bril is a cute intermediate language for teaching (think simplified LLVM IR): https://www.cs.cornell.edu/~asampson/blog/bril.html The idea of providing a standard JSON format to help students write basic passes is really elegant.
What are the most popular languages that have used an AST walker for their implementation? I know Ruby used to do this, but there must be others. (I'm interested in the lowest PL speed that users will tolerate if you have awesome features.)
I'm increasingly doubtful that commit messages should be entirely immutable. I sometimes find myself editing or commenting on merged pull requests, to help future readers. Phabricator appended a URL to commit messages, which helped. In principle PR merging could do the same thing.
I've released difftastic 0.59! In this release: * Fixed a nasty crash on textual files * Added F# and device tree support * Improved comment syntax highlighting (especially for Elm)
Photo
I've been really enjoying paru as a pacman substitute on Arch Linux: https://github.com/Morganamilo/paru It allows you to update both normal and AUR packages in one go, which is super convenient. It also shows you PKGBUILD files, so there's still a human audit step for AUR.
WebAssembly seems like a totally reasonable bytecode format, but I've not had many opportunities to use it so far. Has wasm found its 'killer app' yet?
Showing 196-210 of 7,549 posts