Tooling

All kinds of tooling like editors, frameworks, command line interfaces, language servers and more.

Discontinuing of Projects  — 

Starting with this year, I have decided to discontinue all of my open source projects.

Read »
Zirric: Going Virtual  — 

A few years ago while I started working on Lithia, I decided to use whatever takes me to my goal. Getting finished was the primary focus. And I did.

Read »
The current state of Lithia after 2 years  — 

In 2021 I started working on the current Go implementation of my own experimental programming language called Lithia. Now it is available in version v0.0.19. Infrequently I also wrote some words about it on this blog. It has been designed to be an experiment, that is able to teach some lessons and that can be fulfilled.

Read »
My Personal View on Acorn  — 

Acorn is an application deployment framework for k8s, that tries to simplify instead of introducing another layer of indirection. I won’t cover all details and problems it tries to solve here, instead I’d like to share some experiences and thoughts.

Read »
Open Policy Agent  — 

With OPA you implement decisions of policies, not their enforcement. This avoids confusion between multiple servers that might come from different implementations of the policies.

Read »
Kind is the new minikube  — 

I have been playing around with minikube for quite some time now. Though as I run minikube on my Mac, I experienced multiple bugs regarding accessing the cluster and it’s published ports.

Read »
Bash scripts with Gum  — 

I gave the newest tool of Charm Gum a try. It allows to create interactive bash scripts in just a few lines of code.

Read »
Announcing Puffery for macOS and the command line  — 

Two years ago, I created Puffery for iOS, which allows sending push notifications to your iOS devices.

Read »
Ultra-fast Hugo GitHub actions  — 

I created a GitHub workflow to automatically build and deploy my website to GitHub Pages.

Read »
Designing and scoping my programming language Lithia  — 

Once you have decided you want to create your own programming language, you need to create a broader concept. Every programming language is unique in its own way. Your goal is to find out in which way. And you need to find your reason why you want to create it in the first place.

Read »
Starting the journey about creating a new programming language  — 

This is planned to be a series of blog posts about designing and developing my own programming language, where I want to share some pitfalls, my learnings, design decisions, experience and the development process.

Read »
Go Data Race Detector  — 

You can run your Go program or your tests with the Data Race detection enabled. This might cost some performance and memory, but in case a data race is being detected, that’s worth it!

Read »
Getting your IP address  — 

Sometimes you need your local IP address on the command line to automatically pass it to a script.

Read »
Debugging Swift in VS Code in 2022  — 

Back in 2019 I wrote an article about how to debug your Swift Package Manager projects in Visual Studio Code. In late december 2021, the Swift Server Working group released a brand new extension for vscode, which dramatically improves debugging your Swift code. Especially for linux! Time for an update!

Read »
UINavigationBar black after Xcode 13 upgrade  — 

In case your UINavigationBar has been set to a custom color and the navigation bar is not translucent, you will experience a visual regression when updating to Xcode 13. The navigation bar background will be black - until you start scrolling. Then it behaves as expected.

Read »
Reminder: websites contain weird characters  — 

Copying contents from the web often copies weird characters, like the invisible character U+FEFF or “Zero Width No-Break Space”.

Read »
There is a modular version manager: asdf!  — 

Today I learned about asdf, which is a pluggable version manager.

Read »
Adopting Swift Async Await in Vapor  — 

A few months ago Swift 5.5 has been released and made async/await available. And in 4.50.0 Vapor added support for it, too!

Read »
Having two admin dev accounts is a bad idea  — 

I tried to keep my work stuff separate from my personal stuff on the same machine. I created two admin users, set up a group for homebrew and set the permissions accordingly.

Read »
Converting simple iOS apps to tvOS is easy!  — 

Converting a simple and small iOS app was far easier than expected. Of course webviews, gesture recognizers, navbars, etc. are not supported or work differently, but at a first glance there are not a lot parts with visual regressions!

Invalid Gradle Private Key  — 

Gradle did reject my ssh key due to invalid privatekey.

Read »
Android Permission now requires a description  — 

Now, Android apps require a description for each permission. Back then, it was optional.

Read »
Updating Bitrise binary uploads  — 

Bitrise binary uploads cannot be updated after saving. Instead they need to be deleted and recreated. Thus all workflow steps need to be updated if they rely on the data.

Read »
ftp-simple vscode workspace  — 

ftp-simple allows opening FTP connections as VS Code workspace!

Android XML Translations  — 

The Android Studio tooling for Android apps checks and validates all translation keys. Even if they are present within the base language. This comes in handy after greater refactorings.

Read »
Swift Coverage for VS Code  — 

When developing Swift in Visual Studio Code there were a few cases, where I preferred Xcode. Beside the obvious cases like iOS Development, managing certificates and provisioning profiles, there was one big case left: Writing unit tests.

Read »
Upgrading a server-side Swift project to Vapor 4  — 

The past few days I created a new server using Vapor and hit vapor new <project> --auth which created a Vapor 3 server. Later I upgraded the young project to Vapor 4, but found some lack of practical information about the upgrade on the internet. So here I share my subjective experience and try to give you some tips.

Read »
Swift, VS Code and you  — 

Editors like Visual Studio Code live from a wide range of extensions and customization. In contrast there are IDEs like Xcode and AppCode, which have everything set up and are ready to go. In order to provide a rich set of features, they cannot not offer the same level of flexibility. Which editor you might want to use is a highly personal decision.

Read »
Debugging Swift in VS Code the old way  — 

Running and debugging your targets in Visual Studio Code is not prepared by default. Especially for us Swift developers this might come unexpected, especially in comparison to Xcode. In VS Code we require extensions and configs for this purpose.

Read »
InferIt: a Constraint Solving Package Manager  — 

The initial idea behind InferIt was to create some mixture of a constraint solver and a dependency manager: you would just tell it what to install and it would gather as much information as possible to install it.

Read »
Archery 0.3.0 released  — 

Archery is about doing something with your project’s metadata. The new version 0.3.0 puts everything on steroids and allows you to script your metadata. A detailed overview of all changes can be found on GitHub.

Read »
SDE 2.7.0 released  — 

Today I released the new 2.7.0 update to SDE for VS Code and the companion project sourcekite has been updated, too.

Read »
Apple’s SourceKit LSP and SDE Roadmap  — 

Apple recently announced to develop a language server for Swift and C-family languages. Or said more clearly: Apple started development to support every editor implementing the language server protocol like VS Code, Sublime Text, Jet Brains‘ IDEs and Atom.

Read »
CommandMine  — 

Command mine is a concept of a swift library for parsing command line arguments. It is designed to support asynchronous implementations of CLIS, that may even be used inside frameworks.

Read »
Why I created Rock for Swift CLIs  — 

I excessively make use of the official Swift Package Manager as I usually do some CLIs or other stuff. For this use case it is really great. When developing Apps, Carthage and CocoaPods come in handy, which are great, too. For Web Development there are yarn and NPM, which support project based and global installs. Then there are gem (global) and bundler (project) for ruby based dependencies.

Read »