From d283f7e661e14d6ae1881fe803e5b4f1ed0689ff Mon Sep 17 00:00:00 2001 From: David Thompson Date: Mon, 24 Jun 2024 13:49:08 -0400 Subject: Add 2024 Guix social talk. --- 2024-06-18-guix-social/slides.org | 292 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 292 insertions(+) create mode 100644 2024-06-18-guix-social/slides.org (limited to '2024-06-18-guix-social/slides.org') diff --git a/2024-06-18-guix-social/slides.org b/2024-06-18-guix-social/slides.org new file mode 100644 index 0000000..b7c740e --- /dev/null +++ b/2024-06-18-guix-social/slides.org @@ -0,0 +1,292 @@ +#+TITLE: Get rich slow with Guile and Guix +#+AUTHOR: David Thompson +#+DATE: 2024-06-18 Tue + +#+OPTIONS: toc:nil num:nil reveal_title_slide:nil +#+REVEAL_MAX_SCALE: 2 +#+REVEAL_MARGIN: 0.075 +#+REVEAL_MIN_SCALE: 0.5 +#+REVEAL_TRANS: cube +#+REVEAL_THEME: night +#+REVEAL_HLEVEL: 2 +#+REVEAL_ROOT: reveal.js + +# * To-Do +# ** TODO Fix Christine deadname in old blog post + +* Get rich slow with Guile and Guix +Guix Social + +2024-06-18 + +https://dthompson.us + +* Hi! +- I'm David Thompson +- From Massachusetts, USA + - The birthplace of Scheme and Free Software +- CTO at Spritely Institute +- Guile/Guix user and contributor for over 10 years + +* tl;dr +- 2012: Discovered Scheme then started using Guile +- 2013: Became an early Guix contributor +- 2015-2017: Made my own tools/libraries with Guile +- 2022-now: Making FOSS full-time + +* 2012: Libreplanet +In hindsight, the most defining moment in my career path: + +- Yukihiro Matsumoto: "How Emacs Changed My Life" +- Christine Lemmer-Webber: GNU MediaGoblin + +* 2012: Libreplanet +- Immediately dropped Vim for Emacs +- Started to use/hack on MediaGoblin + +* 2012: Ruby +- First professional development job writing Ruby +- Relevant to Guix, eventually + +* 2012: Game dev +- Wanted to make games as a hobby +- Went the C core with embedded "scripting" language route +- Started with Lua, but then... + +* 2012: SICP +#+REVEAL_HTML: + +* 2012: Guile +- "official" GNU extension language +- I was into GNU at the time +- Can extend C programs... but at what cost? + +* 2013: First FOSS patch +- Like many, I struggled to find a way to participate in FOSS + development +- GNU MediaGoblin turned out to be very welcoming! + - Issue tracker had "bitesized" tag for newcomers + - I added an option to enable/disable comments + +* 2013: Guix +- I hadn't heard of Nix, but this new Guix thing by Ludovic Courtès + looked fascinating +- Started before the distro was bootstrapped +- Switched from Debian to Guix later + +* Why Guix? +- Functional package management model +- Practical software freedom +- Whole-system rollback +- Easy development environments + +* Extend vs. Embed +- Nix embeds Bash into package recipes +- Guix uses Guile all the way down (almost) +- Scheme isn't *icing* on top of C++/Bash + - Scheme is the *cake* + +* 2013: Guix contributor +- First Guix patch: Packaged libtheora +- Packaged SDL, SDL2, etc. shortly after +- Ludo gave me commit access! + +* 2013: Guile contributor +- First patch to Guile: =alist->hash-table= +- Worked on =(system repl coop-server)= with Mark Weaver + +* 2014: Ruby build system +- Wrote =(guix build-system ruby)= and initial Ruby packages +- Pjotr Prins was involved in this, too + +* 2014: guix environment +- Wanted something like =nix shell= +- Would become =guix shell= later +- Did not achieve consensus on sane defaults + - Remember =--ad-hoc=? +- =guix shell= corrected the problems, eventually + +* 2015: guix publish +- Guix wanted to encourage more substitute providers + - but Hydra was a large piece of software +- I wrote the initial version of =guix publish= + - Pure Guile; uses the =(web ...)= modules + +* 2015: guix publish +- Seems to have been useful over the years + - but substitute availability is far from a solved problem +- Distributed substitutes seem like the way to go + +* 2015: call-with-container +- Learned that there was more to containers than layered disk images + - Thanks to Docker for "container" ambiguity! 😞 +- The good stuff is actually the runtime environment (Linux namespaces, etc.) +- Can we implement just the good parts of Docker for Guix? + +* 2015: call-with-container +- Don't mount opaque disk images of unknown provenance +- Bind mount =/gnu/store= directories instead +- Containment + reproducibility +- Used in: + - =guix shell --container= + - =guix system container= + - containerized Shepherd services + +* 2015: Haunt +- Static site generator written in Guile +- Uses =guix shell= for development environment +- Guix is the first (only?) distro that gets package updates +- Both the Guix and Guile websites use Haunt + +* 2016: Oops, I bought a house +- Who could have imagined this would use up all my free time? +- Guix contibutions greatly reduced + - I've never returned to my previous level of activity + - But the Guix community has grown *a lot*! + - I can be a user now (mostly) 👾 + +* 2017: Chickadee + +#+REVEAL_HTML: + +- After all this time, I still wanted to make games +- Created Guile-SDL2 along the way +- Uses =guix shell= for development, naturally + +* Chickadee +- *not* a wrapper around raylib, etc. +- Inspired by Guix to *maximize* usage of Guile +- Rendering code 100% Scheme (until we hit libGL) + - Made possible by Andy Wingo's incredible compiler/VM work + +* 2019: guix deploy +- Wanted an answer to Chef, Ansible, etc. +- Co-mentored Jakob L. Kreuze with Christine Lemmer-Webber for Google + Summer of Code +- A GSoC project that made it upstream! +- I now manage my personal server with =guix deploy= +- Lots of improvements could be made + - Any volunteers? 🙂 + +* Intermission: Pandemic + +* 2022: Lisp Game Jam +- Became co-host of the Lisp Game Jam on itch.io + - along with Fennel maintainer technomancy +- This will become relevant shortly + +* 2022: Spritely + +#+REVEAL_HTML: + +- Spritely is a US 501(c)(3) nonprofit +- Cofounded by *Christine Lemmer-Webber* + - now famous for ActivityPub! +- Building the next generation of *secure*, distributed networking + infrastructure +- Object capability security + +https://spritely.institute + +* OCapN: The Object Capability Network + +#+REVEAL_HTML: