871 private links
TIL A* with fixed iteration depth.
All look like interesting concepts to toy with!
- Text editor
- 2D game - Space Invaders
- Compiler - Tiny BASIC
- Mini operating system
- Spreadsheet (hard!)
- Video game console emulator (hard!)
- Ray tracer
- Key-value store web API
- Web browser
- Stock trading bot
Also see Challenging algorithms and data structures every programmer should try.
This article talked about three data structures for efficient text editing (a.k.a. text buffer data structure): Rope, Gap Buffer, and Piece Table. It's first time I learned about Piece Table, it works like this:
- Store the text in an append-only fashion in two buffers known as original file and add file
- Store the information about segments of the files as a list of reference to the slices into the two buffers (known as "piece table")
The inserting/deleting in this data structure would simply need to breaking up items in the piece table. It seems like a good candidate as a basis to implement CRDT in a collaborative editor.
From my preliminary understanding of the nature of this data structure, it doesn't seem necessary to have two buffers, a single append-only buffer preloaded with the file should be sufficient.
UPDATE: I found this post on vscode blog extremely helpful: https://code.visualstudio.com/blogs/2018/03/23/text-buffer-reimplementation
A gallery of interactive explanations. And the tool used to make these.
Chatbot Arena: blind test on the performance of LLM models to assign them a ELO rating. It also serves as a playground for various models.
This is a useful lifehack I learned today.
TL;DR: pull the note downwards instead of peeling it upwards. This stops the note from curling and stick better.
Bluetooth protocol snooping, Android app decompilation, AES decryption.
A security search engine like https://shodan.io. Search open services on an IP, whois, protocol signature, etc.
A post on postgres replication feature.
The good'ol Google ngram explorer for tracking term uses across recent centuries.
Like godblot.org but for decompiling binaries into C code using various decompilers (Ghidra, etc).
An introduction to various graphical tracing and profiling tools.
Anagram: a word constructed from the same set of letters of a different word. Here by "visual anagram" it means the type of visual illusion that one picture can be rearranged to another picture with a different interpretation. This work demonstrates a method for generating visual anagrams automatically using a pixel-based diffusion model.
A nice article on the exploration of a performance issue, which ultimately leads to the discovery of a bug in AMD CPU.
An essay on people's view of masturbation and asceticism through history. It was a fun read filled with absurd though useless knowledge on the futile efforts people made for this purpose.
(e.g. the “Electric Alarum” (1887) was a surveillance tool that set off an alarm for parents if their sleeping boy’s penis changed size during the night.)
A function graph plotter to explore complex functions by drawing on one complex plane and see the output on the other.
A web-based CSS animation editor.
An encoding scheme for encoding a sequence of numbers into a short URI-safe string, like a mix of nanoid and base64
Links to tutorials on graphics programming.
A comprehensive syntax of programming constructs in various languages. Useful for reference.