Nov 22, 2021
Teliva now has network access. Including https. And support for streaming APIs. All of luasocket and luasec libraries are supported.

(Obviously none of this is original development. I'm just putting together libraries created by my betters.)

Try it out:

git clone https://github.com/akkartik/teliva
cd teliva
make linux
src/teliva chesstv.tlv

Known issues:

  • Code browser is broken for this app. It's likely the callback.
  • Reading from network blocks keypresses.

Main project page: https://github.com/akkartik/teliva

permalink

* *
Nov 20, 2021
I've been doing a lot of "differential debugging" on the Lua codebase lately. There's something going off the rails in a part of Teliva that I don't understand yet. I try to make my change in a temporary copy of the unmodified Lua sources and step through to see, what is the control flow supposed to look like? Then I compare with what's happening in Teliva. Where does it go off the rails? Super useful to have working software that is so easy to compile.
I've been programming in C++ for a long time, and just ran into a very surprising situation in C.

$ cat x.c
inline int foo(void) {
  return 42;
}

int main(void) {
  return foo();
}

$ gcc -c x.c
$ gcc x.o
undefined reference to 'foo'

$ gcc -O1 -c x.c
$ gcc x.o
# no error

If you compile without optimizations, the `inline` keyword does nothing -- but the function is still excluded from the object file.

permalink

* *
Nov 15, 2021
Just discovered luapower via a random comment on reddit. Whoa.

https://luapower.com/philosophy

<3

One of the hidden gems in luapower is this little bash script called multigit. It.. oh heck, I'll just let you read about it and have your mind blown: https://github.com/capr/mgit

Relevant excerpt:

"NO [SUB-]DIRECTORIES

This may be a hard sell but I stand by it. [Sub-]directories are evil. Not so much because of semantics, but because of the tools we use suck at working with them. No global overview; instead you have to navigate them."

permalink

* *
Nov 14, 2021
App runtimes should support modifying apps.

Here's a 2-minute video on how that might look.

https://archive.org/details/akkartik-2021-11-14

permalink

* *
Nov 11, 2021
Minor epiphany about Lua

a = {11, 12, 13, key=14, 15}

permalink

* *
Nov 6, 2021
You knew this was coming. Conway's Game of Life in text mode using Unicode Braille glyphs.

git clone https://github.com/akkartik/teliva
cd teliva
make linux
src/teliva life.teliva

Sources: https://github.com/akkartik/teliva/blob/main/life.teliva

permalink

* *
Nov 6, 2021
New project

https://github.com/akkartik/teliva

"An extremely naïve, brutalist attempt at packaging up simple Lua (5.1) apps with all the stuff needed to edit and build them."


Fun with the kids on a Saturday morning messing around with daddy's new program.

We gave each ring its own color, and we have it set up to move the towers randomly around after every move. Supremely silly.

Screenshot of Teliva running a towers of Hanoi program.

permalink

* *
Oct 8, 2021
Marceau, Fisler and Krishnamurthi, "On novices' interactions with error messages"

https://cs.brown.edu/~sk/Publications/Papers/Published/mfk-mind-lang-novice-inter-error-msg

A rare empirical study that I found extremely useful.

Outside of a univ course, my lessons are slightly different from the paper's:

  • Maintain a map of error messages for a project, use this to minimize the vocabulary of error messages.
  • Be enigmatic rather than risk misleading.
  • Make affordances beyond error messages optional. Color-coding has a cost. Not highlighting may be better.

permalink

* *
Sep 27, 2021
I'm tempted to blindly implement https://github.com/JonathanMEdwards/subtext10/blob/master/doc/language.md in Mu without questioning any of its design choices.

permalink

* *
Sep 1, 2021
Hackiest possible support for rendering Unicode combining characters using GNU Unifont

This is the equivalent of backing up a typewriter by one character and overlaying a second letter on the same space.

Main project page: https://github.com/akkartik/mu


Detail of a Qemu window showing a few characters being rendered.

Top left: an 'à' created from an 'a' and a U+0300 combining grave accent. Having it right at the corner shows how the accent is almost invisible against the window boundary.

Middle column: an 'à' under a regular 'g' showing that the accent is again almost invisible against the descender of the character above.

Right column: an 'à' to the right of a regular 'g' looks best of all, though the accent is still too high.

Bottom half: a list of devanagari vowel diacritics modifying the same consonant. Looks reasonable except for a couple of cases where lines overlap.

This is the best we can do with a single glyph for any accent without getting into glyphs for individual ligatures, since it has to work with a large variety of letter shapes.

permalink

* *
archive
projects
writings
videos
subscribe
Mastodon
RSS (?)
twtxt (?)
Station (?)