jmi2k

/mordor

Art by @Senketsu_ (local copy).
このCだ.
Computer Retro UI (Animated) by Aleksandar Ristic.
Save data of my UNDERTALE playthrough.
Header image from Keebin’ With Kristina: The One With The Tri-lingual Typewriter.

Blockchain is not only crappy technology but a bad vision for the future. Its failure to achieve adoption to date is because systems built on trust, norms, and institutions inherently function better than the type of no-need-for-trusted-parties systems blockchain envisions. That’s permanent: no matter how much blockchain improves it is still headed in the wrong direction.

Software should be optimized such that the sequential code path is the most common path, with less-frequently taken code paths placed out of line. Software should also assume that backward branches will be predicted taken and forward branches as not taken, at least the first time they are encountered. Dynamic predictors should quickly learn any predictable branch behavior.

The final boss isn’t the ender dragon, it’s growing up :(

Nicht weinen, weil sie vorüber!
Lächeln, weil sie gewesen!

Would I feel nostalgic about my past if it weren't any good? I have plenty of reasons to feel happy.

We didn't realise we were making memories, we just knew we were having fun.

your family is asleep and you’re playing minecraft on a cool 2012 summer night by rye - chip (local copy).
16-bit ALU in minecraft by theinternetftw (local copy).
§ rodata (
¶ SRC
	"日本\n";
¶ BLANKS
	' \t\n\v\r';
¶ SYMBOLS
	'().[]{}§¶';
¶ EEOF
	"unexpected EOF";
¶ EBADRUNE
	"unexpected rune";
¶ LUT [
	ʜ01010101;
	ʜ01010101;
	ʜ01010101;
	ʜ01010101;
	ʜ00000000;
	ʜ00000000;
	ʜ02020202;
	ʜ00040303
];
¶ ULN
«»
);

§ text (
¶ entry [
	la    a₀ SRC;
	call  utfsz;
¶ halt;
	wfi;
	j     halt
];

¶ lex [
«Load length and pointer from lexer»
	mv    s₀ a₀;
	ld    s₁ a₀;
	l     s₂ (a₀+4);
	add   s₁ s₂ s₁;
¶ start;
	mv    s₃ s₂;
¶ loop;
	beq   s₂ s₁ eof;
«Load next rune and UTF sequence length into s₄ and s₅»
	mv    a₀ s₂;
	call  utfparse;
	mv    s₄ a₀;
	mv    s₅ a₁;
	add   s₂ s₂ s₅;
«Is s₄ a blank?»
	la    a₁ BLANKS;
	li    a₂ BLANKS.size;
	call  hasint;
«Ignore blank»
	bge   a₀ x₀ start;
«Is s₄ a symbol?»
	mv    a₀ s₄;
	la    a₁ SYMBOLS;
	ld    a₂ SYMBOLS.size;
	call  hasint;
«Yield symbol»
	bge   a₀ x₀ yield;
	mv    a₀ s₄;
	call  isnamerune;
«Process name»
	bnez  name;
«Reject invalid rune»
	la    t₀ EBADRUNE;
	li    t₁ EBADRUNE.size;
	s     t₁ (s₀+4+XLEN);
	s     t₀ (s₀+4+XLEN+4);
«Rollback s₂ to previous position»
	sub   s₂ s₂ s₅;
	j     end;
¶ eof;
	la    t₀ EEOF;
	li    t₁ EEOF.size;
	s     t₁ (s₀+4+XLEN);
	s     t₀ (s₀+4+XLEN+4);
	j     end;
¶ name;
	beq   s₂ s₁ yield;
«Load next rune and UTF sequence length into s₄ and s₅»
	mv    a₀ s₂;
	call  utfparse;
	mv    s₄ a₀;
	mv    s₅ a₁;
	add   s₂ s₂ s₅;
	call  isnamerune;
	bnez  a₀ name;
«Rollback s₂ to previous position»
	sub   s₂ s₂ s₅;
¶ yield;
	sub   a₀ s₃ s₂;
	mv    a₁ s₃;
	s     x₀ (s₀+4+XLEN);
¶ end;
«Update lexer length and pointer»
	sub   t₀ s₁ s₂;
	sd    s₁ s₀;
	s     s₂ (s₀+4);
	ret
];

¶ isnamerune [
	mv    t₀ a₀;
«Is a₀ an underscore?»
	addi  t₁ t₀ (-'_');
	seqz  a₀ t₀;
«Is a₀ an ASCII number?»
	addi  t₁ t₀ (-'0');
	sltiu t₁ t₁ 10;
	or    a₀ a₀ t₁;
«Is a₀ an ASCII letter?»
	ori   t₁ t₀ ʜ20;
	addi  t₁ t₁ (-'a');
	sltiu t₁ t₁ 26;
	or    a₀ a₀ t₁;
	bnez  a₀ end;
«TODO: check whether it's an Unicode letter/number»
¶ end;
	ret
];

¶ hasint [
«Fail if the list is empty»
	beqz  a₂ no;
	li    t₀ 0;
¶ loop;
«Fetch current element and compare it against a₀»
	lw    t₁ a₁;
	beq   t₁ yes;
«Point to the next element»
	addi  a₁ 4;
	addi  t₀ 1;
«Try again if there are more elements to check»
	blt   t₀ a₂ loop;
¶ no;
	li    a₀ (-1);
	ret;
¶ yes;
	mv    a₀ t₀;
	ret
];

¶ runesize [
«Test a₀ against each upper bound»
	li    t₂ ʜ7F;
	slt   t₀ t₂ a₀;
	li    t₂ ʜ7FF;
	slt   t₁ t₂ a₀;
	li    t₂ ʜFFF;
	slt   a₀ t₂ a₀;
«Sum results into a₀»
	add   a₀ a₀ t₁;
	add   a₀ a₀ t₀;
	addi  a₀ a₀ 1;
	ret
];

¶ utfsize [
«Load first byte from UTF string into a₀»
	lbu   a₀ a₀;
«Lookup UTF sequence length into a₀»
	la    t₀ LUT;
	srli  a₀ a₀ 3;
	add   a₀ a₀ t₀;
	lbu   a₀ a₀;
	ret
];

¶ utfparse [
«Load first byte from UTF string into t₀»
	lbu   t₀ a₀;
«Lookup UTF sequence length into t₁»
	la    t₁ LUT;
	srli  t₂ t₀ 3;
	add   t₁ t₁ t₂;
	lbu   t₁ t₁;
«Return sequence length as a₁»
	mv    a₁ t₁;
«Save byte data into t₀»
	li    t₂ ʜ7F;
	srl   t₂ t₂ t₁;
	and   t₀ t₀ t₂;
	addi  t₁ t₁ (-1);
«Exit if the sequence was one byte long»
	beqz  t₁ end;
¶ loop;
«Load next byte from sequence into t₂»
	addi  a₀ a₀ 1;
	lbu   t₂ a₀;
«Incorporate byte data into t₀»
	andi  t₂ t₂ ʜ3F;
	slli  t₀ t₀ 6;
	or    t₀ t₀ t₂;
	addi  t₁ t₁ (-1);
«Continue if there are more bytes in the sequence»
	bnez  t₁ loop;
¶ end;
	mv    a₀ t₀;
	ret
]
)
Example RISC-V assembly program using xen syntax.
H(r, g, b, a) = f3(r) ⊻ f5(g) ⊻ f7(b) ⊻ f11(a)
        f3(x) = (x<<1) + x
        f5(x) = (x<<2) + x
        f7(x) = (x<<3) - x
       f11(x) = (x<<3) + (x<<1) + x
Hardware-friendly implementation of the QOI hash function — H(r, g, b, a) = 3×r ⊻ 5×g ⊻ 7×b ⊻ 11×a.
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
EICAR test file
Yumi being harassed by William.
A cyberdeck from some 90's anime.

Run. It is the most important martial art, after all.

Saiki spinning.
jmi2k
does that mean that your calculations would be 0x wrong with no brain?
mkf
Yes.

The most dangerous thought that you can have as a creative person is to think that you know what you’re doing. Because once you think you know what you’re doing, you stop looking around for other ways of doing things and you stop being able to see other ways of doing things, you become blind.

5 Most Fundamental Mathematical Ideas by Amavect.

Rokudaime Hokage (LINES) (not quite) by IIYametaII (local copy, cleaned up and hair fixed).

受 + 心 = 愛.

where we're going we don't need terminals

9gridchan.
yay xmas movies (clip from I have found the best worst movie. by Noodle).
First serious attempt at ricing 9front.
Little me playing with my first computer.
Minecraft-clone, 3rd experiment.
Me, my IT classmates and an IBM PCjr.
Josecop.

A tutorial implementation of a dependently typed lambda calculus (local copy).

Computing hardware makes fundamental use of self-reference in flip-flops, the basic units of digital memory, which convert potentially paradoxical logical self-relations into memory by expanding their terms over time.

Lambda calculus vending machine.

Syntax and Semantics of Quantitative Type Theory (local copy).

Pipelined MIPS diagram by fpga4student.com (local copy).
Art by @emmmerald_ (local copy, cropped, denoised, upscaled).

UGT is convention initially established in #mipslinux on irc.openprojects.net (now irc.freenode.net) but slowly taking over the world. It states that it is always morning when person comes into a channel, and it is always late night when person leaves. Local time of any member of channel is irrelevant. Resistance is futile. Your ass will be laminated. (geoman is exception to this rule - his ass will be fried instead).

The idea behind establishing this convention was to eliminate noise generated almost every time someone comes in and greets using some form of day-time based greeting, and then channel members on the other side of the globe start pointing out that it's different time of the day for them. Now, instead of spending time figuring out what time of day is it for every member of the channel, we spend time explaining newcomers benefits of UGT.

Add = circuit {
	a:  bit
	b:  bit
	cᵢ: bit

	sum: bit
	cₒ:  bit

	sum = a ⊻ b ⊻ cᵢ
	cₒ  = (a ∧ b) ∨ (a ∧ cᵢ) ∨ (b ∧ cᵢ)
}

The digital world and the real one are merging, closer and closer to being the same one. I spend most of my awake time inside a Discord voice channel and talking in 9gridchan. Isn't that comparable to a telepathic link between all of us talking there? Permanent digital communication in an isolated real world.

whiteboardfs -s board
chmod 666 /srv/board
chmod 666 /srv/boot
aux/listen1 tcp!*!2020 exportfs -S /srv/board
Fine gibberish produced by 9p.zone users.

mutual survival goal optimizing rational solution to the galactic prisoners dilwemma

perm = ᴏ755
fd   = open "/dev/mordor" ʙ100
p    = ʜBAD

I want a presentation layer that takes raw text and turns it into another representation. It would keep the underlying text untouched.

Jupyter notebooks are the perfect coding environment.

Blender has the best user interface I've ever seen.

Piracy is morally acceptable.

One thing that we have learned is that piracy is not a pricing issue. It’s a service issue. The easiest way to stop piracy is not by putting antipiracy technology to work. It’s by giving those people a service that’s better than what they’re receiving from the pirates.

I have some nostalgia for early 2000s teen culture, but I don't know why. I was too young then to have any kind of bond with it, but I do nonetheless.