<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Notes… and stuff!</title><link>https://notes.andstuff.dev/</link><description>Recent content on Notes… and stuff!</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 25 Oct 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://notes.andstuff.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>iMac G5 Screen Upgrade</title><link>https://notes.andstuff.dev/imac-g5-screen-upgrade/</link><pubDate>Sat, 25 Oct 2025 00:00:00 +0000</pubDate><guid>https://notes.andstuff.dev/imac-g5-screen-upgrade/</guid><description>Step-by-step guide to upgrading an iMac G5 17&amp;#34; (iSight, 2006) — adding RAM, SSD, and replacing the screen with full photos and part references.</description></item><item><title>Maven Release Plugin</title><link>https://notes.andstuff.dev/maven-release/</link><pubDate>Sun, 31 Mar 2024 00:00:00 +0000</pubDate><guid>https://notes.andstuff.dev/maven-release/</guid><description>&lt;p&gt;&lt;em&gt;Original document: &lt;a href="https://github.com/nyg/kraken-api-java/blob/master/RELEASE.md"&gt;github.com/nyg/kraken-api-java/blob/master/RELEASE.md&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This document explains how a &lt;a href="https://github.com/nyg/kraken-api-java"&gt;kraken-api-java&lt;/a&gt; release is created, describes what are the tools used, and how they interact with each other.&lt;/p&gt;
&lt;p&gt;When a release is created, the visible &amp;ldquo;output&amp;rdquo; is an updated &lt;a href="https://github.com/nyg/kraken-api-java/blob/master/CHANGELOG.md"&gt;CHANGLOG.md&lt;/a&gt; file, a &lt;a href="https://github.com/nyg/kraken-api-java/releases"&gt;GitHub release&lt;/a&gt; with a changelog, and the &lt;a href="https://repo1.maven.org/maven2/dev/andstuff/kraken/kraken-api/"&gt;release artifact&lt;/a&gt; available in the Maven Central repository.&lt;/p&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;When wanting to make a release, the following must/will be performed:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Manually execute the prepare goal of the &lt;a href="https://maven.apache.org/maven-release/maven-release-plugin/index.html"&gt;maven-release-plugin&lt;/a&gt;, this will create a git tag and push it to the remote repository.&lt;/li&gt;
&lt;li&gt;Once the tag is pushed, the user-defined &lt;a href="https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions"&gt;GitHub Actions&lt;/a&gt; workflow is triggered and creates a GitHub release with a changelog generated by &lt;a href="https://git-cliff.org/docs/"&gt;git-cliff&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Manually execute the perform goal of the maven-release-plugin, this will build and &lt;a href="https://central.sonatype.org/publish/publish-portal-maven"&gt;upload&lt;/a&gt; the artifacts to Sonatype&amp;rsquo;s servers.&lt;/li&gt;
&lt;li&gt;Manually publish to Maven Central the uploaded artifacts using Sonatype&amp;rsquo;s &lt;a href="https://central.sonatype.com/publishing"&gt;website&lt;/a&gt; (this can be done automatically in step 3, see below).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In theory, all of these steps could be merged into a single GitHub Actions workflow. However, for the time being, we prefer to delegate a minimum amount of steps to GitHub. Regarding step 2, it could be run manually from one&amp;rsquo;s own machine as it consists of a single GitHub REST API call.&lt;/p&gt;</description></item><item><title>Log4j2 ThreadContext</title><link>https://notes.andstuff.dev/log4j2-threadcontext/</link><pubDate>Sat, 18 Mar 2023 00:00:00 +0000</pubDate><guid>https://notes.andstuff.dev/log4j2-threadcontext/</guid><description>&lt;p&gt;&lt;em&gt;Source repository: &lt;a href="https://github.com/nyg/example-log4j"&gt;github.com/nyg/example-log4j&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This proof-of-concept shows how to use a Log4j &lt;code&gt;Routing&lt;/code&gt; appender to route log events of a service to different files, based on who initially called the service methods, i.e. a JMX call or a Spring scheduler in our case.&lt;/p&gt;
&lt;p&gt;The service &lt;code&gt;Service&lt;/code&gt; has two methods: &lt;code&gt;doOne&lt;/code&gt; and &lt;code&gt;doTwo&lt;/code&gt;, which represent two distinct business actions in an application. Each method is called by a scheduler every 15 seconds in &lt;code&gt;SchedulerOne&lt;/code&gt; and &lt;code&gt;SchedulerTwo&lt;/code&gt;, respectively. Each method can also be executed via a JMX call through the &lt;code&gt;OperationOne&lt;/code&gt; and &lt;code&gt;OperationTwo&lt;/code&gt; managed resources (e.g. by using VisualVM).&lt;/p&gt;</description></item><item><title>Configuring sshpass</title><link>https://notes.andstuff.dev/sshpass/</link><pubDate>Sat, 25 Feb 2023 00:00:00 +0000</pubDate><guid>https://notes.andstuff.dev/sshpass/</guid><description>&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;: how to encrypt and store a password into a file with GPG, and then decrypting it to provide it to sshpass. Also, some Zsh completion configuration for sshpass. Quick demo below with some dummy users and hosts:&lt;/p&gt;
&lt;script async id="asciicast-563649" src="https://asciinema.org/a/563649.js"&gt;&lt;/script&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;sshpass&lt;/code&gt; is a command-line tool allowing a user to connect to SSH hosts without having to interactively input the user&amp;rsquo;s password. The password can be provided to sshpass in different ways:&lt;/p&gt;</description></item></channel></rss>