Programming Bookmarks

​#Bookmarks ​#Programming

Editable software:

@akkartik writes:

@akkartik

Prefer software: with thousands rather than millions of users, that seldom requires updates, that spawns lots of forks, that is easy to modify, that *you* can modify. – Using computers more freely and safely

Using computers more freely and safely

Graphics:

raylib does not provide the typical API documentation or a big set of tutorials. The library is designed to be minimalistic and be learned just from a cheatsheet with all required functionality and a big collection of examples to see how to use that functionality. – raylib
Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. – About SDL

raylib

About SDL

Books:

Teach Yourself Computer Science, book recommendations by Patchlore

The Algorithm Design Manual, Notes by Patchlore

Social Architecture

Pieter Hintjens

Stuff by Justine Tunney:

SectorLISP consists of 223 lines of assembly. It provides a LISP system that’s powerful enough to let you write your own LISP interpreter in just 40 lines of LISP. It’s compatible with all PC models dating back to 1981 which have at least 64kb of RAM. – LISP with GC in 436 bytes
In the above one-liner, we’ve basically reconfigured the stock compiler on Linux so it outputs binaries that’ll run on MacOS, Windows, FreeBSD, OpenBSD, and NetBSD too. They also boot from the BIOS. Please note this is intended for people who don’t care about desktop GUIs, and just want stdio and sockets without devops toil. – actually portable executable
redbean makes it possible to share web applications that run offline as a single-file “actually portable executable” zip archive which contains your assets. All you need to do is download the redbean.com program below, change the filename to .zip, add your content in a zip editing tool, and then change the extension back to .com. – redbean

LISP with GC in 436 bytes

actually portable executable

redbean

AI:

In this project, we implement a neural network that runs on SectorLISP. Since there are no features of built-in numbers, we have to reinvent the notion of numbers from scratch only by using symbolic manipulation. We first start off by constructing a fixed-point number calculation system based solely on list manipulations, and finally, implement matrix multiplication and activation functions using this fixed-point number system. – Building a Neural Network in Pure Lisp Without Built-In Numbers Using Only Atoms and Lists

Building a Neural Network in Pure Lisp Without Built-In Numbers Using Only Atoms and Lists

Regular expressions:

the Thompson NFA implementation is a million times faster than Perl when running on a miniscule 29-character string – Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby, ...)

Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby, ...)

Games:

In the academic literature, the task of controlling a robotic arm is known as inverse kinematics. “Kinematics” stands for movements, and “inverse” refers to the fact that we don’t usually control the arm itself. What we control are the motors that rotate each individual joint. Inverse kinematics is the task of deciding how to drive these motors to move the arm to a certain point of position. – Inverse Kinematics in 2D
Texts about generative art, work, and experiments. – Generative art project by Anders Hoff
I make interactive visual explanations of math and algorithms, using motivating examples from computer games. – Red Blob Games
In many ways… what a game is, what it means to be in a virtual space, what it means to actualize all these concepts… starts with the tool. Tools inform these ideas too. When you explore the tool space, you come away with a whole new appreciation for games. – “RPG In A Box” is a cool tool! (an alternative game development curation)

Inverse Kinematics in 2D

Generative art project by Anders Hoff

Red Blob Games

“RPG In A Box” is a cool tool! (an alternative game development curation)

Plan 9.

Plan 9 is full of UTF-8 aware programs, which makes sense, given that Plan 9 was the system UTF-8 was designed on/for. – Writing UTF-8 Programs in Plan 9

Writing UTF-8 Programs in Plan 9

Lots of stuff.

Bartosz Ciechanowski

Lisp operating system.

The 3L project is building an computing system from the ground up to be secure, private, safe, and extensible. – The 3L Project

The 3L Project

Christine Lemmer-Webber said about the 3L project:

Holy shit an ocap OS written in prescheme! Oh my god look at the whitepapers and references page, it’s *all the right things* – References and Whitepapers

References and Whitepapers

Forth, uxn:

Notes on forth

UF

uxn

uxntal

Forth

Retro Forth

Gforth

Array languages like KAP, APL, J:

At its core, KAP is a programming language based on APL. – KAP Tutorial

KAP Tutorial

BASIC

In this interactive article, we will build a breakout game using Commodore 64 BASIC in the browser. This is a fun programming hack, but it has quite profound theoretical background. – The Lost Ways of Programming: Commodore 64 BASIC

The Lost Ways of Programming: Commodore 64 BASIC

Forth processor simulator:

Green Arrays Forth chip F18A simulator – F18

F18

@ratfactor@mastodon.art has a concatenative, inlining, stack-based programming language:

A Forth-like language that is conCATenative in two ways: 1. Concatenative data flow (traditional) 2. Concatenated machine code (weird)“ – Meow5

Meow5

And another post by Dave:

This page is my personal journey to discover Forth and put it in the context of computing history. It is adapted from my slides for a short talk. – Forth: The programming language that writes itself

Forth: The programming language that writes itself

Types of programming languages:

First, every programmer needs to know a language in the ALGOL family well. Second, learn a language in the Prolog family: SQL. … Then, once you’ve got these two, it’s worth branching out. Learning a new language that traces to an unfamiliar ur-language each year will pay dividends. The languages I would suggest today in each of these families, and maybe in this order, are: Lisp: PLT Racket, ML: Haskell, Self: Self, Prolog: Prolog, Forth: gForth, APL: K … ­­– The seven programming ur-languages

