social.solarpunk.au

social.solarpunk.au

vidak | @vidak@social.solarpunk.au

# LOCATION

The unceded, stolen land of the Whadjuk people of the Noongar nation. Always was, always will be, Aboriginal land!!

# QUOTATIONS

You are braver than you believe, stronger than you seem, and smarter than you think. ~winnie-the-pooh

New video! I'm showing two (and a half) ways of getting the TL866 EPROM programmer to work in Linux.

YouTube: https://youtu.be/_oacXhtaLsk
PeerTube: https://makertube.net/w/kKdacAjugvbd6cDGyUSZew

Thumbnail for my video, showing me on my desk holding up the TL866 EPROM programmer box with an old Lenovo laptop running Linux Mint in the background. The overlayed text reads: "Using the TL866 EPROM Programmer in Linux?!"

I picked up a TI-83 calculator at a yard sale for $5. This is just a portable retro computer. It's got a running at 6 MHz which you can program directly, or with . 32K of RAM.

I'm pretty sure the calculator I used in high school was a TI-82, so this is a tiny bit of an upgrade of that, being that it directly supports programs written in ASM, transferred via USB from a computer. Can't wait to make some graphs and play Tetris on this thing, once I find some AAA batteries.

get it on flatpak. download the snap. install it on the appstream-compatible application store. your distro's appstream-compatible application store has it for you

@akkartik I am myself all for (see hashtag on my instance...) but I am not sure how wise would be to start thinking in Basic again. Well, I spent way too many days of my teenage years programming in Basic... but I somehow don't feel like it was worth it.

I admit that interpreter that fits to 4 to 8 KB is amazing result. ZX Spectrum Basic was 16 KB. Basic interpreter for my Sharp MZ-800, which had to be loaded from cassette tape, unfortunately, was quite good, but it was around 40 KB big.

4 KB is really good. But the entire idea of line numbering is... well... it is not really comfortable way of thinking. Or editing. On the other hand, simple, non bloated software would be useful. For certain tasks, single task environment is more than enough. And of course, the shorter code can be much easier to understand and debug, than long code.

Some time ago, I was amazed by Tiny C compiler for POSIX systems (it was able to compile itself, of course). Having something like Tiny C for Z-80 would be nice. I really missed being to use C on Z-80. Of course, Z-80 systems are often missing filesystems at all... C without file I/O is kinda crippled, but still much more powerful than Basic.

The, well, basic idea of Basic, that integers (sometimes even floats) and strings must be enough for everybody, is more or less true: yes, lot of useful stuff can be done with integers and strings. But I would still prefer to use something like subset of Python syntax... which reminds me, that my current thought experiment (not really started as project yet) is subset of Python transpiler to C (should be able to compile itself too). I consider it kind of solarpunk too, although it is not using 70s technology, but should be pretty useful running of 80s highend or 90s mainstream.

@permacomputer @vidak

Year of IPv6 on the desktop

Thank you interwebs, I knew that the new iPhone form factor reminded me of something.

Old Fiat Multipla car, which had some… odd design choices. I'm not into car terms, but let's say the top part projected a bit out of the bottom part.

Perhaps with the right compile optimisations, the Arduino Mega might indeed work for a permacomputer platform...

Because this text editor comes in at under 5KB...

@screwlisp looks like something i would play!!

Map editor explainer part 2 ! Things begin to get crazy. .

https://screwlisp.small-web.org/lispgames/nicclim-alpha-part-ii-lambdas/

Here I focus on writing normal lisp lambdas, and pasting them into the active map. Part 3 will be about picking up the lambdas and walking around the map, using them (i.e. to effect hextille game of life).

I look forward to your thoughts. We are in strange waters.

