Fediverse relays

Fediverse relays have historically been a bit of a dodgy undertaking. In the past, when I’ve tested a relay, it was a largely unmoderated firehose of random stuff from the network. Unmoderated fedi is often particularly unpleasant; so much so that I could never really stomach it for more than a few days.

But I recently discovered relay.fedi.buzz, which provides relay endpoints for specific hashtags or instances. This is a far different proposition than the usual relay firehose: it’s much more manageable and customizable. From my initial testing, it seems that hashtag-based relay endpoints are useful for specific, niche tags. Popular tags have a predictable amount of spam, so that they’re not particularly interesting to follow. But a relay for an infrequently used hashtag is super useful.

Additionally, relay endpoints for specific instances are a good way to get more content from the parts of the fedi that you actually like.

So overall, relay.fedi.buzz seems useful, and I’m going to work on tweaking the endpoints I follow to see if I can get a reasonably good mix from it. The code for the project is also on GitHub and AGPL licensed, which is nice.

Posted in mastodon | Leave a comment

Transformative

Recently, I posted about my commitment to read one academic article per day. It’s now been just over a month that I’ve been doing this, and I have to say, it has been transformative. I feel a whole new level of engagement with my work and my discipline.

This has also prompted me to read newer articles than I had previously. Having amassed >50 journals’ feeds in my RSS reader has helped. This means that when I open my reader there is always a bunch of new stuff to pick from. This has been important for ideation, recency, and fostering an interesting breadth of topics.

Anyhow, yesterday I wrote some Python scripts to quantify the daily articles I’ve been reading (most common journals, most frequent keywords in titles, for example), and I’ll share some results once I’ve amassed a few more months of data; the limited quantity of data so far means that it is not yet super meaningful.

Nonetheless, my takeaway from this exercise has been unambiguous: reading one academic article per day is an excellent thing to do. Highly recommend.

Posted in python, reading, rss | Leave a comment

NASA hackathon

The last hackathon I attended was quite a while ago. It was at MIT, which was fun, and I think the theme was bookish. I really enjoyed myself. My coding skills at the time were enough to contribute, but not so much that my team was really counting on me. I met some interesting people and we built a thing. I still follow some of my former team members on GitHub.

Next month, a hackathon is coming to us. The NASA International Space Apps Challenge is happening worldwide, with Kingsborough hosting one of the local events. This is a great initiative for our college, and I hope that a lot of Kingsborough students participate and have some fun.

I signed up yesterday, and I’m trying to convince some of the other librarians to join me. Hackathons are great entry points for people who are code-curious, or who may be trying to figure out how to start their code journey. My experience of the MIT event was that is was supportive, inclusive and positive. I hope the Kingsborough event lives up to that. I encourage you to sign up, explore and enjoy! It’s not about creating an incredible, prize-winning app; it’s about learning and having fun.

Posted in hackathon | Leave a comment

Neovim as a word processor

I recently posted about using Lua to configure my neovim setup. This has been altogether a big improvement. One thing that is easier is having separate .lua configuration files for each file type that I work with in vim.

At first, this seemed useful for minor quality-of-life improvements, like setting differing default tabs for Python and JavaScript files. This would mean cleaner code with less fiddling; so that was a win.

But then it became clearer that there were more powerful possibilities. I found a Reddit post[1] about Lua configuration for markdown files that would let me use neovim more like a word processor when working with .md files. So my markdown.lua file now looks like this:

vim.opt.wrap = true -- Wrap text
vim.opt.breakindent = true -- Match indent on line break
vim.opt.linebreak = true -- Line break on whole words

-- Spell check
vim.opt.spelllang = 'en_us'
vim.opt.spell = true

-- alter up and down arrows for better text navigation
vim.keymap.set("n", "<Down>", "gj")
vim.keymap.set("n", "<Up>", "gk")

-- disable GitHub copilot
vim.cmd(':Copilot disable')

And now I have a minimal word processor where I can use vim commands! I am very happy about this. The last pleasing bit about this is that I can turn off GitHub Copilot. My paranoid side worries that what I write in Microsoft365 of Google Docs will just go to train LLMs, which is not what I want. I am more confident that neovim is not going to do this.

[1] I would link to this here, but I can’t find it again :/

Posted in lua, vim | Leave a comment

Committing to reading one academic article per day

This post is a bit of a departure from the library technology stuff I usually post about, but I feel that it is very much core academic librarianship, so probably relevant to some people here.

I was listening to this interview with Eleanor Colla, where she talks (among many other things) about committing to reading one academic article per day. This struck me as a wonderful idea. Some upsides: it will keep me immersed in my discipline(s); it will keep me up to speed on the latest developments in scholarship; it will get me thinking about what makes for good academic writing; it might make me a marginally more interesting person overall. I was sold.

So last week, I started with my own one-article-per-day regimen. So far, I’ve read some anthropology, some political science, and some library studies. It’s been great! I’ve been solely following my interests, with no mercenary professional development or publication agenda of my own at the moment. I’m hoping that, over the medium term, gently steeping in academic writing like this will start to improve my skills as an academic librarian. Maybe at the end of the year I’ll publish the reading list.

