Pubstrate + soci-el + ActivityPub update for 2016-09-10
Following up from last week's update (well, plus a few days)... a lot has happened.
- Session stuff was put to use. Logins/logout now work.
- I wrote a configuration subsystem. You can now configure the application, and have the configuration validate against a spec. The configuration files are written in scheme, but pleasantly, there's a command line script which will generate a default config for you, with some infrastructure so that it will be a nice little wizard asking you questions later.
- Backported some stuff from Guile 2.1/2.2 so that if you're still using Guile 2.0, you can still redirect from relative links. (This was originally against the HTTP 1.1 spec, but in a revised version, it was relaxed.)
- Command line interface now supports multiple subcommands, used for config bootstrapping stuff mentioned above.
- Much, much refactoring.
- Wrote a full widget/form rendering library, a-la Python's WTForms, but without all the mutation.
- Added page to authorize clients.
- User outbox now renders as AS2 on a GET.
- Various improvements and bugfixes.
So 5 days ago, I hit the point where I needed to have a decent client to be testing things with. Prior to this I had just been using the guile REPL to do some crappy posting. I realized I wasn't capturing the experience of any kind of real use though, and I needed to demo a real client, so I started building one.
I really fought with myself over what I should build it in. Weighing the options, I initially decided a Pumpa-like interface in GTK2 would be the most generally demonstratable, and would allow me to leverage the Guile bindings I had already written. So I started writing that, but soon ran into problems... I spent about 4 hours trying to get GTK box packing to cooperate on the most trivial things and realized I wasn't having any fun. I was feeling depressed and full of doubt.
I kind of felt like, maybe an emacs client would be most fun for me. But that would mean reimplementing nearly all of the activitystreams handling code from Guile into Emacs Lisp. So I decided to take an evening to see if I could do it. Well, within a few hours I had nearly everything ported, and by the next day I had a generic methods written! I also made a mockup that felt compelling for an emacs interface, and was able to make use of that look... within a short period I had a working experimental rendering function, and shortly after that I managed to render another entry, this one borrowed from @rhiaro's blog (which exposes an AS2 version).
So, emacs client it is! I've been forging forward, and as of right now I can connect emacs to my localhost instance of Pubstrate and pull down and render my outbox. Horray!
I still need to be able to post things though. For the moment, I am thinking of taking the (hilarious?) route of being able to author content in org-mode (which will be rendered to HTML before being posted to the server).
In the meanwhile, I am also trying to wrap up all the ActivityPub issues I can, though I've been more focused on the software.
I feel like things are coming together, but I'm very afraid that even if I put in all my energy, I won't get things far along fast enough. I'm very stressed out because of this. I know some of you have said "it isn't worth your mental health", but maybe some deadlines, if they are important enough, are. Nonetheless my mental health is admittedly very poor right now... and my physical health isn't doing so great being in crunchtime either. If I step back and look at my productivity, it seems very good on its own. In put in context of a ticking clock, it feels like not enough.
Not long left till TPAC. Wish me luck.