Rain, Coffee and Code

by Kevin Sjöberg

Rain and coffee enthusiast who loves programming and finds it hard to be quiet for long periods of time.

Read this first

From zero to a Swift(y) hero

I’ve wanted to learn how to build iOS applications for quite some time. Unfortunately, Objective-C never compelled me and I’ve used this as an excuse not to start.

Apple introduced a new programming language little over a year ago, called Swift. So what is Swift? Well, let’s see what Wikipedia says:

Swift is a multi-paradigm, compiled programming language created by Apple Inc. for iOS, OS X, and watchOS development. Swift is designed to work with Apple’s Cocoa and Cocoa Touch frameworks and the large body of existing Objective-C (Obj-C) code written for Apple products. Swift is intended to be more resilient to erroneous code (“safer”) than Objective-C, and also more concise.

Great, that means that my main objective to not pursue a career in iOS development was gone. I could use Swift! I began reading more about Swift and iOS development in general and quickly realized that I found it

Continue reading →


Vim plugin manager (vpm)

Two years ago I wrote a simple command line tool called vpm. A standalone plugin manager for Vim that was not integrated with the editor itself. It was created because I’m a strong believer in the Unix philosophy of doing one thing and do it well.

At the time, some really great alternatives already existed such as VAM, Vundle and others. The problem I had with these was that they all followed the same pattern: built as a plugin, used within the editor itself and written in VimScript. I didn’t want that. I wanted a standalone tool, like npm, that handled installing, updating and removing plugins for me. Bootstrapping plugins should still be done by the editor and so I went with Pathogen.

 Today

I’m still using vpm on a daily basis but I’ve also realized a couple of things since I first built it.

  • I wrote it in shell script (read: bash)
  • I was bad at updating vpm with new features (see

Continue reading →