The lisp alien from unix_surrealism. Note that its nose, arm and the back of its many-eyed head coincidentally form a lambda. a 32x32 pixel image with messy transparent background. The NicCLIM map editor (i.e. an application-frame window). The graphicalised actual map is just barely visible in the top left of the bottom pain, and there are pretty-printed lambda cells (boxes with a black border) jutting off the edge of the last row of the map visible elsewhere. The text of one of the lambdas can be seen pasted into the McCLIM interactor shell. Lightfield. NicCLIM game map. With a McCLIM interactor at the top where COM-MAP-LAYOUT is the last Command:, and the wonky hextille map grid is visible in the bottom pane. Empty blue and green tiles for the most part, but a hextille game of life looping triangle is visible as pink-red and yellow LIFE scribbled over the blue-and-green empty background graphical tiles. There are black boxes around the tiles. A lambda is visible in the bottom right; but instead of the word lambda, the lisp alien (un/coincidentally forming a lambda character) is behind the pretty printed lambda definition. Default view of a couple new bitesized lambdas added jaggedly to the bottom right corner of the NicCLIM game map. The CLIM command interactor here is busy with lots of Command aborted, Add row, rem row, add cell, set cur1 (lambda (x) (cond .. stuff happening. Other information is visible.

okay!

the text editor is beginning to croak back into life!

this is a 100-ish line text editor written in Altair BASIC

i have corrected and adapted the program to run on this Tiny BASIC, which runs on virtually every micro-controller board available in the west:

https://github.com/slviajero/tinybasic

what happens in this video is:

1. a text file is loaded at the INPUT prompt

2. the file is read into memory with "R"

3. the file paged through with "N"

4. individual lines for editing are listed with "L"

please see the following source code:

https://git.sr.ht/~vidak/peoples-permacomputer/tree/master/item/basiclang/text-editors/transcribed/edit/edit-conversion-draft-2.bas

https://spectra.video/w/qvxsFMhciScC1T2py3eFvB

going live for a bit, working on the text editor that is supposed to ship with the suite of tools with the people's permacomputer model 1.

#6502

Please remove the installation medium, then press ENTER:

Uh oh, I seem to have made a parser (or, rather, bicameral reader https://parentheticallyspeaking.org/articles/bicameral-not-homoiconic) just now. Who would've thought that it's that easy?

one of the things that's always bugged me a bit about the design of #fennel is that we use parentheses mostly for calls to functions/macros but they are also overloaded in binding context to allow binding to multiple values:

(let [input "whatever"
      (v1 v2) (input:match "([aeiou]).*([aeiou])")]
  (print :vowels v1 v2))

at a quick glance if you miss the context, it looks like the second line is a call to a v1 function where it's actually binding

I have been thinking it might be clearer if we bind to what looks like a "call" to values instead:

(let [input "whatever"
      (values v1 v2) (input:match "([aeiou]).*([aeiou])")]
  (print :vowels v1 v2))

it seems clearer and more consistent but I'm not sure it's worth the extra typing... thoughts?

https://dev.fennel-lang.org/ticket/56

"a cronjob. a daemon of the ancient world."

With the spare GPIOs, you can do some crazy stuff with the PCB. Here's my Sharp 128x128 Memory LCD attached to the "extra" pins.

Photo of the BBBadge project (nRF52840 and 24-pin ePaper interface) with a 1.3" 128x128 Sharp low power LCD connected to the 7-pin expansion header.

what up fuckers

i have a rust codebase i started like 7 years ago, for solving projecteuler problems, and i figure rust has had significant updates in that time

is there a better way to do this yet

code (screenreader unfriendly)

78 => {
			s = {
				found = true;
				problems::p78::solve().to_string()
			}
		}
		77 => {
			s = {
				found = true;
				problems::p77::solve().to_string()
			}
		}
		76 => {
			s = {
				found = true;
				problems::p76::solve().to_string()
			}
		}
		75 => {
			s = {
				found = true;
				problems::p75::solve().to_string()
			}
		}
		74 => {
			s = {
				found = true;
				problems::p74::solve().to_string()
			}
		}
		73 => {
			s = {
				found = true;
				problems::p73::solve().to_string()
			}
		}
		72 => {
			s = {
				found = true;
				problems::p72::solve().to_string()
			}
		}

In the process of porting over a bunch of old code to . I'm blown away by how much cleaner, more compact and elegant the resulting code is. At least 50% reduction in the amount of lines, and it's a lot more readable...

Good morning fedi! 🌞

»