Pinned post

Researching new ways to write software that make it easier for newcomers to understand rather than for insiders to maintain. Build easy, reward curiosity, encourage lots of forks, delete unused features, more antifragile society. akkartik.name/about

Current project: github.com/akkartik/mu

Rather than start with a desired syntax, Mu starts from the processor's instruction set and tries to get to _some_ safe and clear syntax with as few layers of translation as possible.

Pinned post

Managing side-effects on the Mu computer

archive.org/details/akkartik-m (video; 2 minutes)

The Mu computer's prototyping environment uses _traces_ to explain and debug programs. But traces are expensive to compute and made the environment slow and laggy.

I fixed things by collecting only a shallow trace at first, and iteratively deepening on demand by rerunning programs. This only works because it's safe to rerun functions. There are no side-effects in Mu.

Main project page: github.com/akkartik/mu

Show thread

@akkartik @requiem @mathiasx I look to Joy, more than forth, to be honest, though I’ve not considered compilation of Joy programs given the `i` operator, and the full on Joyness.

I _do_ have some ideas for how to make Joy, well, more Jubilant, but time has not been on my side to get something worthy of release.

Even still, the versions I have are all interpreted.

Part of me is thinking that, if I really wanted to make a splash in the open/homebrew computing scene, I should implement my own take on the Canon Cat.

Or, perhaps put another way, to go forward with a worse-is-better approach to implementing a humane interface (Jeff Raskin's book, concept, and idea for what would have come next after the Canon Cat).

Been learning a lot from building Ferro. A few highlights:

- I actually like test driven development, and I feel a lot better about my software when I do it
- Writing UI libraries is not trivial
- “Pull” workflows are a lot better than building things from bottom to top
- Object oriented programming and I are making peace with each other
- The hardest part is defining what you want precisely enough to describe it to a computer
- Invest in tooling for yourself but don’t get sidetracked by tools

"Programmers do not understand the difference between an abstraction and a wrapper and a generalization. Abstractions are powerful; generalization or wrapping without abstraction is _taking power away_."

lobste.rs/s/3zpeio/models_abst

"When I buy a book, I want to go to a book store and ask for the book I want. With nix I have to go to a printing press and provide instructions for printing the book I want. This is insanity. This is not progress."

lobste.rs/s/sizjqf/migrating_f

"When Martin Luther contemplated how to get the Bible directly to end-users, he first considered teaching Latin to Germans. Then he considered translating the Bible to German. Both were difficult prospects; German had regional dialects. Luther chose to "fix up" German by restructuring it to be able to handle philosophical and religious discourse.

"Martin Luther was a great UI designer. He understood that you have to start where end-users are before helping them grow."

mprove.de/visionreality/mail/k

"Even if it didn't work, the fact that someone could have designed a vaccine, and contracted a company to manufacture that vaccine in June 2020 for under $5k is fucking profound — and that is what I felt people needed to know."

"At The Odin, we sell kits to teach people how to do hands-on molecular biology and genetic engineering in their homes. This is our mission: we believe everyone has a right to learn about and practice science.."

piratewires.com/p/the-crime-of

My favorite weird Windows feature is that by installing the Japanese language pack, Windows Explorer gains the ability to open .lha/.lzh archives

i hate how much autogenerated go code is involved in things surrounding k8s

Interlocking gears and circles in 279 bytes

t=0
draw=_=>{createCanvas(w=500,w)
n=sin
t+=.03
for(c=0;c<w;c+=31)for(r=0;r<w;r+=31)if((r+c)%2<1){beginShape(fill(0))
for(i=0;i<4;i++)for(b=i*PI/2+max(min(n(t+dist(w,w,c,r))*1.5+n(t/2)/2,1),-1)*PI,a=b+3.9;a>b+2.3;a-=.1)vertex(c+cos(b)*32+cos(a)*18,r+n(b)*32+n(a)*18)
endShape()}}

#p5js #MastoArt #つぶやきProcessing #p5t

metasyn.github.io/learn-uxn/

🌱 :merveilles: :tealheart:

over the last week i ported the C based emulator and assembler into webassembly and javascript using

i also added a parser and syntax highligher. it runs the majority of the roms in the main uxn repo! give it a try and let me know what you think

I (with the help of QuickCheck) found a weird bug in git submodules: git.coop/-/snippets/85

@vertigo Yeah, dynamic memory and strings... It always bothered me when I read the description of some brilliantly simple language/programming approach. I didn't understand why examples like 2 3 + are given when the most telling thing is to insert a character at the beginning of a string?
You can store numbers in registers and add them up with a single assembler command, show me that your language doesn't turn into a horror which flaps in the night by merging two strings.

I managed to compile a barebones version of UXN for the Raspberry Pi 3 (bare metal, no OS). Only the console device is working right now, printing to the UART1. In this image the kernel.img image is ran using qemu with the console device rom.

I actually have the framebuffer working (currently drawing a blue rectangle to the screen), but didn't yet get to implement the PPU code. It should be pretty easy, since it's just a matter of writing to a 0xBBGGRR buffer.

CC: @neauoire @alderwick

@lucidiot …yeah, it’s more of an “everyone doing way more JS+DOM stuff than anyone ever imagined” thing than anything else :blobcatderpy:

So, what did we learn here today?

Sadly, Debian has lost two of its biggest features: support for the oldest possible hardware, and an accessible library of offline packages. Without these two, I feel much less compelled to take Debian in a setup I need to keep running no matter what.
Alpine is perfectly usable if you know what you’re doing – just install the right packages and you’re ready to go! Keep in mind it’s an OpenRC distro, so you need to understand you won’t just be able to e.g. do fancy stuff with (K)DBus
PipeWire seems to work perfectly fine as a drop-in replacement for PulseAudio, embrace it!
Demand more lightweight websites like Invidious if you need them
Firefox is a good foxxo :blobfoxpat:

Show thread

also: gotta love how even LxQt uses exactly 512MB of RAM, bye late 90s/early 2000s computers

Show thread

wait

what happened to the Debian DVDs which contained all of the packages???????????

The full source code is on the game page, and if you want to learn more about how it works, I have a cleaned up & commented version of the code here:
gist.github.com/andymasteroffi

Show thread
Show older
Merveilles

Revel in the marvels of the universe. We are a collective of forward-thinking individuals who strive to better ourselves and our surroundings through constant creation. We express ourselves through music, art, games, and writing. We also put great value in play. A warm welcome to any like-minded people who feel these ideals resonate with them.