Pinned post
Pinned post

I research ways to make software more empowering. Rely less on others, build easy, run sandboxed, reward curiosity, audit on demand, encourage experiments, convey why, reveal surprising design consequences, make society more resilient.

Current project: github.com/akkartik/teliva
Previous project: github.com/akkartik/mu
How I got here from there: lobste.rs/s/h4lnkn/what_are_yo

Pinned post

Why everyone needs to know some coding: last-mile sandboxing

My talk at FOSDEM this morning: archive.org/details/akkartik-2

Apologies for the low volume of the recording :/ This copy seems slightly louder to me than the version on the official page. However the official page includes (high-quality and audible) Q&A at the end.

fosdem.org/2022/schedule/event

Main project page: github.com/akkartik/teliva

Many thanks to all the organizers of FOSDEM '22!

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

Working on an operating system is making me realize some of the shortcomings of the text-editor I use. The OS source is like 50k tokens, and I waste most of my time scrolling up and down trying to locate routines in the massive source file.

This morning I added a simple list of nearby routines to help navigating the project file, it also really ties up the interface together nicely.

@technomancy @mala btw I have many, many times thought "what the fuck am I wasting my time on this stuff for when the world is literally BURNING" and considered dropping all the programming stuff to try to focus on climate change because if society doesn't survive what's the point of all this?

but let's be honest, I would have near zero impact on that. so I keep hacking on the stuff I can.

A lot of your work on compilers, your enthusiasm for it, your gamedev stuff, have been *infectious* for me, and at various times where I felt completely depressed with everything and giving up, I turn to the people I admire for inspiration. Your stuff is straight up in that category.

Keep going, you're on the right track. And if you want to figure out how to make a more direct impact on the social network stuff while doing lisp, well heck, there are ways we can collaborate :)

re: so I guess this whole thread is just a weird elaborate way to say ... 

@technomancy @mala At any rate, I think it's worth persuing multiple exciting directions. It's hard to anticipate which things will take off, giving boosts of encouragement to things that look interesting I think is good.

RISC-V and Blender are both things that I now regularly see hitting my timeline that I was really excited about for a long time but there was a lot of "yeah, this is never going to happen though, it would have by now". Hell, ActivityPub itself is in that category. It could be pretty demoralizing working on it when the main thing I had ringing in my ear was "this is never gonna happen". I'm glad I didn't listen to that, and put in the work.

