Racket Meetup: Saturday January 8, 2022

Racket Meetup: Saturday January 8, 2022

2022-01-08T18:00:00Z

Where: https://gather.town/app/wH1EDG3McffLjrs0/racket-users

When: First Saturday EVERY Month UTC: 18:00

30 minutes but can overrun

4 Likes

Racket Meetup: Saturday January 8, 2022

January 8, 2022 6:00 PM

Where: https://gather.town/app/wH1EDG3McffLjrs0/racket-users

When: First Saturday EVERY Month UTC: 18:00

30 minutes but can overrun

3 Likes

Racket meet-up TODAY 8-jan-2022 utc 18:00
Come join us to show or see peoples latest racket projects
We will also show some early Creative Racket Competition 2022 Entries

2 Likes

Starts in 25 minutes

It was a great meet-up!

We had a demo of of Creative Racket Competition entries already received.

In addition participants also showed off in-progress projects.

  • FFT audio visualisation from @Eutro
  • Todo list command line tool from @sschwarzer
  • Unicode tables and 2d mode rendering of earth and moon by @dominik.pantucek

I’ll leave it to the creators to post their creations to Show and tell here on Discourse and in #shoe-and-tell on discord when they are ready.

I left at about 75 minutes and it was still going strong.

Thank you to everyone who participated.

The next meet-up will be Saturday 5 Feb 18:00 UTC.

Best regards

Stephen

2 Likes

Thanks for the summary! :slight_smile:

I also showed raco-exe-multitarget. (in case somebody missed my earlier posting :wink: )

Edit: todo list library and command line tool (just released a new version).

Edit 2: Standalone binaries for the todoreport tool, created with raco-exe-multitarget

3 Likes

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

I was referring to the pre-install-collection info field. Here's an example from the bcrypt package:

2 Likes

About raco-exe-multitarget:

To be fair, raco cross sets up the cross compilation environment for a target implicitly when you use a raco cross command that needs the environment. :slight_smile:

The additional steps my tool does for each target in comparison to just a raco cross --target ... exe ..., are described in the readme: removing and installing the package to implicitly install the dependencies, and after creating all binaries remove the .dep and .zo files under the current directory. (The reason for the last step is described in the readme.)

1 Like