Code Yarns Tech Blog https://codeyarns.com/tech/ Online journal of posts about computers and fixes to common issues. http://www.rssboard.org/rss-specification python-feedgen Tue, 17 Mar 2026 04:25:43 +0000 Kensington SlimBlade Pro EQ Trackball https://codeyarns.com/tech/2026-03-16-kensington-slimblade-pro-eq-trackball.html <p>I have been using trackballs instead of mice for almost 18 years now. Last year, I upgraded to a <a href="proxy.php?url=https://www.kensington.com/p/products/electronic-control-solutions/trackball-products/slimblade-pro-eq-trackball/"><strong>Kensington SlimBlade Pro EQ Trackball</strong></a> from my trusty <a href="proxy.php?url=2020-04-19-kensington-expert-mouse-wireless-trackball.html">**Kensington Expert Mouse Wireless Trackball</a>.</p> <ul> <li> <p>SKU: K72084NA</p> </li> <li> <p><strong>Size</strong>: This trackball is smaller, slimmer and lighter than my previous trackball.</p> </li> <li> <p><strong>Wireless</strong>: Just like my previous trackball, this one supports using Bluetooth and also using a wireless 2.4GHz Nano receiver. It does not support connecting to multiple computers over Bluetooth though. So, between the Bluetooth and wifi, it can only connect to 2 computers.</p> </li> <li> <p><strong>Charging</strong>: Use a USB cable to charge the trackball.</p> </li> <li> <p><strong>Wired</strong>: It can also be used as a wired trackball when connected by USB.</p> </li> </ul> https://codeyarns.com/tech/2026-03-16-kensington-slimblade-pro-eq-trackball.html Mon, 16 Mar 2026 16:35:39 +0000 Macbook Neo https://codeyarns.com/tech/2026-03-12-macbook-neo.html <p><a href="proxy.php?url=https://en.wikipedia.org/wiki/MacBook_Neo"><strong>Macbook Neo</strong></a> is an entry-level laptop from Apple that was launched in 2026. I was impressed by the features and performance available for the $600 price and obtained it on launch day.</p> <h1><a href="proxy.php?url=https://www.apple.com/macbook-neo/specs/">Specifications</a></h1> <ul> <li>Chip: A18 Pro</li> <li>Memory: 8 GB</li> <li>Storage: 256 GB</li> <li>Display: 2408x1506</li> <li>Battery: 36.5 watt hour</li> <li>Weight: 1.23 kg</li> </ul> <h1>Missing features</h1> <p>Features I miss on the Neo:</p> <ul> <li> <p><strong>Touch ID</strong>: The $600 version of Neo does not have Touch ID, you need to get the $700 version for that. Without Touch ID, I need to type in my entire password everytime I unlock this computer. This is a huge hassle if you want to use your Apple.com login or have a complex local login.</p> </li> <li> <p><strong>Camera status light</strong>: There is no light to indicate that the camera is ON. This is a privacy miss, since I have come to rely on that light to know that I am on camera when I am multi-tasking in some non-video-call window. However, Daring Fireball <a href="proxy.php?url=https://daringfireball.net/linked/2026/03/12/macbook-neo-on-screen-camera-indicator">pointed out</a> that there is actually a 🟢 <em>green dot</em> indicator that appears in the Menu Bar at the top-right corner (beside the time) only when the camera is on. I think this is a decent compromise, though I think Apple should give us a MacOS option to always display this at the corner (can be grayed out when camera is not in use).</p> </li> </ul> <h1>References</h1> <ul> <li><a href="proxy.php?url=https://support.apple.com/guide/macbook-neo/">Macbook Neo: Getting Started Guide</a></li> </ul> https://codeyarns.com/tech/2026-03-12-macbook-neo.html Thu, 12 Mar 2026 05:43:10 +0000 Tech links of March 2026 https://codeyarns.com/tech/2026-03-10-tech-links-of-march-2026.html <h1><a href="proxy.php?url=https://daringfireball.net/2026/03/the_iphone_17e">The iPhone 17e</a></h1> <blockquote> <p>The $599 iPhone 17e, with the A19, benchmarks faster in single-core CPU performance than the $599 MacBook Neo, with the year-old A18 Pro.</p> </blockquote> <p>This post also has a useful pricing comparison table for the iPhones on sale right now.</p> <h1><a href="proxy.php?url=https://daringfireball.net/2026/03/599_not_a_piece_of_junk_macbook_neo">Thoughts and Observations on the MacBook Neo</a></h1> <blockquote> <p>The MacBook Neo is not a footnote or hobby, or a pricing stunt to get people in the door before upselling them to a MacBook Air. It’s the first major new Mac aimed at the consumer market in the Apple Silicon era.</p> </blockquote> <h1><a href="proxy.php?url=https://daringfireball.net/2026/03/the_macbook_neo">The MacBook Neo</a></h1> <blockquote> <p>The Neo is a mass-market device that was conceived of, designed, and engineered to expand the Mac user base to a larger audience. It’s a design statement too, but of a different sort — emphasizing practicality above all else. It’s just a goddamn lovely tool, and fun too.</p> </blockquote> <h1><a href="proxy.php?url=https://simonwillison.net/guides/agentic-engineering-patterns/code-is-cheap/">Writing code is cheap now</a></h1> <blockquote> <p>Delivering new code has dropped in price to almost free... but delivering good code remains significantly more expensive than that.</p> </blockquote> <p>This post has a good definition of "good code".</p> <h1><a href="proxy.php?url=https://simonwillison.net/guides/agentic-engineering-patterns/red-green-tdd/">Red/green TDD</a></h1> <blockquote> <p>Every good model understands "red/green TDD" as a shorthand for the much longer "use test driven development, write the tests first, confirm that the tests fail before you implement the change that gets them to pass".</p> </blockquote> <h1><a href="proxy.php?url=https://www.modular.com/blog/the-claude-c-compiler-what-it-reveals-about-the-future-of-software">The Claude C Compiler: What It Reveals About the Future of Software</a></h1> <blockquote> <p>The most interesting lesson from the Claude C Compiler is not that AI can build a compiler. It’s how it built one. CCC didn’t invent a new architecture or explore an unfamiliar design space. Instead, it reproduced something strikingly close to the accumulated consensus of decades of compiler engineering: structurally correct, familiar, and grounded in well-understood techniques.</p> <p>CCC shows that AI systems can internalize the textbook knowledge of a field and apply it coherently at scale. AI can now reliably operate within established engineering practice. This is a genuine milestone that removes much of the drudgery of repetition and allows engineers to start closer to the state of the art.</p> </blockquote> <h1><a href="proxy.php?url=https://www.nytimes.com/2026/02/18/opinion/ai-software.html">The A.I. Disruption We’ve Been Waiting for Has Arrived</a></h1> <blockquote> <p>November was, for me and many others in tech, a great surprise. Before, A.I. coding tools were often useful, but halting and clumsy. Now, the bot can run for a full hour and make whole, designed websites and apps that may be flawed, but credible. I spent an entire session of therapy talking about it.</p> </blockquote> <h1><a href="proxy.php?url=https://samhenri.gold/blog/20260312-this-is-not-the-computer-for-you/">“This Is Not The Computer For You”</a></h1> <blockquote> <p>This computer is for the kid who doesn’t have a margin to optimize. Who can’t wait for the right tool to materialize. Who is going to take what’s available and push it until it breaks and learn something permanent from the breaking.</p> <p>The reviews can tell you what a computer is for. They have very little interest in what you might become because of one.</p> </blockquote> <h1><a href="proxy.php?url=https://www.terrygodier.com/the-last-quiet-thing">The Last Quiet Thing</a></h1> <p>Fantastic essay that compares the simple <a href="proxy.php?url=2022-02-01-casio-f91w.html">Casio F-91W</a> with all the digital gadgets of today that need our constant attention.</p> <blockquote> <p>Nothing you own is finished. Everything exists in a state of permanent incompletion, permanently needing. Your phone needs updates, needs charging, needs storage cleared, needs passwords rotated. Your apps need permissions reviewed, terms accepted, preferences re-configured after every update. Your subscriptions need evaluating, need renewing, need canceling, need justifying to yourself every month when the charge appears. The purchase isn't the end of anything. It's the first day of a relationship you didn't agree to, with no clean way out.</p> </blockquote> https://codeyarns.com/tech/2026-03-10-tech-links-of-march-2026.html Tue, 10 Mar 2026 05:25:37 +0000 iTerm2 https://codeyarns.com/tech/2026-02-28-iterm2.html <p><a href="proxy.php?url=https://en.wikipedia.org/wiki/ITerm2"><strong>iTerm2</strong></a> is an open-source alternative to the <a href="proxy.php?url=2025-04-29-macos-terminal.html"><strong>Terminal</strong></a> app that ships with MacOS.</p> <ul> <li><strong>Split windows</strong>: Press <code>command d</code> to split the window horizontally into 2 panes. So, a new session is created in the new pane that is created.</li> </ul> <p><strong>Tried with:</strong> iTerm2 and MacOS Tahoe 26.3</p> https://codeyarns.com/tech/2026-02-28-iterm2.html Sat, 28 Feb 2026 00:23:02 +0000 Batteries https://codeyarns.com/tech/2026-02-27-batteries.html <h1><a href="proxy.php?url=https://en.wikipedia.org/wiki/Nine-volt_battery">9V Battery</a></h1> <ul> <li><strong>Smoke alarms</strong>: These alarms can be in places that are difficult to reach, so it is best to choose a battery that lasts the longest. The recommendation is to pick a <em>Lithium</em> non-rechargeable battery with 10-year shelf life and the maxmimum capacity (on 2026-02-27 this was <em>1200 mAh</em>). Avoid rechargeable or alkaline batteries. I ended up choosing <a href="proxy.php?url=https://www.amazon.com/dp/B0887W4985">Tenergy</a> batteries for this purpose.</li> </ul> https://codeyarns.com/tech/2026-02-27-batteries.html Fri, 27 Feb 2026 18:32:47 +0000 PageFind https://codeyarns.com/tech/2026-02-23-pagefind.html <p><a href="proxy.php?url=https://pagefind.app/"><strong>PageFind</strong></a> can be used to add search capability to any static website.</p> <ul> <li><strong>Install</strong>:</li> </ul> <pre class="codehilite"><code>$ python3 -m pip install 'pagefind[extended]' </code></pre> <ul> <li><strong>Index</strong>:</li> </ul> <p>To index the HTML webpages located in a local directory:</p> <pre class="codehilite"><code>$ python3 -m pagefind --site ../my_website_files </code></pre> <p>This adds the index files and also the required JS files in <code>../my_website_files/pagefind</code> directory.</p> <ul> <li><strong>Add search box</strong>:</li> </ul> <p>Add this HTML code to all the website HTML files to get the search box:</p> <pre class="codehilite"><code>&lt;link href=&quot;/pagefind/pagefind-ui.css&quot; rel=&quot;stylesheet&quot;&gt; &lt;script src=&quot;/pagefind/pagefind-ui.js&quot;&gt;&lt;/script&gt; &lt;div id=&quot;search&quot;&gt;&lt;/div&gt; &lt;script&gt; window.addEventListener('DOMContentLoaded', (event) =&gt; { new PagefindUI({ element: &quot;#search&quot;, showSubResults: true }); }); &lt;/script&gt; </code></pre> <p>Upload the new HMTL files and also all the contents of the <code>../my_website_files/pagefind</code> directory online to have your website with search.</p> <p><strong>Tried with:</strong> PageFind 1.4.0</p> https://codeyarns.com/tech/2026-02-23-pagefind.html Mon, 23 Feb 2026 01:46:18 +0000 Wallbox Pulsar Plus https://codeyarns.com/tech/2026-02-15-wallbox-pulsar-plus.html <p><a href="proxy.php?url=https://wallbox.com/"><strong>Wallbox</strong></a> makes home EV chargers and their <a href="proxy.php?url=https://wallbox.com/en_us/pulsar-plus-ev-charger"><strong>Pulsar Plus</strong></a> compact EV charger is what we found in our home when we moved in.</p> <h1>Specifications</h1> <ul> <li>Model: PUP1</li> <li>Output: 25 ft</li> <li>EVC: Type 1</li> <li>Power: 9.6 kW</li> <li>Version: NEMA 14-50P</li> <li>Color: Black</li> <li>Enclosure type: 4</li> <li>Input/Output: 208/240 VAC, 60 Hz, 40 A</li> </ul> <h1>Usage</h1> <ul> <li> <p><strong>App</strong>: The <a href="proxy.php?url=https://wallbox.com/en_us/wallbox-app">Wallbox app</a> is required to view, configure, monitor and control the Pulsar Plus.</p> </li> <li> <p><strong>Changing ownership</strong>: We could not use the Wallbox app since the Pular Plus charger was already linked to the email address of our previous owner. To change ownership, we had to contact <a href="proxy.php?url=mailto:[email protected]">[email protected]</a> with proof of home ownership and the serial number of our unit. In 24 hours, they promptly unlinked the previous owner and associated this unit with our email address.</p> </li> </ul> https://codeyarns.com/tech/2026-02-15-wallbox-pulsar-plus.html Sun, 15 Feb 2026 20:25:00 +0000 Instapaper https://codeyarns.com/tech/2026-02-11-instapaper.html <p><a href="proxy.php?url=https://www.instapaper.com/"><strong>Instapaper</strong></a> is an online service to save articles from the web to read later. It is similar to the now-discontinued <a href="proxy.php?url=https://en.wikipedia.org/wiki/Pocket_(service)"><strong>Pocket</strong></a>.</p> <ul> <li> <p><strong>Saving a webpage</strong>: Webpages can be saved manually by adding their link in the Instapaper webpage. A more convenient option is to install their <a href="proxy.php?url=https://addons.mozilla.org/en-US/firefox/addon/instapaper-official/">Firefox extension</a> and click its toolbar button on any webpage. An older method is its <a href="proxy.php?url=https://www.instapaper.com/save">bookmarklet</a>, which works, but is deprecated.</p> </li> <li> <p><strong>Archive</strong>: There is no <em>read</em> operation, instead we can <em>archive</em> an article after reading it.</p> </li> <li> <p><strong>Tags</strong>: Any saved article can be associated to any number of tags. The tag can be assigned (or created new) when adding an article using the Firefox extension. The tag remains associated with the article even when the article is archived. The Instapaper interface always shows <em>all</em> the articles associated with a tag, whether it is archived or not.</p> </li> <li> <p><strong>Folders</strong>: This is an older feature, that is now deprecated and will be removed soon. Adding an article to a folder cannot be done when saving it using the extension. That needs to be done later in the webpage.</p> </li> </ul> https://codeyarns.com/tech/2026-02-11-instapaper.html Wed, 11 Feb 2026 02:57:19 +0000 Homebrew https://codeyarns.com/tech/2026-02-05-homebrew.html <p><a href="proxy.php?url=https://en.wikipedia.org/wiki/Homebrew_(package_manager)"><strong>Homebrew</strong></a> is a package manager for MacOS to install, remove or update applications/libraries from the shell.</p> <ul> <li><strong>Install</strong>:</li> </ul> <p>Download and install the latest <code>.pkg</code> installer from the <a href="proxy.php?url=https://github.com/Homebrew/brew/releases/">Github releases page</a>.</p> <ul> <li><strong>Install a package</strong>:</li> </ul> <p>A package is called <em>bottle</em> and installing it is called <em>pouring</em>.</p> <pre class="codehilite"><code>$ brew install foobar_app </code></pre> <p>The binaries installed by Homebrew can be seen at <code>/opt/Homebrew/opt</code>.</p> <ul> <li><strong>Add a package repository</strong>:</li> </ul> <p>Online package repository is called a <em>tap</em>.</p> <pre class="codehilite"><code>$ brew tap foobar_repo </code></pre> <ul> <li><strong>Update package info</strong>:</li> </ul> <p>To update package information about Homebrew itself and the installed packages:</p> <pre class="codehilite"><code>$ brew update </code></pre> <ul> <li><strong>Upgrade packages</strong>:</li> </ul> <p>To actually upgrade all the installed Homebrew and packages:</p> <pre class="codehilite"><code>$ brew upgrade </code></pre> <p>To upgrade a specific package:</p> <pre class="codehilite"><code>$ brew upgrade foobar_pkg </code></pre> <ul> <li><strong>Search</strong>:</li> </ul> <p>To search for a package name in the repositories:</p> <pre class="codehilite"><code>$ brew search foobar_pkg </code></pre> <ul> <li><strong>Clean</strong>:</li> </ul> <p>To clean older packages and information:</p> <pre class="codehilite"><code>$ brew cleanup </code></pre> <p><strong>Tried with:</strong> Homebrew 5.0.13 and MacOS Tahoe 26.2</p> https://codeyarns.com/tech/2026-02-05-homebrew.html Thu, 05 Feb 2026 05:37:23 +0000 Reminders https://codeyarns.com/tech/2026-02-05-reminders.html <p><a href="proxy.php?url=https://en.wikipedia.org/wiki/Reminders_(Apple)"><strong>Reminders</strong></a> is a todo app, or a task management app that works across MacOS and iOS, with syncing through iCloud. Apple calls these todo items or tasks as <em>reminders</em>, so I will use this term in this post.</p> <ul> <li><strong>Install</strong>:</li> </ul> <p>The app was pre-installed on my MacOS. For iOS devices, it can be installed from the App Store <a href="proxy.php?url=https://apps.apple.com/us/app/reminders/id1108187841">here</a>.</p> <ul> <li><strong>Online</strong>:</li> </ul> <p>It can also be used through iCloud online <a href="proxy.php?url=https://www.icloud.com/reminders/">here</a>.</p> <ul> <li><strong>Reminders</strong>:</li> </ul> <p>Click on any list and you can add reminders inside it. Optionally, a reminder can also be assigned reminder date/time, repeat cadence, and tags. Clicking the checkbox circle marks the reminder as <em>completed</em>.</p> <ul> <li><strong>Lists</strong>:</li> </ul> <p>The kinds of lists that can be created are: standard, smart list and groceries. In addition to its name, a list can be given a color and an icon.</p> <p>A list shows the un-completed reminders by default. Click on <em>Show</em> to see both completed and un-completed reminders. Click on <em>Clear</em> to remove the completed reminders.</p> <ul> <li><strong>Sections</strong>:</li> </ul> <p>Sections can be added in a list to organize the reminders inside a list. Moving a reminder between sections is a bit tricky - <em>grab</em> the reminder in a non-text portion on the right and drag it. If you click in its text section, it gets into edit mode, which is irritating.</p> <h1>References</h1> <ul> <li><a href="proxy.php?url=https://support.apple.com/guide/reminders/welcome/mac">Reminders User Guide</a></li> </ul> https://codeyarns.com/tech/2026-02-05-reminders.html Thu, 05 Feb 2026 04:51:48 +0000 Browserino https://codeyarns.com/tech/2026-02-05-browserino.html <p><a href="proxy.php?url=https://github.com/AlexStrNik/Browserino"><strong>Browserino</strong></a> is a browser selector for MacOS, a tool that lets me pick the browser I want to open every URL that I click in any non-browser application. I find this useful since my default browser choice is Chrome, but there are certain links that I want to open with Firefox or Safari. It is similar to <a href="proxy.php?url=2023-03-20-hurl.html"><strong>Hurl</strong></a>, which I use on Windows.</p> <ul> <li><strong>Install</strong>:</li> </ul> <p>The easiest way to install is using Brew:</p> <pre class="codehilite"><code>$ brew tap AlexStrNik/Browserino $ brew install browserino --no-quarantine </code></pre> <ul> <li><strong>Settings</strong>:</li> </ul> <p>Open the app to see its Settings. First thing to do is to click the <em>Make default</em> button to make Browserino the default browser. This means that clicking on any ULR in any non-browser application will go through Browserino now.</p> <p><strong>Tried with</strong>: Browserino 1.1.16 and MacOS Tahoe 26.2</p> https://codeyarns.com/tech/2026-02-05-browserino.html Thu, 05 Feb 2026 04:40:02 +0000 Tech links of February 2026 https://codeyarns.com/tech/2026-02-01-tech-links-of-february-2026.html <h1><a href="proxy.php?url=https://world.hey.com/jason/the-obvious-the-easy-and-the-possible-2e11a3fb">The Obvious, the Easy, and the Possible</a> (Jason Fried)</h1> <p>Much of the tension in product development and interface design comes from trying to balance the obvious, the easy, and the possible. The thing(s) people do all the time, the always stuff, should be obvious. The things that should be easy are the things that people do frequently, but not always. [Possible] these are things people do sometimes.</p> <h1><a href="proxy.php?url=https://blog.jim-nielsen.com/2025/icons-in-menus/">Icons in Menus Everywhere — Send Help</a></h1> <p>MacOS Tahoe has broken Apple's own guidelines by adding an icon for <em>every</em> menu item. This is just visual clutter and increased my cognitive load when looking at menu items.</p> <h1><a href="proxy.php?url=https://www.smbc-comics.com/comic/version">SMBC: Version</a></h1> <p>Funny strip on the naming and versioning of DL models.</p> https://codeyarns.com/tech/2026-02-01-tech-links-of-february-2026.html Sun, 01 Feb 2026 18:52:47 +0000 Ollama https://codeyarns.com/tech/2026-01-30-ollama.html <p><a href="proxy.php?url=https://ollama.com/"><strong>Ollama</strong></a> is an inference program to download and run LLM models on your local computer.</p> <h1>Download and run</h1> <ul> <li>Download and install:</li> </ul> <pre class="codehilite"><code>$ curl -fsSL https://ollama.com/install.sh | sh </code></pre> <ul> <li>Pull a model and run it:</li> </ul> <pre class="codehilite"><code>$ ./ollama pull smollm:135m $ ./ollama run smollm:135m &gt;&gt;&gt; Is cat an animal? Yes &gt;&gt;&gt; /bye </code></pre> <h1>Build and run</h1> <ul> <li>Install golang if you do not have it already:</li> </ul> <pre class="codehilite"><code>$ sudo apt golang-go </code></pre> <ul> <li>Download the code:</li> </ul> <pre class="codehilite"><code>$ git clone https://github.com/ollama/ollama.git $ cd ollama </code></pre> <ul> <li>Build it:</li> </ul> <pre class="codehilite"><code>$ go generate . $ go build . </code></pre> <ul> <li>Pull a model and run it:</li> </ul> <pre class="codehilite"><code>$ ./ollama pull smollm:135m $ ./ollama run smollm:135m &gt;&gt;&gt; Is cat an animal? Yes &gt;&gt;&gt; /bye </code></pre> <p>Ready to rock!</p> https://codeyarns.com/tech/2026-01-30-ollama.html Fri, 30 Jan 2026 03:32:52 +0000 vLLM https://codeyarns.com/tech/2026-01-30-vllm.html <p><a href="proxy.php?url=https://vllm.ai/"><strong>vLLM</strong></a> is an open-source LLM framework built on PyTorch.</p> <h1>Build and run from source</h1> <ul> <li>Get the code:</li> </ul> <pre class="codehilite"><code>$ git clone https://github.com/vllm-project/vllm.git $ cd vllm </code></pre> <ul> <li>Create a Python virtual environment:</li> </ul> <pre class="codehilite"><code>$ python3 -m venv vllm_venv $ source vllm_venv/bin/activate </code></pre> <ul> <li>Install the requirements:</li> </ul> <pre class="codehilite"><code>$ python3 -m pip install -r requirements/common.txt $ python3 -m pip install -r requirements/cuda.txt </code></pre> <ul> <li>Build vLLM:</li> </ul> <pre class="codehilite"><code>$ python3 -m pip install -e . </code></pre> <ul> <li>Run the vLLM server with a small model:</li> </ul> <pre class="codehilite"><code>$ python3 -m vllm.entrypoints.openai.api_server \ --model HuggingFaceTB/SmolLM2-135M-Instruct \ --dtype float16 \ --gpu-memory-utilization 0.5 \ --max-model-len 128 \ --enforce-eager \ --disable-log-stats \ --kv-cache-dtype fp8 </code></pre> <p>The server is now running and listening on port 8000.</p> <ul> <li>In a separate shell, send a query to the vLLM server:</li> </ul> <pre class="codehilite"><code>$ vllm chat --model HuggingFaceTB/SmolLM2-135M-Instruct \ --quick &quot;How many letters are in the English alphabet?&quot; Using model: HuggingFaceTB/SmolLM2-135M-Instruct The English alphabet has 26 letters. </code></pre> https://codeyarns.com/tech/2026-01-30-vllm.html Fri, 30 Jan 2026 02:23:04 +0000 Slurm https://codeyarns.com/tech/2026-01-28-slurm.html <p><a href="proxy.php?url=https://en.wikipedia.org/wiki/Slurm_Workload_Manager"><strong>Slurm (Simple Linux Utility for Resource Management)</strong></a> is a Linux job scheduler commonly used on compute clusters and supercomputers.</p> <h1>Common options</h1> <ul> <li><code>-A</code> or <code>--account</code>: Use the specified account for the Slurm command. For example <code>--account=biology_team</code>.</li> </ul> <h1>sinfo</h1> <p>This command prints information about the nodes in the cluster.</p> <ul> <li> <p>List all nodes: <code>sinfo</code>.</p> </li> <li> <p>Print total number of nodes: <code>sinfo -o "%D"</code>.</p> </li> <li> <p>Print all possible <strong>states</strong> of nodes in the cluster: <code>sinfo -h -o "%T" | sort -u</code>.</p> </li> <li> <p>List the nodes in a specified state. For example, to list idle nodes: <code>sinfo -t idle</code>.</p> </li> </ul> <h1>sbatch</h1> <p>This is the command to submit a script to Slurm to run on the next node that becomes available. This command exits immediately printing out the Slurm job ID.</p> <p>Common options passed to this command:</p> <ul> <li> <p><code>-o</code> or <code>--output</code>: File to write standard output to. For example <code>-o out-%j.txt</code> writes to a filename with the current Slurm job ID.</p> </li> <li> <p><code>-e</code> or <code>--error</code>: File to write standard error to. For example <code>-e err-%j.txt</code> writes to a filename with the current Slurm job ID.</p> </li> <li> <p><code>-G</code> or <code>--gpus</code>: Specify the number of GPUs required. For example <code>--gpus=4</code>.</p> </li> <li> <p><code>--wrap</code>: Specify the command to wrap into a dummy script. Since Slurm looks for a script file by default, <code>--wrap</code> is a trick to use when you just want to run a command on the node. For example <code>--wrap="hostname"</code> prints the hostname in the node we get and exits.</p> </li> </ul> <h1>squeue</h1> <p>This command prints out the entire list of Slurm jobs in the queue right now.</p> <ul> <li><code>-u</code> or <code>--user</code>: List the jobs of the specified user. For example <code>--user=joe</code>.</li> </ul> <h1>scct</h1> <p>This command can be used to find information about jobs that are already completed.</p> <ul> <li><code>-j</code> or <code>--jobs</code>: Find information of the specified jobs. For example <code>-j 123456</code>.</li> </ul> <h1>sacctmgr</h1> <ul> <li>To find which accounts you have access to on a cluster:</li> </ul> <pre class="codehilite"><code>$ sacctmgr -nP show assoc where user=$(whoami) format=account </code></pre> https://codeyarns.com/tech/2026-01-28-slurm.html Wed, 28 Jan 2026 21:56:55 +0000 Google Gemini https://codeyarns.com/tech/2026-01-21-google-gemini.html <p><a href="proxy.php?url=https://gemini.google.com/app"><strong>Google Gemini</strong></a> is a popular AI assistant and the official one from Google. It has quickly become my replacement of search engines.</p> <ul> <li> <p><strong>On the web</strong>: It can be used in any browser by visiting <a href="proxy.php?url=https://gemini.google.com/app">gemini.google.com</a>.</p> </li> <li> <p><strong>iOS app</strong>: Install from the App Store <a href="proxy.php?url=https://apps.apple.com/us/app/google-gemini/id6477489729">here</a>.</p> </li> <li> <p><strong>MacOS/Linux app</strong>: There is no official app, so I create a web app instead. Open <a href="proxy.php?url=https://gemini.google.com/app">gemini.google.com</a> in Google Chrome, and choose ⋮ -&gt; Cast, Save and Share -&gt; Install Page as App. After this Google Gemini is available as a MacOS app to open and run.</p> </li> <li> <p><strong>New chat</strong>: Keyboard shortcut on Linux is <code>Ctrl Shift o</code> and on MacOS it is <code>Cmd Shift o</code>.</p> </li> </ul> https://codeyarns.com/tech/2026-01-21-google-gemini.html Wed, 21 Jan 2026 22:37:50 +0000 NetNewsWire https://codeyarns.com/tech/2026-01-12-netnewswire.html <p><a href="proxy.php?url=https://netnewswire.com/"><strong>NetNewsWire</strong></a> is a highly-acclaimed classic RSS reader for MacOS, iPhone and iPad.</p> <ul> <li> <p><strong>Install</strong>: For MacOS, download and install the ZIP file from its website. For iPhone/iPad, go to the App Store and install it.</p> </li> <li> <p><strong>Add feeds</strong>: Provide the website URL that has the feed or the RSS/ATOM feed URL. By default, the feeds are downloaded and maintained locally on your device.</p> </li> <li> <p><strong>Sync</strong>: To sync between MacOS and iPhone/iPad, we need to use iCloud or the FreshRSS self-hosted feed aggregator. I found that the sync is super-slow through iCloud. For FreshRSS, provide the credentials and API URL as specified <a href="proxy.php?url=2026-01-12-freshrss.html">here</a>. I think FreshRSS is the best option, since I can read my feeds on my iPhone, on my Macbook and also continue reading on my home Linux computer (through the self-hosted FreshRSS URL).</p> </li> </ul> https://codeyarns.com/tech/2026-01-12-netnewswire.html Mon, 12 Jan 2026 04:17:19 +0000 FreshRSS https://codeyarns.com/tech/2026-01-12-freshrss.html <p><a href="proxy.php?url=https://www.freshrss.org/"><strong>FreshRSS</strong></a> is a free RSS feed aggregator that can be used to read RSS feeds online and also exposes an API that can be used with desktop/mobile RSS apps. Its source code can be <a href="proxy.php?url=https://github.com/FreshRSS/FreshRSS">seen on Github</a>.</p> <h1>Install</h1> <p>Instead of using it from source code, I find it easier to use its pre-built Docker container. To get it running from Docker container:</p> <ul> <li>Prepare the Docker packages and user setup:</li> </ul> <pre class="codehilite"><code>$ sudo apt install -y docker.io docker-compose $ sudo usermod -aG docker $USER </code></pre> <p>Log out and log back in for group changes to take effect.</p> <ul> <li>Create a directory for it and enter it:</li> </ul> <pre class="codehilite"><code>$ mkdir ~/freshrss $ cd ~/freshrss </code></pre> <ul> <li>Create a <code>~/freshrss/docker-compose.yml</code> file and add these lines to it:</li> </ul> <pre class="codehilite"><code>version: '2.4' services: freshrss: image: freshrss/freshrss:latest container_name: freshrss hostname: freshrss restart: unless-stopped logging: options: max-size: 10m volumes: - ./data:/var/www/FreshRSS/data - ./extensions:/var/www/FreshRSS/extensions environment: TZ: America/Los_Angeles # Change to your timezone CRON_MIN: '*/20' # Checks for updates every 20 mins ports: - &quot;80:80&quot; </code></pre> <ul> <li>Launch the container:</li> </ul> <pre class="codehilite"><code>$ docker-compose up -d </code></pre> <ul> <li>Go to <code>http://&lt;public-ip&gt;</code> to access the FreshRSS online setup wizard for the first time. You will need to provide a <em>login</em> and <em>password</em>. Go with default options and let it pick <code>SQLite</code> as the database to make life easy.</li> </ul> <h1>Usage</h1> <p>In your browser, go to <code>http://&lt;public-ip&gt;</code>. You can add feeds, that appear under <em>Uncategorized</em> category unless you create and move them to new categories.</p> <h1>API access</h1> <p>To read RSS feeds from desktop and mobile apps through FreshRSS, we need to enable API access.</p> <ul> <li> <p>In the online interface go to the gear icon in the top-right corner.</p> </li> <li> <p>In <em>Authentication</em>, enable <em>Allow API access</em>.</p> </li> <li> <p>In <em>Profile</em>, go to API password and add a password. Go to <code>http://&lt;public-ip&gt;/api/</code> to check the API access is working.</p> </li> <li> <p>Go to your RSS application and provide the username, API password and the API path. For Google Reader compatible API, the path is <code>http://&lt;public-ip&gt;/api/greader.php</code>.</p> </li> </ul> <p>API access can be used by your favorite application to add or remove feeds, mark as read or favorite and all other normal operations possible through the FreshRSS UI.</p> https://codeyarns.com/tech/2026-01-12-freshrss.html Mon, 12 Jan 2026 03:59:33 +0000 Oracle Cloud Infrastructure https://codeyarns.com/tech/2026-01-12-oracle-cloud-infrastructure.html <p><a href="proxy.php?url=https://www.oracle.com/cloud/"><strong>Oracle Cloud Infrastructure (OCI)</strong></a> is one of the largest Cloud Service Providers (CSP) of the world. It offers a <a href="proxy.php?url=https://www.oracle.com/cloud/free/"><strong>Free Tier</strong></a> that is great for home users who have minimal need of a cloud instance. The rest of the information on this page is based on my experience with the Free Tier.</p> <h1>Create an account</h1> <p>From the Free Tier page, follow the online direction to create a new account. You will be required to provide details of a valid credit card, but it will not be charged. You will need to associate an <em>email address</em>, but also create an <em>account name</em>.</p> <p>Note that the account creation was not immediate, it took a day and I could verify my login worked only after a day.</p> <h1>Create an instance</h1> <p>An instance is the first step to get access to a compute node where we can install and run software.</p> <ul> <li> <p>From top-left menu, go to Compute -&gt; Instances and choose <em>Create instance</em>.</p> </li> <li> <p>In <strong>Placement</strong>, I let it pick the default that was <code>pamH:US-SANJOSE-1-AD-1</code>.</p> </li> <li> <p>In <strong>Image</strong>, I chose <code>Canonical Ubuntu 24.04</code>. I noticed that both Oracle Linux and Canoncial Ubuntu images were all listed as <em>Free</em>.</p> </li> <li> <p>In <strong>Shape</strong>, I let it pick the default <code>VM.Standard.E2.1.Micro</code> since that was the only one marked as <em>Always Free-eligible</em>. This came with a 1-core CPU, 1 GB memory and 0.48 Gbps network bandwidth.</p> </li> <li> <p>In <strong>Networking</strong> section, under <em>Primary VNIC</em> I used the default options of <em>Select existing virtual cloud network</em> and <em>Select existing subnet</em>. Since we need a public IP address to SSH to, I enabled the <em>Automatically assign public IPv4 address</em> option. In the <em>Add SSH keys</em> section, I pasted my public SSH key.</p> </li> <li> <p>The instance creation took 5 minutes and the instance was listed as <em>Running</em>. Note the username (default was <code>ubuntu</code> in my case) and the <em>public IP</em> address.</p> </li> </ul> <p><strong>Note:</strong> The first instance I created did not have the public IP option enabled for choosing. I messed with the firewall (see below), deleted this instance, created a new instance and it had the public IP option. Go figure!</p> <h1>Configure the firewall</h1> <p>All incoming web traffic is blocked by default. To enable incoming traffic at certain ports, we must open them in the OCI firewall.</p> <ul> <li> <p>From top-left menu, go to Networking -&gt; Virtual cloud networks.</p> </li> <li> <p>From the list, choose your VCN and go to its <em>Security</em> -&gt; <em>Security Lists</em> section.</p> </li> <li> <p>Click on the <em>Default Security List</em> -&gt; Security rules.</p> </li> <li> <p>Click on <em>Add Ingress Rules</em> and provide <em>Source CIDR</em> as <code>0.0.0.0/0</code>, IP protocol as <code>TCP</code>, Destination ports as <code>80,443</code> (or the ports required by your web application) and allow both HTTP and HTTPS traffic.</p> </li> </ul> <h1>SSS to the instance</h1> <p>To SSH to the public IP address of the instance:</p> <pre class="codehilite"><code>$ ssh -i &lt;path-to-private-key&gt; ubuntu@&lt;public-ip&gt; </code></pre> <p>You can now work in this compute instance by installing Ubuntu packages, install Docker images and work as if at a local Ubuntu computer.</p> <h1>Access web application</h1> <p>To run a web application, install it and then access it through the browser at the address <code>http://&lt;public-ip&gt;/</code>. If there a API exposed by the app, then <code>http://&lt;public-ip&gt;/&lt;api-path&gt;</code>.</p> https://codeyarns.com/tech/2026-01-12-oracle-cloud-infrastructure.html Mon, 12 Jan 2026 03:10:21 +0000 Firefox Cheatsheet https://codeyarns.com/tech/2026-01-08-firefox-cheatsheet.html <ul> <li><a href="proxy.php?url=https://support.mozilla.org/en-US/kb/ai-chatbot">Use AI Chatbots</a>: Press <code>⌃ x</code> (MacOS) or <code>Ctrl Alt x</code> (Linux) to toggle the <strong>AI chatbot</strong> sidebar on the left. The first time it will ask you to pick from the various chatbots like Google Gemini, ChatGPT and others. In addition to directly using the AI chatbot sidebar, I find it useful to highlight text on a webpage and click the ✨ (sparkles) button that appears beside the text to feed it to the AI chatbot.</li> </ul> https://codeyarns.com/tech/2026-01-08-firefox-cheatsheet.html Thu, 08 Jan 2026 23:07:37 +0000 Tech links of January 2026 https://codeyarns.com/tech/2026-01-06-tech-links-of-january-2026.html <h1><a href="proxy.php?url=https://tonsky.me/blog/tahoe-icons/">It’s hard to justify Tahoe icons</a></h1> <p>Damning post on how MacOS Tahoe is overloaded with tiny, meaningless, inconsistent UI icons. Apple seems to have completely forgotten its own 1992 HIG.</p> <h1><a href="proxy.php?url=https://sqlite.org/whyc.html">Why SQLite is written in C</a></h1> <p>C is fast, compatible with all libraries and can be written in an object-oriented manner (if required). Provides a list of requirements for Rust before it will be considered.</p> <h1><a href="proxy.php?url=https://addyosmani.com/blog/21-lessons/">21 Lessons From 14 Years at Google</a></h1> <p>Solid list of learnings, matched a lot with my experience in big tech companies.</p> <ul> <li> <p>The best engineers are obsessed with solving user problems.</p> </li> <li> <p>Being right is cheap. Getting to right together is the real work.</p> </li> <li> <p>Bias towards action. Ship. You can edit a bad page, but you can’t edit a blank one.</p> </li> <li> <p>Clarity is seniority. Cleverness is overhead.</p> </li> <li> <p>Novelty is a loan you repay in outages, hiring, and cognitive overhead.</p> </li> <li> <p>Your code doesn’t advocate for you. People do.</p> </li> <li> <p>The best code is the code you never had to write.</p> </li> <li> <p>At scale, even your bugs have users.</p> </li> <li> <p>Most “slow” teams are actually misaligned teams.</p> </li> <li> <p>Focus on what you can control. Ignore what you can’t.</p> </li> <li> <p>Abstractions don’t remove complexity. They move it to the day you’re on call.</p> </li> <li> <p>Writing forces clarity. The fastest way to learn something better is to try teaching it.</p> </li> <li> <p>The work that makes other work possible is priceless - and invisible.</p> </li> <li> <p>If you win every debate, you’re probably accumulating silent resistance.</p> </li> <li> <p>When a measure becomes a target, it stops measuring.</p> </li> <li> <p>Admitting what you don’t know creates more safety than pretending you do.</p> </li> <li> <p>Your network outlasts every job you’ll ever have.</p> </li> <li> <p>Most performance wins come from removing work, not adding cleverness.</p> </li> <li> <p>Process exists to reduce uncertainty, not to create paper trails.</p> </li> <li> <p>Eventually, time becomes worth more than money. Act accordingly.</p> </li> <li> <p>There are no shortcuts, but there is compounding.</p> </li> </ul> <h1><a href="proxy.php?url=https://jvns.ca/blog/2024/09/12/reasons-i--still--love-fish/">Reasons I still love the fish shell</a></h1> <p>All the same reasons why I have been using Fish as my default shell since 2013.</p> <h1><a href="proxy.php?url=https://simonwillison.net/2025/Dec/31/the-year-in-llms/">2025: The year in LLMs</a></h1> <p>Simon Willison's mega summary of 2025.</p> https://codeyarns.com/tech/2026-01-06-tech-links-of-january-2026.html Tue, 06 Jan 2026 22:22:00 +0000 How to self host Google Fonts https://codeyarns.com/tech/2026-01-01-how-to-self-host-google-fonts.html <p>Bored with using regular fonts for my website, I finally decided to try <a href="proxy.php?url=https://en.wikipedia.org/wiki/Web_typography#Web_fonts"><strong>web fonts</strong></a>. <a href="proxy.php?url=https://en.wikipedia.org/wiki/Google_Fonts"><strong>Google Fonts</strong></a> seems to be the preferred choice of web fonts since it has more than 1500 open-source fonts. I did not want every load of my webpages to pull in the font file from Google servers, so I looked for a way to self host the font files.</p> <p>Many of the Google fonts are available in <a href="proxy.php?url=https://en.wikipedia.org/wiki/TrueType"><strong>TTF</strong></a> format. These files are large and the recommended lightweight file format for website is apparently <a href="proxy.php?url=https://en.wikipedia.org/wiki/Web_Open_Font_Format"><strong>Web Open Font Format 2.0 (WOFF2)</strong></a>.</p> <p>I found the website <a href="proxy.php?url=https://gwfh.mranftl.com/fonts"><strong>Google Webfonts Helper</strong></a>, created by <a href="proxy.php?url=https://mranftl.com/"><strong>Mario Ranftl</strong></a>, to be a one-stop resource for self-hosting Google fonts. I can pick a font and select charsets and styles to view how the font rendering looks. For the selected styles, it gave me the <code>font-face</code> definition CSS that I would need to add to my CSS file. Furthermore, it also provides a download of the <code>.woff2</code> font files for the chosen charsets and styles.</p> <p>Self-hosting these web fonts was easy with the Google Webfonts Helper:</p> <ul> <li>Choose the font, charsets and styles for which you need the WOFF2 files.</li> <li>Copy the CSS font face definition to your CSS file.</li> <li>In your CSS formatting, use the new font name.</li> <li>Download the WOFF2 files and place them in <code>fonts/</code> directory of your website.</li> <li>Upload the new CSS file and the font files to your website and the newly rendered webpage should be using them.</li> </ul> https://codeyarns.com/tech/2026-01-01-how-to-self-host-google-fonts.html Thu, 01 Jan 2026 20:00:20 +0000 The Curious Case of the Missing English Subtitles https://codeyarns.com/tech/2026-01-01-the-curious-case-of-the-missing-english-subtitles.html <h1>Problem</h1> <p>Deciding to educate myself, I recently picked up a 10-DVD box set of <a href="proxy.php?url=https://en.wikipedia.org/wiki/Star_Trek:_The_Original_Series_season_1"><strong>Star Trek: The Original Series (Season 1)</strong></a>. I plopped the first DVD into a <a href="proxy.php?url=https://electronics.sony.com/tv-video/blu-ray-dvd-players/dvd-players/p/dvpsr510h"><strong>Sony DVP-SR510H</strong></a> player that was connected over HDMI to a <a href="proxy.php?url=https://www.hisense-usa.com/product-page/televisions-55-inch-a6-series-led-4k-uhd-smart-google-tv-2021-55a65h"><strong>Hisense 55A6H</strong></a> TV running <a href="proxy.php?url=https://en.wikipedia.org/wiki/Android_TV#Google_TV_interface">Google TV</a>. The remastered video and audio sounded great, but the DVD did not seem to have English subtitles. It only had French and Spanish subtitles and when chosen those were displayed correctly.</p> <p>For many years now, I have relied on English subtitles when watching TV series and movies. It seemed surprising that the release of such a popular TV series would be missing English subtitles.</p> <h1>Solution</h1> <p>Looking at the back of the box, it had the logos for <strong>CC (Closed Captions)</strong> and <strong>NTSC</strong>. I already knew that CC was information transmitted along with the analog TV signals. And since Star Trek was a TV series, it made sense that the DVD creators decided to retain the original CC info transmitted over NTSC video in the discs. How to get this CC info out from the DVD and display on the TV?</p> <p>Checking online, I found that this CC info <em>cannot</em> be transmitted over HDMI. So, I hooked up the 3-color <strong>component video cable</strong> that has yellow (for video) and red-white (for right-left audio) to the DVD player and the TV. In the TV inputs, I chose <em>AV</em> and I knew I was getting NTSC video since it was noticeably lower quality than HDMI video. However, no CC info was displayed.</p> <p>Next, I dug into the Google TV settings for CC and enabled all of it. This is Settings -&gt; Accessibility -&gt; Captions. Still no CC info!</p> <p>Finally, I suspected that the DVD player was messing with the raw analog output before sending it to the TV. So, I dove into its screen setup -&gt; Mode (Progressive) and changed from <em>Auto</em> to <em>Video</em>.</p> <p>Finally, I was able to see the original English version of Closed Captions on the Star Trek video!</p> <p>PS: The same trick did not work on my portable <strong>Sony DVP-FX950</strong> DVD player. Probably because it is only sending digital video to its internal display and does not have any option to use the analog video info.</p> https://codeyarns.com/tech/2026-01-01-the-curious-case-of-the-missing-english-subtitles.html Thu, 01 Jan 2026 01:20:49 +0000 JankyBorders https://codeyarns.com/tech/2025-11-05-jankyborders.html <p>In MacOS Tahoe, there is no clear indication of which window is currently in focus. The only indication is that the traffic light buttons of the active window are in color, while they are greyed out for the rest of the windows.</p> <p><a href="proxy.php?url=https://github.com/FelixKratz/JankyBorders"><strong>JankyBorders</strong></a> is an open-source app that helps draw a colored border around the currently focused window and it solved this problem I had.</p> <ul> <li><strong>Install</strong>:</li> </ul> <pre class="codehilite"><code>$ brew tap FelixKratz/formulae $ brew install borders </code></pre> <ul> <li><strong>Test the app</strong>:</li> </ul> <p>To test the app from the terminal with a thick orange border:</p> <pre class="codehilite"><code>$ borders width=10 active_color=0xFFFF7F50 </code></pre> <p>Note that the first hex is the transparency, followed by RGB hex.</p> <ul> <li><strong>To run as service</strong>:</li> </ul> <p>First create a configuration file <code>~/.config/borders/bordersrc</code>:</p> <pre class="codehilite"><code>#!/bin/bash options=( width=10 active_color=0xFFFF7F50 ) borders &quot;${options[@]}&quot; </code></pre> <p>Next run as service in the background:</p> <pre class="codehilite"><code>$ brew services start borders </code></pre> <p>If you make any changes to the config file, restart the borders service:</p> <pre class="codehilite"><code>$ brew services restart borders </code></pre> <p><strong>Tried with:</strong> JankyBorders 1.8.4 and MacOS Tahoe 26.0.1</p> https://codeyarns.com/tech/2025-11-05-jankyborders.html Wed, 05 Nov 2025 14:37:55 +0000 Preview Cheatsheet https://codeyarns.com/tech/2025-10-30-preview-cheatsheet.html <p><strong>Preview</strong> is the default application in MacOS to view images and PDF files.</p> <h1>PDF files</h1> <ul> <li><strong>Highlight</strong>: Choose View -&gt; Show Markup toolbar so that it is visible at the top. Mark the lines with the mouse cursor and choose the <em>Highlight</em> button in the Markup toolbar. Keyboard shortcut is to mark the lines and press <code>control command h</code>.</li> </ul> https://codeyarns.com/tech/2025-10-30-preview-cheatsheet.html Thu, 30 Oct 2025 19:43:51 +0000 Garmin Instinct 2S Solar https://codeyarns.com/tech/2025-09-27-garmin-instinct-2s-solar.html <p>Disappointed by the <a href="proxy.php?url=2025-09-21-apple-watch-se-3.html"><strong>Apple Watch</strong></a>, I was looking for a smartwatch with longer battery life and a size that fits my small wrist of 16.5 inches and discovered <a href="proxy.php?url=https://www.garmin.com/en-US/p/741462/"><strong>Garmin Instinct 2S Solar</strong></a>. This watch turned out to have the softest, most comfortable strap I have ever tried and its closely spaced holes make it easy to have a great fit on the wrist.</p> <h1>Specifications</h1> <ul> <li>Size: 40 x 40 x 13.3 mm</li> <li>Weight: 43 g</li> <li>Display resolution: 156 x156 pixels</li> </ul> <h1>Buttons</h1> <p>There are 5 buttons, 3 on the left and 2 on the right:</p> <ul> <li>CTRL/Light: Single-press to toggle the backlight. Double-press to toggle the flashlight.</li> <li>Menu/Up: Hold to view menu.</li> <li>ABC/Down: Hold to view Altimeter, Barometer and Compass screen (ABC).</li> <li>GPS: </li> <li>Set/Back: Press to return to previous screen.</li> </ul> <h1>Glances</h1> <p>Press Up and Down buttons to scroll through the Glances. Info shown includes:</p> <ul> <li>Solar intensity graph</li> <li>Weather</li> <li>Sunrise</li> <li>Last Sport</li> <li>Steps</li> <li>Heart rate</li> <li>Measure heart rate</li> <li>Sleep</li> <li>Calendar </li> <li>Notifications</li> </ul> <h1>Watch faces</h1> <p>The watch ships with a few faces and many more can be found online and installed to the watch by using the <strong>ConnectIQ</strong> app on the iPhone.</p> <ul> <li> <p><strong>Change watch face</strong>: Long press the Menu button and choose Watch Face. Scroll up and down through the various watch faces. Many of the watch faces have a <em>Customize</em> option that lets you customize the face. Some of the watch faces can be customized only through the ConnectIQ app.</p> </li> <li> <p><strong>Instinct Pro</strong>: This is a watch face that I like for this watch. It can be found and installed using the ConnectIQ app. Note that it can only be customized using the app. Documentation for the watch face can be found <a href="proxy.php?url=https://reed.works/2022/06/12/instinct-pro/">here</a>.</p> </li> </ul> <h1>Software</h1> <ul> <li><a href="proxy.php?url=https://connect.garmin.com/">Garmin Connect</a>: Smartphone app for the watch. Recommended method to sync with the watch and track health stats.</li> <li><a href="proxy.php?url=https://apps.garmin.com/en-US/">Garmin ConnectIQ</a>: To discover and install apps and watch faces.</li> <li><a href="proxy.php?url=https://www.garmin.com/en-US/software/express/">Garmin Express</a>: Windows/MacOS software for working with the watch.</li> </ul> <h1>Garmin Pay</h1> <ul> <li>Open Garmin Connect app, press on your watch (top right corner), press on &gt;.</li> <li>Choose Wallet &amp; Garmin Pay and add a new card.</li> </ul> <h1>Usage</h1> <ul> <li> <p><strong>Sync time</strong>: Hold down Set button until the options show up. Choose <em>Set time with GPS</em>. Note that even though I tried this, my watch was 3 seconds faster than the actual time.</p> </li> <li> <p><strong>Disable heart rate monitor</strong>: Hold menu button to get to menu options. Choose <em>Sensors &amp; Accessories</em> -&gt; Wrist Heart Rate and change Status to off.</p> </li> </ul> https://codeyarns.com/tech/2025-09-27-garmin-instinct-2s-solar.html Sat, 27 Sep 2025 03:44:15 +0000 Apple Watch SE 3 https://codeyarns.com/tech/2025-09-21-apple-watch-se-3.html <p><a href="proxy.php?url=https://en.wikipedia.org/wiki/Apple_Watch"><strong>Apple Watch SE 3</strong></a> is a smartwatch launched by Apple in 2025. Of the 2 sizes available for this watch, I picked the 40mm case for my small wrist. I used the watch for a week and decided to return it due to reasons detailed later below.</p> <ul> <li> <p><strong>Digital crown</strong>: Press to see the watch screen or Home screen. Double-click to open the App Switcher. Turn to scroll what is on the screen.</p> </li> <li> <p><strong>Side button</strong>: Press to use Control Center. Double-click for Apple Pay. Press and hold to power down or power up the watch.</p> </li> <li> <p><strong>Change watch face</strong>: Long press on the watch face.</p> </li> <li> <p><strong>View date and day</strong>: A surprisingly few watch faces show the date and day. In the default screen, swipe up from the bottom to see the date and day.</p> </li> <li> <p><strong>View widgets</strong>: Swipe up from the bottom.</p> </li> <li> <p><strong>Silent mode</strong>: Press the side button to open Control Center. Press the bell icon to enable silent mode. Only vibrations will be allowed.</p> </li> <li> <p><strong>Get hourly vibration</strong>: On the watch go to Settings -&gt; Accessibility -&gt; Chimes. Enable Chimes and schedule for once an hour/30/15 minutes. This plays a sound, but will use a haptic vibration if the watch is set to silent.</p> </li> <li> <p><strong>Display the Activity app</strong>: Confusingly the Activity app is also displayed as Fitness app in some places in the watch. This app was missing in my watch and it took a while to figure out why. I had disabled this app on my iPhone and so it was also hidden on my watch. On the iPhone, go to Settings -&gt; Screen Time -&gt; Content &amp; Privacy Restrictions -&gt; Allowed Apps &amp; Features and enable the Fitness app.</p> </li> <li> <p><strong>Sync the alarms from iPhone</strong>: The only alarms that are synced from iPhone are the special <em>sleep</em> and <em>wake up</em> alarms. None of the normal alarms from the iPhone are synced to the phone.</p> </li> <li> <p><strong>Google TV remote</strong>: On the iPhone, I like controlling our smart TV using the remote in the Google TV app. It would have been super useful if the Google TV remote was also available on the Apple Watch, unfortunately it is not. There is no other means to use a remote on the watch to control Google TV devices.</p> </li> </ul> <h1>Return</h1> <p>The Apple Watch is a beautifully crafted product, but I felt like its current version was just not working for me due to these reasons:</p> <ul> <li> <p>Apps install requires password typing: The biggest absurdity of the Apple Watch is that I can only install apps from the watch, not from its Watch app on the iPhone. And it asks for my Apple password to install - there is no way I am going to try to enter my cryptic random-generated password using that handwriting input on the watch!</p> </li> <li> <p>Way too much stuff going on with its UI: there are Live Actions, widgets if you swipe from below, apps if you click the crown and the Control Center if you click the side button. Just think about it for a moment - this device display UI has more complexity than MacOS (on computer) and iOS (on the phone/tablet). I am surprised that Apple does not realize how complex the UI/UX is in this device.</p> </li> <li> <p>Battery life: Sucks. Apple expects me to wear this all day and night, but it does not last more than a day - so Apple when do I charge it? I am absolutely not going to charge a watch every day.</p> </li> <li> <p>Step count: All I wanted to track was a step count, but Apple seems to hate the step count. They have these weird 3 color bars that show your activity for the day. Just by looking at the color and a minimalistic icon they have, how am I supposed to know what each color is tracking? And the step count is always hidden, making you step through multiple screens to view it. There is no watch face where Apple will show the step count.</p> </li> <li> <p>Strap: I spent an hour at the Apple store and the least worst strap I could pick was the Nike velcro one. The rubber ones are soft, but they have a weird clasp that is super hard to use. I cannot fathom why they could not provide at least one strap that uses the normal watch clasp. The leather and metal ones are all too irritating for my skin, so I avoid those. So, there we are with Nike velcro and even after a week it still felt itchy and don't even get me started on how ugly this strap is.</p> </li> <li> <p>Apps picking is tiresome: You get 2 views of the apps - a beehive-like hexagonal grid or a scroll list of apps. The hexagonal grid is irritating, I would have preferred a regular grid (like on the phone) and bigger icons (they are way too small). The scroll list of apps is frustrating because while Apple allows me to reorder the hexagonal grid, I cannot reorder the app list - so I need to scroll in alphabetical order to reach the bottom apps.</p> </li> <li> <p>Widgets: I could not figure out how to control the order of badges or which apps they are originating from. And Apple suddenly uses AI to add some Live Actions.</p> </li> <li> <p>Crown: This is super hard to use - because in an analog watch you remove the watch from your wrist to wind it up or change the time using the crown. Apple borrowed the crown idea without thinking through that they are making the crown a primary interface though it is hard to turn it while the watch is on the wrist. Also, I can already scroll with touch on the display, so why do I need the crown again?</p> </li> <li> <p>Shape: I could not get over the chunky squarish shape of the watch. I prefer a round or hexagonal shape for a watch and though Apple has so many watches, not a single one is round.</p> </li> </ul> https://codeyarns.com/tech/2025-09-21-apple-watch-se-3.html Sun, 21 Sep 2025 03:44:58 +0000 Finder Cheatsheet https://codeyarns.com/tech/2025-05-07-finder-cheatsheet.html <p>The <a href="proxy.php?url=https://en.wikipedia.org/wiki/Finder_(software)"><strong>Finder</strong></a> is the file manager in MacOS. Its logo is a smiling face and called the <em>Happy Mac</em>.</p> <ul> <li> <p><strong>Search</strong>: To search for files or directories, click the 🔍 or press <code>command f</code>. Finder searches the entire Mac by default. To restrict the search under the current folder, click the current folder name in the <em>Search</em> field.</p> </li> <li> <p><strong>Cut and paste files</strong>: Files cannot be cut in Finder. Instead, copy the files (<code>command c</code>) and while pasting in the destination directory use <code>option command v</code>. This special paste moves the files instead of copying them over.</p> </li> <li> <p><strong>Quit Finder from Dock</strong>: Finder always seems to be running in the Dock. Apparently, it cannot be quit and will always be running in the Dock. Even when killed, it will be respawned.</p> </li> <li> <p><strong>Hide disks from desktop</strong>: Go to Finder -&gt; Settings -&gt; General. Under <em>Show these items on the desktop</em>, uncheck all the types of disks and servers you would like to be hidden on the desktop.</p> </li> <li> <p><strong>View path bar</strong>: To display the path of any directory that Finder is showing, choose View -&gt; Show Path Bar. Finder shows the path at the bottom, and makes it easy to click and jump to any directory that is part of that path. Note how this is different from Windows Explorer, which shows the path at the top.</p> </li> <li> <p><strong>Mount Samba share</strong>: Samba is a convenient way to <a href="proxy.php?url=2014-07-07-how-to-share-directory-using-smb.html">share a directory</a> from a local Linux computer to our Mac. To access that Samba share in Finder, choose Go -&gt; Connect to Server and use <code>smb://&lt;local-ip&gt;</code>. You will be asked to enter the login and password of that Samba share. Once added this local computer will be listed under <em>Locations</em> on the left side.</p> </li> </ul> <h1>References</h1> <ul> <li><a href="proxy.php?url=https://support.apple.com/guide/mac-help/organize-your-files-in-the-finder-mchlp2605/mac">Use the Finder on Mac</a></li> </ul> <p><strong>Tried with:</strong> Finder 26.3 and MacOS Tahoe 26.3.2</p> https://codeyarns.com/tech/2025-05-07-finder-cheatsheet.html Wed, 07 May 2025 13:09:01 +0000 MacOS Terminal https://codeyarns.com/tech/2025-04-29-macos-terminal.html <p><a href="proxy.php?url=https://en.wikipedia.org/wiki/Terminal_(macOS)"><strong>Terminal</strong></a> is the default terminal emulator on MacOS.</p> <h1>Keyboard shortcuts</h1> <ul> <li>New tab: <code>command t</code></li> <li>Close tab: <code>command w</code></li> <li>Increase font size: <code>command +</code></li> <li>Decrease font size: <code>command -</code></li> <li>Reset font size: <code>command 0</code></li> </ul> <h1>Usage</h1> <ul> <li> <p><strong>Change shell</strong>: The default shell used by Terminal is <em>zsh</em>. To set a different shell for a particular profile, go to Settings -&gt; Profiles -&gt; Shell. Check the <em>Run command</em> option and enter the path to the shell. For example, <code>/opt/homebrew/bin/fish</code> for the Fish shell. Uncheck the <em>Run inside shell</em> option. Restart Terminal.</p> </li> <li> <p><strong>Support Page Up/Down</strong>: By default, terminal does not support the Page Up/Down keys. Open Settings -&gt; Profiles -&gt; Keyboard. Add key setting with Key as <code>Page Up</code>, Modifier as <code>None</code>, Action as <code>Send Text</code> and add control character <code>\033[5~</code>. Add key setting with Key as <code>Page Down</code>, Modifier as <code>None</code>, Action as <code>Send Text</code> and add control character <code>\033[6~</code>.</p> </li> <li> <p><strong>Change font and font size</strong>: Go to Settings -&gt; Profiles -&gt; Text -&gt; Font and set the font and font size. The font changes are not applied immediately (why!), until you right-click on the terminal window, choose Inspector and choose the profile again. Alternatively, restart the Terminal to see the changes.</p> </li> <li> <p><strong>Split windows</strong>: Press <code>command d</code> to split the current window vertically into 2 panes. Terminal duplicates the same terminal session in the 2 panes, making it easier to scroll back and compare something in the same session. Note that Terminal <strong>cannot show 2 separate sessions in split windows</strong>, that feature does not exist. This is the primary reason I switched to <a href="proxy.php?url=2026-02-28-iterm2.html"><strong>iTerm2</strong></a>.</p> </li> </ul> <h1>References</h1> <ul> <li><a href="proxy.php?url=https://support.apple.com/guide/terminal/welcome/mac">Terminal User Guide for MacOS</a></li> </ul> <p><strong>Tried with:</strong> Terminal 2.14 and MacOS Sequoia 15.2</p> https://codeyarns.com/tech/2025-04-29-macos-terminal.html Tue, 29 Apr 2025 05:33:00 +0000 MacOS Cheatsheet https://codeyarns.com/tech/2025-04-24-macos-cheatsheet.html <h1>Keyboard Shortcuts</h1> <p>MacOS keyboard shortcuts use the special 4 keys on the Apple keyboard (L to R): <code>fn</code>, <code>control</code>, <code>option</code> and <code>command</code>.</p> <p>Most of the keyboard shortcuts are visible beside the toolbar menu option when you choose them.</p> <ul> <li><code>command space</code>: Opens Spotlight, that can be used to launch applications and open files by typing their name.</li> <li><code>command tab</code>: Switch between currently open applications.</li> <li><code>control command f</code>: Maximize the current application.</li> <li><code>command w</code>: Close the window. Other windows of an application will still be open and the application will continue to run in the background (even if its final window is closed).</li> <li><code>command q</code>: Quit the application and all its windows.</li> <li><code>control command q</code>: Lock the screen</li> </ul> <h1>Dock</h1> <p>Located at the bottom of the desktop and holds the pinned applications and open applications. The running applications have a dot displayed under them. There are some default applications like Finder (leftmost icon) and Downloads and Trash (rightmost icons).</p> <h1>Mission Control</h1> <p>Spaces is the MacOS name for <em>virtual desktops</em>. Mission Control is the view where MacOS shows all the virtual desktops and the windows in them.</p> <ul> <li> <p>To open Mission Control use <code>control up</code>.</p> </li> <li> <p>To move between spaces use <code>control right</code> and <code>control left</code>. On a MacBook, swiping 3 fingers left or right on the trackpad does the same.</p> </li> <li> <p>To create a new space, open Mission Control and click the <code>+</code> at the top-right corner.</p> </li> <li> <p>To move a window to a different space, open Mission Control and drag window to the destination space in the top bar. There are no keyboard shortcuts for this, unlike Windows.</p> </li> </ul> <h1>Tiling</h1> <p>The options to tile windows can be found by holding the pointer over the top-left <em>green</em> button of the current window. In the <em>Move &amp; Resize</em> section, we can choose to tile the window to the left or right <strong>vertical half</strong>. If the <strong>Displays have separate Spaces</strong> option in MacOS settings is enabled, then we get additional options here to tile the window to top or botton <strong>horizontal half</strong> or to any of the 4 <strong>quarters</strong> (need to hold down the <code>option</code> button to see this).</p> <p>The keyboard shortcuts for moving windows to any of these 4 halves or 4 quarters can be viewed and set in Settings -&gt; Keyboard -&gt; Keyboard Shortcuts -&gt; Windows.</p> <h1>Common operations</h1> <ul> <li> <p><strong>Uninstall application</strong>: The currently installed applications are listed in the <em>Applications</em> folder in Finder. To uninstall, right-click on the application and choose <em>Move to Trash</em>.</p> </li> <li> <p><strong>Full screen window</strong>: To toggle the current window to full screen and back use <code>control command f</code>.</p> </li> <li> <p><strong>Maximize window</strong>: Window can be maximized (or <em>Zoom</em> as MacOS calls it) by double-clicking on the titlebar. The keyboard shortcut is <code>fn control f</code>, but weirdly it only maximizes, but does not toggle back the window shape. I prefer going to Settings -&gt; Keyboard -&gt; Keyboard Shortcuts -&gt; App Shortcuts and under <em>All Applications</em>, add a keyboard shortcut with Menu title <code>Zoom</code> and a custom keyboard shortcut such as <code>shift command m</code>. This keyboard shortcut both maximizes and toggles back the window shape.</p> </li> <li> <p><strong>Insert emoji</strong>: On the Macbook Pro keyboard, the <code>🌐</code> or <code>Fn</code> key brings up the emoji picker. When using a keyboard without that key, pressing <code>control command space</code> does the same.</p> </li> <li> <p><strong>Show scroll bars</strong>: To always show a scroll bar in windows, go to System Settings -&gt; Appearance. For <em>Show scroll bars</em> choose the option <em>Always</em>.</p> </li> <li> <p><strong>Moving in text</strong>: Macbook Pro keyboard does not have Home and End buttons. So, use <code>command left</code> and <code>command right</code> to move to start and end of current line of text. Similarly, use <code>shift command left</code> and <code>shift command right</code> to mark up to left or right end of line of text.</p> </li> <li> <p><strong>Take screenshot</strong>: There are multiple keyboard shortcuts dealing with different kinds of screenshots. I found that the most convenient is <code>shift command 5</code> which shows a rectangle. The rectangle can be resized to any region of the screen and press the Capture button at the bottom of the display to do the deed. The screenshot images are saved to the Desktop.</p> </li> <li> <p><strong>Find IP address</strong>: Open Terminal and type <code>ifconfig</code>. Look for the IP address listed for the <code>en0</code> network interface.</p> </li> <li> <p><strong>Lock the screen when lid is closed</strong>: Go to System Settings -&gt; Lock Screen. Set the option <em>Require password after screen saver begins or display is turned off</em> to <em>Immediately</em>.</p> </li> <li> <p><strong>Remap Windows keyboard keys</strong>: When I connect a USB Windows keyboard, its Win key is mapped to Command and its Alt key is mapped to Option. To swap the Win and Alt key mappings, go to System Settings -&gt; Keyboard -&gt; Keyboard Shortcuts. In the dialog, choose Modifier Keys and in the Select keyboard option choose <em>USB keyboard</em>. For Option key, pick Command. For Command key, pick Option.</p> </li> <li> <p><strong>Change default mail application</strong>: Apple Mail is the default mail application. To change the default to a different mail application (like Outlook) you still need to open Apple Mail and have an account in there. Go to menu bar, choose Mail -&gt; Settings. Go to General -&gt; Default email reader and set to a different mail app.</p> </li> <li> <p><strong>Switch between windows</strong>: The <code>cmd tab</code> keyboard shortcut only switches between apps, not the individual windows, while I prefer to switch between windows (just like in Windows). <a href="proxy.php?url=https://alt-tab-macos.netlify.app/"><strong>AltTab</strong></a> is a fantastic open-source tool that can be used to switch between all windows. It can be customized to run at startup from the menubar, work with any keyboard shortcut (I like to replace <code>cmd tab</code> with this) and it can display the windows as thumbnails, app icons or titles, all in 3 different sizes (small/medium/large).</p> </li> <li> <p><strong>Change name of Bluetooth device</strong>: Some Bluetooth devices have associated software that can be used to change their name. If they do not, then their name to MacOS at least can be changed in the OS. To do this, open the Bluetooth settings, and click the (i) to the right of the device name. In the dialog that pops up, change the device name and press Return.</p> </li> </ul> <h1>References</h1> <ul> <li><a href="proxy.php?url=https://support.apple.com/guide/mac-help/work-in-multiple-spaces-mh14112/mac">Work in multiple spaces on MacOS</a></li> </ul> <p><strong>Tried with:</strong> MacOS Tahoe 26.3.2</p> https://codeyarns.com/tech/2025-04-24-macos-cheatsheet.html Thu, 24 Apr 2025 05:47:54 +0000