Racket Meetup: Saturday January 8, 2022

Thanks for organizing (many things) @spdegabrielle and for the brief summary as well.
Yet - as @sschwarzer hints - there was much more happening and here is my partially expanded summary that tries to reflect it:

Stephen went through some of the Creative Racket Competition entries already received - some of them were really impressive in terms of the ratio between the number of lines of code and resulting functionality. Some of the clever usage of sketching[1], r-cade[2] or mixtures of Racket, C++ and other languages were really interesting in action. Remember to send your entries for the competition[3] too!

Eutro showed (a possible competition entry) Ecktra[4] for FFT signal visualization. Did you know that Ectra is an anagram of Racket? It uses quite some FFI code that has to be compiled first. @bogdan shared a wisdom - remember that it is possible to setup info.rkt package file to contain instructions on how to build there semi-independently on platforms. I didn't dig up any relevant link(s), so if anyone knows better (@bogdan, wink wink), it would be thoroughly appreciated to have that link(s) here!

As usual - a brief discussion about someone's .emacs file took place right in the middle. Today's combination was racket-mode with paredit and rainbow-delimiters with custom palette generated during the startup (did I get it right?). Everything can be installed via emacs internal package management, so if you are an emacs user, more stuff to play with!

After that @sschwarzer presented the todo.txt format[5] and his struggles to work "reasonably" with optional dates being only partially optional. It wasn't apparent whether we (everyone else) actually helped him or we just confirmed, that it is unfortunate at best. His suite[6] for working with this format include a command-line tool todoreport[7] which looks really useful for simple project and/or personal task management.

Stefan also talked about his other package - a plugin for raco called exe-multitarget[8]. It is a clever wrapper around raco cross tool that can automate building binaries for multiple target platforms at once and takes care of setting up the cross environment - and you thought it can't get any easier? Apparently it can. According to the discussion the tool looks like an evolution of a bunch of Makefile rules and build commands originally used for todo-txt builds.

Discussion about distributing Racket programs followed - that wasn't hard to guess. Pros and cons of raco dist versus --orig-exe and --embed-dlls. Yes, you can combine them both as they do nothing on the platform they can't do a thing.

Yep, then I talked about the current state of my Unicode Tables[9] project. Although it is far from complete, the interesting part is that in my company, we are using it now in one of our internal tools - that was one of the motivations behind taking this project seriously. So although there are some new features I'd like to see - we discussed dynamic column width computation, parallel processing and lazy evaluation of large tables - the need for new features has dropped quite low. And also for the width computation I can't wait when (whether) the terminal features used by expeditor[10] will be available for any Racket programs as a stable API. Maybe @mflatt can tell?

For my side-project I need to draw high-polygon (1M triangles) planet models using Racket. Because I want to play with non-linear coordinate transformations I cannot use OpenGL directly. However my first attempt to render 2 celestial bodies - 2M triangles - using racket/draw took more than 30 seconds to draw. I looked at Racket-style OpenGL sgl[11] bindings and realized that I can use 2D rendering functions of OpenGL as well. So if your drawing performance bottleneck is the actual primitives' drawing - try sgl in 2D!

A brief discussion of the various rendering libraries ensued - Metal, Vulkan, DirectX 12 - and alghough there is some (huge) progress on Vulkan bindings[12], there are virtually no examples how to use it. Looking at the documentation[13] reveals why. Maybe it is time to try a modern rendering pipeline and help Sage Gerard with this ambitious project?

It is worth mentioning that we forgot to talk about the possibilities of organizing next RacketCon. @spdegabrielle should get us organized a bit more next time :wink:

Thanks everyone for coming and see you next month on Saturday February 5th at 6pm UTC as usual!

[1] GitHub - soegaard/sketching: A Racket library inspired by Processing
[2] R-cade Game Engine
[3] Creative Racket Competition 2022: January 1, 2022 → February 28, 2022
[4] GitHub - eutro/ecktra
[5] GitHub - todotxt/todo.txt: ‼️ A complete primer on the whys and hows of todo.txt.
[6] Processing of todo.txt tasks
[7] ~sschwarzer/todo-txt: README.md - sourcehut git
[8] raco-exe-multitarget
[9] Unicode Tables
[10] GitHub - racket/expeditor
[11] 3 Racket-Style OpenGL
[12] Vulkan API Integration
[13] https://docs.racket-lang.org/vulkan/Contributing.html#(part._.What_s_.Needed_.Right_.Now)

4 Likes