For this meetup I've prepared some longer show-and-tell about what I've been up to in the past three months if anyone is interested:
unifying local terminal and NTV (network virtual terminal - TELNET)
changing the semantics of custom input-ports' read
properly implementing custom input-ports polling without busy-wait loops
optimized software color blending
new universal algorithms for lossy bitmap to ANSI character strings conversion (character halves, quads and sextands from Symbols for Legacy Computing in Unicode 13+)
why is Racket the best programming language ecosystem for development of software rasterizers
and (if there is enough interest) excerpts from the 20 years of history of "why" things like this
Pacific Time, PT Sat, 3 Dec 2022 at 10:00 PST
Mountain Time, MT Sat, 3 Dec 2022 at 11:00 MST
Central Time, CT Sat, 3 Dec 2022 at 12:00 CST
Eastern Time, ET Sat, 3 Dec 2022 at 13:00 EST
London, United Kingdom Sat, 3 Dec 2022 at 18:00 GMT
Prague, Czechia Sat, 3 Dec 2022 at 19:00 CET
Taipei, Taiwan Sun, 4 Dec 2022 at 02:00 CST
After this @dominik.pantucek did a longer show and tell as mentioned earlier in the thread - he has agreed to post some screenshots for those who were not able to join us.
x64 Assembler a x64 assembler written in Typed Racket, and it generates code that can be used in Racket directly.
I had to leave the group to make my dinner for my family but before I left there was excitement about the upcoming Racketfest talk Lambda, the Dragon Slayer! from by Paulo Matos of Igalia@pmatos ...it is a long wait until Saturday, March 18, 2023
best wishes
Stephen
PS the next meet-up with be Saturday 7 January...join us, everyone is welcome.
PPS I've just booked my Racketfest ticket and I am looking forward to meeting more Racket & language-oriented programming enthusiasts there.
Based on the overly positive feedback yesterday, I've already sent an abstract for Racketfest 2023!
In the first part of my presentation, I focused on implementing custom ports and unifying the terminal interface for both local terminal and remote terminals and building a library that provides similar functionality to curses[1] and charterm[2] - albeit rather differently. As a showcase I used the library to implement a multi-actor terminal "game" where multiple users can connect to given TCP port using the TELNET protocol and from the programmer perspective it all boils down to parameterize[3]d current-input-port and current-output-port:
The upper-left window is the Racket program, the other three are just TELNET connections to it. And yes, the players (@ symbols) can move around using arrow keys.
Then I talked about the latest incarnation of my canvas drawing library with capability of converting a true-color RGB canvas to aforementioned curses-like library for text screen updates and about the (preliminary) work on supporting generic software triangle rasterizes (and why it is important to first find the most convenient syntax to express the various algorithms involved). Currently affine texture mapping is the most complex feature supported and with the help of syntax-parse[4] for every triangle algorithm developed, I get one working with quads for free:
That is alpha-blended ARGB sprite with some (albeit in this screenshot only slight) alpha on top of that over the infamous XOR texture[5] rendered into 80x24 text terminal using Symbols for Legacy Computing from Unicode 13.0.
Of course, the ultimate goal is the same as with the previous version which was half-Racket, half-C++:
Special thanks to @spdegabrielle for keeping the community vibrant and thanks everyone for showing up yesterday. Remember - it's only three meetups until we meet in person (again) at Racketfest 2023[6]!