2019-09-16T01:13:07-07:00 Hello world! 2019-09-16T01:16:26-07:00 I can't abide Python, so I'm writing these messages using 'echo', for now.. 2019-09-16T01:18:43-07:00 I've always _loved_ the idea of twtxt, but had no idea so many people are using it. 2019-09-16T01:23:00-07:00 Today I was reminded of it by a long series of steps that began with an invitation from http://tilde.club. Web surfing at its best. 2019-09-16T01:25:05-07:00 @ Thank you for teaching me about Tauthon! 2019-09-18T00:45:13-07:00 about me: I'm building a hobbyist computer. No C (eventually). Lots of tests. Reward curiosity. https://github.com/akkartik/mu#readme 2019-09-18T00:49:06-07:00 So far I can: create Linux binaries; package them up with a kernel into a bootable image; run it on Qemu or Linode. 2019-09-18T00:49:49-07:00 But the syntax is nothing more than machine code (with good error messages). 2019-09-18T00:54:17-07:00 It's taken a year to get here. I want to take a break, do a Lisp interpreter for fun. Just so I can see a computer boot into a Lisp prompt. 2019-09-18T00:54:47-07:00 But everything takes too damn long with machine code. Enough fun and games. Resume climbing the ladder of abstraction. 2019-09-18T00:55:45-07:00 Next stop: a type- and memory-safe compiled language that can occupy C's niche. Manual memory management. AND manual register allocation. 2019-09-18T00:56:32-07:00 (But decent error messages if you screw up your register allocation, try to read a different type from a register than you wrote.) 2019-09-18T00:58:29-07:00 This should take a lot less code than an optimizing C compiler. There'll be no optimizer, but lots of room for the programmer to optimize. 2019-09-18T01:09:06-07:00 @ Wow, somebody's reading this! What's up?! Nice site! 2019-09-18T11:46:30-07:00 @ The link you posted :p https://wiki.waifu.haus 2019-09-20T11:42:54-07:00 An ergonomic syntax for machine code: numbers, metadata, strings, tests, blocks. https://mastodon.social/@akkartik/102825992961303855 2019-09-30T23:42:55-07:00 Where does https://github.com/ozkl/soso first switch to Ring 3? I want to rip it out and just run everything in Ring 0. 2019-09-30T23:44:37-07:00 After various attempts to grep for Tss and whatnot, current plan is to just try to binary-search writes to protected memory in the kernel. 2019-10-02T09:42:09-07:00 Thinking about https://zge.us.to/dirconf.html; what if `cat`ing a directory rendered its contents as a structured file? 2019-10-02T09:43:12-07:00 But sometimes you do want a separation between dirs and files. So maybe the file system has both, but also supports treating files as dirs? 2019-10-02T09:49:21-07:00 Seems useful to have a set of consistent lexical conventions. # for comments; . for lookup; / for metadata. e.g `cat ~.conf.git.core.pager` 2019-10-16T00:41:12-07:00 Mu's design is taking on a life of its own: http://akkartik.name/post/mu-2019-1 2019-10-21T17:36:42-07:00 Now that feedback on the design has died down (https://news.ycombinator.com/item?id=21268252; https://lobste.rs/s/xtxlec), back to hacking. 2019-10-21T17:38:22-07:00 I've mostly managed to stick to statically allocated arrays so far, but now I need real ASTs. Just leak memory for the first draft. 2019-10-25T17:29:17-07:00 It's surprisingly hard to do safe, efficient array initialization: https://www.joshmcguigan.com/blog/array-initialization-rust 2019-10-30T08:57:54-07:00 Beginnings of a translator for a memory-safe language: http://akkartik.github.io/mu/html/apps/mu.subx.html. Just empty functions so far. 2019-10-30T13:15:00-07:00 Mu's translator is growing complex. Lots of book-keeping for entering/exiting scopes: https://mastodon.social/@akkartik/103053133325948545 2019-11-10T22:33:19-08:00 First baby steps in compiling the Mu memory-safe systems language: empty function; primitive stmt; function call. 2019-11-17T23:41:41-08:00 Another week, another instruction compiling, more refinements of the code-generator: https://mastodon.social/@akkartik/103157776545612964 2019-11-30T14:29:59-08:00 First function body translated. Still no variable declarations, though. https://mastodon.social/@akkartik/103229216904239835 2019-12-30T01:12:40-08:00 Update on my safe syntax for machine code: functions can now return results. https://mastodon.social/@akkartik/103395953154615316 2020-01-01T16:12:52-08:00 Working: programs with int variables. https://www.reddit.com/r/BarbarianProgramming/comments/eiq5jg 2020-01-27T02:40:28-08:00 Working: local variables. https://mastodon.social/@akkartik/103554841927344456 2020-01-30T00:34:53-08:00 Working: factorial function. https://mastodon.social/@akkartik/103571329543801973 2020-01-31T19:01:19-08:00 Learning the complexity of compilers rather than pretending they're easy: https://mastodon.social/@akkartik/103581348949359372 2020-02-10T07:57:22-08:00 past: https://mastodon.social/@akkartik/103635361482232697; future: https://lobste.rs/s/2qzmtr/#c_itzqwm 2020-03-12T01:32:01-07:00 Mu language almost done: https://mastodon.social/@akkartik/103809142727508327. Now to make it safe. 2020-03-16T01:20:09-07:00 Paper on Mu published at the Convivial Computing Salon: http://akkartik.name/akkartik-convivial-20200315.pdf 2020-05-28T23:13:19-07:00 A test app in Mu, and an experience report: https://mastodon.social/@akkartik/104250249472942612 2020-06-07T23:30:23-07:00 A very-high-level language feature in Mu, in spite of bootstrapping from machine code: https://mastodon.social/@akkartik/104305128661766343 2020-06-16T00:34:52-07:00 A calculator app in Mu: https://mastodon.social/@akkartik/104352495147108886 2020-06-18T10:49:17-07:00 Mu now type-checking all function calls: https://mastodon.social/@akkartik/104366226332745069 2020-07-06T11:16:42-07:00 A tutorial on Mu the language: https://mastodon.social/web/statuses/104385065026974197 2020-07-25T22:17:15-07:00 Beginnings of a spreadsheet for trees: https://archive.org/details/akkartik-2min-2020-07-25 2020-07-29T22:20:29-07:00 Mu now has a generic stream type: http://akkartik.github.io/mu/html/402stream.mu.html 2020-09-11T01:32:14-07:00 Growing a test-driven text-mode Markdown browser all the way up from machine code: https://mastodon.social/@akkartik/104845344081779025 2020-09-20T00:50:17-07:00 New demo, a structured editor for postfix arithmetic: https://mastodon.social/@akkartik/104896128141863951 2020-09-27T00:34:11-07:00 Visualizing postfix functions with named arguments: https://mastodon.social/@akkartik/104935713813872559 2020-10-03T23:32:57-07:00 detective story of the day: https://mastodon.social/@akkartik/104975077519600207 2020-10-20T23:41:02-07:00 Defining functions in my live-updating structured editor for postfix: https://mastodon.social/@akkartik/105071402581806586 2020-10-27T12:14:20-07:00 A live-updating postfix shell for the Mu computer: https://mastodon.social/@akkartik/105108305362341204 2020-11-12T21:32:22-08:00 Visualizing programs with side-effects, such as printing to a screen: https://merveilles.town/@akkartik/105201366581271961 2020-12-07T00:46:54-08:00 New demo and medium-term plans: https://merveilles.town/@akkartik/105338014257369963 2020-12-24T10:06:10-08:00 Starting to give Mu its own OS: https://merveilles.town/@akkartik/105436432584324552 2020-12-30T10:03:45-08:00 2020 wrap-up: https://merveilles.town/@akkartik/105467785655674076 2020-12-31T10:49:23-08:00 2020 wrap-up redux, a Wardley Map for Mu: https://merveilles.town/@akkartik/105476276652369571 2021-01-12T01:40:04-08:00 Rendering text on bare-metal x86, with an eye to non-Latin languages: https://merveilles.town/@akkartik/105542032656082045 2021-02-21T15:07:32-08:00 Mulling switching gears for the Mu shell to a less ambitious Lisp-based language: https://merveilles.town/@akkartik/105771735864653468 2021-02-25T00:20:29-08:00 Drilling into computations in the shell for the Mu computer: https://merveilles.town/@akkartik/105790894303047592 2021-04-11T00:36:47-07:00 Distinguishing a program's return value from its side effects: https://merveilles.town/@akkartik/106045532928000526 2021-04-22T20:42:06-07:00 Prototyping on the Mu computer, and nudging people to throw the first one away: https://merveilles.town/@akkartik/106112499040193446 2021-05-05T19:23:52-07:00 How computer sandboxing models have evolved over time: https://merveilles.town/@akkartik/106185773783459627 2021-05-07T21:29:45-07:00 Lisp macros in the Mu computer: https://merveilles.town/@akkartik/106195814023586904 2021-05-09T12:38:31-07:00 Don't called them signed ints and unsigned ints. Call them ints and addresses. https://merveilles.town/@akkartik/106206878251648806 2021-05-15T18:42:36-07:00 My computer now prints a call stack when it crashes: https://merveilles.town/@akkartik/106239831225295745 2021-05-17T23:56:57-07:00 New video riffing on some ideas for doing more with animation in debuggers: https://archive.org/details/akkartik-mu-2021-05-17 2021-06-09T22:52:22-07:00 Live-coding Fizzbuzz on the Mu computer's prototyping environment: https://archive.org/details/akkartik-mu-2021-06-09 2021-06-15T21:14:48-07:00 Sumeet Agarwal solves an Advent problem with Mu: http://akkartik.github.io/mu/html/linux/advent2017/1a.mu.html 2021-06-23T21:56:46-07:00 Syntax sugar in the Mu shell: https://archive.org/details/akkartik-mu-2021-06-23 2021-07-30T13:26:11-07:00 Rendering arbitrary images on the 256-color Mu computer: https://merveilles.town/@akkartik/106671394323266954 2021-08-15T23:31:06-07:00 A network-less, read-only browser built up from machine code: https://archive.org/details/akkartik-mu-2021-08-15 2021-11-14T14:35:24-08:00 End-user programming: modify apps while running them. https://github.com/akkartik/teliva 2021-11-14T14:35:40-08:00 2-minute video: https://archive.org/details/akkartik-2021-11-14 2021-11-14T15:50:46-08:00 @prologic Sorry I only just saw your note from almost a year ago: http://twtxt.xyz/update/21b5925b16b9a793 2021-11-22T09:39:44-08:00 A chess viewer in Teliva, demonstrating networking capabilities: https://merveilles.town/@akkartik/107319684018301051 2021-11-30T19:30:29-08:00 Preparing for Advent of Code in Teliva: https://archive.org/details/akkartik-teliva-2021-11-30 (video; 15 minutes) 2021-12-02T03:12:27-08:00 Review Jam, day 2: try a short task in Teliva. https://buttondown.email/reviewjam/archive/advent-of-foc-day-2-brutalist-convivial-computing 2021-12-22T01:14:48-08:00 Building links in a Gemini browser app -- from within the app: https://merveilles.town/@akkartik/107489728557201145 2021-12-25T23:12:58-08:00 Running untrusted apps more flexibly and simply: https://archive.org/details/akkartik-teliva-2021-12-25 (video; 2 minutes) 2022-02-06T17:49:22-08:00 Why everyone needs to know some coding: last-mile sandboxing (FOSDEM '22) https://archive.org/details/akkartik-2022-01-16-fosdem 2022-02-11T09:33:03-08:00 Zettelkasten app built in Teliva, a platform for sandboxed, hackable text-mode apps: https://archive.org/details/akkartik-teliva-2022-02-10 2022-06-05T23:51:50-07:00 I built an editor for plain text where you can also seamlessly insert line drawings. http://akkartik.name/lines.html 2022-07-02T18:02:22-07:00 Should I complicate the UI of my app or just say no? Best of both worlds: new app. https://merveilles.town/@akkartik/108580451364837131 2022-07-27T18:40:04-07:00 Preview of a note-taking app I've been working on: https://archive.org/details/akkartik-pensieve-2022-07-27 (video; 5 mins) 2022-08-04T12:24:19-07:00 Command palette and commands for managing a graph of notes: https://merveilles.town/@akkartik/108766067153506592 2022-08-22T17:08:16-07:00 My entry for Wheel Reinvention Jam: rethinking debug by print, and therefore source code. https://handmade.network/p/283/bifold-text 2022-08-27T09:47:05-07:00 A 4-minute video about my project to replace debuggers with print statements: https://merveilles.town/@akkartik/108895837561334218 2022-10-17T00:31:20-07:00 Live-coding using LÖVE: https://spectra.video/w/wkDB5fsjBNBbsqKXGhGzwT (video; 5 minutes) 2022-11-27T23:25:39-08:00 A Lua-based markup language: https://codeberg.org/akkartik/luaML.love 2022-12-29T19:28:39-08:00 2022: A year of freewheeling apps http://akkartik.name/post/roundup22 2023-01-08T21:34:57-08:00 A map for code: https://merveilles.town/@akkartik/109656512985323270 2023-01-23T21:44:02-08:00 Managing tests (breaking them, fixing them) in my map for code: https://merveilles.town/@akkartik/109742488349122478 2023-02-12T23:06:03-08:00 This might be the most mind-bending 20 minutes of my life: https://www.ted.com/talks/donald_hoffman_do_we_see_reality_as_it_is 2023-04-21T19:58:02-07:00 A little app for drawing graphs: https://git.sr.ht/~akkartik/snap.love 2023-05-23T23:22:05-07:00 New talk: "Using computers freely and safely" http://akkartik.name/freewheeling 2023-07-06T23:54:47-07:00 Hands-on with my Freewheeling Apps: https://youtu.be/aD6vmbmzdBo (demo; 20 minutes) 2023-08-04T14:16:39-07:00 The most insightful talk I've seen in recent memory: https://archive.org/details/finding-meaning 2023-08-22T11:33:15-07:00 Quickly make any app hackable -- as long as it's built in LÖVE. https://forum.malleable.systems/t/adding-malleability-to-any-love-app/90 2023-08-26T08:16:46-07:00 More easily build/run little LÖVE apps on Android: 1) https://love2d.org from app store 2) https://love2d.org/forums/viewtopic.php?t=94852 2023-11-11T16:59:10-08:00 I've been building little custom debug UIs for my programs. Here's a good one: https://merveilles.town/@akkartik/111356122874372588 2023-11-16T12:09:12-08:00 Newest app was a nice test of my recent debug infrastructure: https://merveilles.town/@akkartik/111422018573320117 2023-11-23T12:54:49-08:00 Lua Carousel: for creating little programs on desktop and mobile devices. Can be modified as it runs. https://akkartik.itch.io/carousel 2023-12-18T15:38:26-08:00 A voice recorder you can tweak the source code for, right on your Android phone: https://akkartik.itch.io/carousel/devlog/652184/_ 2023-12-19T21:20:26-08:00 The Lua Carousel productivity suite: 4 apps in 150 lines you can mix&match on your phone. https://akkartik.itch.io/carousel/devlog/653245/_ 2023-12-26T23:15:28-08:00 An equation plotter in 90 lines, written on my phone: https://akkartik.itch.io/carousel/devlog/656473/building-an-equation-plotter 2024-02-16T15:10:44-08:00 An equation plotter I can pan and zoom: https://akkartik.itch.io/carousel/devlog/678890/new-version-after-51-days 2024-02-20T20:35:01-08:00 A paper computer inside a silicon computer: https://akkartik.itch.io/carousel/devlog/685707/a-little-programming-game 2024-02-23T16:36:29-08:00 A quick and dirty charting library for your computer or phone: https://akkartik.itch.io/carousel/devlog/686788/lots-of-charts 2024-03-13T00:00:00-07:00 A sokoban client for your phone: https://akkartik.name/post/sokoban 2024-03-22T00:00:00-07:00 All the 1-D cellular automata: https://akkartik.itch.io/carousel/devlog/702311/_ 2024-03-23T00:00:00-07:00 Gridlines for snap.love: https://akkartik.name/post/2024-03-23-devlog 2024-03-24T00:00:00-07:00 Merging code on the phone (klunkily): https://akkartik.name/post/2024-03-24-devlog 2024-03-29T00:00:00-07:00 The simplest possible dither: https://akkartik.itch.io/carousel/devlog/706603/_ 2024-04-02T20:26:13-07:00 Drawing histograms: https://akkartik.itch.io/carousel/devlog/708682/_ 2024-04-13T11:39:29-07:00 My first app on a new, hopefully convivial platform: https://akkartik.name/post/2024-04-13-devlog