• Evie Finch @ewie

    Boring site update changelog 25-09-18

    [...]

    Stuff I still need to do

    • Support reblogging. I don't grab posts using h-entry or anything, and my post templates don't support shared posts yet. I had to design some systems for handling post sharing with my tweet component, so I will probably use similar ideas once I add real posts.
    • Improve accessibility. I have some quick wins I can and should do. Don't neglect accessibility y'all.
    • Add a like button. Don't add a like count.

    Reblogging Evie Finch
    Evie Finch @ewie

    Site update changelog 26-08-09 - Big update!

    Note: The site has had major changes and may look incorrect unless you clear your cache.

    So I have a major update, and I'd like to write a brief changelog talking about what's changed.

    Big Stuff!

    Reblogs added!

    A post can now be a "reblog" of another post. Reblogs get all the same metadata that regular posts get, and reblogs can be chained. This means, in theory, I could reblog nex3's reblog and I could show the original post, nex3's response, and then my own response. I really can't think of any other features this design could have. It's got basically everything I could ever want.

    How it works

    This feature is technically fake. It works similarly to the type of reblogs you see on nex3's site. In her blog, a reblog is a shortcode which renders into a template, and a pile of metadata which is used in that template. She also has a helper function which will fetch the data for her. I don't.1

    However, my version of this feature has a ton of really cool stuff going for it! I have a special markdown-compatible syntax which my blog will see and turn into a reblog. In a blog post, it looks something like this:

    {
      title: Post title
      url: https://link.to/post/
      date: 1970-01-01T00:00:00.000Z
      author:
        displayName: Author Name
        username: handle
        avatar: https://link.to/profile-pic.jpg
    }
    :::
    Post **content** of reblog post.
    :::
    

    My blog has a dedicated preprocessing step that parses every single blog post with a simple (and probably poorly programmed) parser I wrote that scans for any reblogs, extracts them out of a blog post, and attaches them to that post's metadata under the reblogs section. the content is treated like regular markdown, which is really nice. If you're interested in reading the source code for this feature, perhaps so you can implement something like it on your own blog, you can find the parser and the post component on Github.

    I'm incredibly proud of how I implemented reblogs. As far as I can tell, it's completely unique in the world of blogs. However, please steal it if you're interested! This feature is just one part of my crusade to reinvent a fourth website piecemeal and from first principles.2

    Read more overhauled

    To keep posts from taking up too much space in the main timeline, they'd get trimmed down to a certain length. Before, this would be handled on build by deleting the rest of the post after a certain point on the timeline pages and inserting a "read more" link afterwards. Now, this is all handled client-side, so you can get the full experience without ever leaving the timeline. I don't really know how I feel about it being a bit more social media-esque, but this does fix almost every bug the previous read more system had, and there were many. I had multiple occasions where I'd upload a blog post only to find that the read more mangled it somehow. Never again.

    This feature was directly inspired by cohost, and to make the cohost resemblence even greater, the version 2 of read more is a near-blatant copy of the cohost button.3

    Small stuff

    • Fixed RSS issues (after an update broke RSS). (ref)
    • Fixed URL issues (after that same update broke URLs). (ref)
    • Added URL regression testing to prevent future URL issues. (ref)
    • Rehype syntax highlighting plugin is no longer used. Moved to a regular syntax highlighting plugin.4 (Some info on motivations here.) This is part of an effort to genericize the blog's internals into an easy to use template. (ref)
    • Cleaned up _config.ts. Split some of its functionality into a new plugins.ts. This is part of an effort to genericize the blog's internals into an easy to use template. (ref)
    • Added support for the Octothorpes protocol. (ref)
    • Quote-back component created. (ref)

    Stuff I still need to do/Known issues

    • In the timeline, if the same footnote number is used in two posts, clicking on the footnote link will always take you to that footnote number on the newer post.
    • Comments 2.0! I have a whole thing written out to wholly improve comments and support replies! I just need to finish it.
    • Set up Webmentions.
    • Move away from Github.
    • Fully self-host the site.
    • Backfill the rest of my old cohost posts.
    • Finish building the missing links in my menu page.
    • Improve accessibility.

    As per usual, if you notice any issues with the site, please feel free to email me or file an issue on github!

    Footnotes

    1. I'd like to build this helper function down the line! It seems really cool! However it's not a priority right now.

    2. I have a lot of opinions on this post actually but I'll save that for another time.

    3. I didn't steal cohost's implementation. I mean, I probably would if I could, but the site code is hard to understand.

    4. This is technically a downgrade. The regular plugin has fewer features than the Rehype plugin. It currently can't highlight inline code, at least until I get to building that, and it has worse performance than the Rehype plugin due to a difference in how Lume handles processing vs post-processing plugins. However, the regular plugin could, down the line, get turned into something anyone could use in their site.

    1. #meta
    2. #evie on-line meta
    3. #changelog

    View Comments
  • Evie Finch @ewie

    Okay! Posts are finally fixed

    turns out an earlier update also broke some urls. i try really hard to ensure all urls follow a consistent pattern and are permanent, so whoops. sorry. if you had noticed that comments weren't working, this was the cause. they should be fixed, and links for my last one or two posts might be broken as they get updated to the correct permalink. i wrote a shitty script to do some blog post url "regression testing" so hopefully this should never happen again in the future. thanks for putting up with these issues as i make behind the scenes improvements!

    1. #meta

    View Comments
  • Evie Finch @ewie

    hey yall i fucked up the rss feeds

    i've been working on moving some improvements from other branches to the main branch (because these other branches are so massive in their feature updates that some improvements depend on me self-hosting the site, which i'd like to do at some point, but i don't want that to be the thing that keeps any of my other site improvements from shipping).

    apparently i broke the rss feeds, which spammed y'all's rss feeds with duplicate dead links, which i never noticed even though i follow my own feeds for exactly this reason 😭😭😭

    anyways this is fixed now and rss feeds should be normal again. as i continue moving over improvements, i'll keep a closer eye on rss. thanks so much for AminurAlan for reporting the issue. i was able to fix this before i even started coffee.

    also, and really feeling this because i guess enough people follow the site that some of them will even report issues, thanks again to everyone who follows the site. i really appreciate all of you. if there's any other issues yall notice, please report them on the github or email me at [email protected].

    1. #meta

    View Comments
  • Evie Finch @ewie

    A brief overview of three of my site's dependencies

    They say “great artists steal”, and I wanted to showcase how I’ve solved some problems I’ve run into on my site by showing some niche dependencies I’ve picked up. Note that these are mostly files that have originated from other sources that I’ve copied in by hand as opposed to imported.

    HAST util from Lezer

    I will go more into depth on this on a future article on how syntax highlighting on my blog works, but to summarize: I use a tool called Lezer to handle syntax highlighting. This library is part of the pipeline my blog uses for adding that syntax highlighting. This was written by Joel Gustafson and mentioned in an incredible blog post going into some of the history around syntax highlighting. I copied it into my site basically wholesale, and you can find it in my codebase here (converted to javascript from typescript for some reason). I generally prefer copying code in over importing it, because it helps me understand what the code does, and it allows me to tune the code to better fit the needs of my shitty blog.

    Theme Picker

    My fancy theme picker was taken from the blog of Jim Nielsen. I thought the concept was pretty solid, and it wasn’t the hardest to bring it over to my site basically wholesale. You can find some more details in his post Building Websites With LLMs. It really checks all the boxes and I think that’s really great. You can also find the code in my blog repo.

    rehype-truncate

    If I am evaluating a dependency and see that it’s last been updated about 5 years ago, that’s a sure sign that I need to add it in by hand to make sure I understand what it’s doing, because if I run into any issues when using it, I don’t think the developer will ever respond to fix my issue, and I’ll have to fix it myself. If I recall correctly, that happened with rehype-truncate, which powers my read more feature. Like cohost (my beloved), my site tries to truncate my posts after seeing a line break or after reaching some sort of arbitrary word limit. This library does that truncation while avoiding breaking any html tags. You can find it in my codebase here (converted to typescript for some reason???)

    1. #dev
    2. #blogging about blogging
    3. #meta

    View Comments
  • Evie Finch @ewie

    Okay! That's a wrap! Unfortunately, I didn't write as much as last time (65 reviews to 40 reviews, and I didn't write almost all of the reviews this time), but I still had a great time. My big lesson from this session of reviewing Netrunner cards? Get more contributors and/or bunch things up. There were way too many cards and I didn't have enough to say about all of them.

    More contributors would be good. I really enjoyed seeing other people's opinions on the cards, and it would be good to set things up earlier and get more stuff involved, if that sounds neat to people. The other option would be to release reviews in batches almost entirely near launch, where I focus on talking about card packages and faction utility.

    Idk this stuff is hard. Netrunner is not an easy game to talk about, although it's a great game to play! Get Elevation now! Also please follow my blog via RSS to continue seeing the stuff I put out! It's only going to get better! Or maybe i disappear off the face of the Earth for another 6 months who knows.

    1. #netrunner
    2. #meta

    View Comments