Pinned ping

If your community/organisation/company is interested, I am keen to give on-line talks about , aka Low Carbon and Sustainable Computing.

Example topics are:

Frugal computing
On the need for low-carbon and sustainable computing and the path towards zero-carbon computing.

How to reduce the carbon footprint of your digital lifestyle

Frugal computing: developer perspective
On the need for low-carbon and sustainable computing and what developers can do about it.

But happy to discuss specific topics in this area.

(boosts much appreciated!)

Pinned ping

I wrote an article about the need for low-carbon and and the path towards zero-carbon computing.


** The problem:
* By 2040 emissions from computing alone will be close to half the emissions level acceptable to keep global warming below 2°C. This growth in computing emissions is unsustainable: it would make it virtually impossible to meet the emissions warming limit.
* The emissions from production of computing devices far exceed the emissions from operating them, so even if devices are more energy efficient producing more of them will make the emissions problem worse. Therefore we must extend the useful life of our computing devices.
** The solution:
As a society we need to start treating computational resources as finite and precious, to be utilised only when necessary, and as effectively as possible. We need frugal computing: achieving the same results for less energy.
** The vision: please read the article, I'm out of characters.

Pinned ping

Yay, I now have running on a PYNQ-Z1 FPGA board. It has a 650MHz dual-core Arm Cortex-A9 with 512MB RAM. That is not enough memory to run though.

I wrote an article, "Quiet crystallisation", on Japanese cultural references in Yoko Ogawa's novel "The Memory Police". It might interest you if you are a learner of Japanese or interested in Japanese culture, or if you have read the novel.


I wrote a short article "The politics of writing compilers", some questions compiler researchers and writers might want to ask themselves.

Wow, 1ère place au #Fedivision ! 🤯

Un grand merci à toustes pour vos votes et messages,
ça nous fait très plaisir !! 🥰

Merci aussi à @TQ et @zatnosk pour l'organisation, et à toustes les participant·e·s d'avoir fait vivre cet évènement ! 🤗

Plein d'amour pour le #fediverse, et pour l'alternative qu'il représente !

I miss #perl I still really like it and its very special way not getting in my way. I think after realizing years ago that I'm never going to be the purist language connoisseur I'm happily sticking with perl, javascript, go, shell, R and other.. Schmuddelkinder languages :)

The more I think about it the more it feels like the explosive growth in computing power available to us have not been a good thing.

I don't know if I'm just being nostalgic though, but there is something about things that are birthed by hacks and ways to get around slow parts.

What we have now instead is towers of abstraction crazy bloated stuff just for the sake of ease of development, I don't know, it feels like we have taken a step back, rather than foreward.

@float13 are you familiar with Design For Disassembly?

Designing for Disassembly ensures that all elements of a product can be disassembled for repair and for end of life.

This allows for and encourages repairs, with the result that a product's life cycle is prolonged; and it allows for a product to be taken apart at the end of its life so that each component can be reclaimed.

λ In functional programming languages, a list is the most versatile data type that can be used to store a collection of similar data items.

Uxn uses singular opcodes operating on words of equal length, one might come across a problem that is better addressed with routines that operate on ordered lists of items and nested stacks.

Here's a 300 bytes implementation of cons cells in #uxn.


We need to make power efficiency sexier than raw computing performance. Don’t show me your giant GPU or your crazy Cinebench score, that stuff’s lame. Show me how you can get done everything you need to at a lower power draw than anyone else

I forgot to say so but this is of course for free.

Show thread

#Fediverse some #fedijobs to bring to your attention!

Martel Innovate has two vacancies related to #HorizonEurope and @EC_NGI

"Passionate about engaging innovators' communities and promoting R&D projects across #Europe and beyond?

We are looking for you! Join the Martel team in the #Netherlands as Communication & Dissemination Specialist"

- Communication & Dissemination Manager

- Communication & Dissemination Specialist


#Job #NGI #Innovation #EU

for people who don't know me yet, here's the shortest summary possible:

i began life as a socially inept computer geek from North Norway, but then i flipped 180 degrees and i had to face the music, and i've been growing stronger ever since.

i thought i was crazy, but i'd just discovered how to hack life. i learned what's called social skills or emotional intelligence, and a little bit about fitness, and i feel happier now.

ask me to explain assembly code or LISP or the OSI stack and i can do that.

but i now also understand how the rest of the world operates. i even understand my cat better. it's been a wild ride.

and i work a lot more efficiently now.


adventures in uxntal, 2/ quoting 

%\x { #00 #0100 ;quoteArg JSR2 }

%\* { LIT MUL2 #0100 ;quoteOp JSR2 }


%lamba-call:2 { ;lambda2args JSR2 }

The quoteArg and quoteOp functions store the quoted symbols tagged with and identifier (Arg, Op or Const)
Quoting an opcode is done using LIT.

The ;lambda*args functions read all stored symbols and unquote them. Unquoting is the magic incantation #00 STR BRK (thanks, Devine!).

Show thread

adventures in uxntal, 2/ quoting 

I was also interested in quoting (deferring computation of an operation) and Devine taught me a neat trick that lets you do this in uxntal. So I used this to emulate lambda functions.
The example shows how I create a lambda function with 2 arguments and call it.


6 7 [ lambda \x \y \* ] lambda-call:2

putc ( prints '*' )

It is a bit fake because the lambda \x \y \* operations put the actual function definition in the RAM and leave no trace on the stack.
So you can write this just as well as

lambda \x \y \*
6 7 lambda-call:2

So it is only a lambda function in the sense that you don't have to give it a named label. What it really shows is that you can quote symbols and unquote them later, this is really what happens here:

Show thread

adventures in uxntal, 1/ variables/registers 

I have been learning uxntal ( a bit and it has been great fun to try and figure out how to make it do things.

For example, uxn may be a stack machine, but with the macro functionality it is easy to use the memory as registers.

I created some macros x, y and ->x, ->y to read and write to slots in the zero-page memory (STZ/LDZ).

I also created some macros so that I can write e.g. "3" instead of #03 and "*" instead of MUL etc. and to print a character (putc)
And in this way, uxntal becomes (almost) a reverse Scheme.


3 ->x
4 ->y

[[ y y * ] [[[ x y * ] 2 * ] [ x x * ] + ] + ]

putc ( prints '1' )

Show older

cybrespace: the social hub of the information superhighway jack in to the mastodon fediverse today and surf the dataflow through our cybrepunk, slightly glitchy web portal support us on patreon or liberapay!