‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ Welcome to the System Crafters Newsletter! Issue #010 - May 24, 2024 by David Wilson -- This newsletter is best viewed with a monospace font! -- -- If your e-mail client can't do that, use this URL: -- -- https://systemcrafters.net/newsletter/sc-news-010.html -- -- Read it in Emacs with `M-x eww`! -- == Table of Contents == 1. Introduction 2. Learn Scheme With Us! 3. LibrePlanet 2024 Experience Report 4. Lambda Dungeon at the Spring Lisp Game Jam 2024 5. Speaking at London Guix Meetup 6. Tip of the Week - Hosting Docker Containers as Guix Services 7. Crafter News 8. Friday's Stream - Can Guix Replace Docker Compose? 9. Closing == Introduction == Welcome to the new issue of the System Crafters Newsletter! First of all, I'm happy to report that I'm back on GNU Guix after a brief vacation in Void Linux :) Some were dismayed by what I wrote about Void and Guix in the last newsletter, which is understandable since I've spent a lot of time promoting Guix on the channel. There isn't a big flashy reason that I decided to reinstall Guix on my main machine, it was actually quite mundane. I was wondering if a particular piece of software was packaged for Void, so by reflex I pressed my Emacs keybinding to launch `guix-packages-by-name` from the `emacs-guix` package, then realized I'm not in Guix. That realization of how comfortable I am using Guix caused me to reinstall it the next day. Overall, It's been a great month! I spoke at LibrePlanet 2024, finished the biggest part of the material for the "Hands-On Guile Scheme for Beginners" course, and participated in the Spring Lisp Game Jam 2024. More details on all of these in this issue! If you'd like to tell me your thoughts about anything in this issue, please feel free to reply directly to this e-mail or comment on this System Crafters Forum thread: https://forum.systemcrafters.net/t/system-crafters-newsletter-issue-010/ == Learn Scheme With Us! == In March, I launched the second iteration of the "Hands-On Guile Scheme for Beginners" course with a new delivery model and expanded material. Since then I've rewritten a large portion of the course and recorded 6 and a half hours of videos! After completing all of this new material, I feel very confident that it will be useful for anyone who is interested in learning Scheme and how to use it practically with Guile! I've just opened registration for the new iteration starting on *June 8th*. You can read more details about the course and check the live session schedule on the website: https://systemcrafters.net/courses/hands-on-guile-scheme-beginners/ If you register *before 06:00 UTC, Monday June 3rd*, you will get an automatic 10% discount off of the course price! The potential for Scheme to become /the/ core language for system crafting is only growing every year. I want to help more people become Scheme hackers so that we can all help to accelerate this progress and build some cool projects while we do it! This is a unique opportunity to learn Scheme with a diverse group of crafters, I hope you'll join us! == LibrePlanet 2024 Experience Report == At the beginning of this month, I flew to Boston, MA to [give a keynote presentation] at LibrePlanet 2024. Overall I think people [really liked] the talk! The FSF is still working on posting the recordings but due to a technical issue I think some of them were lost. I'll let you know if a recording of my talk surfaces! You can learn more about the details of my talk, "Cultivating a Welcoming Free Software Community That Lasts", by reading the [interview] that I had with the FSF a couple weeks before the conference. I also had a [very "serious" business meeting] with Dave Thompson, the new CTO of the Spritely Institute. We discussed the latest developments at Spritely and ideas for a number of ways that GNU Guix and Guile can be improved. We also got to spend some time with Efraim Flashner, another long-time Guix contributor. Had the chance to meet a few other people who have been following System Crafters videos for a while, even some who have started using Emacs and Guix thanks to the channel. Always great to hear that! Great experience overall, looking forward to more speaking opportunities like this in the future! ------ Links: [give a keynote presentation] <https://libreplanet.org/2024/speakers/#6661> [really liked] <https://fosstodon.org/@[email protected]/112384741692751200> [interview] <https://www.fsf.org/blogs/community/what-role-community-plays-in-free-software-and-more-interview-with-david-wilson> [very "serious" business meeting] <https://fosstodon.org/@daviwil/112383051404061726> == Lambda Dungeon at the Spring Lisp Game Jam 2024 == I've been promoting the [Spring Lisp Game Jam 2024] on the channel for a few months now and this week it finally began! 163 participants have registered at the time of this writing and I've seen many people from the community hacking away on their projects this week. If you're also participating in the jam, don't forget to add details about your game on [this forum thread]! We may try out some of the entries on an upcoming stream :) I've been making a lot of progress on my own entry called /Lambda Dungeon/, a hackable "reverse dungeon crawler" where you play the role of the dungeon's monsters and use Scheme-like code to prevent the "hero" from escaping the dungeon with all of your loot! I'm using [Guile Hoot], the Scheme to WebAssembly compiler produced by the Spritely Institute, and it's been going extremely well! Hoot has come a long way since the Autumn Lisp Game jame where I used it to write my [Cybersol] entry. I'm now writing Scheme comfortably with record types, vectors, user-defined modules, and better JavaScript FFI. You can play the game in your browser by checking out the [Itch.io page] and also read the code on the [Codeberg repo]. You can also watch the [full playlist] of stream recordings from the jam to see how it all went! I'll be streaming a couple more times this weekend to finish out the project, so join us if you're interested. Did you enjoy seeing game jam streams on the channel? Did you hate all of the notifications? :) Let me know! ------ Links: [Spring Lisp Game Jam 2024] <https://itch.io/jam/spring-lisp-game-jam-2024> [this forum thread] <https://forum.systemcrafters.net/t/spring-lisp-game-jam-2024-what-are-you-building/684/7> [Guile Hoot] <https://spritely.institute/hoot/> [Cybersol] <https://fluxharmonic.itch.io/cybersol> [Itch.io page] <https://fluxharmonic.itch.io/lambda-dungeon> [Codeberg repo] <https://codeberg.org/daviwil/lambda-dungeon> [full playlist] <https://www.youtube.com/watch?v=n-4kZhvkK4M&list=PLEoMzSkcN8oNQicyP4TkLUa8J74kD86LW> == Speaking at London Guix Meetup == Next week on *Wednesday, May 29th* at 18:00 GMT, I'll be speaking at the [Guix London meetup] to share my current best practices on using Guix to manage your system and personal configurations! This is a cool regular meeting where participants get together to review Guix patches and learn more about how to contribute to the project. It's worth checking out their [LibrePlanet page] for more information! You should be able to join the call directly by using this [Jitsi link]! ------ Links: [Guix London meetup] <https://www.meetup.com/guix-london/events/300368148/> [LibrePlanet page] <https://libreplanet.org/wiki/Group:Guix/PatchReviewSessions2024> [Jitsi link] <https://meet.jit.si/london-guix-meetup> == Tip of the Week - Hosting Docker Containers as Guix Services == Recently I learned about the relatively new oci-container-service-type that was added to Guix last year. This service type makes it possible to run Docker containers as Shepherd services in your Guix configuration so that you can easily run software that would otherwise be hard to package on Guix. Here is an example of how I use this serivce type to host the Jellyfin media software for my totally legal and above-board media consumption: ,---- | | (service oci-container-service-type | (list | (oci-container-configuration | (image "jellyfin/jellyfin") | (provision "jellyfin") | (network "host") | (ports | '(("8096" . "8096"))) | (volumes | '("jellyfin-config:/config" | "jellyfin-cache:/cache" | "/home/daviwil/Media:/media"))))) | `---- As you can see, you can specify the `image` to be used which, by default, will be pulled from the main Docker registry. You can also configure host networking to expose the software on your local network and map port `8096` out to your machine's network interface. You can also configure which volumes get mapped to the container, including mapping a local folder to a volume! The snippet I just showed you should work just fine on your own Guix system provided that you change the `/home/daviwil/Media` path to the path where you store all of your "legally-obtained" movies and television shows. [Jellyfin] is a great piece of software, it just hasn't been packaged for Guix yet! This is such an interesting use case that I'm planning to do a whole stream on it later today, more details later in this issue. ------ Links: [Jellyfin] <https://jellyfin.org/> == Crafter News == Here are some interesting news items in the broader sphere of system crafting: * The Emacs Window Management Almanac [Karthik] Chikmagalur has once again come out with an excellent article, this one called [The Emacs Window Management Almanac]. This article catalogues the various approaches one might take to efficiently managing windows in Emacs. In his usual style, Karthik gives a very comprehensive and well illustrated overview of the myriad ways to manage your Emacs workflow. I recently did a stream covering this very article called [Strategies for Emacs Window Management] to experiment with the strategies discussed in Karthik's article. Karthik even made a special guest appearance about halfway in to give some more tips! ------ Links: [Karthik] <https://karthinks.com/> [The Emacs Window Management Almanac] <https://karthinks.com/software/emacs-window-management-almanac/> [Strategies for Emacs Window Management] <https://youtube.com/live/JzgM6xQbXas> * Combining dwl-guile Window Manager with Emacs Wilko, aka theesm, has written an [interesting article] about using Emacs Lisp to power a minimal Wayland status bar called [somebar]. We've discussed similar strategies to this in the past on the channel, so it's interesting to see another use case for powering a status bar using Emacs! ------ Links: [interesting article] <https://me.literatelisp.eu/a-minimal-elisp-statuscommand.html> [somebar] <https://sr.ht/~raphi/somebar/> * Join the Craftering This is your reminder to join the Craftering! [Shom] has brought back the "webrings" of the 90s with the new Craftering project, a webring for members of the System Crafters community: http://craftering.systemcrafters.net/ By joining the webring and including the HTML snippet on your site, visitors of your site and the others in the ring will be able to quickly jump between sites in the ring to discover other cool people discussing the topics we enjoy! Full instructions for adding yourself to the ring can be found at the above link. ------ Links: [Shom] <https://shom.dev/> == Friday's Stream - Can Guix Replace Docker Compose? == In this week's stream, we will experiment with Guix's 'oci-container-service-type' to see if we can host the official Docker containers of software like Forgejo, Peertube, and more while connecting them to Guix services like Nginx and PostgreSQL. Can Guix play the role of Docker Compose and possibly do it better? Let's find out! The stream will go live at Friday, May 24th at 16:00 PM UTC, check your local time on this page: https://time.is/compare/1600_in_UTC You can find the stream at these URLs: https://youtube.com/live/o7-Ga1ZoLds https://twitch.tv/SystemCrafters https://systemcrafters.net/live-streams/may-24-2024/ == Closing == I hope you enjoyed this issue of the System Crafters Newsletter! I always want to improve and streamline the content so please send me your thoughts and feedback by replying directly to this e-mail. Until next time, Happy Hacking! -- David Wilson [email protected]