RSSAmplifier

Blog

finestructure

finestructure.coRSS feed ↗20 posts

Latest posts

Thoughts on LLMs

I find it difficult to coherently collect my thoughts on LLMs. They’re undeniably an interesting technology. There are also people I follow online that I have a lot of respect for and whom I trust, making a strong case that they’re finding LLMs useful in many aspects of their work. Yet I find it difficult to get excited, even interested in the technology. That’s largely due to its provenance. I’ve…

Podcast appearance: Empower Apps, Episode 141

Dave Verwer and I were on Leo Dion’s podcast “Empower Apps” to talk about our work with the Swift Package Index, the improvements to DocC publishing, plugin support and search improvements as well as our plans for the next year. Empower Apps, Episode 141

Podcast appearance: Swift by Sundell, Episode 75

Belated post: In June of 2020, I had the pleasure of being on John Sundell’s podcast “Swift by Sundell” together with Dave Verwer to talk about our newly launched Swift Package Index, and what the overall state of Swift’s package ecosystem currently is. Also, dependency management, composing libraries, deploying server-side Swift in production, and much more. Swift by Sundell, Episode 75

Trying new Swift features on Linux via VS Code dev containers

With every WWDC come new and exciting Swift features and we’re well trained to download the latest Xcode beta to try them all out. Sometimes, however, downloading Xcode isn’t enough, because features might have dependencies on the macOS version as well: you also need to be running on the latest macOS beta. This of course poses a problem, because no one ever installs beta software on their devices,…

Podcast appearance: Empower Apps, Episode 77

I had the pleasure of being on Leo Dion’s podcast “Empower Apps”, where we talked about the challenges of supporting thousands of Swift Packages, dealing with metrics and site ops with Vapor, running CI for the site and the plethora of Swift packages as well as Apple Silicon support. Empower Apps, Episode 77

Running Docker on Apple Silicon M1 (persisted volume)

This is the third post in my series about using Docker on an M1 MacBook Air. You can find the first two parts here: Running Docker on Apple Silicon M1 Running Docker on Apple Silicon M1 (follow-up) These two articles describe the basic setup to get Docker up-and-running on an M1 Mac. The big downside of the presented solution is that it lives in RAM only, meaning that any time you need to reboot…

Running Docker on Apple Silicon M1 (follow-up)

This is a follow-up post to “Running Docker on Apple Silicon M1” , continuing the journey of exploring Docker on Apple’s new M1 machines. We left off at booting an ARM Linux virtual machine, and installing & running Docker inside it. This works fine and allows you run containers like for instance a Postgres database. They can expose their ports and instead of connecting to localhost:5432 on the…

Running Docker on Apple Silicon M1

If you’re anything like me, you’ve been both terribly excited to get your hands on a Mac with an M1 chip – but at the same time apprehensive if all your favourite dev tools are going to work on it. And for me, high on that list of tools is Docker. As of writing, Docker for Mac does not run on Apple Silicon, and so my quest for a work-around began even before I received my M1 Macbook Air, by…

Arena 1.2 released

Arena makes it very easy to launch a playground with a Swift package to experiment with its features – a single command line invocation gets you there. But wouldn't it be even nicer if package authors could also provide some instructive examples for their package that you can then immediately run and explore? Arena 1.2 supports this by looking for a .arena-sample.swift file in a Swift package…

Arena 1.0 released

Arena is a macOS command line utility to create Swift Playgrounds with embedded Swift Package Manager (SPM) packages. It allows you try out Swift packages with ease, in a single command: $ arena alamofire/alamofire ➡️ Package: https://github.com/alamofire/alamofire @ from(5.3.0) 🔧 Resolving package dependencies ... 📔 Libraries found: Alamofire ✅ Created project in folder 'Arena-Playground'…

State of the App: State Surfing

Imagine you could scroll through your app states like your browsing history. What if the actions you take via the user interface were visible like a Git graph and you could jump around between revisions? Or how about exporting any state into a file and re-applying it at a later time? These are things I’ve always wanted to be able to do while developing an app and it is now possible, with Historian…

Arena: Explore SPM packages with ease

The Swift Package Manager (SPM) made a big leap forward last summer when it gained Xcode integration. While it was quite feasible to use it for Swift projects before, being able to manage packages via Xcode made it so much easier and removed almost all of the friction when dealing with Package.swift files. One area that is still a bit lacking, however, is the ease with which you can bring SPM…

Enhance your SwiftUI previews with Gala

I switched to dark mode on my Mac recently and after doing so it occurred to me that I should really add previews for both colour schemes to my SwiftUI previews. So off I went and wrote the following: static var previews : some View { Group { ContentView () . environment (\. colorScheme , . light ) ContentView () . environment (\. colorScheme , . dark ) } } That worked well enough but my left eye…

SwiftUI: Equal widths view constraints

I love SwiftUI. It’s such a great technology and so much fun to use. And it recently sent me on a days long tangent to figure out a problem that used to be quite simple. All I wanted to do was lay out something like this window on macOS: The only “tricky” thing with this is the requirement that both buttons be equal width and size-to-fit for the button with the longest title text. Using Auto…

SPMPlayground 0.5.0 imports multiple & local packages

Update: SPM-Playground is now Arena I recently published SPMPlayground which allows you to quickly import a Swift Package Manager project from Github into a Playground ( see the initial blog post ). The initial version was limited in a few ways and today I’ve released version 0.5.0 which comes with the following improvements: Allows importing of multiple dependencies – you can now try a whole host…

Using Swift Package Manager libraries in Playgrounds

Update #2: SPM-Playground is now Arena Update #1: Version 0.5.0 has been released One of the defining features of Swift has always been Playgrounds, the REPL on steroids that allows fast prototyping and iterating over algorithms and code. And while it works great for Apple’s built in libraries and SDKs, it’s never been quite as smooth an experience with third-party libraries. The recent addition…

Website testing - creating a Restfile from sitemap.xml

I have been toying with the idea to self-host my website for a while now. Probably the biggest deterrent is losing the little search traffic that I’m getting due to changing URLs or breaking links between pages. Of course, you can set redirects if your page naming scheme changes but it’s finicky to find all the links and then ensure they’re still working. What I’d really like to ease my mind and…

Adding code coverage to a Swift Package Manager project

As a great fan of measuring things, I have recently added code coverage metrics to my API testing utility Rester . Rester is a Swift Package Manager (SPM) project and after researching a few of the available tools it became clear that most, if not all, are designed for Xcode-built iOS and macOS projects and don’t support SPM out of the box. Eventually, I settled on Codecov and managed to get it to…

Managers and engineers

Many internet comics tell an entertaining story of interactions between managers and engineers and it’s also an interesting dynamic I’ve had the good fortune to observe from up close over the course of many different projects mainly as an engineer but also as a manager - or even something in between, mediating between the two. With the engineering hat on, I can easily recall countless cases of…

Rester – an API scripting tool

In my day job, I am part of a cross-functional team building an app and service in a way that probably the vast majority of apps and services get built these days: A backend service provides an API which clients – Android, iOS, web – interact with. In the course of development we naturally start off by building the API endpoints for a new feature. We stub them out as quickly as possible so the…