Thanksgiving challenge, bots edition

It is getting to be time for my annual post about the Thanksgiving Challenge. Previous editions of this post can be found here, here, and here. Basically, the challenge is to spend the entire Thanksgiving long weekend coding by yourself. I’ve already covered the questionable productivity benefits (and very real mental health downsides) of doing this. But by now it’s tradition, so we’ll just plow ahead as though there weren’t any other options.

For me, this year’s challenge is going to be about bots. The venerable Mastodon instance botsin.space is shutting down, and (some of) the fediverse is in mourning. New homes need to be found for countless bots, or they will soon disappear. I have five bots on botsin.space, and I’d like to re-home three of them. The other two are, imo, not worth saving, and I’ll let them die a quiet, noble death.

Anyhow, I’ll move the good ones to the instance that I run, mastodon.ocert.at. This will provide a reliable home for the bots, although maybe with some reduced visibility, since my instance is lightly federated. Mastodon has decent account migration functionality, so hopefully that will mean that some of the people who enjoy these bots can continue to do so. From a code perspective, I can still do the compute on PythonAnywhere, and I expect that the only part of that setup that I will have to redo is the authentication.

Anyhow, have a good Thanksgiving and happy botting!

Posted in bots, holidays, mastodon, pythonanywhere | Leave a comment

Cmus

I’ve been using cmus to listen to music lately. It is rather glorious software. To see what I mean take a look at this screenshot:

It runs in the terminal and has weird key bindings. To get it running I had to build it from source. It lets me play music off my hard drive, not the network. All of these things speak to my interests, or perhaps more accurately, my aesthetic. Anyhow, the code is on GitHub, if you like.

Posted in linux | Leave a comment

SpringyCamp

This week, Carrie Jedlicka and I presented at SpringyCamp, the annual Springshare conference. Our talk was called Creating a Fun Library Tour with Augmented Reality and LibGuides! If you have a Springshare login, you can watch the video here.

It was fun, although I was nervous because there were ~300 people there! Carrie handled it like a pro. We’re glad we had the chance to participate.

Posted in conference, libguides | Leave a comment

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
  • Subscribe to this blog

Skip to toolbar