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 | Comments closed

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 | Comments closed

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 | Comments closed

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 | Comments closed

Summer, again

Summer is upon us at the Kingsborough Library! The fiscal year has ended, commencement is over, and things have quieted down in the library. I had been really busy with revisions for some papers, but those are wrapping up now too. Time to think about some summer coding projects:

  • Implement Mind AR in our library AR tour game. I posted about this previously, but there is more work to do.
  • Work on projects for the Alma Extensibility Task Force. Some existing projects need updating and some newer projects are underway.
  • Learn more about Quasar. I started on this earlier, but there is much more to learn.
  • Work on updating our Primo pages. This is both really straightforward but also weirdly difficult, because Alma.

I have the feeling that other things will be added to this list. For example, we’ll see if there will be any developments with Springshare’s move to Bootstrap 5.

Posted in summer | Comments closed

#blogjune

This year, like in past years, a handful of librarians are doing #blogjune, which is a challenge to blog every day for the month of June. I think it is a wonderful initiative. Each year it is an opportunity for me to add some great new feeds to my RSS reader. It helps reestablish a blogging community of a sort, which although much smaller than it used to be, still exists. It highlights the role of blogs in our profession, where I feel they still have a contribution to make.

Given my posts here, you can see that I’m not participating this year, other than as an interested reader. I just don’t have the speed of ideation to come up with a post every day. If I did, this blog would be far more active than it is. But I 100% support the #blogjune posters. I think this a good thing for our profession and for the web in general. At the very least, it’s an opportunity for all of us to learn a bit more about each other.

Posted in blog | Comments closed

Thou

Me from earlier today on Mastodon:

There’s a certain type of compartmentalization to social media that I don’t like. For example: this account is only about static site generators, or this account is only pics of donkeys, or whatever. Do not like! I want to follow the person who is interested in static site generators AND donkeys. It’s guaranteed that they are much more interesting.

Behind this post is a vaguely remembered idea from Martin Buber[1] that speaking to others as thou is a fundamentally different experience than addressing them as it. When we experience others as a thing, as an it, we fail to engage with them as a person. On the other hand, for Buber, the thou is a transcendent experience. I’ll withhold my opinion on transcendence, but he certainly makes a point that applies to modern social media: when we treat people as objects, as accounts, as interests, as posts, we are not actually communicating with them. The it relationship may be quantifiable, commoditizable, and exploitable, but the thou relationship is not.

[1] Buber, Martin, and Walter Kaufmann. I and Thou. Charles Scribner’s Sons, 1970.

Posted in martin buber, social media | Comments closed

JavaScript for teaching and learning

It turns out that JavaScript has proven more useful for my job than Python. I certainly use it more. I assume this is an inevitable result of being a Web Librarian. JavaScript has seeped into my professional life.

Part of me wishes this was different. If I were at a research institution, I might find more opportunities to exercise my Python skills. But I work at a community college, where most faculty are focused on teaching, publishing about teaching, and promoting student success. And what we need is web stuff. Librarianship — and teaching more generally — needs technologies built, brought online, wired together and supported. The opportunities to use JavaScript in this context are endless.

It is nice to see JavaScript projects take flight and exist on the web. JavaScript is as vast as the web, and there’s so much to explore.

Posted in javascript, language, python | Comments closed

Quasar

Recently, I wanted to build a nice table for the web, with things like toggles, column sorting, pagination and so on. I know better than to try coding this from scratch, and that instead I should use a component library to make things easier.

My initial instinct was to turn to Bootstrap, which is a CSS framework of long standing, and which has good support for tables. I’m pretty familiar with Bootstrap, and I was pretty sure I could combine it with Vue to do what I need. Of course, others have already thought of this, and produced a library called Bootstrap Vue.

But as usual, I am several steps behind on the latest JavaScript. Bootstrap Vue has already been abandoned because it does not support Bootstrap 5, which is the latest (and only active) version of Bootstrap. I went searching for alternatives. Reddit commenters were very keen on Quasar, which has a component library built specifically for Vue. The idea of bringing together pre-built components and a JS framework makes a lot of sense to me, and I was keen to give it a try.

I got rather fixated on this last night, and stayed up until 5am wiring up an example for my co-workers. It turned out pretty well! I can share a link later, once it’s a bit more polished. While there’s certainly a lot more to learn about Quasar, so far it has been able to do exactly what I need.

Posted in bootstrap, quasar, vue | Comments closed

Code formatters

Use a code formatter!

That’s it. That’s the whole post. If you’re writing code, you should probably assure that it’s formatted to some kind of standard. That’s what formatters do. They will style your code according to best practices so that you don’t have to worry about it.

While there are various opinions on what is best, I recommend black for Python and prettier for JavaScript, although of course there are other possibilities. Whatever language you are using will almost certainly have some options.

That is all. Thank you for your attention :)

Posted in software | Comments closed
  • Subscribe to this blog via email

Skip to toolbar