We use CocoaPods, and we don't check in our Pods directory for one of our fastest moving apps, Eigen. This sometimes can cause an interesting data churn inside the Podfile.lock when developers have different sha checksums for their Pods. This is weird, what gives?
I am a big fan of developer tooling, as spending time upfront on improving your process can pay a lot of dividends over time. I want to talk about one in particular: Paw. Paw is a native HTTP client with a bunch of features. I want to cover one that means that we can now introduce [AppName].paw files in our mobile projects, making it easy for us to discuss networking requests.
Eigen has hit the point where testing is a chore. This is a positive sign, the app has grown in terms of size, complexity, and number of developers considerably over the last 3 years. The test suite makes us feel comfortable making changes.
On my fastest computer, we're just under a minute - Executed 1105 tests, with 1 failure (0 unexpected) in 43.221 (48.201) seconds for the whole suite. I think I could probably live with 20 seconds max. So I studied how AppCode handles running tests, and this will be an illustrated guide as to how you can easily run the subset of tests in Xcode based on their techniques.
I have ideas on how to improve time for testing in general, based on Code Injection, but they aren't fully fleshed out and I expect it to be time-intensive to pull off. Time I haven't made yet.
Artsy has now grown past 140 team members and our Engineering organization is a nimble 25. We've recently performed a large organizational change (I highly recommend reading "The Secret(s) to Company Re-Orgs"), so this is a good time to describe our updated Engineering organization, starting from the top - Artsy as a company and business.
So you’ve decided you’d like to give speaking a go, or perhaps you were always interested. By now you’re probably wondering where to start.
There are various options depending on what you’re looking for. Would you prefer a smaller, intimate audience or would you like to reach far and wide? Is the topic of your choice suited for a quick talk or would you rather discuss it at length? Let’s have a look.
At Artsy, sharing knowledge is heavily encouraged and so we write our code in the open, document using blog posts, and speak about our experiences. Many have bumped into us at various places around the world. And so I often get the question: “How did you get started? I’m interested in speaking too”.
In the name of sharing experiences with others, I can’t encourage this enough. Unfortunately though, public speaking is still considered man’s biggest fear.
I’d like to share with you the benefits of public speaking, tips on how to get started, and how to give great presentations.
I have been writing code for roughly a decade. A large chunk of that time has been sitting waiting for my project to compile. It's a nice excuse to practice sword fighting in the office, but really, deep down. It's frustrating. It's so easy to become nerd-sniped when you wait for a long time.
As we integrate Swift into our projects, I've been seeing our compile times increase. So, I took some time to look at ways to improve this. The best option, so far, has been dynamic code injection via Injection Plugin for Xcode. In a gist: This means that we don't recompile and re-launch, instead we inject new bits of code into a running application. This reduced the compile cycle on Eigen from 7 seconds to 1 second.
I took some time over the weekend to try and put together a video showing how I used code injection on a trivial app to create a view controller in code. It covers the technique I've started using in Eigen and talks a little bit about how the pieces come together.
Jump to YouTube for the video, or click more for a smaller inline preview.
I juggle a bunch of projects, both in Artsy and in the Open Source community. If you don't work with me directly, you'd be mistaken for believing that I was an organized person. I'm pretty far from that, and don't really plan on changing that.
However, I work with other people and very strongly believe that programming is mostly a social problem once you're good enough at writing code. It'd be hypocritical of me to not improve the people process side, so I try to automate processes that makes me a better team-mate.
I'm going to cover four things I've worked on lately to improve this: Danger, GitHub-Clippers and improving how I write commits and prefixing my name on branches.
We are slowly trying to do high-level code-review views for all of our iOS apps. So far, we've covered Eidolon and Emergence and now Energy. This is the second part of the Energy code review. The first part covers the the critical codepaths that go from the App's launch to sending an email, which is the main use-case for the app. This video covers how Folio does sync between the Artsy API and the app.
Sync is a complex problem. This video covers our old techniques, how we changed them, the underlying abstractions we use now and how we can test each component individually. It's an hour long, and it's a little computer-sciencey. So I think people who have shipped some small apps would get a lot out of it.
Jump to YouTube for the video, or click more for a smaller inline preview.
We are slowly trying to do high-level code-review views for all of our iOS apps. So far, we've covered Eidolon and Emergence. Folio is an app that's shipped to the App Store in early 2012, it's used by our Partners to showcase their works offline, at fairs and on the go. If you want the full spiel, check out this microsite.
This video talks through a lot of the critical codepaths that go from the App's launch to sending an email, which is the main use-case for the app. We have another video coming up which exclusively covers how Folio does sync between the Artsy API and the app.
Jump to YouTube for the video, or click more for a smaller inline preview.

