‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
                                 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]