RSSAmplifier

Blog

Rhonabwy

Software development and daily life in Seattle

rhonabwy.comRSS feed ↗40 posts

Latest posts

Software Engineering fundamentals matter more than ever

The manifestation of my imposter syndrome, for me and today, is what does it mean to be a software engineer. There’s a lot more noise than signal on the Internet about agentic engineering, what can be accomplished, and its implications for the future. The title I chose rather gives it away; it’s about choosing — Continue reading "Software Engineering fundamentals matter more than ever"

Navigation Notes – Agentic coding

I don’t doubt that jobs associated with software engineering are undergoing a massive sea change. While I was far less certain as to its applicability a year ago, tools like Codex, Claude Code, and OpenCode are effective and – to me – can provide value. These tools are getting better at an extraordinarily high rate, Continue reading "Navigation Notes – Agentic coding"

The best thing I ever made

I’ve cobbled a lot of software over my career, led teams, coordinated large groups to both build and run products, to create (digital) infrastructure, even built a company and sold it. But I think the best thing I ever made – or honestly helped to make, as it never could have been myself alone – Continue reading "The best thing I ever made"

WWDC 2025

I recently found my bag from WWDC 2000. It’s stunning that was 25 years ago. This year, I’m looking forward to WWDC from a different perspective – as a full time Apple employee. I contracted with Apple in 2020 for roughly 18 months. I had an opportunity to switch to full time then, but it Continue reading "WWDC 2025"

Code Spelunking in DocC

Head’s up: this post is a technical deep dive into the code of DocC, the Swift language documentation system. Not that my content doesn’t tend to be heavily technical, but this goes even further than usual. The Setup While I was working on some documentation for the snippets feature in DocC, I ran into an Continue reading "Code Spelunking in DocC"

My Favorite Swift 6 feature: static library compilation on Linux

There is a lot of great stuff coming in the Swift programming language. I love the focus and effort on validating data-race safety, and is probably the feature set that I’ll spend the most time with. But my favorite new tidbit? Swift 6 now supports a Linux SDK and the ability to compile a stand-alone, Continue reading "My Favorite Swift 6 feature: static library compilation on Linux"

Class 5 Geomagnetic Storm

Images from adjacent to downtown Seattle (meaning a LOT of light pollution), from 11:20 to 11:50pm local time, May 10th. Most of this was nearly impossible to see at this color with the naked eye. They seemed like wispy clouds, and only the very brightest tints of red or green would start to hint against Continue reading "Class 5 Geomagnetic Storm"

Designing a Swift library with data-race safety

I cut an initial release (0.1.0-alpha) of the library automerge-repo-swift. A supplemental library to Automerge swift, it adds background networking for sync and storage capabilities. The library extends code I initially created in the Automerge demo app (MeetingNotes), and was common enough to warrant its own library. While I was extracting those pieces, I leaned Continue reading "Designing a…

Distributed Tracing with Testing on iOS and macOS

This weekend I was frustrated with my debugging, and just not up to digging in and carefully, meticulously analyzing what was happening. So … I took a left turn (at Alburquerque) and decided to explore an older idea to see if it was interesting and/or useful. My challenging debugging was all about network code, for Continue reading "Distributed Tracing with Testing on iOS and macOS"

Embedding a privacy manifest into an XCFramework

During WWDC 2023, Apple presented a number of developer-impacting privacy updates. One of the updates, introducing the concept of a privacy manifest, has a direct impact on the work I’ve been doing making the CRDT library Automerge available on Apple platforms. The two relevant sessions from WWDC 2023: During the sessions, the presenter shared that Continue reading "Embedding a privacy manifest…

A week on with a VisionPro

There are excellent reviews of the VisionPro “out there”, this post isn’t meant as another. It’s a record of my first experiences, thoughts, and scribbled notes for future me to look back on after a few iterations of the product. I had been planning on getting a Vision Pro when it was first rumored. I Continue reading "A week on with a VisionPro"

Unicode strings are always harder than you think

I recently released an update to the Swift language bindings to Automerge (0.5.7), which has a couple of great updates. My favorite part of that update was work to enable WebAssembly compilation support, mostly because I learned an incredible amount about swift-wasm and fixed a few misconceptions that I’d held for unfortunately too long. The Continue reading "Unicode strings are always harder than…

Questions about the data to create LLMs for embeddings

Simon Willison has a fantastic article about using LLM embeddings in his October blog post: Embeddings: What they are and why they matter. The article is great, a perfect introduction, but I’ve been struggling to find the next steps. I’ve been aware of embeddings for a while, and there’s a specific use case I have: Continue reading "Questions about the data to create LLMs for embeddings"

