#Bookmarks #Programming
Editable software:
@akkartik writes:
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
Books:
Teach Yourself Computer Science, book recommendations by Patchlore
The Algorithm Design Manual, Notes by Patchlore
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
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, ...)
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)
Generative art project by Anders Hoff
“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.
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
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
Forth, uxn:
Array languages like KAP, APL, J:
At its core, KAP is a programming language based on APL. – 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
@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
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
@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
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
Javascript:
QuickJS is a small and embeddable Javascript engine. It supports the ES2023 specification including modules, asynchronous generators, proxies and BigInt. – 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
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
Pascal:
Modern Object Pascal Introduction for Programmers
Hare:
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
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
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
And now for something completely different: compensation.
@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
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
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