Developer Journal, Global Wind Day
Obviously, we follow up World Oceans Day with Global Wind Day, right? We also had Earth Day a few weeks ago. There does not, however, appear to be a Transnational Fire Day to round out the four classical elements. Somebody get to work on that, please.
As for this week, I jumped around a bit more than last week.
Entropy Arbitrage
Last Sunday, I published a post updating three previous posts, splitting the difference between silently editing old postsāintellectually honest, since the changes would be under version control, but not immediately visibleāand writing a series of posts too short to really bother with.
However, publishing the single update post doesnāt solve the discoverability problem, by itself. I needed to add an optional section to each post noting that another post refers to it.
I resolved the problem by adding an update
section to my post headers (you can see this in version control, like in Sundayās file). Then, I needed code in my template to check the page for companions and list them if available. It looks something like this, with the most obnoxious part being that Liquid templates have no interest in creating arrays.
{ % assign pagename = page.path | split: '/' | last %}
{ % assign related = "" %}
{ % for post in site.posts %}
{ % for update in post.update %}
{ % assign name = update | split: '/' | last %}
{ % if name == pagename %}
{ % assign dest = post.title %}
{ % assign dest = dest | append: "," %}
{ % assign dest = dest | append: post.url %}
{ % assign dest = dest | append: "," %}
{ % assign dest = dest | append: post.date %}
{ % assign dest = dest | append: ";" %}
{ % assign related = related | append: dest %}
{ % endif %}
{ % endfor %}
{ % endfor %}
{ % assign related = related | split: ";" %}
{ % if related.size > 0 %}
<div class="post-content">
<b>Hi!</b>
It looks like this post has since been rethought in various
ways, so you may want to look at
{ % if related.size == 1 %}
this
{ % else %}
these
{ % endif %}
after you're done reading here.
<ul>
{ % for r in related %}
{ % assign rel = r | split: "," %}
{ % if rel.size > 1 %}
<li>
<a href="">
{ { rel[0] }}
</a>
from
{ { rel[2] | date: date_format }}
</li>
{ % endif %}
{ % endfor %}
</ul>
</div>
{ % endif %}
(As usual, I had to add spaces to get the Liquid template code to display, because otherwise, the blog software tries to interpret it. Youāll need to remove those spaces, if you copy and paste the code.)
This takes the internal name of the blog post and tries to match it to the update
lists of all the other posts, creating a delimited list of titles, file names, and dates. Then, it breaks that string up into an array and, if the array has anything in it, shows them as hyperlinks to the referencing pages. Note that I may need to swing back and change those delimiters, since the odds of finding a comma seem unpleasantly high.
I donāt know if Iām interested in doing so, yet, but a similar process could probably be used to suggest a few related posts to readers. Too much?
Mailing List
This may not come to anything, but Iām looking at launching a mailing list. I donāt know if itās useful, nor do I know if itās possible to do (without making it my full-time job) while maintaining any level of commitment to Free Software and Free Culture.
That said, I feel like there are people who would prefer something like:
- A monthly round-up of blog posts,
- Any announcements I might have, possibly with previews,
- Links to and comments on any public domain stories Iāve been reading (though thatās been a lot less since I started writing thousands of words every week, for some reasonā¦),
- Quick mention of any (non-Free Culture) media I would recommend (maybe), and
- Whatever pointless comments I feel like making that wonāt fit anywhere else.
The contents will be released under the same license and archived somewhere safe, but I might not be as careful about what I citeā¦not that Iāve been able to always find acceptable news sources for everything I want to talk about.
If youāre thinking āthatās only what Iāve been begging for my entire life,ā please seek therapy, and also be on the lookout for it near the end of June (this month) or early July. The mid-point of the year seems like a good time for that sort of launch.
And I apologize in advance if either I change my mind and kill the project or it ends up on Tiny Letter. I realize that āEmail for people with something to sayā does not inspire confidence, but as much as I would love to run it myself, the idea of comparing software, installing and maintaining the server, getting DKIM set up right, and making sure that Iām in compliance with everybodyās anti-spam laws sounds like a nightmare.
I also feel like a mailing list service can only abuse its users so much. But if anybody knows differently and thereās a reason not to do this, please speak up.
Uxuyu
After aggressively changing Uxuyu last week, I gave it a bit of a break, this week, but still moved forward.
Cosmetically, when displaying posts mentioning you, Uxuyu inverts the display colors, to make it obvious which message is relevant. And speaking of colors, we now also read an (optional) JSON-based configuration file on startup that will override the default colors and font size.
As mentioned I mentioned previously, the latter configuration system is the same code that I use for Miniboost. I also added a configuration option for the application to call with the post_tweet_hook
. Previously, I have the program hard-coded for bash
, which is what I need based on my laptopās configuration, but not every machine is going to have the same needs.
URL Rat
I have a project idea that might benefit from a browser extension that can notify it of viewed web pages, so the URL Rat exists to test the browser extension waters, so to speak. I didnāt have time to flesh it out, but the eventual version should be an extension that monitors for a new page and sends the new address to a pre-configured URL, āratting the user outā to some server.
For anybody interested in possible uses later on, imagine a time-tracking system where the browser history, files accessed in an IDE, and possibly geofencing can be combined with notes and version history to make it easier for someone to follow work if a member of the team isnāt available. So, instead of asking āwhat did I work on,ā thereās history that can be annotated, an example being a list that shows visiting three Stack Overflow questions of which one was useful and visited (hypothetical colleague) Navyaās office before committing code.
I want to start with making sure the browser extension works, first. Iāll probably create a Visual Studio Code extension after that. None of this does the hard part of the job, but I want to make sure all the pieces fit together before trying to build a working server.
Bicker
As I mentioned last Monday, gems have been falling behind, so I spent some time updating Bicker. Nothing eventful, there.
Stack Overflow Antics
This probably wonāt be a big deal to most people, but if itās your sort of material, I gave a condensed overview on the major classes of parsers, including (in the comments) getting to introduce people to the Pratt parser, which allows for languages that can change during parsing.
Next
This week, I want to get back to Uxuyu and polish off some of the remaining features that I want. Thereās bug in dealing with the non-followed accounts that needs to be resolved, and I suspect that itās going to be easy after that to add a āfire hoseā mode that no longer filters for only the users you follow, looking more like social media.
URL Rat also has some more work needed. Expect a post this or next Wednesday with an overview of how to develop an extension, too, since I donāt want to lose track of that knowledge.
If a slide-out tray starts showing up on posts (like the recommended posts on the index page), that will be for the mailing list. Iāll try not to let that slip out before the list is ready to go and apologize if it sneaks out.
Credits: The header image is Cherry tree moving in the wind by W.carter, released under the terms of the Creative Commons CC0 1.0 Universal Public Domain Dedication.
By commenting, you agree to follow the blog's Code of Conduct and that your comment is released under the same license as the rest of the blog.
Tags: programming project devjournal uxuyu