Skip to content

Elementary

New tools for Clojure but I am finding it hard to think what kind of customisation I need for these tools. From one brief experiment, Clojure CLI REPL may be interesting to support Practicalli Learn Clojure book as it has a built-in but it will need to be more out of the box (or use a less confusing approach to configuration paths). For now I will stick to Rebel Readline.

I updated my mastodon social account last week, so used grug-far Neovim plugin for a project level search and replace, to update the footer of all my blog posts. I (re)discovered the -F option for ripgrep to use the search pattern as a literal string, so I could include special characters in the search without interpreting them as regex syntax.

Friday was spent making my house even bigger. After a month I managed to sell my standing Freezer and for the price I posted. I spent Friday making room to get the Freezer out of the house.

As part of the house org, I moved my office back to the smallest room. Its much warmer in that room, especially with my computers and monitors. There is a corner desk in the office already (I didnt get around to selling it). I may sell the powered standing desk instead (its okay, but its quite basic, no neat features for hiding cables, etc.).

Having a specific room for the office makes it feel more like a place to get work done.

Started watching Elementry TV Show again. I really enjoy this modern take on the Sherlock Homes and Watson characters. The Moriarty character also feels more relatable and real.

Whilst organising the house I've also been watching Star Trek: Enterprise

'AI'

I am working on my 'AI' position document.

For the last few years I expected a lot of turbulence and hype (although there was a torrent of hype compared to my expectations). The level of hype was like combining Cloud, Micro-services, Kubernettes and every other technology hype since the web all at one go.

Its time to define my expected use of 'AI' for the coming year now the hype is becoming more of the background noise (and mainly diluted because even your toaster needs AI now).

Q: Is 'AI' useful?

A: Yes, with a long list of caveates

Q: Will 'AI' kill Humanity A: No. Individual greed and sever lack of empathy will kill humanity.

Q: Do you pay for 'AI' services? A: No. Until legislation is in place to manage the shared resources needed by humans and the data centres that run 'AI' services, paying for a subscription only supports they hyper-commercialisation of 'AI' services (existing human knowledge).

Q: Are 'AI' tools integrated into your every-day work A: No. I only use freely available 'AI' services if a simple Internet search does not work. I typically use the 'Duck Duck Go Smart Assistant' if an Internet search has not given a useful website to look at. For a general software development question, ranging from a programming language to dev tool question, I may use Claude.AI. I have no concept if its the best Large Language Model (LLM), but it does have an easy to use web interface and so far has not cost any money to use (no token maxing for me 😢 ).

Q: What do you actually use 'AI' for? A: Learning how to do something that is not well documented, e.g. I cant find a guide, wikipedia article, youtube video or a stack overflow answer that solves the problem

Q: Do you trust the answer that an 'AI' supplies. A: No more than anyone else's opinion on the internet. If there is a source reference then I have a higher level of trust, especially where it is a known source of reputable information.

Commercial 'AI'

An 'AI' system can provide an acceptable level of first line support, but it can also hallucinate things too. Sometimes it is obvious an 'AI' system has replied by the tone or quality of that reply.

I had a query about a winter cycling layer from a company I am a regular customer of. I emailed them to ask if this cycling layer would be available in size XL (their sizes are for pro cyclists so are designed to be extremely snug).

I quickly received a reply which politely apologised about the lack of availability of this item. There was a verbosity to the empathy in the reply that strongly suggested it had come from an 'AI' system rather than an underpaid (and probably under valued) human support staff.

My suspicion was confirmed in the second paragraph where it suggested I subscribe to a stock update notification. The company website has no such feature.

I replied saying this feature didn't exist and the 'AI' system apologised and said they would pass my query to a member of the team (aka a human). An hour later I recieved a further email giving an estimate for restock and they would contact me via email when the desired size was available again.

Neovim

After updating to a new Mastodon account last week, I need to update all my blog posts and journal posts to use the new footer.

I wanted to update the original footer line in all my blog posts:

[:fontawesome-brands-mastodon: @practicalli_johnny](https://mastodon.social/@practicalli_johnny){target=_blank .md-button}

With the new footer line

[:fontawesome-brands-mastodon: @practicalli_johnny](https://mastodon.social/@practicalli_johnny){target=_blank .md-button}

I used Grug-far for a project search and replace, simply copying the original line into the Search field.

Grug-far uses ripgrep command (aka rg) underneath, which will use the regex syntax to search for the results.

Due to the [] and () characters being interpreted as regex commands, I got the following error in the grug-far UI.

rg: regex parse error:
    (?:[:fontawesome-brands-mastodon: @practicalli@clj.social]\(https://clj.social/@practicalli\){target=_blank .md-button})
                   ^^^
error: invalid character class range, the start must be <= the end

[...] is interpreted as a regex character class, the contents of which is an invalid way to define a character range.

{...} is interpreted as repetition in regex.

Adding the -F flag in the Grug-far UI tells it to use the text in the search as a literal string (no regex syntax).

Clojure

There are some new developments in the tools aspect of Clojure CLI. The underlying change is the tools.deps.? library which supports declarative and programatic configuration (build also has programatic config, which I havent used above the basics).

I havent used tools as installed tools, only using these tools via aliases.

The Clojure CLI Config uses the -T flag for a couple of projects, e.g. liquidz/antq and seancorfield/deps-new.

I assume the new features are to help tool developers, enabling greater customisation and programatic configuration.

I currently have no use cases for why I would need programmatic configuration for the few tools I use.

I find it jaring that there is a double dotfiles path too. This feels like it goes against config naming conventions. It also makes my gitignore 'inclusive patterns' approach fail 😞

If I think of a use then I'll carve out some time to investigate.

If the Rebel Readline project ever stops working I'll try the Clojure CLI REPL tool again.


Thank you.

🌐 Practical.li Website

Practical.li GitHub Org practicalli-johnny profile

@practicalli_johnny