Blog
Split Keyboards
September 06, 2023 - 283 words - 2 mins
If you do work on a computer for a living (which is a ton of us, even if we're not programmers). It could be fun to consider adopting an ergonomic/split keyboard. Traditional keyboards encourage a sideways angle of the wrist, and tension in the shoulders and full-size keyboards also encourage moving…
read more
Fancy Math In Swift
May 23, 2022 - 687 words - 4 mins
Fancy Math In Swift
Like Objective-C before it, Swift has access to the Accelerate framework. This is a framework made to use a computer's video card for what it does best: doing math with a bunch of floating point numbers. Commonly this is used to do all the math necessary for 3D graphics and such,…
read more
Removing Publicist
May 05, 2021 - 409 words - 3 mins
Publicist first arrived in the app store on April 14, 2019. Now, a little more than two years later, I'm removing it.
Publicist started as a free app with a subscription model to support it. The idea was that this would allow for users to have a free trial to see if the app worked for their workflow…
read more
Testing Subscriptions
March 23, 2021 - 465 words - 3 mins
If you are working on subscriptions through Apple's in-app-purchase system, here are some tips that might help you:
1. Making New Sandbox Users
While Apple officially recommends using the trick where inserting the plus sign and any addition before the name part of your email (aka subaddressing) to m…
read more
New Publicist
March 15, 2021 - 322 words - 2 mins
A new version of Publicist is now live in the app store!
This version includes a few big changes I wanted to tell you about.
1. Removing Subscriptions
Since the Mac App Store does not allow for upgrade pricing, I thought subscriptions might be the best fit for the app. This way I could provide a fre…
read more
2021 Formatter Update
February 01, 2021 - 76 words - 1 mins
This weekend I published a new version of Formatter. A recent version of Xcode caused the extension to stop working, but it's ok now. If you're using Xcode 12.2 or higher, you'll want to download this update to continue enjoying having a handy JSON-format button while you're working on your iOS and …
read more
Progress Expectations
January 21, 2021 - 249 words - 2 mins
Expectations are pretty common when you're writing unit tests. Generally an expectation represents an event you want to wait for in your test. You can tell the test to wait until that expectation is fulfilled.
func testSomethingWorks() {
let itHappened = expectation(description: "The event sh…
read more
New Feature Coming
January 14, 2021 - 146 words - 1 mins
Hello Friends!
You might be wondering about Publicist as there hasn't been an update for some time. I want you all to know that Publicist is not dead. This last year has been rough with lockdowns and reduced business, but I am working an an update. This new version will have improved insides, a nice…
read more
A Dream Client
October 22, 2020 - 363 words - 2 mins
I'm happy with the clients I've worked with in the last years. Most projects have been interesting and filled with nice people. I'd like to take it a step further if possible and share more of what it's like to be a consulting software engineer.
Most of us have to sign NDA's and such to work with a …
read more
Obscure APIs
October 21, 2020 - 636 words - 4 mins
Here are 5 APIs provided by Apple that you may not know about:
1. SearchKit
SearchKit is a C-level API that provides quick full-text search for your Mac apps. I've seen many questions about how to enable the full-text search extension in SQLite to use in CoreData or how to install and setup some thi…
read more
Buttons Over Views
October 20, 2020 - 259 words - 2 mins
One enemy of accessible apps is the use of views instead of buttons. A button, UIButton or NSButton, handles taps and clicks from users. For users who have trouble doing that, iOS and MacOS have accessibility support to enable those users to get their work done. Many developers (me included before) …
read more
RTL Considerations
October 19, 2020 - 670 words - 4 mins
Here are some things to keep in mind so that you app can handle right-to-left languages like Arabic and Hebrew.
Guidelines
While Apple provides information about supporting RTL (right to left), I generally refer to Mozilla's RTL Guidelines and Google's for information about what should flip for RTL …
read more
Swift Package Testing
June 23, 2020 - 269 words - 2 mins
Swift 5.3 brings new improvements to the package manager so it finally supports including resources in your packages. You can read the proposal on Swift Evolution here if you're into that.
This has been the only reason I haven't moved libraries I maintain, such as MobiledocKit, to Swift Package Mana…
read more
New Podcast
May 20, 2020 - 107 words - 1 mins
I started a podcast to tell the story of Roundwall Software and my efforts to become an independent developer. Episodes will come weekly on Thursdays and I'm keeping them fairly short, never more than 15 minutes each. This is not a sugar-coated fluff piece and I'll be talking about nearly going bank…
read more
Release Day With Migration
March 21, 2020 - 128 words - 1 mins
Publicist version 1.4 is now live! You can find it in the App Store. As usual, it is free to use with a yearly subscription to unlock posting to Ghost and Wordpress.
This version adds two major features:
Migration
Publicist can now move all your blog posts over to a new blog. This way you can avoid …
read more
Core Data Errors
March 09, 2020 - 355 words - 2 mins
If you're trying to use Core Data in your project, especially if you're testing, you might find some obscure errors. Here are a few and how to fix them:
Multiple Entity Descriptions:
+[BlogEngine.Account entity] Failed to find a unique match for an NSEntityDescription to a managed object subclass[er…
read more
Publicist 1.3.0
December 19, 2019 - 121 words - 1 mins
Publicist 1.3.0 is live finally!
There was quite some delay due to my fall holiday, traveling to visit clients, and a mysterious crashing bug, but that's all worked out now. Thank you for your patience.
This new version mostly fixes bugs like issues saving certain kinds of blog posts, incorrectly di…
read more
Peer Lab Closing
August 20, 2019 - 292 words - 2 mins
The first Peer Lab meeting was on July 20th, 2013. Just over 6 years ago. Peer Lab in Amsterdam is finished.
It was originaly created as a non-alchoholic developer gathering where we could do more than just talk and argue about tabs vs spaces. I wanted an event where we actually worked on things and…
read more
Publicist
July 13, 2019 - 66 words - 1 mins
Publicist currently supports posting, including images, to:
WordPress
GhostIt's available now!
read more
Publicist 1.2
July 03, 2019 - 0 words - 0 minsMarkdown Support In WordPress
June 15, 2019 - 208 words - 2 mins
If you are using a self-hosted installation of WordPress, you may notice your blog doesn't seem to understand markdown. Unless you really enjoy only using plain text or writing HTML yourself, here are ways I have found to remedy the situation:
Option 1: Install Jetpack
Jetpack is the WordPress compa…
read more
The Roundwall Guide To Client Work
June 12, 2019 - 1262 words - 7 mins
Things to consider if you want to do client work.
So you want to consult or you are consulting (I say consult because "freelance" has such a casual and kind of negative/lazy connotation in some places). Traveling down this path means you've decided to trade a more "permanent" pos…
read more
Sharing Test
May 27, 2019 - 49 words - 1 mins
This is a test of the new sharing extension. If you're seeing this, it means that it appears to be working just fine. You can expect to be able to use it yourself soon in Publicist which you can find here.
read more
Publicist Update
May 05, 2019 - 200 words - 1 mins
Publicist version 1.1.0 is now live in the App Store. This version corrects the rather embarassing problem where Publicist did not work with newer versions of Ghost.
Development on Publicist started over a year ago and most of my work to support Ghost was tested against my own blog. Ghost before ver…
read more
Terms Of Use
April 23, 2019 - 0 words - 0 minsYou Should Write
April 17, 2019 - 576 words - 3 mins
If you are a developer, even if you are just getting started learning to program, you should be writing. I didn't take this advice myself for the first years of my career and I regret it. When I did finally start writing, I was embarassed by how bad it was. If I had started sooner, I'd be even bette…
read more
Release Day!
April 14, 2019 - 12 words - 1 minsMobiledoc Sample file
December 22, 2018 - 875 words - 5 mins
Hello!!Hello.Hello.Hello....— Ash Lindquist (@A_Lindquist) October 27, 2018
View this post on Instagram Conehead (I think) mantis nymph. Looks like it was invented for a big-budget sci-fi flick. A post shared by Tikitu de Jager (@tikitudej) on Oct 27, 2018 at 12:53am PDT
read more
Formatter 1.3
December 21, 2018 - 213 words - 2 mins
A new version of Formatter is available on the App Store now. It includes a few improvements I hope you'll enjoy.
You can find it on the App Store now!
Front-matter Ignoring
It can be common for files that have JSON to include some other information above it. Formatter previously would fail to handl…
read more
Privacy Policy
December 20, 2018 - 0 words - 0 minsWith An Image
December 18, 2018 - 30 words - 1 mins
If you are reading this, Publisher (the upcoming blog publishing app) has successfully posted its first image. That means we're making progress towards the initial release!
read more
Introducing Publisher
November 24, 2018 - 748 words - 4 mins
Way back nearly a year ago, December 16th I started work on a blog publishing app. There are several approaches to this on the Mac, but I felt the need to build another.
Competition
Apps like MarsEdit 4 and Blogo offer the complete package. You can write, edit, publish, and then manage the articles…
read more
JSON Handling
November 08, 2018 - 759 words - 4 mins
The Problem
Let's say you have a handful of items in your code where the items seem quite similar, but are slightly different. For example, bus tickets: You might have paper tickets, monthly passes, and senior discount cards.
struct Paper {
let validUntil: Date
let currency: String
let pr…
read more
More Types
October 22, 2018 - 722 words - 4 mins
Sometimes the answer to your programming problem is "use more types". I spoke at Mobilization 8 this past weekend and I discussed a particular programming issue with someone. Here is a version of that problem (with the details changed to protect the innocent).
The Setup
Let's say you have …
read more
Strong Self in Swift
September 18, 2018 - 298 words - 2 mins
Swift 4.2 has arrived which gives us the ability to replace code bits in your weak-reference blocks like guard let strongSelf = self else { return } or guard let 'self' = self else { return } with new-fangled, more direct things like guard let self = self else { return }. This is generally nicer, ea…
read more
Diversity
July 14, 2018 - 623 words - 4 mins
We in the Apple-platform space suffer from a lack of diversity in our conferences. I’ve seen this vastly improve in the US, but over here in Europe it still seems fairly bad. Every month I hear about a new conference which promotes their all-white and often all-male speaker lineup. They often brag a…
read more
Making a Date Server With SwiftNIO
March 15, 2018 - 1274 words - 7 mins
Apple just released SwiftNIO. A framework for low-level asynchronous IO in Swift. It was based on a familiar called Netty (which fun fact is written by one of the devs now working on SwiftNIO at Apple). When I heard the presentation to announce the library at try!Swift Tokyo this year, it sounded su…
read more
The 30 Day Music Challenge you're going to do
February 22, 2018 - 1101 words - 6 mins
Why
Sometimes a cheesy random challenge helps can help you get out of your rut and start something new. I propose we do exactly that. All of you who play/sing music: record yourself playing every day for 30 days. Put the videos on Instagram. The time limit Instagram imposes (max 1 minute) will help …
read more
Wacky JSON
January 23, 2018 - 524 words - 3 mins
In Swift, turning JSON content from a file or a server into structs or classes in code is much friendlier now that we have the Encodable and Decodable protocols. For simple cases you need to write almost no code and can quickly get on to something else.
For example, if you see this:
{
"posts&…
read more
Hiring And Retaining
January 18, 2018 - 605 words - 4 mins
I've heard from a great many companies here in the Netherlands (and elsewhere) that hiring and retaining engineers is super difficult. Here are some things to consider to make things easier for your company:
Is your company involved in the right communities?
If you're looking for, let's say, Ruby de…
read more
Core Data Performance
January 09, 2018 - 41 words - 1 mins
Last year I spoke at PragmaConf in Italy and the video of my talk is now available:
read more
How I Approach Rat-Nest CoreData Projects
November 05, 2017 - 474 words - 3 mins
Part of my job involves working with existing projects, some with overly complicated Core Data implementations. Usually clients request that I help fix performance problems in the project or at least clean them up. Here is how I approach each project:
#####1: Clear out the cobwebs
First thing I do i…
read more
Ghost's API
October 24, 2017 - 404 words - 3 mins
Ghost is a blogging platform written in Node JS that was released a few years ago after a successful Kickstarter campaign. They promised a blogging platform without all the complications of Wordpress and even partnered with companies like Digital Ocean to make it easy for users to try and use.
One o…
read more
Speaking
October 20, 2017 - 90 words - 1 mins
Upcoming
I'm available to speak at future conferences. Let me know!
Previous
360iDev 2019: No Progress Like Slow Progress
Mobilization 2018: Testing the Tricky Stuff
trySwift! Tokyo 2018: Getting to Know The Responder Chain
Pragma Conf 2017: Core Data Performance
Techfest Cluj: Core Data Perform…
read more
The Case of the Broken Buttons
September 23, 2017 - 720 words - 4 mins
On a client project the other day, I spent most of the day tracking down a rather serious bug. All UIBarButtonItems were nearly un-tappable on iOS 11. These were not especially crafty buttons, most of them were using either an icon of reasonable size or a title. Some were even using the system stand…
read more
How To Write IRC: Part 6
August 26, 2017 - 616 words - 4 mins
This is a continuation of the article published yesterday: How To Write IRC: Part 5
Framework-ification
After all this work, it was time to make the actual framework. I started by making a new project with the Cocoa Framework template and copying over the important files from my demo project.
Next,…
read more
How To Write IRC: Part 5
August 25, 2017 - 946 words - 5 mins
This is a continuation of the article published yesterday: How To Write IRC: Part 4
More Tests!
Next larger feature I wanted to test was joining a channel. As I planned before, joining a channel should create a new object to give developers a way to interact. For this I modified the first test I wro…
read more
How to Write IRC: Part 4
August 24, 2017 - 1251 words - 7 mins
This is a continuation of the article published yesterday: How To Write IRC: Part 3
Async Integration Testing
Some of you might be reading along and think to yourself, "This guy hasn't tested anything! He doesn't assert anything. What kind of lies is he trying to sell?". To that I say, &qu…
read more
How To Write IRC: Part 3
August 23, 2017 - 557 words - 3 mins
This is a continuation of the article published yesterday: How To Write IRC: Part 2
Defining the API
Before you run off and make a framework, it can be helpful to do a bit of brainstorming and plotting or scheming first. For this part I pulled out a sweet notebook and my fancy pencil. After some doo…
read more
How To Write IRC: Part 2
August 21, 2017 - 1817 words - 10 mins
This is a continuation of the article published yesterday: How To Write IRC: Part 1
Spike!
When I write a framework, I don't start by making a framework. First I mess around and build what you might call a "spike" to get an vague idea how things work. I was fairly familiar with the IRC pro…
read more
How To Write IRC: Part 1
August 20, 2017 - 540 words - 3 mins
IRC is a fairly old protocol for chatting with people on the internet. It's not super popular these days because even more technical people have migrated to things like Slack or Hipchat which may or may not be more friendly to use. Still, I decided to try to write a library for interacting with IRC …
read more
Making SwiftKilo Part 2: Raw mode
May 13, 2017 - 718 words - 4 mins
In the next chapter of the tutorial, I went through the steps to enable raw mode. In a typical command line app, you print some things on the screen and maybe wait for input for the user on the next line. The terminal is setup by default to send your program this input one line at a time which means…
read more
Core Data unique constraints
May 05, 2017 - 314 words - 2 mins
There's a bug with Core Data such that if you have two entities, A and B, with a one-to-one relationship between them, that relationship will not be setup properly. This bug doesn't care wether you do your work in Objective-C or Swift or both.
The steps to reproduce are as follows:
Create two entit…
read more
Making SwiftKilo Part 1: Setup
April 29, 2017 - 525 words - 3 mins
Some time ago, I read about AntiRez writing a text editor in C. This dude is pretty hardcore in C and does things like maintain Redis, an in-memory database nearly every startup you ever heard of is using or will soon use. It was super cool to flip through and read about the editor. I was especially…
read more
You Belong Here
April 08, 2017 - 603 words - 4 mins
Everyone around you right now, all those people who intimidate you or make you feel like you're a fraud have been where you are now. Nobody leaped from a test-tube as a fully-formed senior developer. They all had to start with no clue and find out how to move forward. Many of those people remember w…
read more
Formatter
January 06, 2017 - 392 words - 2 mins
If you work with JSON files in your job on a regular basis, you will likely benefit from my new app, Formatter.
It provides a drop window to reformat JSON files quickly, an Xcode extension to do it from inside Xcode (to which you can assign a keyboard shortcut), and a Quick Look plugin to see format…
read more
Turning 30
September 27, 2016 - 579 words - 3 mins
The people I looked up to when I learned to program are now getting to about 50 and I've seen many of them suffer from stress and endless sitting. I've seen some try to do something about it and several succeed even. This has motivated me to make sure I take care of myself. In high school I was forc…
read more
Adventures in Vimscript
September 19, 2016 - 898 words - 5 mins
Last week Vim 8.0 came out. I was pretty excited because, among other things, Vim now supports asynchronously running code in plugins. Until now, if your plugin code took time (like compiling your project or some auto-completion code) it would cause Vim to freeze until it was finished. No typing, no…
read more
Modifier Keys
September 10, 2016 - 1009 words - 6 mins
A keyboard big enough to have all the possible letters and symbols you would need to type when coding or even writing an email would need to be huge. You'd need a key for every letter, lower case and upper case, including the letters less common in English like é or æ, every symbol like , and ; and …
read more
Transference
July 09, 2016 - 393 words - 2 mins
One of the signs of an expert programmer is a thing I call transference. I learned about it while reading a book about learning to play music and it applies to programmers as well.
A novice musician is hard at work studying exactly what to do with their fingers and exactly the patterns necessary to …
read more
Building the KC60
May 24, 2016 - 1294 words - 7 mins
Recently I have been super pumped on mechanical keyboards. I found one small enough to easily use when I'm on the couch or in a café which made it easier to spend most of my time using one and get used to it. At this point it feels weird and uncomfortable when I use my regular laptop keyboard!
Keybo…
read more
Fun With Typing
February 23, 2016 - 546 words - 3 mins
As a developer, I spend quite a bit of time typing. Typing code, typing email responses to clients and recruiters, typing jokes in Slack.
As a child, I was fortunate enough to have access to a computer at home and the internet. Our computer was not fancy enough though to play any of the games the ot…
read more
The difference between classes and structs in Swift
February 23, 2016 - 575 words - 3 mins
Today I assigned my students (I teach a bootcamp now) to write 400-500 words about one of the topics we have covered in class, so I thought I would do the same. Here goes!
Classes and structs are similar. Both can have properties, both can have methods. This can make it a bit confusing for developer…
read more
Swift Enums for Error Reporting
January 09, 2016 - 739 words - 4 mins
In Apple's block-based API's, you'll often see a pattern like this:
func dataTaskWithRequest(request: NSURLRequest, completionHandler: (NSData?, NSURLResponse?, NSError?) -> Void) -> NSURLSessionDataTask
The function expects you to provide an NSURLRequest and a block and promises to execute y…
read more
Semitones 1.0.1 Released
November 20, 2015 - 596 words - 3 mins
Up to the day I am writing this, Semitones has earned me 122$ in proceeds. That's after Apple's 30% cut from sales through the App Store. That's not much, but it is already more than my last app made in it's entire lifetime. Semitones has a simple business model: an up-front price of 4$. No in-app p…
read more
Introducing Semitones
November 09, 2015 - 378 words - 2 mins
In the last few years, I've started taking my bass playing more seriously. I've found a teacher, joined in on jam sessions, and sat in for bands like Airplane Mode. In my search for ways to help me improve, I found inspiration for my next app.
Becoming a better musician includes some level of music …
read more
What I'm Working On
September 24, 2015 - 675 words - 4 mins
Some of you have been asking what I'm working on lately, so here's your answer.
1. Practicing music.
In middle school and high school, I played bass for the school orchestra. I played cello for that first year, but I like to pretend that didn't happen. I stopped playing music after that. Partly beca…
read more
Handling iOS image uploads with Paperclip
June 17, 2015 - 327 words - 2 mins
If any of you happen to do some backend work and iOS work at the same time or work on a team that does, this might be a helpful tip for you:
Let's say you have a Rails app that uses the Paperclip gem by Thoughtbot to handle file uploads.
Then let's say you have an iOS app that wants to upload photos…
read more
Gateway View Controller: A Pattern for handling app login
June 14, 2015 - 774 words - 4 mins
As Apple recommends in their Interface Guidelines, apps should try provide functionality without requiring a login. Ideally, an app would only ask for your login information when you get to features in the app that does need it.
Unfortunately, there are a great many apps that simply lock you out of …
read more
Resources for Getting Started
April 09, 2015 - 270 words - 2 mins
First, let's start with some helpful resources:
iOS Design
Apple's Human Interface Guidelines
WWDC 2015 Videos
Designing For Future Hardware (This is more about prototyping and incredibly informative)
WWDC 2014 Videos
Creating Custom iOS User Interfaces
Designing Intuitive User Experiences
Maki…
read more
One Platform At A Time
April 07, 2015 - 439 words - 3 mins
We work and talk with many startups and a question that often comes up is, “Does it make sense to build our product for iOS and also for Android for our initial launch?” Our answer to this question is a resounding, “No.” This is not because we want our clients to only consider iOS and therefor only …
read more
Roundwall Software's Open Source
April 06, 2015 - 252 words - 2 mins
At Úll this year, Arik Devens challenged us to share more open source code with each other. Here at Roundwall Software, we benefit greatly from open source projects, both large and small ones, all the time, so it seems only right to give back. Now Roundwall Software's apps haven't been absurdly popu…
read more
Custom Segues for Fun and Profit
March 16, 2015 - 820 words - 5 mins
With new devices like the iPhone 6+, even naysayers are considering using Storyboards. Adopting Storyboards, even for a portion of your app, means easy access to plenty of handy features such as Size Classes, Auto-Layout, and my new friend: custom animations in view controller transitions.
Now you c…
read more
Why
February 15, 2015 - 220 words - 2 mins
One important part of success in any field is answering the question “Why?” As a musician, you might play a solo that everyone is impressed with, but unless you know why that solo worked, you’ll rely on luck to do it again the next time.
In software this is just as important. Why is your app crashin…
read more
App Video v2
January 30, 2015 - 33 words - 1 mins
My previous demo video was confusing to many people, so here is attempt #2. It's getting better!
read more
Operation Morale-Boost: Ghosty Progress
January 22, 2015 - 65 words - 1 mins
While this project hasn't quite turned out like I originally intended, it has resulted in a fairly useful app I'm happy with. It has some rough edges that need some love and attention still, so here is a little video preview while you're waiting to play with the real thing.
read more
Untitled
January 10, 2015 - 40 words - 1 mins
Project: Untitled
something
Total: $0.00
Made with Chainguard.app
itms://itunes.com/apps/chainguard
(Everything above is my first published post from my app-in-progress Ghosty. It's not much, but this means it's working!)
read more
Operation Morale-Boost: Meet Ghosty
January 08, 2015 - 205 words - 2 mins
The first week of my morale-boosting project is nearly complete and I would like to show you what I've been working on.
The app is (for now) called Ghosty. It is an iOS app for connecting to blogs using the hip platform, Ghost. Like Wordpress, they provide an option to host it yourself or to pay for…
read more
2014: The Year Business Worked
January 07, 2015 - 176 words - 1 mins
I didn't want to write a long retrospective, but I thought I should mention something about the last year.
2013 was stressful and terrifying. I almost had to borrow money from my family to leave Amsterdam and move back to Oklahoma where I would need to live with my mom while I recovered. I didn't ju…
read more
Operation Morale-Boost
January 05, 2015 - 171 words - 1 mins
It's the start of a new year and that seems like a good excuse to try something different. I'd like to work on a project for funsies. For this project, I don't want to care about market, profits, making a client happy, or any of the junk that fills my RSS feeds with doom and gloom. I'd like to pick…
read more
Say Hello To Chainguard!
August 09, 2014 - 716 words - 4 mins
As I wrote in a previous article, my last attempt at making an app had problems. I'm pleased to announce today that I've finally launched something much better.
Parts was an app to keep up with items you needed to buy for projects. It could remember where you were when you found an item, what the it…
read more
Magical Growing UITextViews inside UITableViewCells
July 10, 2014 - 538 words - 3 mins
I've seen quite a few attempts at solving this problem and all of them seem to be more complicated than necessary.
Many solutions I see involve using a method like this in your tableview's datasource:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NS…
read more
Services
February 24, 2014 - 534 words - 3 mins
App Development
Zenly
Zenly is a live map of your friends and family. It’s the most fun way to meet up — or just see what’s up! — so you can feel together, even when you're apart.
Samuel was responsible for fixing up the app's support for right-to-left languages like Arabic. This meant fixes across …
read more
What's Wrong With My App
January 31, 2014 - 838 words - 5 mins
Last year I launched my first app that wasn’t funded by a client or employer. It’s called Parts. I never expected it to make millions of dollars, but I had hoped it might at least make enough to pay the rent or some such. In total, it made $44 according to AppViz (a great tool by the way).
After so…
read more
Cargo Culting
January 15, 2014 - 670 words - 4 mins
A cargo cult is any of various native religious cults of a millenarian and messianic character located in the southwestern Pacific islands, holding that spirits will bring large cargoes of modern goods for distribution among its adherents. [1]
After the arrival of the computer and the practice softw…
read more
Coding Exercises for Prospective Hires Are Stupid
January 03, 2014 - 423 words - 3 mins
Earlier on App.net/Facebook I posted this:
"Also, asking potential hires to build apps as part of the hiring
process is stupid."
Perhaps short-text social media is not enough to properly elaborate my thought. Here’s a better version:
If you want to see professional work from a developer, p…
read more
2014: The Year I Wrote Better
January 02, 2014 - 461 words - 3 mins
Getting Better
Those of you who already read my blog know that I’m not the best writer. You’re likely either reading this because you’re either related to me or the technical information has helped you. Thank you for reading! This year is going to be better. More content, better writing, you’re in f…
read more
Intelligence
December 18, 2013 - 420 words - 3 mins
Words like “intelligent” and “stupid” and “smart” and “genius” get
thrown around quite a lot these days. I think they’re all mostly
bullshit and distract from the real issues.
In software, we often run into people who lack the depth of knowledge
and experience in the various fields necessary to make…
read more
#define
December 13, 2013 - 120 words - 1 mins
When to use #define:
When you’re declaring macros like in Apple’s:
#define UI_USER_INTERFACE_IDIOM() ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? [[UIDevice currentDevice] userInterfaceIdiom] : UIUserInterfaceIdiomPhone)
I’m actually not even sure why this was…
read more
Duck Types and Objective-C
November 25, 2013 - 472 words - 3 mins
I just finished the book, Practical Object Oriented Design in
Ruby. I haven’t been paid to write Ruby code in years and I still found the book incredibly useful. Sandy Metz writes excellent explanations for many things I have felt about code I have seen while working on projects.
In the last chapter…
read more
Capacity
October 31, 2013 - 570 words - 3 mins
I try to be extra careful to consider my capacity before agreeing to do something for or with someone (or even for myself). Mis-judging capacity seems to often be the cause of frustration and failure. I think now I finally have the capacity to do something cool that isn’t for a client.
I think about…
read more
How to get started with remote pairing quickly
October 22, 2013 - 957 words - 5 mins
Remote Pair Programming is a thing now that people do. Basically, it enables you to learn from and work with anyone anywhere, ever. You can do that thing we love to do (write code) with a diverse range of people.
So let’s say you’ve decided you like this idea of getting out of the
bubble of programm…
read more
Thank You
September 13, 2013 - 205 words - 2 mins
The annual 360iDev conference just happened. I got to go, I enjoyed it very much. This time I wasn’t just an attendee, I joined the ranks of the great 360 speakers before me and attempted to do them proud. Soon my talk will be online and any of you who missed it can watch it. People I didn’t know to…
read more
Make Git Friendlier: status
August 05, 2013 - 207 words - 2 mins
Since I couldn’t sleep tonight, I watched a presentation by this guy
Zach Holman who works for GitHub.
One tip he shares makes the output from git status much friendlier and I thought I’d share it so you don’t have to watch an hour of talking to find out about it.
Instead of:
git status
try typing:…
read more
Community
June 13, 2013 - 226 words - 2 mins
Being a part of Appsterdam and trying again to run my own business has made me think differently about community.
We grew up as nerds in school and learned to expect people would think we’re lame for the things we loved. We kept the things we loved to ourselves and looked for the few people on Earth…
read more
Manually set location on an item?
May 25, 2013 - 9 words - 1 mins
Manually set location on an item?
read more
Think of the Children
March 21, 2013 - 357 words - 2 mins
When I was in college for electrical engineering, I learned to program
objective-C for the Mac and that has now become my full-time job instead
of engineering. The primary reason for pursuing a life of software
development instead of engineering was the community. The developers I
read about like Mi…
read more
Failure
February 20, 2013 - 629 words - 4 mins
It is becoming popular, especially in American tech culture, to
encourage failure as a natural part of learning and a key to success.
Humans fail in many casual ways to learn basically anything, even basic
skills like walking.
Failure in software is often expected on a very minor level. Maybe I’ll
r…
read more
Web Developer Admits: Objective-C > HTML5
December 27, 2012 - 83 words - 1 mins
Web Developer Admits: Objective-C >
HTML5
"It felt like hammering nails into in a wonky floorboard. We fixed one
problem and another would pop up. We probably spent over 80% of our time
fixing weird side-effect glitches and making our code work within
PhoneGap correctly. But eventually we fe…
read more
Down with NSLog
December 06, 2012 - 485 words - 3 mins
NSLog is a fun debug tool, but it has no place living in your version
control history. Those of you who came from other languages and
platforms might be used to a world where NSLog’s cousins, console.log,
print, puts, and the sort were all you had to try to figure out what was
wrong with your code.
…
read more
No Comments Left Behind
December 01, 2012 - 357 words - 2 mins
I would like to explain my hatred for commented-out code. Some might
call this hatred extreme. They’re probably right.
When I look at code interspersed with commented-out lines, I think of my
own home which is often covered in dog hair. Now my dog is adorable, but
he does in fact shed quite a bit.
…
read more
Switches Get Stitches
November 19, 2012 - 819 words - 5 mins
We have a new rule here at Roundwall Software: switches get stitches.
Switches and if statements can easily pile up in a method and make it difficult for someone to understand what a method does. They also makes testing harder because tests that cover a method need to cover every possible branch pat…
read more
Code Examples
November 15, 2012 - 301 words - 2 mins
The point of sample code is to show you just enough code to communicate
a concept. Sometimes code for a given demonstration (such as showing
how to use parts CoreData or CoreText) requires a bit of boilerplate in
order to show the concept.
For example, let’s consider a sample project to demonstrate …
read more
External Storage with Core Data
November 11, 2012 - 212 words - 2 mins
New since iOS 5.0, we have a new weapon at our disposal for Core Data.
External Storage lets you tell Core Data that you’re going to jam large
data blocks (mp3s, pngs, whatever) into a property on your Managed
Object. Normally you might say “Oh no! Why would you do that? Everyone
knows you shouldn’t…
read more
Quote: Growing Object Oriented Software
November 05, 2012 - 79 words - 1 mins
None
We cannot emphasize strongly enough that first-cut code is not finished.
Its good enough to sort out our ideas and make sure we have everything
in place, but its unlikely to express its intentions cleanly. That will
make it a drag on productivity as its read repeatedly over the lifetime
of the …
read more
A Massive Speed Difference In iPhone CoreData
October 19, 2012 - 397 words - 2 mins
It was brought to my attention last night by my good friend, Collin
Donnel, that using a fetch request to grab
objects based on their objectID’s was much slower than simply using a
for loop and the NSManagedObjectContext method
-existingObjectWithID:error: to grab each object one by one. My initial
…
read more
My Apology
August 19, 2012 - 345 words - 2 mins
I take back everything I said about
RubyMotion. While spending some time
hanging out with some old musicians (guys in their 60s) I came to
realize just how terrible I sound by saying pretty much anything
negative about efforts in software-land like RubyMotion. Largely my
motivations for disliking th…
read more
Buzz Andersen: Getting Final Cut
June 14, 2012 - 19 words - 1 mins
Buzz Andersen: Getting Final
Cut
I love this post. Buzz is awesome.
read more
Your Best
June 06, 2012 - 615 words - 4 mins
At work, everyone expects you to do your best. Wether you are a
freelancer, a completely-independent developer, or a company person,
everyone expects you to do your best. But what does that really mean?
Your best? The best work you’ve ever done? This phrase keeps me up at
night. This phrase makes me…
read more
I have decided
May 23, 2012 - 161 words - 1 mins
I will make myself proud of myself.
I will no longer use my current situation as an excuse for my lack
of action or progress.
I will not be distracted by tools or toys, but press on to the
solution and that which gets me there.
This is the year I become who I want to be instead of simply
planning i…
read more
The Amsterdam Plan
March 23, 2012 - 783 words - 4 mins
Now that I am moving to Amsterdam, I need a new plan. I have learned so very much since the last time I wrote out a plan and I am both excited and terrified.
Previously I was very much against freelance/agency type work due to my frustrating experiences in this field. In the last year I have learned…
read more
Trying this "mechanical keys" thing.
March 21, 2012 - 8 words - 1 mins
Trying this “mechanical keys” thing.
read more
Why I'm leaving
March 20, 2012 - 426 words - 3 mins
adventure
You’re lying to yourself and everyone around you if you ever say you don’t want to go somewhere new. It’s ok, I lie to myself about all kinds of things. Exploration is a critical part of the human condition. A biological imperative to continue the species. Amsterdam is a very new place. A …
read more
No more SOLID
March 13, 2012 - 152 words - 1 mins
The more I research these SOLID principles, the more I see how they don’t necessarily apply to modern programming and even less so to Objective-C. It’s easy to want to over-engineer, over-architect, or over-work anything you do as a programmer. Who wants to miss an opportunity to flex their muscles …
read more
My first talk, "Refactoring and stuff" given at NYC Cocoaheads
March 09, 2012 - 18 words - 1 mins
My first talk, "Refactoring and stuff" given at NYC
Cocoaheads
read more
SOLID Part 2
March 06, 2012 - 436 words - 3 mins
Open/Closed Principle
Ivar Jacobson once said
All systems change during their life cycles. This must be borne in mind when developing systems expected to last longer than the first version.
This is why we want to try to architect our projects in such a way that the future doesn’t become ever so pa…
read more
SOLID Part 1
March 02, 2012 - 504 words - 3 mins
The Single Responsibiliy Principle
Robert C. Martin wrote about the principle in his article back in 2002. The principle states:
"There should never be more than one reason for a class to change."
— Robert C. Martin
As requirements for your project change, your code will need to change …
read more
Object graph dependency analysis
February 26, 2012 - 867 words - 5 mins
How to generate the graph
Generating and reviewing a graph of the object decencies in your app is a super handy way to be aware of your app layout, spot problems in your architecture, and make better decisions when adding new code in the future. With very simple applications, you could certainly …
read more
Quote: You Are Not Ruthless Enough
February 19, 2012 - 73 words - 1 mins
"Even on a tight schedule, last-minute block-ship bugs appear and what should have been a simple, straightforward bug fix will turn into some Giger-esque state-driven nightmare causing everyone associated with the project to invent new profanities because the ones they have don't seem emphatic…
read more
Quote: Super Quiet Non-Understanding
February 09, 2012 - 28 words - 1 mins
If I had to quit a job over this, I would.
http://inessential.com/2012/02/09/super-quiet_non-understanding
read more
Quote: A Design Primer For Engineers
February 06, 2012 - 48 words - 1 mins
Software had been around and making piles of money long before Netscape, but it became a worldwide phenomenal when anyone, anywhere could mail anyone else a picture of their cat.
http://www.randsinrepose.com/archives/2012/01/16/a_design_primer_for_engineers.html
read more
Quote: 10 Tips For Agile Leaders
February 01, 2012 - 68 words - 1 mins
"Failing I can deal with. I fail all the time. I write blog posts that dont resonate. I write software no one cares about. I regret how I handle certain situations and conversations. But I try. And as long as I know I did my best, Im good. Thats what lets me sleep at night.”
—- Jonathan Rasmu…
read more
File watching for fun and profit.
January 29, 2012 - 394 words - 2 mins
Let’s say you want to write some javascript. You’re a good programmer, but you’re not so cocky that you feel infallible. Good news! Just because you are writing in an interpreted language, doesn’t mean you have to cross your fingers when you go to execute your script. JSHint is here to the rescue. C…
read more
Tools
January 14, 2012 - 430 words - 3 mins
When I talk to people who are serious about their computer-related tools (which happens frequently since I write software), I often end up in discussions about how X tool is better than Y tool. These discussions are silly and overdone arguments such as Android is better than iPhone, OSX is better th…
read more
Alternative editors?
December 12, 2011 - 203 words - 2 mins
I’m especially curious how anyone is able to use something other than Xcode for developing things with Objective-C. This is specifically an issue for Objective-C projects as opposed to Rails/Node.js/whatever-else-is-cool projects because those can be done in pretty much any editor.
Current Xcode doe…
read more
RSS Syncing and my attempt at a solution.
November 01, 2011 - 543 words - 3 mins
Some time ago, I read this article by Brent Simmons about an alternative to the Google Reader syncing system pretty much everybody uses to sync RSS Readers together across your laptops, desktops, iPhones, iPads, whatever. Google Reader is nifty and all, but the problems Brent outlines are actually p…
read more
New wider Venture 5.8
October 01, 2011 - 249 words - 2 mins
Shortly after DLX acquired Venture, Venture announced that they would be releasing new, wider trucks. Previously, Venture only made trucks that were 8 inches and 7.75 inches wide. This is all fine and dandy for all skaters who enjoy riding boards that are 7.5-8.0 inches wide or so, but those of us w…
read more
Special place for my team. (Taken with instagram)
August 03, 2011 - 13 words - 1 mins
Special place for my team. (Taken with instagram)
read more
XPC and how it might affect Mac App Architecture
July 29, 2011 - 350 words - 2 mins
Just finished watching the developer video about XPC from Apple. This is actually pretty cool. For those of you who aren’t hip to the goods, XPC is an attempt at a simper-simple way for separate applications to talk to each other. This feature works well with Lion’s new Sandboxing ability which more…
read more
My San Francisco Side Trip
June 09, 2011 - 187 words - 1 mins
For those of you who don’t know, this week is WWDC here in San Francisco. I have been super lucky the last few months and just happen to work with a company cool enough to send me out here to enjoy the fun. WWDC is pretty epic. I love every minute of it.
While I’m here in SF, I had the awesome oppor…
read more
Everything You Wanted To Know About Mud Client/Server Interaction But Were Afraid To Ask
June 02, 2011 - 19 words - 1 mins
Everything You Wanted To Know About Mud Client/Server Interaction But
Were Afraid To Ask
read more
Telnet Server Commands For Dummies
June 01, 2011 - 552 words - 3 mins
The telnet protocol is an entirely ascii-based method of transmitting data that was developed way back before I was born. Telnet lives in what they call the “application layer” of the internet protocol suite. It’s like SSH only without the S (the one for secure). To communicate in telnet land, serve…
read more
Things have changed
May 28, 2011 - 313 words - 2 mins
The two people reading this have probably been wondering to themselves, why self, I do wonder why that splendid chap, Samuel, has neglected to write anything in quite so long? Well two people, your prayers have been answered.
For those of you who just tuned in, heres what you missed:
My name is Sam…
read more
This is my dog
May 28, 2011 - 7 words - 1 mins
This is my dog
read more