<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>An Engineer&apos;s musings</title><description>Notes on building software, and the occasional tangent.</description><link>https://engineers-musings.pages.dev/</link><item><title>A Kotlin Class Is Mostly Its Header</title><link>https://engineers-musings.pages.dev/blog/kotlin/kotlin-classes-basics/</link><guid isPermaLink="true">https://engineers-musings.pages.dev/blog/kotlin/kotlin-classes-basics/</guid><description>Declaring classes, primary and secondary constructors, properties, init blocks, encapsulation, and why Kotlin classes are final by default. Part 1 of a two-part tour.</description><pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate></item><item><title>One Keyword Does the Work: Kotlin&apos;s data, enum, sealed, and object</title><link>https://engineers-musings.pages.dev/blog/kotlin/kotlin-classes-types/</link><guid isPermaLink="true">https://engineers-musings.pages.dev/blog/kotlin/kotlin-classes-types/</guid><description>Beyond the plain class — data classes, enums, sealed hierarchies, objects and companions, nested vs inner, and value classes, each with a small example. Part 2 of two.</description><pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate></item><item><title>In Kotlin, There Are No Primitives</title><link>https://engineers-musings.pages.dev/blog/kotlin/kotlin-data-types/</link><guid isPermaLink="true">https://engineers-musings.pages.dev/blog/kotlin/kotlin-data-types/</guid><description>A tour of Kotlin&apos;s basic types: val and var, the number types, no implicit conversions, strings and templates, null as part of the type, and Any/Unit/Nothing.</description><pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Enums in Kotlin: Small, Useful, and More Powerful Than They Look</title><link>https://engineers-musings.pages.dev/blog/kotlin/kotlin-enums/</link><guid isPermaLink="true">https://engineers-musings.pages.dev/blog/kotlin/kotlin-enums/</guid><description>Kotlin enums feel familiar coming from Java, but they can carry data, behavior, and exhaustive when-handling. A build-up from the basics.</description><pubDate>Sat, 14 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unchecked and Unbothered: How Kotlin Rethinks Java&apos;s Exception Handling</title><link>https://engineers-musings.pages.dev/blog/kotlin/kotlin-exceptions/</link><guid isPermaLink="true">https://engineers-musings.pages.dev/blog/kotlin/kotlin-exceptions/</guid><description>Kotlin drops checked exceptions entirely. Here&apos;s what that changes day to day, and the compiler trickery that makes it work.</description><pubDate>Mon, 23 Feb 2026 00:00:00 GMT</pubDate></item><item><title>A Kotlin Lambda Is Just a Value</title><link>https://engineers-musings.pages.dev/blog/kotlin/kotlin-lambdas-basics/</link><guid isPermaLink="true">https://engineers-musings.pages.dev/blog/kotlin/kotlin-lambdas-basics/</guid><description>Lambda syntax, function types, it, higher-order functions, the trailing-lambda convention, the collection API, and closures. Part 1 of a two-part tour.</description><pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Kotlin Lambdas Get Clever: References, Receivers, and inline</title><link>https://engineers-musings.pages.dev/blog/kotlin/kotlin-lambdas-beyond/</link><guid isPermaLink="true">https://engineers-musings.pages.dev/blog/kotlin/kotlin-lambdas-beyond/</guid><description>Function references, non-local returns and labels, anonymous functions, why inline makes lambdas free, lambdas with receivers, and the scope functions. Part 2 of two.</description><pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Kotlin Smart Casts: Stop Telling the Compiler What It Already Knows</title><link>https://engineers-musings.pages.dev/blog/kotlin/kotlin-smartcasts/</link><guid isPermaLink="true">https://engineers-musings.pages.dev/blog/kotlin/kotlin-smartcasts/</guid><description>How Kotlin&apos;s smart casts remove the check-then-cast tax from everyday code, and the rules that decide when they kick in.</description><pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Kotlin&apos;s when Is the New switch — And if, And instanceof</title><link>https://engineers-musings.pages.dev/blog/kotlin/kotlin-when/</link><guid isPermaLink="true">https://engineers-musings.pages.dev/blog/kotlin/kotlin-when/</guid><description>Kotlin&apos;s when quietly replaces switch, long if/else ladders, and instanceof-with-cast. A tour of the parts that matter.</description><pubDate>Fri, 09 Jan 2026 00:00:00 GMT</pubDate></item><item><title>I Stopped My 2019 Intel MacBook Pro From Bleeding Battery Overnight — Here&apos;s What Actually Worked</title><link>https://engineers-musings.pages.dev/blog/macos/intel-mac-battery-drain/</link><guid isPermaLink="true">https://engineers-musings.pages.dev/blog/macos/intel-mac-battery-drain/</guid><description>An Intel Mac draining ~28% overnight wasn&apos;t the failing battery — it was one Continuity feature holding the CPU awake. The one-toggle fix, with measured results.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Diagnosing a Sluggish Intel Mac: A Field Manual</title><link>https://engineers-musings.pages.dev/blog/macos/intel-mac-diagnostics/</link><guid isPermaLink="true">https://engineers-musings.pages.dev/blog/macos/intel-mac-diagnostics/</guid><description>Eight terminal commands that tell you why an Intel Mac feels slow — swap, memory pressure, runaway CPU, rogue VMs, and sleep blockers — and how to read each one.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate></item></channel></rss>