Macro-expanded lisp works surprisingly well as an intermediate representation for some tasks.
Today, I was able to enumerate all the bound variables pretty straightforwardly, because elisp only has four ways of introducing bindings!
(let, let*, lambda and condition-case)
miniblog.
Going beyond QuickCheck: using an SMT solver (based on Rosette) to intelligently generate test inputs that are diverse and hit interesting code paths!
https://youtu.be/Br16rvT_C00
GHC can now offer type-aware suggestions for holes in code, even suggesting functions that you could use if you just passed an additional argument! https://twitter.com/tritlo/status/958783134627135489
Impressive (if somewhat intimidating) blog post showing how to reason from assembly back to the equivalent C code: https://kakaroto.homelinux.net/2017/11/introduction-to-reverse-engineering-and-assembly/
Measuring programming language popularity based on the number of unique users on GitHub: https://www.benfrederickson.com/ranking-programming-languages-by-github-users/
Whilst this gives the dataset a FOSS bias, it's much cleaner data than e.g. a keyword search of job postings which some other metrics use.
Graydon (creator of Rust and Monotone) has this excellent post discussing the importance of running tests on the code after merge, so the build stays green: https://graydon2.dreamwidth.org/1597.html
What you may not realise is that he advocates for an even stronger CI guarantee in the comments!
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!
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! https://blog.tartanllama.xyz/inline-hints/
Today I learnt that elisp has first-class bool vectors! https://www.gnu.org/software/emacs/manual/html_node/elisp/Bool_002dVectors.html
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!
Cognitive technology, thought augmentation and reifying interfaces: https://cognitivemedium.com/tat/index.html
Address Sanitizer is a great debugging tool, but apparently you shouldn't use it for hardening release builds: https://seclists.org/oss-sec/2016/q1/363
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: https://orgmode.org/worg/org-tutorials/orgtutorial_dto.html
Elixir 1.6 introduces a code autoformatter, reformats the entire stdlib, and adds an elegant pattern match syntax for defining breakpoints!
https://elixir-lang.org/blog/2018/01/17/elixir-v1-6-0-released/
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.
Showing 601-620 of 657 posts