From 9334ac94afad33821fc859c98c471ee550a13fd0 Mon Sep 17 00:00:00 2001 From: Vincent Douillet Date: Mon, 9 Jun 2025 17:45:10 +0200 Subject: article: suckless presentations --- 20250609-suckless-presentations.md | 55 ++++++++++++++++ static/passthrough/20250609-maven-primer-01.png | Bin 0 -> 14160 bytes static/passthrough/20250609-maven-primer-02.png | Bin 0 -> 15215 bytes static/passthrough/20250609-maven-primer-03.png | Bin 0 -> 13335 bytes static/passthrough/20250609-maven-primer-04.png | Bin 0 -> 27922 bytes static/passthrough/20250609-maven-primer-05.png | Bin 0 -> 16568 bytes static/passthrough/20250609-maven-primer-06.png | Bin 0 -> 16161 bytes static/passthrough/20250609-maven-primer-07.png | Bin 0 -> 23467 bytes static/passthrough/20250609-maven-primer-08.png | Bin 0 -> 22280 bytes static/passthrough/20250609-maven-primer-09.png | Bin 0 -> 18310 bytes static/passthrough/20250609-maven-primer-10.png | Bin 0 -> 13905 bytes static/passthrough/20250609-maven-primer-11.png | Bin 0 -> 17556 bytes static/passthrough/20250609-maven-primer-12.png | Bin 0 -> 17319 bytes static/passthrough/20250609-maven-primer-13.png | Bin 0 -> 19956 bytes static/passthrough/20250609-maven-primer-14.png | Bin 0 -> 13184 bytes static/passthrough/20250609-maven-primer-15.png | Bin 0 -> 23499 bytes static/passthrough/20250609-maven-primer-16.png | Bin 0 -> 16378 bytes static/passthrough/20250609-maven-primer-17.png | Bin 0 -> 13196 bytes static/passthrough/20250609-maven-primer-18.png | Bin 0 -> 12458 bytes static/passthrough/20250609-maven-primer-19.png | Bin 0 -> 15843 bytes static/passthrough/20250609-maven-primer.txt | 82 ++++++++++++++++++++++++ 21 files changed, 137 insertions(+) create mode 100644 20250609-suckless-presentations.md create mode 100644 static/passthrough/20250609-maven-primer-01.png create mode 100644 static/passthrough/20250609-maven-primer-02.png create mode 100644 static/passthrough/20250609-maven-primer-03.png create mode 100644 static/passthrough/20250609-maven-primer-04.png create mode 100644 static/passthrough/20250609-maven-primer-05.png create mode 100644 static/passthrough/20250609-maven-primer-06.png create mode 100644 static/passthrough/20250609-maven-primer-07.png create mode 100644 static/passthrough/20250609-maven-primer-08.png create mode 100644 static/passthrough/20250609-maven-primer-09.png create mode 100644 static/passthrough/20250609-maven-primer-10.png create mode 100644 static/passthrough/20250609-maven-primer-11.png create mode 100644 static/passthrough/20250609-maven-primer-12.png create mode 100644 static/passthrough/20250609-maven-primer-13.png create mode 100644 static/passthrough/20250609-maven-primer-14.png create mode 100644 static/passthrough/20250609-maven-primer-15.png create mode 100644 static/passthrough/20250609-maven-primer-16.png create mode 100644 static/passthrough/20250609-maven-primer-17.png create mode 100644 static/passthrough/20250609-maven-primer-18.png create mode 100644 static/passthrough/20250609-maven-primer-19.png create mode 100644 static/passthrough/20250609-maven-primer.txt diff --git a/20250609-suckless-presentations.md b/20250609-suckless-presentations.md new file mode 100644 index 0000000..b0ed8f7 --- /dev/null +++ b/20250609-suckless-presentations.md @@ -0,0 +1,55 @@ +# Suckless presentations + +June 9, 2025 + +I'm a big fan of [suckless](http://suckless.org) tools. My laptop has been running [dwm](http://dwm.suckless.org) for years now. One of their tool has fascinated me ever since I discovered it: [sent](http://tools.suckless.org/sent). + +Its purpose is to create presentations. Being a suckless tool, it only needs a plain text file with each paragraph corresponding to a slide. Pictures can be displayed on a slide, but not with text on the same slide. You then launch sent on the file and the presentation starts in a plain X11 window. + +It is diabolically efficient, and I like that. No need for a bloated WYSIWYG tool or elaborate markup language. Just write what you want to present, and it's done. With the file being plain text, you can even open it with any viewer or editor and just read it that way. + +Some may find that the resulting presentation is a little too bland for their taste. In my opinion, that's a feature. I think many slides are way too bloated in the presentations I see. Having a few simple sentences or just one picture per slide is enough. It lets the viewer quickly read it and then listen to what is being said about it. The slide should support the talk, and not the opposite. + +To test drive sent, I've created a simple "Maven primer" presentation. Don't take it too seriously, I've not checked everything I've written. You can find the presentation source file [here](/static/20250609-maven-primer.txt). The sent home page is quite clear that exporting the presentation to other formats is not supported, but suggests automating a PNG export of each slide. That's exactly what I've done with a quick and dirty bash script: + + #!/bin/bash + + echo "Please focus sent window" + + for i in {3..1} + do + echo "$i..." + sleep 1 + done + + xdotool getactivewindow windowsize $1 $2 + + for i in {01..19} + do + import -screen -window 'sent' $i.png + xdotool getactivewindow key n + done + +Just launch it with your desired output resolution and then you have 3 seconds to focus the sent presentation to export: + + $ ./sent-export.sh 800 600 + +[![01](/static/20250609-maven-primer-01.png)](/static/20250609-maven-primer-01.png) +[![02](/static/20250609-maven-primer-02.png)](/static/20250609-maven-primer-02.png) +[![03](/static/20250609-maven-primer-03.png)](/static/20250609-maven-primer-03.png) +[![04](/static/20250609-maven-primer-04.png)](/static/20250609-maven-primer-04.png) +[![05](/static/20250609-maven-primer-05.png)](/static/20250609-maven-primer-05.png) +[![06](/static/20250609-maven-primer-06.png)](/static/20250609-maven-primer-06.png) +[![07](/static/20250609-maven-primer-07.png)](/static/20250609-maven-primer-07.png) +[![08](/static/20250609-maven-primer-08.png)](/static/20250609-maven-primer-08.png) +[![09](/static/20250609-maven-primer-09.png)](/static/20250609-maven-primer-09.png) +[![10](/static/20250609-maven-primer-10.png)](/static/20250609-maven-primer-10.png) +[![11](/static/20250609-maven-primer-11.png)](/static/20250609-maven-primer-11.png) +[![12](/static/20250609-maven-primer-12.png)](/static/20250609-maven-primer-12.png) +[![13](/static/20250609-maven-primer-13.png)](/static/20250609-maven-primer-13.png) +[![14](/static/20250609-maven-primer-14.png)](/static/20250609-maven-primer-14.png) +[![15](/static/20250609-maven-primer-15.png)](/static/20250609-maven-primer-15.png) +[![16](/static/20250609-maven-primer-16.png)](/static/20250609-maven-primer-16.png) +[![17](/static/20250609-maven-primer-17.png)](/static/20250609-maven-primer-17.png) +[![18](/static/20250609-maven-primer-18.png)](/static/20250609-maven-primer-18.png) +[![19](/static/20250609-maven-primer-19.png)](/static/20250609-maven-primer-19.png) diff --git a/static/passthrough/20250609-maven-primer-01.png b/static/passthrough/20250609-maven-primer-01.png new file mode 100644 index 0000000..bd9b40c Binary files /dev/null and b/static/passthrough/20250609-maven-primer-01.png differ diff --git a/static/passthrough/20250609-maven-primer-02.png b/static/passthrough/20250609-maven-primer-02.png new file mode 100644 index 0000000..87eadad Binary files /dev/null and b/static/passthrough/20250609-maven-primer-02.png differ diff --git a/static/passthrough/20250609-maven-primer-03.png b/static/passthrough/20250609-maven-primer-03.png new file mode 100644 index 0000000..c0607a0 Binary files /dev/null and b/static/passthrough/20250609-maven-primer-03.png differ diff --git a/static/passthrough/20250609-maven-primer-04.png b/static/passthrough/20250609-maven-primer-04.png new file mode 100644 index 0000000..bfe8fa3 Binary files /dev/null and b/static/passthrough/20250609-maven-primer-04.png differ diff --git a/static/passthrough/20250609-maven-primer-05.png b/static/passthrough/20250609-maven-primer-05.png new file mode 100644 index 0000000..9e06f2c Binary files /dev/null and b/static/passthrough/20250609-maven-primer-05.png differ diff --git a/static/passthrough/20250609-maven-primer-06.png b/static/passthrough/20250609-maven-primer-06.png new file mode 100644 index 0000000..b64518e Binary files /dev/null and b/static/passthrough/20250609-maven-primer-06.png differ diff --git a/static/passthrough/20250609-maven-primer-07.png b/static/passthrough/20250609-maven-primer-07.png new file mode 100644 index 0000000..4111503 Binary files /dev/null and b/static/passthrough/20250609-maven-primer-07.png differ diff --git a/static/passthrough/20250609-maven-primer-08.png b/static/passthrough/20250609-maven-primer-08.png new file mode 100644 index 0000000..eefe23f Binary files /dev/null and b/static/passthrough/20250609-maven-primer-08.png differ diff --git a/static/passthrough/20250609-maven-primer-09.png b/static/passthrough/20250609-maven-primer-09.png new file mode 100644 index 0000000..6a70447 Binary files /dev/null and b/static/passthrough/20250609-maven-primer-09.png differ diff --git a/static/passthrough/20250609-maven-primer-10.png b/static/passthrough/20250609-maven-primer-10.png new file mode 100644 index 0000000..be21727 Binary files /dev/null and b/static/passthrough/20250609-maven-primer-10.png differ diff --git a/static/passthrough/20250609-maven-primer-11.png b/static/passthrough/20250609-maven-primer-11.png new file mode 100644 index 0000000..70a38fb Binary files /dev/null and b/static/passthrough/20250609-maven-primer-11.png differ diff --git a/static/passthrough/20250609-maven-primer-12.png b/static/passthrough/20250609-maven-primer-12.png new file mode 100644 index 0000000..aa6f054 Binary files /dev/null and b/static/passthrough/20250609-maven-primer-12.png differ diff --git a/static/passthrough/20250609-maven-primer-13.png b/static/passthrough/20250609-maven-primer-13.png new file mode 100644 index 0000000..e7d6c37 Binary files /dev/null and b/static/passthrough/20250609-maven-primer-13.png differ diff --git a/static/passthrough/20250609-maven-primer-14.png b/static/passthrough/20250609-maven-primer-14.png new file mode 100644 index 0000000..ad22ed5 Binary files /dev/null and b/static/passthrough/20250609-maven-primer-14.png differ diff --git a/static/passthrough/20250609-maven-primer-15.png b/static/passthrough/20250609-maven-primer-15.png new file mode 100644 index 0000000..95e6be9 Binary files /dev/null and b/static/passthrough/20250609-maven-primer-15.png differ diff --git a/static/passthrough/20250609-maven-primer-16.png b/static/passthrough/20250609-maven-primer-16.png new file mode 100644 index 0000000..6859680 Binary files /dev/null and b/static/passthrough/20250609-maven-primer-16.png differ diff --git a/static/passthrough/20250609-maven-primer-17.png b/static/passthrough/20250609-maven-primer-17.png new file mode 100644 index 0000000..ec08402 Binary files /dev/null and b/static/passthrough/20250609-maven-primer-17.png differ diff --git a/static/passthrough/20250609-maven-primer-18.png b/static/passthrough/20250609-maven-primer-18.png new file mode 100644 index 0000000..47685e1 Binary files /dev/null and b/static/passthrough/20250609-maven-primer-18.png differ diff --git a/static/passthrough/20250609-maven-primer-19.png b/static/passthrough/20250609-maven-primer-19.png new file mode 100644 index 0000000..c4803b1 Binary files /dev/null and b/static/passthrough/20250609-maven-primer-19.png differ diff --git a/static/passthrough/20250609-maven-primer.txt b/static/passthrough/20250609-maven-primer.txt new file mode 100644 index 0000000..9d438a0 --- /dev/null +++ b/static/passthrough/20250609-maven-primer.txt @@ -0,0 +1,82 @@ +Maven +A beginner's guide + +https://maven.apache.org +"Apache Maven is a software project management +and comprehension tool" + +Based on a "project object model (POM)" +that allows Maven to build the project as configured + +Through its configuration, you can tell Maven: +- What your project dependencies are +- How to compile your project +- How to package your project +- How to run your unit tests +- How to... whatever, really + +Maven is architected around plugins. +Its functionnalities can be extended by writing new plugins. +Though, most likely a plugin already exists for your needs. + +Maven is launched through the command line +with its command and a target "phase". +$ mvn deploy + +When Maven runs, it follows a "lifecycle". +A lifecycle is made of "phases". +Maven will run all the phases up to the +one you specified on the command line. + +Default lifecycle +- validate +- compile +- test +- package +- verify +- install +- deploy + +Each build phase is made up of plugin goals. +You configure which plugins run at each phase +through Maven's config file "pom.xml". + +The POM file should be in the directory from +which you invoke Maven. + +The POM file specifies: +- The project's dependencies +- The plugins to use for the build + +The dependencies and the plugins are called +artifacts. +They're identified by a group, a name, and +a version. + + + org.apache.maven.plugins + maven-compiler-plugin + 3.14.0 + + +Maven downloads artifacts from a "repository". +There are 2 types of repositories. + +Local repository +A directory on your computer. +Maven caches remote downloads +in the local repository + +Remote repository +Any other repository is a remote repository. +It can be a directory, an HTTP server, ... + +By default, Maven uses the following remote repository +https://repo.maven.apache.org/maven2/ + +Through the POM file, you can configure one +or several repositories to use. + +You can instruct Maven to "deploy" your locally built +artifact to a repository, so that other users can +instruct Maven to depend on it for their build. -- cgit v1.2.3