Sam Soffes

Static

Posted on

Today, we open sourced a framework for iOS we've been using a ton internally called Static. It's a Swift 2 framework for working with static table views. We use it to power tons of screens in an upcoming project. It's also made prototyping table view-based things super productive.

Static's goal is to separate model data from presentation. Rows and Sections are your “view models” for your cells. You simply specify a cell class to use and that handles all of the presentation. See the Usage section below for details.

Static is written in Swift 2 so Xcode 7b3 is required. There aren't any dependencies besides system frameworks.

Continue reading →

Git + Redis Backed Blog

Posted on

I switched back to the old blog I was using before Roon (this blogging platform I used to run). Right before Roon, I had all of these fun ideas for the nerdy blogging platform that I wanted.

The main idea was all of my posts lived in their own repo. This is great for a bunch of reason. Being separate from my blog's source code is nice since it changes every few years. Even when I was blogging on Roon and Ghost, I kept this up to date (with some scripts). I saw a talk from one of the guys that works on Archive.org and was really inspired to start saving as much as I can.

Since my posts are in their own repo, a simple post-commit hook can update my blog. GitHub simply posts to an enpoint on my blog that causes it to reimport my posts into Redis. Another added benefit is people can PR typo fixes. When I click the merge button on GitHub, the webhook fires and automatically updates the post on my site. Neat!

Continue reading →

Network Testing in Swift with DVR

Posted on

Networking testing is hard. There’s a few approaches. The most common I’ve seen is stubbing requests. OCMock is a common approach.

Personally, I’ve never been a fan of mocks and stubs. At some point you just end up testing your mocks and stubs instead of your real code. When it comes to testing, I want unit tests to test logic and integration tests to test compositions.

I think focusing on testing everything in isolation isn’t great. If you have stuff that is hard to test in isolation, either it should be redesigned to more encapsulated or due to the nature of it, you need to test it at a higher level.

Continue reading →

SyntaxKit

Posted on

I sat down to work on Whiskey the other day and go super side tracked. I have this new master plan to greatly improve Whiskey's markdown parsing, but it's a lot of work so I started procrastiworking. I noticed some bugs in SyntaxKit, what I wrote so Whiskey can do code coloring for things other than Markdown, and decided to start fixing them. Because I was procrastiworking, the logical first step was to rewrite it in Swift 2 :)

Since this isn't terribly specific to Whiskey, I decided to open source SyntaxKit. It makes TextMate-style syntax highlighting easy. It works on iOS & OS X. There aren't any dependencies besides system frameworks. Boom.

Carthage is the recommended way to install SyntaxKit. Add the following to your Cartfile:

Continue reading →