commit: 5e1481745c4ada0f8606b79d8ec7449678d18bdb
parent 1c9143f178a80814c137f53507bd4562b3d6c667
Author: Eyal Sawady <ecs@d2evs.net>
Date: Fri, 16 Oct 2020 19:13:52 -0400
Add missing posts
They didn't make it through the redesign, because their filenames were
identical (besides date) to other posts'.
Diffstat:
9 files changed, 770 insertions(+), 0 deletions(-)
diff --git a/content/blog/State-of-sway-April-2016.md b/content/blog/State-of-sway-April-2016.md
@@ -0,0 +1,116 @@
+---
+# vim: tw=80
+# Commands used to generate these stats:
+# LoC per author: git ls-tree -r -z --name-only HEAD -- */*.c | xargs -0 -n1 git blame --line-porcelain HEAD |grep "^author "|sort|uniq -c|sort -nr
+# Commits per author: git shortlog
+title: State of Sway - April 2016
+layout: post
+tags: [sway]
+---
+
+Since the previous [State of Sway](/2015/12/20/State-of-sway.html), we have
+accomplished quite a bit. We are now shipping versioned releases of sway, which
+include support for window borders, input device configuration, more new
+features, and many bug fixes and stability improvements. I'm also happy to say
+that Sway 0.5 has landed in the Arch Linux community repository and I'm starting
+to hear rumors of it landing in other Linux distros as well. Here's a quick
+rundown of what's happened in the past four months:
+
+* Window borders work now
+* Input devices are configurable
+* swaybar is much more mature, including support for i3status and i3blocks
+* swaylock has reached a similar level of maturity
+* New `include` config command to include sub-configs
+* We have a [default wallpaper](https://github.com/SirCmpwn/sway/blob/master/assets/Sway_Wallpaper_Blue_1920x1080.png) and a logo now
+* musl libc support has been added
+* More features of the i3 IPC protocol have been implemented
+* 18 more i3 commands have been implemented
+* Many improvements to documentation
+* Hundreds of bug fixes and small improvements
+
+I'm a particularly big fan of the new include command, which allows me to add
+this to my config file:
+
+ include ~/.config/sway/config.d/`hostname`/*
+
+The net of this is that it includes a set of configs specific to each machine I
+run Sway on, which each have a unique output device & input device configuration
+and several other details, but I can include them all under
+[version control](https://gogs.sr.ht/SirCmpwn/dotfiles) to keep my dotfiles
+synced between computers.
+
+Today, sway looks like this:
+
+[![](https://sr.ht/me1j.png)](https://sr.ht/me1j.png)
+
+We're now making our way towards Sway 1.0. I have put together a roadmap of the
+things we have done and the things that remain to do for Sway 1.0, which is
+available on the improved website [here](http://swaywm.org/roadmap). We are
+still now moving forward on many of these features, including the most asked for
+feature: the stacked & tabbed window layouts, which is under development from
+Mikkel Oscar Lyderik. He's given me this screenshot to tease you with:
+
+![](https://sr.ht/0CkR.png)
+
+All of this is only possible thanks to the hard work of dozens of contributors.
+Here's the breakdown of **lines of code per author** for the top ten authors
+(with the difference from the previous State of Sway in parenthesis):
+
+<table class="table">
+ <tbody>
+ <tr><td>4307 (+3180)</td><td>Mikkel Oscar Lyderik</td></tr>
+ <tr><td>3059 (-457)</td><td>Drew DeVault</td></tr>
+ <tr><td>2285 (+115)</td><td>taiyu</td></tr>
+ <tr><td>1826 (+40)</td><td>S. Christoffer Eliesen</td></tr>
+ <tr><td>682 (-38)</td><td>Luminarys</td></tr>
+ <tr><td>544 (+544)</td><td>Cole Mickens</td></tr>
+ <tr><td>515 (-19)</td><td>minus</td></tr>
+ <tr><td>385 (+185)</td><td>Christoph Gysin</td></tr>
+ <tr><td>345 (+266)</td><td>Kevin Hamacher</td></tr>
+ <tr><td>166 (+45)</td><td>crondog</td></tr>
+ </tbody>
+</table>
+
+Once again, I'm no longer the author of the most lines of code. Sway now
+has a grand total of 15,422 lines of C and 2,787 lines of headers. Here's the
+total **number of commits per author** for each of the top 10
+committers:
+
+<table class="table">
+ <tbody>
+ <tr><td>688</td><td> Drew DeVault</td></tr>
+ <tr><td>212</td><td> Mikkel Oscar Lyderik</td></tr>
+ <tr><td>191</td><td> taiyu</td></tr>
+ <tr><td>109</td><td> S. Christoffer Eliesen</td></tr>
+ <tr><td>97</td><td> Luminarys</td></tr>
+ <tr><td>58</td><td> Christoph Gysin</td></tr>
+ <tr><td>34</td><td> minus</td></tr>
+ <tr><td>18</td><td> crondog</td></tr>
+ <tr><td>13</td><td> Yacine Hmito</td></tr>
+ <tr><td>12</td><td> progandy</td></tr>
+ </tbody>
+</table>
+
+As the maintainer of sway, *a lot* of what I do is reviewing and merging
+contributions from others. So these statistics change a bit if we use **number
+of commits per author, excluding merge commits**:
+
+<table class="table">
+ <tbody>
+ <tr><td>343</td><td> Drew DeVault</td></tr>
+ <tr><td>201</td><td> Mikkel Oscar Lyderik</td></tr>
+ <tr><td>175</td><td> taiyu</td></tr>
+ <tr><td>109</td><td> S. Christoffer Eliesen</td></tr>
+ <tr><td>96</td><td> Luminarys</td></tr>
+ <tr><td>58</td><td> Christoph Gysin</td></tr>
+ <tr><td>34</td><td> minus</td></tr>
+ <tr><td>18</td><td> crondog</td></tr>
+ <tr><td>13</td><td> Yacine Hmito</td></tr>
+ <tr><td>12</td><td> progandy</td></tr>
+ </tbody>
+</table>
+
+These stats only cover the top ten in each, but there are more - check out the
+[full list](https://github.com/SirCmpwn/sway/graphs/contributors). Hopefully
+next time I write a blog post like this, we'll be well into the lifetime of Sway
+1.0!
diff --git a/content/blog/State-of-sway-December-2015.md b/content/blog/State-of-sway-December-2015.md
@@ -0,0 +1,116 @@
+---
+# vim: tw=80
+title: State of Sway - December 2015
+layout: post
+tags: [sway]
+---
+
+I wrote sway's [initial commit](https://github.com/SirCmpwn/sway/commit/6a33e1e3cddac31b762e4376e29c03ccf8f92107)
+4 months ago, on August 4th. At the time of writing, there are now 1,070 commits
+from 29 different authors, totalling 10,682 lines of C (and 1,176 lines of
+header files). This has been done over the course of 256 pull requests and 118
+issues. Of the 73 [i3 features we're
+tracking](https://github.com/SirCmpwn/sway/issues/2), 51 are now supported, and
+I've been using sway as my daily driver for a while now. Today, sway looks like
+this:
+
+[![](https://sr.ht/NCx_.png)](https://sr.ht/NCx_.png)
+
+For those who are new to the project, [sway](https://github.com/SirCmpwn/sway)
+is an i3-compatible Wayland compositor. That is, your existing
+[i3](http://i3wm.org/) configuration file will work as-is on sway, and your
+keybindings will be the same and the colors and font configuration will be the
+same, and so on. It's i3, but on Wayland.
+
+Sway initially made the rounds on [/r/linux](https://redd.it/3he5hn) and
+[/r/i3wm](https://redd.it/3he48j) and
+[Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=Wayland-i3-Sway-Tiling)
+on August 17th, 13 days after the initial commit. I was already dogfooding it by
+then, but now I'm actually using it 100% of the time, and I hear others have
+started to as well. What's happened since then? Well:
+
+* Floating windows
+* Multihead support
+* XDG compliant config
+* Fullscreen windows
+* gaps
+* IPC
+* Window criteria
+* 58 i3 commands and 1 command unique to sway
+* Wallpaper support
+* Resizing/moving tiled windows with the mouse
+* swaymsg, swaylock, **swaybar** as in i3-msg, i3lock, i3bar
+* Hundreds of bug fixes and small improvements
+
+Work on sway has also driven improvements in our dependencies, such as
+[wlc](https://github.com/Cloudef/wlc), which now has improved xwayland support,
+support for Wayland protocol extensions (which makes swaybg and swaylock and
+swaybar possible), and various bugfixes and small features added at the bequest
+of sway. Special thanks to Cloudef for helping us out with so many things!
+
+All of this is only possible thanks to the hard work of dozens of contributors.
+Here's the breakdown of **lines of code per author** for the top ten authors:
+
+<table class="table">
+ <tbody>
+ <tr><td>3516</td><td>Drew DeVault</td></tr>
+ <tr><td>2400</td><td>taiyu</td></tr>
+ <tr><td>1786</td><td>S. Christoffer Eliesen</td></tr>
+ <tr><td>1127</td><td>Mikkel Oscar Lyderik</td></tr>
+ <tr><td>720</td><td>Luminarys</td></tr>
+ <tr><td>534</td><td>minus</td></tr>
+ <tr><td>200</td><td>Christoph Gysin</td></tr>
+ <tr><td>121</td><td>Yacine Hmito</td></tr>
+ <tr><td>79</td><td>Kevin Hamacher</td></tr>
+ </tbody>
+</table>
+
+And here's the total **number of commits per author** for each of the top 10
+committers:
+
+<table class="table">
+ <tbody>
+ <tr><td>514</td><td> Drew DeVault</td></tr>
+ <tr><td>191</td><td> taiyu</td></tr>
+ <tr><td>102</td><td> S. Christoffer Eliesen</td></tr>
+ <tr><td>97</td><td> Luminarys</td></tr>
+ <tr><td>56</td><td> Mikkel Oscar Lyderik</td></tr>
+ <tr><td>46</td><td> Christoph Gysin</td></tr>
+ <tr><td>34</td><td> minus</td></tr>
+ <tr><td>9</td><td> Ben Boeckel</td></tr>
+ <tr><td>6</td><td> Half-Shot</td></tr>
+ <tr><td>6</td><td> jdiez17</td></tr>
+ </tbody>
+</table>
+
+As the maintainer of sway, *a lot* of what I do is reviewing and merging
+contributions from others. So these statistics change a bit if we use **number
+of commits per author, excluding merge commits**:
+
+<table class="table">
+ <tbody>
+ <tr><td>279</td><td> Drew DeVault</td></tr>
+ <tr><td>175</td><td> taiyu</td></tr>
+ <tr><td>102</td><td> S. Christoffer Eliesen</td></tr>
+ <tr><td>96</td><td> Luminarys</td></tr>
+ <tr><td>56</td><td> Mikkel Oscar Lyderik</td></tr>
+ <tr><td>46</td><td> Christoph Gysin</td></tr>
+ <tr><td>34</td><td> minus</td></tr>
+ <tr><td>9</td><td> Ben Boeckel</td></tr>
+ <tr><td>6</td><td> jdiez17</td></tr>
+ <tr><td>5</td><td> Yacine Hmito</td></tr>
+ </tbody>
+</table>
+
+These stats only cover the top ten in each, but there are more - check out the
+[full list](https://github.com/SirCmpwn/sway/graphs/contributors).
+
+So, what does this all mean for sway? Well, it's going very well. If you'd like
+to live on the edge, you can use sway right now and have a productive workflow.
+The important features that are missing include stacking and tabbed layouts,
+window borders, and some features on the bar. I'm looking at starting up a beta
+when these features are finished. Come try out sway! Test it with us, open
+GitHub issues with your gripes and desires, and [chat
+with us on IRC](http://webchat.freenode.net/?channels=sway&uio=d4).
+
+*This blog post was composed from sway.*
diff --git a/content/blog/Status-update-April-2019.md b/content/blog/Status-update-April-2019.md
@@ -0,0 +1,93 @@
+---
+layout: post
+title: Status update, April 2019
+tags: ["status update"]
+---
+
+Spring is here, and I'm already miserable in the heat. Crazy weather here in
+Philadelphia - I was woken up at 3 AM by my phone buzzing, telling me to take
+immediate shelter from a tornado. But with my A/C cranked up and the tornado
+safely passed, I've been able to get a lot of work done.
+
+The project with the most impressive progress is
+[aerc2](https://git.sr.ht/~sircmpwn/aerc2). It can now read emails, including
+filtering them through arbitrary commands for highlighting diffs or coloring
+quotes, or even rendering HTML email with a TUI browser like w3m.
+
+<script
+ id="asciicast-vy5GmO0tBjppr4G2LSQONIFjH"
+ src="https://asciinema.org/a/pafXXANiWHY9MOH2yXdVHHJRd.js" async
+></script>
+
+Here's another demo focusing on the embedded terminal emulator which makes this
+possible:
+
+<script
+ id="asciicast-N57RaPJqwQD2h0AejLGDWrSi9"
+ src="https://asciinema.org/a/pafXXANiWHY9MOH2yXdVHHJRd.js" async
+></script>
+
+Keybindings are also working, which are configured simiarly to vim - each
+keybinding simulates a series of keystrokes, which all eventually boil down to
+an ex-style command. I've bought a domain for aerc, and I'll be populating it
+with some marketing content and a nice tour of the features soon. I hope to have
+time to work on sending emails this month as well. In the immediate future, I
+need to fix some crashiness that occurs in some situations.
+
+In other email-related news, [git-send-email.io](https://git-send-email.io) is
+now live, an interactive tutorial on using email with git. This workflow is the
+one sourcehut focuses on, and is also used by a large number of important free
+software projects, like Linux, gcc, clang, glibc, musl, ffmpeg, vim, emacs,
+coreutils... and many, many more. Check it out!
+
+I also spent a fair bit of time working on lists.sr.ht this month. Alpine Linux
+has provisioned some infrastructure for a likely migration from their current
+mailing list solution (mlmmj+hypermail) to one based on lists.sr.ht, which I
+deployed a lists.sr.ht instance to for them, and trained them on some
+administrative aspects of lists.sr.ht. User-facing improvments that came from
+this work include tools for importing and exporting mail spools from lists,
+better access controls, moderation tools, and per-list mime whitelisting and
+blacklisting. Admin-facing tools include support for a wider variety of MTA
+configurations and redirects to continue supporting old incoming mail addresses
+when migrating from another mailing list system.
+
+Stepping outside the realm of email, let's talk about Wayland. Since Sway 1.0,
+development has continued at a modest pace, fixing a variety of small bugs and
+further improving i3 compatibility. We're getting ready to split swaybg into a
+standalone project which can be used on other Wayland compositors soon, too. I
+also have been working more on Godot, and have switched gears towards adding a
+Wayland backend to Godot upstream - so you can play Godot-based video games on
+Wayland. I'm still working with upstream and some other interested contributors
+on the best way to integrate these changes upstream, but I more or less
+completed a working port with support for nearly all of Godot's platform
+abstractions.
+
+[![Godot editor running on Wayland with HiDPI support](https://sr.ht/fOvB.png)](https://sr.ht/fOvB.png)
+
+In smaller project news, I spent an afternoon putting together a home-grown
+video livestreaming platform a few weeks ago. The result:
+[live.drewdevault.com](https://live.drewdevault.com). Once upon a time I was
+livestreaming programming sessions on Twitch.tv, and in the future I'd like to
+do this more often on my new platform. This one is open source and built on the
+shoulders of free software tools. I announce new streams on
+[Mastodon](https://cmpwn.com/@sir), join us for the next one!
+
+I'm also starting on another project called cozy, which is yak-shaving for
+several other projects I have in mind. It's kind of ambitious... it's a full
+end-to-end C compiler toolchain. One of my goals (which, when completed, can
+unblock other tasks before cozy as a whole is done) is to make the parser work
+as a standalone library for reading, writing, and maniuplating the C AST. I've
+completed the lexer and basic yacc grammar, and I'm working on extracting an AST
+from the parser. I only started this weekend, so it's pretty early on.
+
+I'll leave you with a fun weekend project I did shortly after the last update:
+[otaqlock](https://qlock.drewdevault.com/). The server this runs on isn't awash
+with bandwidth and the site doesn't work great on mobile - so your milage may
+vary - but it is a cool artsy restoration project nonetheless. Until next time,
+and thank you for your support!
+
+<small class="text-muted">
+This work was possible thanks to users who support me financially. Please
+consider <a href="/donate">donating to my work</a> or <a
+href="https://sourcehut.org">buying a sourcehut.org subscription</a>. Thank you!
+</small>
diff --git a/content/blog/Status-update-April-2020.md b/content/blog/Status-update-April-2020.md
@@ -0,0 +1,67 @@
+---
+layout: post
+title: Status update, April 2020
+tags: ["status update"]
+---
+
+Wow, it's already time for another status update? I'm starting to lose track of
+the days stuck inside. I have it easier than many - I was already used to
+working from home before any of this began. But, weeks and weeks of not spending
+IRL time with anyone else is starting to get to me. Remember to call your
+friends and family and let them know how you're doing. Meanwhile, I've had a
+productive month - let's get you up to date!
+
+In the Wayland world, I've made some more progress on the book. The input
+chapter is now finished, including the example code. The main things which
+remain to be written are the XDG positioner section (which I am dreading), drag
+and drop, and protocol extensions. On the code side of things, wlroots continues
+to see gradual improvements — the DRM (not the bad kind) implementation
+continues to see improvements, expanding to more and more use-cases with even
+better performance. Sway has also seen little bug fixes here and there, and
+updates to keep up with wlroots.
+
+For my part, I've mostly been focused on SourceHut and Secret Project this
+month. On the SourceHut side of things, I've been working on hub.sr.ht, and on
+an experimental GraphQL-based API for git.sr.ht. The former is progressing quite
+well, and I hope to ship an early version before the next status update. As for
+the latter, it's still very experimental, but I am optimistic about it. I have
+felt that the current REST API design was less than ideal, and the best time to
+change it would be during the alpha. The GraphQL design, while it has its
+limitations, is a lot better than the REST design and should make it a lot
+easier for services to interop with each other - which is a core design need for
+sr.ht.
+
+Here's a little demo of hub.sr.ht as of a few weeks ago to whet your appetite:
+
+<video src="https://yukari.sr.ht/hub.sr.ht.webm" muted autoplay loop controls>
+ Your web browser does not support the webm video codec. Please consider using
+ web browsers that support free and open standards.
+</video>
+
+As far as the secret project is concerned, here's another teaser:
+
+```
+fn printf (fmt: str, ...) int;
+
+fn f (ptr: &int) int =
+{
+ let x: int = *ptr;
+ free ptr;
+ printf("value: %d\n", x)
+};
+
+export fn main int =
+{
+ let x = alloc &int 10;
+ f(^x);
+ 0
+};
+```
+
+```
+$ [redacted] -o example [redacted...]
+$ ./example
+value: 10
+```
+
+That's all for today! I'll see you again next month. Thank you for your support!
diff --git a/content/blog/Status-update-February-2020.md b/content/blog/Status-update-February-2020.md
@@ -0,0 +1,57 @@
+---
+layout: post
+title: Status update, February 2020
+tags: ["status update"]
+---
+
+Today I thought it'd try out something new: I have an old family recipe
+simmering on the stove right now, but instead of beef I'm trying out impossible
+beef. It cooked up a bit weird — it doesn't brown up in the same way I
+expect of ground beef, and it made a lot more fond than I expected. Perhaps the
+temperature is too high? We'll see how it fares when it's done. In the
+meanwhile, let's get you up to speed on my free software projects.
+
+First, big thanks to everyone who stopped by to say "hello" at FOSDEM! Putting
+faces to names and getting to know everyone on a personal level is really
+important to me, and I would love FOSDEM even if that was all I got out of it.
+Got a lot of great feedback on the coming plans for SourceHut and aerc, too.
+
+That aside, what's new? On the Wayland scene, the long-promised Sway 1.3^W1.4
+was finally released, and with it wlroots 0.10.0. I've been talking it up for a
+while, so I won't bore you by re-listing all of the cool stuff in this release -
+it'll suffice to say that I think you'll enjoy it. The related tools —
+swayidle, swaylock, swaybg — all saw releases around the same time. The
+other release this month was scdoc 1.10.1, which was a simple patch release.
+Beyond releases, there's been some Wayland development work as well: wev
+received a simple bugfixes, and casa's OpenGL-based renderer rewrite has been
+completed nicely.
+
+aerc progresses nicely this month as well, thanks to the support of its many
+dedicated contributors. Many bugfixes have landed, alongside contextual
+configuration options — so you can have different config settings, for
+example, when you have an email selected whose subject line matches a regex. A
+series of notmuch patches should be landing soon as well. himitsu has also seen
+slow progress — this pace being deliberate, as this is security-sensitive
+software. Several bugs have been fixed in the existing code, but there are a few
+more to address still. imrsh also had a little bit of improvement this month,
+as I started down the long road towards properly working UTF-8 support.
+
+SourceHut improvements have also landed recently. I did some work shoring up our
+accessibility standards throughout the site, and SourceHut is now fully
+complaint with the WCAG accessibility guidelines. We now score 100% on standard
+performance, accessibility, and web standards compliance tests. SourceHut is the
+lightest weight, most usable forge. I recently fixed a bug report from a Lynx,
+user, too 😉 In terms of feature development, the big addition this month is
+support for attaching files to annotated git tags, so you can attach binaries,
+PGP signatures, and so on to your releases. More cool SourceHut news is coming
+in the post to sr.ht-announce later today.
+
+This month's update is a little bit light on content, I'll admit. Between FOSDEM
+and taking some personal time, I've had less time for work this month. However,
+there's another reason: I have a new secret project which I've been working on.
+I intend to keep this project under wraps for a while still, because I don't
+want people to start using it before I know if it's going to pan out or not.
+This project is going to take a lot of time to complete, so I hope you'll bear
+with me for a while and trust that the results will speak for themselves. As
+always, thank you for your support, and I'm looking forward to another month of
+awesome FOSS work.
diff --git a/content/blog/Status-update-January-2020.md b/content/blog/Status-update-January-2020.md
@@ -0,0 +1,70 @@
+---
+layout: post
+title: Status update, January 2020
+tags: ["status update"]
+---
+
+I forgot to write this post this morning, and I'm on cup 3 of coffee while
+knee-deep in some arcane work with tarballs in Python. Forgive the brevity of
+this introduction. Let's get right into the status update.
+
+First of all, [FOSDEM 2020][fosdem] is taking place on February 1st and 2nd, and
+I'm planning on being there again this year. I hope to see you there! I'll be
+hosting another [small session][sourcehut session] for SourceHut and aerc users
+where I'll take questions, demo some new stuff, and give out stickers.
+
+[fosdem]: https://fosdem.org/2020/
+[sourcehut session]: https://fosdem.org/2020/schedule/event/bof_sourcehut/
+
+In Wayland news, the upcoming Sway 1.3 release is getting very close - rc3 is
+planned to ship later today. We've confirmed that it'll ship with VNC support
+via [wayvnc](https://github.com/any1/wayvnc) and improvements to input latency.
+I haven't completed much extra work on Casa (and "Sway Mobile" alongside it),
+but there have been some small improvements. I did find some time to work on
+[Sedna](https://git.sr.ht/~sircmpwn/sedna), however. We've decided to use it as
+a proving grounds for the new wlroots scene graph API, which plans to
+incorporate Simon Ser's [libliftoff][libliftoff] and put to rest the eternal
+debate over how wlroots renderer should take shape. This'll be *lots* of work
+but the result will be a remarkably good foundation on which we can run
+performant compositors on a huge variety of devices — and, if we're
+lucky, might help resolve the Nvidia problem. I also did a bit more work on the
+[Wayland Book](https://wayland-book.com), refactoring some of the chapter
+ordering to make more sense and getting started with the input chapter. More
+soon.
+
+[libliftoff]: https://github.com/emersion/libliftoff
+
+On SourceHut, lots of new developments have been underway. The latest round of
+performance improvements for git.sr.ht finally landed with the introduction of
+new server hardware, and it's finally competitive with its peers in terms of
+push and web performance. I've also overhauled our monitoring infrastructure
+[and made it public](https://metrics.sr.ht). Our [Q4 2019 financial
+report][financial report] was also published earlier this week. I'm currently
+working on pushing forward through the self-service data ownership goals, and
+we've already seen some improvements in that todo.sr.ht can now re-import
+tracker exports from itself or other todo.sr.ht instances.
+
+[financial report]: https://sourcehut.org/blog/2020-01-13-sourcehut-q4-2019-financial-report/
+
+I've also been working more on [himitsu](https://git.sr.ht/~sircmpwn/himitsu)
+recently, though I'm taking it pretty slowly because it's a security-sensitive
+project. Most of the crypto code has been written at this point - writing
+encrypted secrets to disk, reading and writing the key index - but reading
+encrypted secrets back from the disk remains to be implemented. I know there are
+some bugs in the current implementation, which I'll be sorting out before I
+write much more code. I also implemented most of the support code for the Unix
+socket RPC, and implemented a couple of basic commands which have been helpful
+with proving out the secret store code (proving that it's wrong, at least).
+
+Simon Ser's [mrsh](https://mrsh.sh) has also been going very well lately, and is
+now a nearly complete implementation of the POSIX shell. I've started working on
+something I've long planned to build on top of mrsh: a comfortable interactive
+shell, inspired by fish's interactive mode, but with a strictly POSIX syntax. I
+call the project [imrsh](https://git.sr.ht/~sircmpwn/imrsh), for interactive
+mrsh. I've already got it in somewhat good shape, but many of the features
+remain to be implemented. The bulk of the work was in Simon's mrsh, so it
+shouldn't be too hard to add a pretty interface on top. We'll see how it goes.
+
+That's all for today. In the coming month I hope to expand on each of these, and
+I'm also working on a new Secret Project which may start bearing fruits soon
+(but likely not). Thank you for your continued support! I'll see you at FOSDEM.
diff --git a/content/blog/Status-update-July-2020.md b/content/blog/Status-update-July-2020.md
@@ -0,0 +1,83 @@
+---
+layout: post
+title: Status update, July 2020
+tags: ["status update"]
+---
+
+Hello again! Another month of FOSS development behind us, and we're back again
+to share the results. I took a week off at the end of June, so my progress this
+month is somewhat less than usual. Regardless, I have some updates for you,
+mainly in the domain of SourceHut work.
+
+But before we get to that, let's go over this month's small victories. One was
+the invention of the [BARE message format](https://baremessages.org), which I
+wrote [a blog post about][bare post] if you want to learn more. Since that
+article, five new implementations have appeared from various authors: Rust,
+Python, JavaScript, D, and Zig.
+
+[bare post]: https://drewdevault.com/2020/06/21/BARE-message-encoding.html
+
+I also wrote a couple of not-blogposts for this site (drewdevault.com),
+including a page [dispelling misconceptions about static linking][dynlib],
+and a page (that I hope you'll contribute to!) with [videos of people editing
+text][editing]. Just dropping a link here in case you missed them; they didn't
+appear in RSS and aren't blog posts. To help find random stuff like that on this
+site, I've also established a [misc page][misc].
+
+[dynlib]: /dynlib
+[editing]: /editing
+[misc]: /misc
+
+Okay, on to SourceHut. Perhaps the most exciting development is the addition of
+[continuous integration to the mailing lists][lists CI]. I've been working
+towards this for some time now, and it's the first of many features which are
+now possible thanks to the addition of the project hub. I intend to complete
+some follow-up work improving the CI feature further still in the coming weeks.
+I'm also planning an upgrade for the hardware that runs hg.sr.ht during the same
+timeframe.
+
+[lists CI]: https://sourcehut.org/blog/2020-07-14-setting-up-ci-for-mailing-lists/
+
+That's all the news I have for now, somewhat less than usual. Some time off was
+much-needed, though. Thanks for your continued support, and I hope you continue
+to enjoy using my software!
+
+<details>
+<summary>...</summary>
+<pre>
+$ cat main.$ext
+use io;
+use strings;
+use sys;
+
+export fn main void =
+{
+ for (let i = 0; sys::envp[i] != null; i += 1) {
+ let s = strings::from_c(sys::envp[i]);
+ io::println(s);
+ };
+};
+$ $redacted run main.$ext
+error: main.$ext:8:41: incorrect type (&char) for parameter 1 (&char)
+ let s = strings::from_c(sys::envp[i]);
+ ^--- here
+$ vim main.$ext
+$ cat main.$ext
+use io;
+use strings;
+use sys;
+
+export fn main void =
+{
+ for (let i = 0; sys::envp[i] != null; i += 1) {
+ let s = strings::from_c(sys::envp[i]);
+ io::println(s);
+ free(s);
+ };
+};
+$ $redacted run main.$ext
+DISPLAY=:0
+EDITOR=vim
+# ...
+</pre>
+</details>
diff --git a/content/blog/Status-update-June-2020.md b/content/blog/Status-update-June-2020.md
@@ -0,0 +1,96 @@
+---
+layout: post
+title: Status update, June 2020
+tags: ["status update"]
+---
+
+Like last month, I am writing to you from the past, preparing this status update
+a day earlier than usual. This time it's because I expect to be busy with
+planned sr.ht maintenance tomorrow, so I'm getting the status updates written
+ahead of time.
+
+aerc has seen lots of patches merged recently thanks to the hard work of
+co-maintainer Reto Brunner and the many contributors who sent patches, ranging
+from a scrollable folder list to improvements and bugfixes for PGP support. We
+wrapped all of this up in the aerc 0.4.0 release in late May. Thanks to Reto and
+all of the other contributors for their hard work on aerc!
+
+Wayland improvements have also continued at a good pace. I've mentioned before
+that wlroots is a crucial core component tying together a lot of different parts
+of the ecosystem — DRM/KMS, GBM, OpenGL, libinput, udev, and more —
+bringing together integrations for many disparate systems and providing a single
+unified multiplexer for them over the Wayland protocol. Taking full advantage of
+all of these systems and becoming a more perfect integration of them is a
+long-term goal, and we've been continuing to make headway on these goals over
+the past few weeks. We are working hard to squeeze every drop of performance out
+of your system.
+
+In the SourceHut world, I've been working mainly on GraphQL support, as well as
+Alpine 3.12 upgrades (the latter being the source of the planned outage). I
+wrote in some detail [on the sourcehut.org blog][gql article] about why and how
+the GraphQL backends are being implemented, if you're curious. The main
+development improvements in this respect which have occured since the last
+status updates are the introduction of a JavaScript-free GraphQL playground, and
+a GraphQL API for meta.sr.ht. Coming improvements will include an overhaul to
+authentication and OAuth2 support, and a dramatically improved approach to
+webhooks. Stay tuned!
+
+[gql article]: https://sourcehut.org/blog/2020-06-10-how-graphql-will-shape-the-alpha/
+
+That's all for the time being. Thank you for your support and attention, and
+stay safe out there. I'll see you next month!
+
+<details>
+<summary>...</summary>
+<pre>
+$ cat strconv/itos.$redacted
+use bytes;
+use types;
+
+/***
+ * Converts an i64 to a string, in base 10. The return value is statically
+ * allocated and will be overwritten on subsequent calls; see [strings::dup] to
+ * duplicate the result, or [strconv::itosb] to pass your own string buffer.
+ *
+ * let a = strconv::i64tos(1234);
+ * io::printf("%s", a); // 1234
+ *
+ * let a = strconv::i64tos(1234);
+ * let b = strconv::i64tos(4321);
+ * io::printf("%s %s", a, b); // 4321 4321
+ */
+export fn i64tos(i: i64) const *str =
+{
+ static assert(types::I64_MAX == 9223372036854775807,
+ "Maximum integer value exceeds buffer length");
+ static let s = struct {
+ l: size = 0,
+ b: [22]u8 = [0: u8...], /* 20 digits plus NUL and '-' */
+ };
+ s.l = 0;
+ s.b = [0: u8...];
+
+ const isneg = i < 0;
+ if (isneg) {
+ s.b[s.l] = '-': u8;
+ s.l += 1;
+ i = -i;
+ } else if (i == 0) {
+ s.b[s.l] = '0': u8;
+ s.l += 1;
+ };
+
+ while (i > 0) {
+ s.b[s.l] = '0': u8 + (i % 10): u8;
+ s.l += 1;
+ i /= 10;
+ };
+
+ const x: size = if (isneg) 1 else 0;
+ bytes::reverse(s.b[x..s.l]);
+
+ s.b[s.l] = 0: u8;
+ return &s: *str;
+};
+</pre>
+</details>
diff --git a/content/blog/Status-update-May-2020.md b/content/blog/Status-update-May-2020.md
@@ -0,0 +1,72 @@
+---
+layout: post
+title: Status update, May 2020
+tags: ["status update"]
+---
+
+Hello, future readers! I am writing to you from one day in the past. I finished
+my plans for today early and thought I'd get a head start on writing the status
+updates for tomorrow, or rather, for today. From your reference frame, that is.
+
+Let's start with Wayland. First, as you might have heard, [The Wayland
+Protocol](https://wayland-book.com) is now free for anyone to read, and has been
+relicensed as CC-BY-SA. Enjoy! It's still not quite done, but most of it's
+there. In development news, wlroots continues to enjoy incremental improvements,
+and is being refined further and further towards a perfect citizen of the
+ecosystem in which it resides. Sway as well has seen many small bugfixes and
+improvements. Both have been been stable for a while now: the only meaningful
+changes will be, for the most part, a steady stream of bug fixes and performance
+improvements.
+
+Moving on from Wayland, then, there are some interesting developments in the
+world of email as well. aerc has seen some minor changes to how it handles
+templates and custom email headers, and a series of other small features and
+improvements: drafts, a `:choose` meta-command, and fixes for OpenBSD and Go
+1.15. Additionally, I've joined [Simon Ser](https://emersion.fr/) to work on
+[Alps](https://sr.ht/~emersion/alps/) together, to put the finishing touches on
+our lightweight & customizable webmail client before
+[Migadu](https://www.migadu.com/en/index.html) puts it into production.
+
+On the SourceHut front, lots of cool stuff came out this month. You might have
+seen the [announcement this week][plan 9] that we've added Plan 9 support to the
+CI — a world first :D I also just published the first bits of the new,
+experimental GraphQL API for git.sr.ht, which you can [play with here][graphql].
+And, of course, the long-awaited project hub was released this month! [Check it
+out here](https://sr.ht) to get your projects listed. I'll post about all of
+this in more detail on the sr.ht-announce mailing list later today.
+
+[plan 9]: https://sourcehut.org/blog/2020-05-11-sourcehut-plus-plan-9/
+[graphql]: https://git.sr.ht/graphql
+
+That's all for today! I'll see you next month. Thank you once more for your
+wonderful support.
+
+<details>
+ <summary>...</summary>
+<pre>/* sys::write */
+fn write(fd: int, buf: *void, count: size) size;
+
+fn puts(s: str) size =
+{
+ let n = write(1, s: *char, len(s));
+ n += write(1, "\n": *char, 1);
+ n;
+};
+
+export fn main int =
+{
+ puts("Hello world!");
+ 0;
+};
+</pre>
+
+<pre>
+$ ./[redacted] < example.[redacted] | qbe > example.S
+$ as -o example.o example.S
+$ ld -o example lib/sys/[redacted]s.o example.o lib/sys/lib[redacted]rt.a
+$ wc -c example
+9640
+$ ./example
+Hello world!
+</pre>
+</details>