Find lost things in Obsidian with the CustomJS plugin

Obsidian is a lovely note-taking tool that I use for all the things. It is flexible and plastic in a really lovely way.

But over time (or due to overuse of bulk updates in VSCode), you can end up with images that aren’t referenced anywhere, or links to images that don’t exist (or are not where the note expects them to be).

My first attempt at making a list of lost things used dataview, but I had a few problems with it: it was generally slow to render (not surprising, it was doing a lot), and due to that slowness, the note would flicker when I opened it on my tablet.

In this attempt, I’m using an invokable scripts from the CustomJS plugin to update/replace the conent of a note.

The general idea: I run the script (command), it updates/replaces the contents of a note. I can review that note and decide if unreferenced files should be deleted, or if links need to be fixed, etc. I can run the script again to verify that I’ve fixed the problem, or I can forget about it until the next time I feel like I should tidy things up.

The gist is shown below the fold (see more).

[more]

QCon London 2023: You can go your own way

Technically, the talk title was a lot longer, “You Can Go Your Own Way: Navigating Your Own Career Path”

I have never done a soft-skills, career development talk before. It was a unique experience. Being vulnerable and somewhat uncomfortable, sharing your story, dealing with imposter syndrome (why would anyone want to hear this?)… It was all of those things. Connecting with people and sharing experiences was totally worth it.

Quarkus and Camel in bites: REST endpoints

Learning things a teensy bit at a time. While my ultimate goal is to do pretty much anything other than REST, I still have this nice shiny svelte front-end that needs to pull some things from the co-resident Quarkus app. I could, of course, provide that information in “the usual way”, but I’m exploring Camel here, which means I should try doing it that way, instead.

Using Quarkus and Camel together is a bit of a brain-bender, as you’re overlapping two environments that are totally independent and overlapping, but it does work, and I can see some glimmers of why, but if you’ve grown up thinking about things as RestTemplates or JAX-RS resources, it’s… very different.

[more]

Iterative development with Quarkus and Svelte, care of Quinoa

Another conference is coming up, and I’m writing another ridiculous frankenstein app for it.

For this revision, I am going to add a local-only Web UI for a few reasons:

  • This app is still mostly command-line driven, but some configuration options are awkward to set as arguments, and manually editing a config file is … meh.
  • I haven’t done any serious front-end UI work in a really long time. The UI for Game On! Text adventure is overdue for an overhaul, it’s an Angular 1 app. I know, I know. Don’t judge me.

Between one thing and another, I’ve been doing more TypeScript alongside my Java and because of some collaboration on plugins for Obsidian.md, I’ve been bumping up against Svelte. I’m going to use this little project to actually figure out how Svelte works.

This project will then have:

  • Quarkus as the main CLI driver that will sometimes wait around for awhile while you fuss around with a Web UI.
  • Svelte to create a UI that feels nice to use.
  • Maven for building Java things
  • Node + Vite for TypeScript tooling

On the surface, the above sounds like a big mess, right? I’m installing double the tools, having to do this build in two steps, and then do the fancy dance to get the Node stuff in the right place in the Java stuff, and deal with making native images happy, and… gross 🤢.

Thankfully, Andy Damevin has already come to provide the rescue I didn’t know I would need. He created the Quinoa extension, and I am a fan! 🎉

The Quinoa extension manages building and packaging the embedded Web UI with its preferred tools. So the outer Maven build can carry on doing its thing, and the Quinoa extension will invoke the appropriate node scripts to build and package the Web UI, and tuck them in the right place for serving with an uber jar or native binary. Not only that, but it integrates Quarkus dev mode with the web framework’s live coding support, which means you just keep coding and the entire web app evolves as you go. Holy cow, it’s awesome.

[more]

Signing git commits

Color me inspired by Kelsey Hightower’s talk at the Craft Conference this year, I’ve decided to do that basic thing and start signing my commits. There were some helpful articles out in the etherverse for how to do that, but they didn’t work for me, so I’m sharing what did.

I wanted to use my SSH key to sign my commits. I only commit code from a few places, and I already use SSH for github access, so this seemed the least invasive approach to attempt. That said, I use specific keys for github, and generally don’t use the ssh-agent, which means a few things functioned a little differently than most of the walkthroughs showed.

[more]

DevNexus 2022: Take a walk on the cient side

A new talk! I have two recorded versions, but few charts, as this one was mostly code.

My daughter figured out how to text me in the middle of it. The notifications appeared on my ipad, so I could see them while the audience couldn’t, but I’d like to know if you would have been able to keep a straight face as the notifications arrived: “mom”… “mom”…“mom”…

The subject of the talk is a little command line application called “Pockets”, and it lives here: https://github.com/ebullient/pockets-cli