Pinned toot

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: Mu, a hobbyist computer that rewards curiosity. Starts from x86, getting to a HLL with as little code as possible. github.com/akkartik/mu

"Bicycles for the mind have to be see-through", akkartik.name/akkartik-convivi

*Update on the Mu computer's memory-safe language*

Mu now type-checks calls to functions implemented in unsafe SubX machine code. I have to provide signatures explicitly, and they look like this:

akkartik.github.io/mu/html/400

github.com/akkartik/mu

Show thread

Lots of progress on the realtime visualization, though some bugs are left :)

#theWorkshop

Random link from the archives: "Truths programmers should know about case" web.archive.org/web/2018120310 originally posted Mon Dec 3 10:19:58 EST 2018

Has there been any alternate history of WWII that explores what the world would have looked like if Germany *hadn't* declared war on the US after Pearl Harbor?

This is amazing: github.com/shinh/elvm

ELVM is similar to LLVM but dedicated to Esoteric Languages. Create programs in such languages as Brainfuck by writing C code. There are 43 supported esolangs.

*Update on the Mu computer's memory-safe language*

Since the language is starting to seem stable, and the error messages have been getting better, and I managed to build some little programs without _too_ much trouble, I figured it was time to start actually _talking_ about the Mu language in the documentation. So make way SubX, and yield center-stage to Mu.

github.com/akkartik/mu/blob/ma

github.com/akkartik/mu/blob/ma

Show thread

@akkartik Neat!! I like how you can seamlessly go from higher-level code into assembly language level and back again.

When Coding I:

…name flags, parameters, or constants that modify how a function operates with adverbs.

cleanly instead of clean. Uniquely instead of unique, etc.

so tired of anarchy's only vibe being punk.

instead of white boys drawing graffiti on brick walls, give me black lesbians harvesting the vertical farm on the side of their collectively governed skyscraper

instead of white boys wearing black and flipping off cops, show me an open air market that doesn't need police because everyone can take what they need

vandalizing walls and flipping off cops are valid forms of resistance, but what we're fighting for is beautiful too

It is 2074. Copyright is no longer extended since rich people no longer die. All librarians are unseen outlaws building archives underground. This is their story.

*Update on the Mu computer's memory-safe language*

Mu now checks for most variable accesses if the variable is still live, and it's register hasn't been clobbered by some other variable. The extra-burdensome parts of programming in Mu are hopefully now not very burdensome.

Next up: testable syscalls for screen and keyboard. But I might take a break first. My RSI has been acting up.

github.com/akkartik/mu

Show thread

Are you interested in an entirely #FreeSoftware and #FreeHardware laptop? How about if it's meant to be modified and upgraded?

In this episode of Libre Lounge, @emacsen sits down with Lukas Hartmann from @mntmn to talk about his history in Free Software, the MNT Reform project, and the future!

librelounge.org/episodes/39-mn

*Update on the Mu computer's memory-safe language*

Mu now checks all function calls.

Pass in the wrong type = error.
Save a result to the wrong type = error.
Save a result to the wrong register = error.

There are automated tests for error messages.

I estimate this change protects against 60% of the most common mistakes. Checking the most recent variable in a register should provide another 20%. And I hopefully have TODOs for the remainder to gradually whack away.

github.com/akkartik/mu

Show thread

I spent the last few days implementing a 'byte' type in Mu.

For the most part, Mu is exclusively 32-bit. No long/short nonsense here. However, I do like strings. Eventually even UTF-8 strings. So, minimal byte support. Mostly they behave like 32-bit values. You can't store them on the stack. (Because x86 reasons.)

As a test, I built a little calculator app: akkartik.github.io/mu/html/app. This app also shows off multiple return values.

Read more: github.com/akkartik/mu

cc @s_ol

Show thread
Show more
Mastodon

Server run by the main developers of the project 🐘 It is not focused on any particular niche interest - everyone is welcome as long as you follow our code of conduct!