Zero Dereference – Telegram
Zero Dereference
127 subscribers
3 photos
3 files
372 links
Interesting links related to systems programming, hacking, and science.

Contact: @richiefreedom
Download Telegram
During my studentship the demoscene consumed a lot of my spare time. I was just a spectator, not a demoscener, but knew very much in this area.

Now, I discover that many people don't know what the demoscene is. I looked for some good introductory article with a review of this layer of cyberculture, but didn't find anything that could fit my requirements.

Eventually I've found much, much more. The following tutorial not only tells what the demoscene is, it guides the beginner through creation of real artifacts like tracker music, demos, intros and publishing them on well known content hubs for demosceners.

https://github.com/psenough/teach_yourself_demoscene_in_14_days
I already mentioned the software made by Salvatore Sanfilippo including his tiny text editor named kilo. There is a detailed tutorial that shows how such editor can be written in 184 small steps. The author really starts from 3 lines of code and gradually extends the program.

https://viewsourcecode.org/snaptoken/kilo/
Small3dlib is a public domain 3D software rasterizer for constrained devices which uses only integer arithmetics.

https://gitlab.com/drummyfish/small3dlib

There is also a raycasting engine made by the same author.

https://gitlab.com/drummyfish/raycastlib
Surely many of us know Autodesk Inc. and its famous AutoCad, but few people know who John Walker is. He is the founder of Autodesk Inc. and a developer of the company's core products. In the next article, he tells how he wrote a neural network that recognized characters in 250 lines of BASIC for Commodore 64. He sent the program to all popular magazines about personal computing, but the program was not accepted for publication, as too esoteric. In 1987 neural networks were not so popular outside the academic community and few people understood why they were needed at all.

http://www.fourmilab.ch/documents/commodore/BrainSim/
AQaml is a self-hosted compiler for a rich subset of OCaml with pattern matching, variants, mutual recursion, references, GC and etc.

https://github.com/ushitora-anqou/aqaml
Si78c is a pixel-accurate clone of the original Space Invaders game, it uses the original game resources and produces identical memory states during execution.

http://blog.loadzero.com/blog/si78c/
Unfortunately, Rui Ueyama stopped developing his optimizing C compiler (9cc), preferring the simpler chibicc, which is used as an example in his book (in Japanese). But it seems I found a replacement for 9cc, it is a small optimizing C compiler made by Lars Kirkholt Melhus. Lacc is easy to understand, self-hosting and actively developed.

lacc: https://github.com/larmel/lacc

Book written by Rui Ueyama: https://www.sigbus.info/compilerbook
In the following series on Medium Tomáš Bouda tells about 100 interesting algorithms for 100 days.

https://medium.com/100-days-of-algorithms
C for all (C∀) is a new programming language based on C and supported by Huawei. C∀ extends C with many useful features like tuples, references, constructors and destructors, type extension, nested procedures, polymorphism, traits, coroutines, threads, and etc.

https://cforall.uwaterloo.ca/
George Hilliard, an embedded systems engineer, has designed a business card with a minimal ARM computer inside. And it runs Linux!

https://www.thirtythreeforty.net/posts/2019/12/my-business-card-runs-linux/
Lilith is a hobby operating system written in Crystal. It includes a simple Unix-like kernel, a window system and several applications.

https://github.com/ffwff/lilith
A short and clear introduction to a programming language is a rarity. The following article is just such a case. Take a closer look at the Smalltalk language. Possibly you may not be using it in everyday practice, but it can greatly change your way of thinking.

http://web.cecs.pdx.edu/~harry/musings/SmalltalkOverview.html
SSG is a tiny perl noscript that compiles markdown-like text files to simple postnoscript presentations. Fonts and colors are easily configurable.

https://github.com/jroimartin/ssg
Redshirt is a research operating system written in Rust. It executes WASM binaries and can theoretically obtain them from a decentralised network.

Any program in Redshirt can declare that it implements some interface and OS will use the program to handle requests corresponding to the interface. For example such a program can work as a filesystem server or a TCP/IP stack.

Interfaces and programs in Redshirt are uniquely identified by their hashes, it allows to store the programs in an IPFS-like distributed database.

https://github.com/tomaka/redshirt
One old blog post about register allocation in CompCert.

http://gallium.inria.fr/blog/register-allocation/
I didn't consider WebAssembly seriously and thought that this technology was tightly connected to JavaScript and WEB browsers. Fortunately, I was totally wrong!

WASM is a modern low-level representation for portable executables. It is compact, efficient and compatible with "unsafe" programming languages like C and C++.

There are research projects developing WASM-based operating systems or firmwares for small devices. Many programming languages can be compiled to WASM. This is a very promising technology.

Today I would like to share a link to a small introductory article about WASM.

https://rsms.me/wasm-intro
I already wrote about bearssl, but it was a surprise for me that a huge part of the library was implemented in T0 - a special concatenative programming language with concurrency and memory safety features.

That language influenced another one, T1. T1 is type and memory safe, it provides a number of static guarantees, supports OOP, garbage collection and a kind of metaprogramming.

https://t1lang.github.io/
Bootstrapping a whole operating system from a simple in-memory monitor or debugger is a very catching topic. Just imagine: everything you have is just your hardware with some minimal firmware preloaded, just to give you an ability to edit data in memory, execute it and store somewhere. Could you start with these tools and develop or just build an existing modern operating system?

The Mes project aims to bootstrap the modern GNU toolchain starting from the bare minimum.

https://www.gnu.org/software/mes/

There is also an old conversation on Reddit which is related to the topic.

https://www.reddit.com/r/programming/comments/9x15g/programming_thought_experiment_stuck_in_a_room/