Lots of other things I've been excited about *didn't* make it. But you really don't know what will. It's worth encouraging, trying to promote and inspire things that might, from the extremely ambitious stuff (a new architecture?!) to the more down to earth (the thing we want that compiles to the thing we don't as much!)

@cwebber but ohhhh Christine... this post is giving me the feels.

I really want to believe. I want to live in this dream world we've all been envisioning where we can finally live free from the curse of the Original Sin of using C.

but that dream feels like a black hole that just sucks in all the work you can possibly give it without a credible promise on the other side of something that can work for everyone.

for every person who hacks on an ideal application, you have someone who's going even further to develop their own ideal language, and someone who goes further than that to develop an ideal (done right this time!) VM, and beyond that someone with their ideal OS that finally learns from the mistakes of the past, who of course is surpassed by someone with their amazing, pure, ideal instruction set and CPU architecture which will finally set us free (once we solve the pesky problem of fabrication).

Something I can promise in my browserengines: What can be accomplished using CSS will always stay ahead of HTML.

The reason why: I use CSS to implement HTML!

O.K., I make an exception for forms... Very keen to stay ahead of the curve there without the distraction of JavaScript, or needing to get it working within my webpage layout!

2/
✨ Automatic Post Privacy:

I sorely miss the ability to draft and preview toots. The closest we got is posting them as mentioned people-only then redrafting.

Meanwhile, I'd also love to control the default privacy of replies... thus this thing was born.

It just auto-clicks your way to the desired privacy. It has a smart mode for replies to not replace stricter modes like mention with more public ones.

Download: https://pastebin.com/PuKwyyU7

#mastoModding #mastoDev #coding #userscript

Show thread

My parser for at-layer CSS at-rules compiles successfully, and has passed some basic tests.

Haven't actually tested the parser itself, but the name resolution works fine... Then again there wasn't much code there to fail...

Committed my changes to https://git.adrian.geek.nz/haskell-stylist.git/

Ah this early @tidalcycles UI.. https://vimeo.com/19384095
I made the UI in C using the rather nice 'clutter' library that I had a lot of fun with. Actually I've not really found a similar library since.. What's a good library for making experimental textual UIs, that lets you edit and move bits of text around the screen, and draw/animate relationships between them? I guess javascript has some answers? I did port it to Haskell+SDL but interested in more 'modern' alternatives.
* C/clutter version: https://github.com/yaxu/texture
* Haskell/SDL version: https://github.com/yaxu/hstexture/tree/master/Texture

The question isn't whether people "care" about #privacy or not. Everyone does. The question is if they understand that less privacy is a #social issue, not just a #personal one. The question is if they understand what it actually means to be on commercial social media; who they're feeding & how. The question is if they have any other option.

It's the #capitalists we're fighting - not the "workers". So be kind, & keep #fighting, #thinking, #making, #feeling, #saying, #doing.

😽

Idea for a new tool

Drop a Mastodon or HN URL on a window, and it constructs a more dense 2D graphical layout for a thread.

* Separate card for each comment.
* Ideal readable width per card.
* Short arrows from comments to their replies.
* Keyboard shortcuts to pan along semantically to sibling or child.

Side-effects:
* It needs the network, obviously.
* Zero contact with file-system.

Inspirations:
* @ColinTheMathmo's Chartodon
* @s_ol's FediDag tool (example: dag.s-ol.nu/?document=https://

There's something fundamentally broken about capitalism and economics if having an abundance of something we want is viewed as a "Bad Thing(tm)"

"The problem is that solar panels generate lots of electricity in the middle of sunny days, frequently more than what’s required, driving down prices—sometimes even into negative territory."

-- https://twitter.com/techreview/status/1415359294850011136

Like sewing, the basics of programming really aren't that hard, though it's easy to feel out of your depth when you're first starting. And the advanced capabilities can seem like straight up magic, even to otherwise accomplished craftspeople.

But there's no requirement that everyone be a tailor or a professional seamster! Any sewing you know is valuable. Same with programming: there's no requirement you be an expert -- any amount of programming you know is valuble. Even if it's just the "sewing on buttons" of using Excel formulas or writing a simple script.

Show thread

@ColinTheMathmo

Your chart is ready, and can be found here:

https://www.solipsys.co.uk/Chartodon/108775972680762524.svg

Things may have changed since I started compiling that, and some things may have been inaccessible.

In particular, the very nature of the fediverse means some toots may never have made it to my instance, in which case I can't see them, and can't include them.

The chart will eventually be deleted, so if you'd like to keep it, make sure you download a copy.

gamejam, programmer graphics 

and a visibility test. the lines should occlude visibility, and they *mostly* do. still some 'corner' cases with rays passing through corners

Show thread

git.envs.net/binarycat/uxn-nrg

been working on game for a few days now, there's still a lot to do but i'm pretty happy with what i've done so far.

* reliable collision system
* rle compressed level loading
* basic physics

still needs doing:
* add enemies and other non-player objects
* add a bunch of different tiles with different effects
* menuing
* failure
* more abilities for the player to use
* level design
* replace placeholder graphics
* speedrun timer
* other things i'm sure

The anomaly of cheap complexity - Andrew Appel @ Freedom to Tinker: https://freedom-to-tinker.com/2022/08/03/the-anomaly-of-cheap-complexity/

I see lack of standardization amongst hardware protocols as a leading cause of operating system complexity. That said when I look at Linux's code USB definitely seems to help... But that's by no means the sole source, and if like me you care about keeping not that old hardware in active this isn't an issue that's going away any time soon at all.

* Links have labels (next/previous by default).
* Graph-traversal commands can take an argument (next/previous by default) of the edge label you want to follow.
* 'add' adds an edge immediately to the current node, 'append' traverses the edge repeatedly to the end, then adds.
* 'step' navigates along an edge from the current node and opens it in a new column, 'unroll' traverses the edge repeatedly to the end and collects all nodes into a single column.

add:append :: step:unroll

Show thread

Current state of my note-taking app

Things of note:
* Operates on a hard-coded directory of text files.
* No overlapping, no tiling, just an infinite 2D surface of columns. Commands open new columns.
* Wordstar-style menu up top of important commands in current context, and their shortcuts.
* Command palette at top left that filters commands available in current context.
* Files/nodes can have links. Links can form graphs, as the picture shows (original: maplefish.com/todd/papers/Expe)

(cont'd)

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.