Posted in reading, research | Leave a comment

Lua

I’ve liked the idea of the Lua programming language since reading about it in Coding Places: Software Practice in a South American City. After reading that book, I put some effort into learning a bit of Lua syntax, but never really followed up beyond that. It seemed potentially useful but I didn’t really have the use case to pursue it much further.

Elsewhere, I’ve also posted about my enthusiasm for vim and neovim. One of the big advantages of switching from vim to neovim is that you can write your configuration files in Lua. Indeed, I’ve noticed an increasing portion the online conversation about neovim configuration has moved to Lua, and away from its predecessor, vimscript.

Anyhow, my old, vimscript-based config was not that complicated, clocking in at 30 lines. I figured that an afternoon comfortably ensconced on a west-facing deck would be enough time to make the migration from vimscript to Lua, so today I tackled the problem. It was a good exercise: the revised Lua version is more concise than its predecessor, at 18 lines. It also resolved a few (admittedly very minor) problems I was having with the vimscript version. But it’s also much more readable than vimscript, and I’m hoping that it will be easier to work with in the future.

Posted in lua, vim | Leave a comment

Further into Quasar

In my last post on Quasar, I was just getting started with the framework, basically taking components from the docs and trying them out for myself. Now I’m getting a bit further into it: I’m getting different components wired up to interact with each other. This is, of course, what Vue excels at, so I’m confident that I’m on the right path. I’ll have to do a bit of refreshing of my Vue knowledge, but that is undoubtedly a good thing.

I’m also excited that I have a more expanded data set to use for my current Quasar project, thanks to some nice data scraping work with Selenium by my colleague at BMCC. We have additional scraping to do before the application is fully functional, but if all goes well, it is possible that it could be ready in the next week or two. I hope that a further update will be forthcoming soon!

Posted in quasar, vue | Leave a comment

Firefox on a Chromebook

Google has caused a controversy these past few days by disabling uBlock Origin in the latest version of Chrome. uBlock is the most widely regarded browser-based ad blocker. “Disabling” may be the wrong word, as uBlock seems to still be partially functional. I won’t go into the details, because there’s plenty of more knowledgeable discussion elsewhere on the web.

What’s clear is that the direction of travel is not good. In my opinion, ad blocking is core browser functionality: it makes many websites more usable, but it also makes them safer by not delivering ad-based malware. So when my Chromebook updated to Chrome version 127 this afternoon, I was contemplating that it might become totally useless for me. I was thinking I might have to wipe it and sell it.

Installing Firefox would be a good solution, but seemed unlikely, if only because the word “Chrome” is right there in the name of the computer. Nonetheless it was worth exploring for lack of other good options. A search of the Google Play Store was not encouraging: there is a mobile Firefox app there, but it is not really suitable for my laptop format.

I then turned to the Debian container on my Chromebook. On Mozilla’s recommendation, I tried installing Firefox through Flatpak, which didn’t work, probably because of my lack of understanding of Flatpak. But then I went back to basics and ran:

sudo apt install firefox-esr

and all of a sudden I have working Firefox in both ChromeOS and in the Debian container! Success. I immediately installed uBlock Origin. The Chromebook lives to see another day.

Posted in chromebook, debian | Leave a comment

On sometimes needing to explicitly copy Python dicts

I recently ran into a Python problem that stumped me for a bit. I was looping through a list of dicts and modifying the dicts slightly, then appending them to a new list. But it wasn’t behaving like I thought it would. Despite my loop being extremely simple and easy to step through mentally, my new list wasn’t always receiving the correct dict. I was befuddled.

The problem was that Python was not making a copy of the dict with each loop. I was modifying the same dict over again in each cycle. Apparently, this is because Python doesn’t inherently implicitly copy objects. I needed to explicitly copy the dict, make my changes, and append the modified copy to the new list.

The working version looked like this:

for field in json_list:
    pl = field["Possible Locations"].split(",")
    for location in pl:
        modified_field = field.copy()
        modified_field["PossibleLocations"] = location.strip()
        output.append(modified_field)

The trick here was to add field.copy() to explicitly copy the dict. Problem solved.

Posted in python | 1 Response

Linkblog

I’ve created a new linkblog on Mastodon, which is to be a feed of interesting things I’ve found on the web. There’s not much there yet, as I only started it, uh, an hour ago; so please be patient. But the point is that I come across tons of interesting stuff in my RSS reader, but I don’t want to spam my main Mastodon account with links. So linkblog is there as an option for those who are interested. You can read it wherever you get your ActivityPub.

To power the linkblog, I reused the same code that I used for the fediverse feed for this blog. It’s dead simple Python: not super polished, but effective at doing what I need with minimal fuss. This is also me doubling down on RSS, which powers the linkblog. I’ve added a ton of academic journals to my RSS reader recently, as well as topped up my collection of blog feeds. Sharing my picks of the best from those feeds is the whole point of the linkblog.

Of course you can follow this project as an RSS feed too, if that’s your preference.

Posted in mastodon, rss | Leave a comment
  • Subscribe to this blog

Skip to toolbar