The seven programming ur-languages

Visual programming:

Despite the GUI going mainstream in the 80s, the programming community has largely opted to remain in the era of the terminal. Yet there have always been magnificent visual programming projects at the periphery. This repo exists to shine a light on these alternatives, see what costs and benefits they offer, and reflect on the work of people pushing for a future where programming leverages more of our senses and modalities.– Visual Programming Codex

Visual Programming Codex

@marioguzman@mastodon.social decided to take the old Macintosh Human Interface Guidelines and merge them into one large collection of topics while modernizing them in the process.

The following sections are general guidelines that describe fundamental Mac layout principles of center equalization, text and control alignment, appropriate use of white space, and visual balance. – [Layout Guidelines]

Write an editor in C:

It’s about 1000 lines of C in a single file with no dependencies, and it implements all the basic features you expect in a minimal editor, as well as syntax highlighting and a search feature. – Build Your Own Text Editor

Build Your Own Text Editor

A Canon Cat like editor with a LEAP key, by @m15o@merveilles.town:

Bitters is written in ANSI C, and depends on SDL2. It should run on any unix-based system. – Bitters

Bitters

Javascript:

QuickJS is a small and embeddable Javascript engine. It supports the ES2023 specification including modules, asynchronous generators, proxies and BigInt. – QuickJS

QuickJS

Go cross-compiling works until there's C code involved. @dctrud@mastodon.me.uk recommends:

Docker container to turn CGO cross-compilation pain into a pleasure. – goreleaser-cross

goreleaser-cross

UTF-8 is best.

Our goal is to promote usage and support of the UTF-8 encoding and to convince that it should be the default choice of encoding for storing text strings in memory or on disk, for communication and all other uses. We believe that our approach improves performance, reduces complexity of software and helps prevent many Unicode-related bugs. We suggest that other encodings of Unicode (or text, in general) belong to rare edge-cases of optimization and should be avoided by mainstream users. – UTF-8 Everywhere

UTF-8 Everywhere

Pascal:

Modern Object Pascal Introduction for Programmers

Castle Engine

Free Pascal

Lazarus

Awesome Pascal

Hare:

The Hare programming language

Hare documentation

Hare Playground

Tree layout:

I assumed that there would be a classic, easy algorithm for drawing neat trees. What I found instead was much more interesting: not only is tree layout an NP-complete problem, but there is a long and interesting history behind tree-drawing algorithms. I will use the history of tree drawing algorithms to introduce central concepts one at a time, using each of them to build up to a complete O(n) algorithm for drawing attractive diagrams of trees. – Drawing Presentable Trees, by Bill Mill

Drawing Presentable Trees

Think about consent before programming. The following is written for the fediverse but it applies to all data.

So there's a difference in opinion in the fediverse on whether it's important to get consent to use somebody's public posts for a purpose they didn't originally intend it for: adding them to a search engine, using them as part of algorithmic recommendation systems, "bridging" them to another social networks, using it to train artificial intelligence systems, and so on. Some think this is just fine, or that it's enough to assume consent and give people the ability to "opt out" and withdraw consent. Others think that these uses should require informed, affirmative, "opt in" consent. – Eight tips about consent for fediverse developers, for @nexusofprivacy@mastodon.social, by @jdp23@blahaj.zone

Eight tips about consent for fediverse developers

@jack@berlin.social has this:

A curated collection of HCI demo videos produced during the golden age from 1983-2002. – Classic HCI Demos

Classic HCI Demos

Learning to program:

Develop fluency in 70 programming languages with our unique blend of learning, practice and mentoring. Exercism is fun, effective and 100% free, forever. … Exercism is an independent, community funded, not-for-profit organisation. – Exercism

Exercism

And now for something completely different: compensation.

TechPays in Europe

levels.fyi

@baldur@toot.cafe writes:

Any executive that has led their company to a situation where they have to lay off 10–20% of their workforce is *by definition* incompetent. – Writing when tech has broken the web’s social contract

Writing when tech has broken the web’s social contract

Programming ARM 32-bit:

This book will teach you enough compiler theory and assembly programming to get going. It uses a subset of TypeScript that reads like pseudocode and targets ARM 32-bit instruction set. – Compiling to Assembly from Scratch

Compiling to Assembly from Scratch

Doom:

I think it might be useful to make available a simple and minimalistic port. One which modifies the original code as little as possible, uses as few dependencies as possible (no large external frameworks) and which can be built without a complex build system. – My easy-to-build DOOM port

My easy-to-build DOOM port

Retro-game development:

The `#retrogamedev` IRC channel at Libera is a friendly place to: ask questions about game development for retro systems; share your projects (including WIP); get inspired in all game development for classic systems! – ​#retrogamedev

​#retrogamedev

History:

There are no computation history classes in school. You can't expect people to always do the work of digging the ancestral past to learn how we got where we are now, but failing to do so creates myths. A lot of people think that ideas that died went away because they were bad, but it's almost never the case. When you start looking into these systems, it's always a social dynamic, or politics that made it so people forgot. – An Approach To Computing And Sustainability Inspired From Permaculture, by @neauoire@merveilles.town

An Approach To Computing And Sustainability Inspired From Permaculture