miniblog.

Writing macros in lisp is straightforward, but providing good error message is much trickier. The Racket docs have an excellent discussion of writing a mylet macro with clear errors that reference which part is wrong: https://docs.racket-lang.org/syntax/stxparse-intro.html
Code Completion with Statistical Language Models: https://www.cs.technion.ac.il/~yahave/papers/pldi14-statistical.pdf This amazing paper trains a language model on a Java corpus, then builds a code completion tool that can write whole snippets of code!
PhotoPhotoPhotoPhoto
I've been enjoying learning about git worktrees: https://spin.atomicobject.com/2016/06/26/parallelize-development-git-worktrees/ When you regularly work on several branches, it's really nice to have separate folders for each branch. You can easily compare files across branches, and you need far less stashing!
Lovely blog post discussing what compilers actually do with the `inline` keyword, including relevant source code from Clang, LLVM and gcc!
Today I learnt that elisp has first-class bool vectors!
Really interesting overview of Iron, Jane Street's code review tool: https://youtu.be/MUqvXHEjmus It makes a compelling argument for tracking diffs over time, nested feature branches, and encouraging reviewers to add their own patches.
It's common to be pessimistic about block-based programming, usually due to the scaling difficulties. https://kakaroto.homelinux.net/2017/11/introduction-to-reverse-engineering-and-assembly/ comments how valuable (and common!) block-based visualisation of logic is!
PhotoPhoto
Cognitive technology, thought augmentation and reifying interfaces:
Address Sanitizer is a great debugging tool, but apparently you shouldn't use it for hardening release builds:
I miss the usize type when I'm not coding in Rust. I find distinguishing between 'an integer representing a quantity' and 'an integer representing an array index' to be very helpful sometimes.
org-mode has a lovely high level introduction, with basic usage, screenshots, and a few pointers on more advanced features:
Elixir 1.6 introduces a code autoformatter, reformats the entire stdlib, and adds an elegant pattern match syntax for defining breakpoints!
Git is rather timid with merge conflicts. If you change two adjacent lines, it assumes they conflict! https://softwareengineering.stackexchange.com/questions/194788/why-doesnt-git-merge-adjacent-lines-without-conflict In my experience they don't, and it causes problems when library imports change at the top of the file. Interestingly, Subversion happily merges.
Writing setq in Rust for Remacs! https://github.com/Wilfred/remacs/pull/600 Today I learnt that (setq) is legal Emacs lisp.
Regular expressions being greedy seems like a bad default. They tend to work fine on small inputs but capture too much on larger inputs. Too late to change in most situations though.
Showing 3,016-3,030 of 7,584 posts