logo

drewdevault.com

[mirror] blog and personal website of Drew DeVault
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:

Acontent/blog/State-of-sway-April-2016.md116+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/blog/State-of-sway-December-2015.md116+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/blog/Status-update-April-2019.md93+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/blog/Status-update-April-2020.md67+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/blog/Status-update-February-2020.md57+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/blog/Status-update-January-2020.md70++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/blog/Status-update-July-2020.md83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/blog/Status-update-June-2020.md96+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/blog/Status-update-May-2020.md72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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 &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 +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 &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 @@ -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 +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 &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! + +<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 &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. + +<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>