drewdevault.com: Add missing posts v1 PROPOSED

Eyal Sawady: 1
 Add missing posts

 9 files changed, 770 insertions(+), 0 deletions(-)
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.sr.ht/~sircmpwn/public-inbox/patches/14327/mbox | git am -3
Learn more about email & git
View this thread in the archives

[PATCH drewdevault.com] Add missing posts Export this patch

They didn't make it through the redesign, because their filenames were
identical (besides date) to other posts'.
 content/blog/State-of-sway-April-2016.md    | 116 ++++++++++++++++++++
 content/blog/State-of-sway-December-2015.md | 116 ++++++++++++++++++++
 content/blog/Status-update-April-2019.md    |  93 ++++++++++++++++
 content/blog/Status-update-April-2020.md    |  67 +++++++++++
 content/blog/Status-update-February-2020.md |  57 ++++++++++
 content/blog/Status-update-January-2020.md  |  70 ++++++++++++
 content/blog/Status-update-July-2020.md     |  83 ++++++++++++++
 content/blog/Status-update-June-2020.md     |  96 ++++++++++++++++
 content/blog/Status-update-May-2020.md      |  72 ++++++++++++
 9 files changed, 770 insertions(+)
 create mode 100644 content/blog/State-of-sway-April-2016.md
 create mode 100644 content/blog/State-of-sway-December-2015.md
 create mode 100644 content/blog/Status-update-April-2019.md
 create mode 100644 content/blog/Status-update-April-2020.md
 create mode 100644 content/blog/Status-update-February-2020.md
 create mode 100644 content/blog/Status-update-January-2020.md
 create mode 100644 content/blog/Status-update-July-2020.md
 create mode 100644 content/blog/Status-update-June-2020.md
 create mode 100644 content/blog/Status-update-May-2020.md

diff --git a/content/blog/State-of-sway-April-2016.md b/content/blog/State-of-sway-April-2016.md
new file mode 100644
index 0000000..7508194
--- /dev/null
+++ 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:


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:


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">
        <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>

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

<table class="table">
        <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>

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">
        <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>

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
diff --git a/content/blog/State-of-sway-December-2015.md b/content/blog/State-of-sway-December-2015.md
new file mode 100644
index 0000000..1201f07
--- /dev/null
+++ 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


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
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
* 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">
        <tr><td>3516</td><td>Drew DeVault</td></tr>
        <tr><td>1786</td><td>S. Christoffer Eliesen</td></tr>
        <tr><td>1127</td><td>Mikkel Oscar Lyderik</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>

And here's the total **number of commits per author** for each of the top 10

<table class="table">
        <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>

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">
        <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>

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
new file mode 100644
index 0000000..21794b6
--- /dev/null
+++ 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.

  src="https://asciinema.org/a/pafXXANiWHY9MOH2yXdVHHJRd.js" async

Here's another demo focusing on the embedded terminal emulator which makes this

  src="https://asciinema.org/a/pafXXANiWHY9MOH2yXdVHHJRd.js" async

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

[![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!
diff --git a/content/blog/Status-update-April-2020.md b/content/blog/Status-update-April-2020.md
new file mode 100644
index 0000000..2cb31ff
--- /dev/null
+++ 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 &mdash; 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

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.

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;

$ [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
new file mode 100644
index 0000000..c617640
--- /dev/null
+++ 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 &mdash; 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 &mdash;
swayidle, swaylock, swaybg &mdash; 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 &mdash; 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 &mdash; 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
new file mode 100644
index 0000000..06d391e
--- /dev/null
+++ 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 &mdash; 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

[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
new file mode 100644
index 0000000..a781e67
--- /dev/null
+++ 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

[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!

$ 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]);
$ $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]);
$ $redacted run main.$ext
# ...
diff --git a/content/blog/Status-update-June-2020.md b/content/blog/Status-update-June-2020.md
new file mode 100644
index 0000000..00ddb89
--- /dev/null
+++ 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 &mdash; DRM/KMS, GBM, OpenGL, libinput, udev, and more &mdash;
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!

$ 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;

	s.b[s.l] = 0: u8;
	return &s: *str;
diff --git a/content/blog/Status-update-May-2020.md b/content/blog/Status-update-May-2020.md
new file mode 100644
index 0000000..af2e5e8
--- /dev/null
+++ 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

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 &mdash; 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.

<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);

export fn main int =
	puts("Hello world!");

$ ./[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
$ ./example
Hello world!

To git@git.sr.ht:~sircmpwn/drewdevault.com
   5e14817..1c9143f  master -> master