I've been working on an implementation of the willow data model . As a result, I've had databases on the mind as of late. After reading (probably too many) papers, I decided to implement the matklad comptime ORM tutorial , and it really helped me understand what the interface to a database/storage engine could be. I've still got a lot to sort out since the willow data model…
Reading Code I find that I spend a lot of time reading code when I am learning a new topic. I used to mostly browse, search, and read code from repositories through GitHub's web view. However, GitHub restricted searching code to logged-in accounts a while back, and has become increasingly punitive about rate limits. GitHub's web interface is now basically unusable for me. git clone…
Introduction A long while ago, I used clojure for some web development and used hiccup-style html templates for the first time. For the uninitiated, clojure is a lisp dialect. This makes it possible to directly represent tree structures. For example, here is an HTML document: [ :html [ :head [ :link { :rel " stylesheet " :href " /style.css " } ] ] [ :body [ :article [ :h1 " Hello world! " ] […
Description I've had a good experience with email exactly once. But it had a fatal flaw. I struggle with email The more time passes, the more I struggle with email. My inbox grows faster than I can deal with it. Mostly spam I never signed up for, emails that are irrelevant after a few days, or emails where I already know everything I need to know from glancing at the subject. And worse: the…
Description Inspired by matklad and Drew DeVault , I wanted a permenant place to collect links that have helped me in order to build knowledge and signal boost them. Live Coding What is live coding? https://blog.toplap.org/about/ Live coding is a new direction in electronic music and video, and is getting somewhere interesting. Live coders expose and rewire the innards of…
My Background programming I am a professional game developer, I write C++ at work and try not to hate it. Spent a lot of time writing Rust and recently switched over to Zig . livecoding Started a local meetup last year, and I have performed doing visuals locally at Viscera and with livecode.nyc . handmade Attended Handmade Boston 2023. Seen some of Handmade Hero and a co-worker gifted me…
Introduction Recently, I have become obsessed with hydra , a web-based library for live coding graphics. Using hydra, a live-coder can create fun audio-reactive visuals in an intuitive and fun way. Here is a simple example : osc ( 10 , 0 . 1 , 0 . 2 ) . color ( 0 . 1 , 0 . 2 , 0 . 4 ) . modulateRotate ( shape ( ) , 2 ) . diff ( o0 ) . scrollY ( 0 . 1 ) . rotate ( 0 , 0 . 1 ) . out ( ) This chain…
Introduction Although I try to make good use of the debugger, I am quite used to print-based debugging, especially for unit tests. I wanted to explore some tricks to improve print-based debugging, and also incorporate the debugger more. print-based debugging improved One big problem with using print debugging is spammy output. If I am running something in a loop, and only one iteration of the loop…
Description I performed with hydra for the first time at Dance or Don't; it was a blast! hydra prep hydra is a JavaScript live-coding framework which intuitively builds GLSL shaders from expressions which look like this: osc ( ) . diff ( o0 ) . rotate ( ) . out ( ) I have been practicing making stuff with hydra for a few months now. I've learned a bunch about how it works, and I've…
Introduction I host some stuff on a server, and I am trying to do a better job of it by using Ansible to maintain things; however, even before I can use Ansible on a new sever, there are a few first steps I need to do… Unfortunately, I can never remember what they are, so I am documenting them for me and anyone else that happens to find this page. Disclaimer! I am not a professional, just a…
Samples Redux strudel has lots of awesome ways to modulate, loop, chop, and process samples; kind of like having a Digitakt in your browser. glfmn.io Playing samples Playing a sample is the same as playing a sound; in fact, most sounds we have already played with are samples: $ : sound ( " xylophone_hard_ff " ) glfmn.io Speed speed controls the rate of playback, altering the pitch: groove : " bd!2…
Description As a society, I believe we have a bias towards thinking of code as a tool for automation and industrialization. Code is a way to automate things that people do, and often in doing so becomes a tool for dehumanization. In the most pessimistic view, the people that are able to code are advanced technicians , implementers of an inhumane future. However, programming can also be an…
Live Coding verb . Writing and running code in a live environment, where one is able to run and manipulate the program at the same time. noun . A form of performance art using code as the interface to create art with an emphasis on live manipulation of code that is usually visible to the audience. Both pre-planned and fully improvised. glfmn.io Ethos Software development is usually a practice…
Description A tour of the bevy_ecs v0.12.1 entity and component storage. Bevy Bevy is a modular game engine based around an ECS , or Entity , Component , System architecture; to quote the README (emphasis mine): ECS is a software pattern that involves breaking your program up into Entities , Components , and Systems . Entities are unique things that are assigned groups of Components, which are…
Introduction I really liked working with bevy and the bevy ECS in rust; I was peering through the code of the bevy_ecs and I realized it's actually very easy to understand. I've been meaning to write my own ECS to develop skills that I want, so I've decided to do a loose port to Zig, focusing almost entirely on the entity storage and lookup sides for the moment. But what is an ECS?…
Overview EGL is a library for writing all the glue that goes in between your application and the operating system to coordinate access to resources on the GPU, in a platform independent way. In specific, EGL is a mechanism for allowing the graphics driver to share memory on the GPU between different rendering contexts. In our case, the contexts are the OpenGL context that our application uses and…
Introduction I feel like when people describe the game they want to make, they can always describe it relative to other games, or list a bunch of games that make sense as clear inspiration. And yet I don't really feel like I can do that with this game that I want to make. What comes to mind are more moments, moods, impressions. The sort of things that are uncomfortable to use as the first…
Overview Wayland is a protocol for communicating between a graphical application and the host system. The program which has a some sort of image to present, like our humble triangle, is called a wayland client , and the program that ultimately decides where on screen that image shows up is called the compositor or server . When we say wayland there are technically two things we could be…
Introduction I decided to start working on a small OpenGL project to evaluate zig as language to use for some project ideas I had, and it was my first time writing a graphical application without winit to abstract everything for me. OpenGL only provides abstractions for doing computations on the GPU, it doesn't open windows for you or handle things like input, etc. For that one uses a…