Automerge for Swift

I’ve been interested in the idea of CRDTs, and the use cases they enable, for a number of years. The core ideas are pretty straight forward to understand and implement, but when you start applying them into something like collaborative text editing, or more efficient size encoding, there’s a lot of additional complexity. There are Continue reading "Automerge for Swift"

SwiftUI Field Notes: Document instance lifetimes are shorter than they appear

I have been working on a demonstration app using a SwiftUI document-based lifecycle. I learned, in that hard way that hopefully sticks with you, that instances of ReferenceFileDocument or FileDocument don’t last as long as you might think. This has been “a thing” for a long while, and may be well known to anyone who’s Continue reading "SwiftUI Field Notes: Document instance lifetimes are shorter…

Getting your custom file type recognized by iOS and macOS

When you’re making an app for iOS or macOS, there’s a file – Info.plist – that provides key information between your app and the operating system that it’s running on. (If you’re unfamiliar with it, Info.plist is a property list – a mix of dictionaries & arrays with values that stretches way back in Apple Continue reading "Getting your custom file type recognized by iOS and macOS"

What you need to know learning to use Blender on a Mac laptop

My nephew was visiting last week, and we started up an online tutorial course: The Ultimate Blender Low Poly Course 2 (kind of click-bait title, but it’s been a decent course so far). For me, it was an excuse to finally get past a long deferred desire of “I want to learn how to use Continue reading "What you need to know learning to use Blender on a Mac laptop"

Unit testing with Document based apps

I’ve barked my shins repeatedly against this problem, so I’m writing the details down in the hope that “future me” will look on my blog when I run into this issue again. I made a document-based app in Xcode – a cross-platform macOS and iOS app – and added tests, as one does. However, the Continue reading "Unit testing with Document based apps"

Swift challenge mode – Dynamic Data

This isn’t something I’ve solved, more of something I’m working on, but I thought there were some interesting things to share with anyone else “walking this path”. The Swift programming language is a static, strongly-defined language with a huge emphasis on leveraging types to help provide programmatic safety. It’s not always something I remember, as Continue reading "Swift challenge mode –…

ML Understanding

OpenAI announced the release of GPT-4 a few days ago, with the not-surprisingly flurry of news reports, quite a few hyperbolic, and a few good. I watch RSS feeds (with the amazing open-source NetNewsWire app) of various individuals, forums, and a few online sources for my technology news – so it was a fairly notable Continue reading "ML Understanding"

CRDT work

What are you working on these days? I’m all over the place at the moment, but one topic keeps standing out – working on CRDTs. If you don’t know this crazy arsed geek acronym, it stands for Conflict-free Replicated Data Types, and it’s a means to enable eventually consistent data replication – “sync” in a Continue reading "CRDT work"

Creating an XCFramework

In the past couple of years, I’ve had the occasion to want to make an XCFramework – a bundle that’s used by Apple platforms to encapsulate binary frameworks or libraries – a couple of times. In both cases, the reason wasn’t that I didn’t want to ship the source, but because the source was from Continue reading "Creating an XCFramework"

Large language models and Search

Microsoft’s made an aggressive and delightful splash in the search market by deeply integrating the guts of OpenAI’s large language model ChatGPT with Bing Search. There’s an impressive interview by Joanna Stern on the topic (hat tip to Daring Fireball for the link). There’s a potential there that’s amazing, and others that are truly frightening. Continue reading "Large language models and Search"

Native support for USD tools on an M1 Mac

I saw USD release 22.08 drop a few weeks ago, and notably within its release notes is the sentence: “Added support for native builds on Apple Silicon.” I struggled quite bit with getting USD both installed and operational because, as it turns out, there’s a bit of quirk to Python that made things more difficult. Continue reading "Native support for USD tools on an M1 Mac"

SwiftUI Field Notes: DocumentGroup

When you build a SwiftUI-lifecycle-based app for macOS or iOS, you’re expected to define a Scene – the first of which generally defines what (and how) that App displays when it is launched. DocumentGroup is one of the types of Scene (for macOS and iOS platforms) that is focused on an App lifecycle built around Continue reading "SwiftUI Field Notes: DocumentGroup"

I wish contextual SwiftUI was more predictable

I’m not certain how to phrase this. It’s either that I wish I was better at predicting what a SwiftUI view would look like, or that I wish SwiftUI was more predictable at how views render in different contexts. I recently built a multi-platform SwiftUI utility app, and was struck by how often I ran Continue reading "I wish contextual SwiftUI was more predictable"

What Apple might do with distributed computing

I’m excited to see not only async-await making it thoroughly into the language (in Swift 5.6), but also the extensions that enable actors and distributed actors with this general sweep of the Swift language embracing concurrency. It’s been several years in the making, and the past year has been building much of these base pieces Continue reading "What Apple might do with distributed computing"

What being an Open Source Developer means to me

I’ve periodically described myself as an “open source developer” in those pithy biography blocks that you sometimes get (or have) to create. Developing and providing open source software means something specific to me, and I’d like to share how I think about it. At it’s core, it’s only a little about solving problems with code Continue reading "What being an Open Source Developer means to me"

Language and framing

Quite a few years ago, I was fortunate to sit in a presentation where Yukihiro Matsumoto talked about his inspirations when making the Ruby programming language. One of the references he cited was the 1966 science fiction novel from Samuel Delaney Babel-17. I was in Portland at the time, and was able to get a Continue reading "Language and framing"

Chart

I’m starting, or more specifically re-starting, a project that I envisioned a couple years ago. In some of the apps I’ve created, I’ve found it useful – sometimes critical to what I want – to provide small charts (visualizations) of data from the app. One example of this is a series of histograms that show Continue reading "Chart"

RealityKit on macOS

Guessing which frameworks are going to be updated, and which aren’t, is — I think — a part of developing software on Apple platforms. Sometimes it’s clear based on what’s been updated over the past three or fours, as is the case with RealityKit. I started my experiments with SceneKit, another lovely high-level API to Continue reading "RealityKit on macOS"

DocC plugin PSA

In my last two posts about using DocC, I’ve been implicitly encouraging the use of the new docc-plugin for the Swift package manager. I did so knowing that it is in beta and the underlying APIs are evolving – and in my example scripts I include how to do the same thing with commands that Continue reading "DocC plugin PSA"

Tips for getting the most out of DocC

1 – Start by adding doc comments to your types. The starting point is adding a single short summary sentence as comment (using the ///) for each public type in your library or app. Feel free to add more: if you add a “blank line” (meaning include another line with /// but nothing else in Continue reading "Tips for getting the most out of DocC"

Hosting your Swift Library Docs on Github Pages

The beta for Xcode 13.3 dropped yesterday. With it came a released version of Swift 5.6 and a bunch of neat additions that the 5.6 release enables. A feature I was watching closely was two-fold: the capability for plugins to extend the commands available within swift’s package manager, and a static hosting option that was Continue reading "Hosting your Swift Library Docs on Github Pages"

Looking for help to solve a specific 3D math/trig problem

I’ve been working on a Swift library that implements Lindenmayer systems, but the past week has me deeply stuck on a specific 3D math problem. There’s a specific 3D rendering command that’s described in The Algorithmic Beauty of Plants – the ‘$’ character in that work, that has a special meaning that’s taken me quite Continue reading "Looking for help to solve a specific 3D math/trig problem"

API Design decisions behind Lindenmayer in Swift

Procedural generation of art is fascinating to me. The scope of efforts that fall into the bucket of procedural generation is huge. Quite a lot of what you find is either focused on art or video games. Within procedural generation, there is a topic that really caught my eye, I think primarily because it wasn’t Continue reading "API Design decisions behind Lindenmayer in Swift"

Adding DocC to an existing swift package

During WWDC 21, Apple announced that they would be open sourcing documentation tooling (DocC) that’s used to build and provide documentation within Apple. At the tail end of October 2021, the initial version of DocC was released — available on Github, scattered through multiple repositories: swift-docc swift-docc-render swift-docc-symbolkit Apple hosts documentation about DocC (presumably written…

A time for change

For some reason, the fall seems to match the most with the inflection points in my life where I’ve made notable changes. This fall is no different, as today is the last day of a contract position that I started just before the COVID lockdown. The 18 month gig was wonderful – sometimes a bit Continue reading "A time for change"

Kubernetes and Developers

Three years ago (April, 2018) Packt published my book Kubernetes for Developers. There weren’t many books related to Kubernetes on the market, and the implementation of Kubernetes was still early – solid, but early. Looking back, I’m pleased with the content I created. It’s still useful today, and for technical content that is pretty darned Continue reading "Kubernetes and Developers"

Concurrency, Combine, and Swift 5.5

I started a post that brings together all the moving parts that have been discussed in the various concurrency proposals that are going into Swift 5.5. They’re all accessible through GitHub, and the discussions in the public forums. The combined view of all the moving parts is complex. I was aiming to post something this Continue reading "Concurrency, Combine, and Swift 5.5"