After working in mobile engineering for about a decade and a half, across multiple eras of iOS and Android tooling, languages, and architectural approaches, I ve never been more excited about the landscape than I am right now. When I started making apps in 2011, it was thrilling to go from an idea to something you could physically touch and hold in your hand within hours. Today, that same feeling…
My son and I built an NFC-based music player so he can play the music he wants, develop his own musical taste but most of all so that he and I could have something fun to build together. Kind of like a modern day record player, but infinitely more extensible, and with each album costing 1/100th the price of a vinyl record. Here it is in action ( music starts 9 seconds into the video, set your…
tl;dr; Implementing SwiftLint using SwiftSyntax instead of SourceKitten would make it run over 20x slower 😭 Update: Since writing this post, I learnt that SwiftSyntax s upcoming byte tree deserialization mode will speed this up considerably. I hope to post a follow-up article on this shortly. I have for some time been looking forward to reimplementing some of SwiftLint s simpler syntax-only rules…
Norio Nomura and I (ok, honestly mostly Norio 😅) have been building a Swift library for encoding & decoding YAML for the last 18 months and it s now stable enough to make a 1.0 release and share with the world. It s called Yams, you can find it on GitHub at jpsim/Yams and API docs are located at jpsim.com/Yams . You could say it s a Swift binding for LibYAML but I d argue it s much more than…
Building a serverless photo gallery? Easy! Password-protecting that without adding servers? Surprisingly much more complex. Goals Host a self-contained, declarative infrastructure, password-protected, data-driven static photo gallery to share personal pictures with friends and family, without needing to run, maintain (or pay for) servers. With the recent addition to our family, I wanted to set up…
To support a fancy new language , nifty realtime IDE features and impressive cross-language interoperability , Apple had to develop several new underlying tools. Here, we ll focus on SourceKit , Xcode s under-appreciated sidekick. SourceKitSidekick temporarily wearing a cape What is SourceKit? SourceKit is the set of tools that enables most of Swift s source code manipulation features: source code…
I recently gave a talk on Swift at the SF/SV Swift Language User Group meetup. We ve made the whole thing available online: Video Slides Slides Source The first half of the talk covers the basic features and syntax of the language. The rest of the talk touches on some more in-depth discoveries about the runtime, introspection and how the tools work behind the scenes.
Using a private VPN has never been easier, it s foolish not to do it. It takes ~60s and you re protected on untrusted WiFi networks. This article is more public service announcement than tutorial, since it s really so easy you have no reason not to do it. I ll be showing you how to set up OpenVPN on DigitalOcean using tugboat , but any server provider will do. 1: Spin up an instance $ tugboat…
I m excited to share that I ll be joining an awesome YC company in San Francisco, starting in 2 weeks! The company has yet to launch, so I can t say much about it, but I can tell you that I wouldn t have joined it if I didn t think it has the potential to change how software is built on a fundamental level. This decision is actually the result of over 6 weeks of careful job hunting and…
I ve just given a fresh coat of iOS7-flavoured paint to my most popular open-source library: JPSThumbnailAnnotation. Check it out on GitHub or just add it to CocoaPods: pod 'JPSThumbnailAnnotation' . I decided not to maintain the iOS 6 style , but iOS 6 is still supported. By the way, this is what the old style looked like. It s still in git, if you need to find it for some reason.
I really like iOS 7 s topLayoutGuide and bottomLayoutGuide . They re immensely useful. But in my adventures with Auto Layout, I ve often wished that Apple had added a third member to this exclusive group: a sort of keyboardLayoutGuide . It s a bit of a drag to have to set up NSNotification observers just to be able to keep your textfield on the screen when the keyboard barges into view. So I added…
Keeping a project modular is a lofty software development goal that we all strive for even though it can never be fully attained. One way to encourage a modular architecture is to use a dependency manager like Cocoapods . I ve blogged about using Cocoapods before , but I didn t touch on splitting up portions of your code that wouldn t benefit from being open-sourced. Either because they re too…
CocoaPods documentation isn t very opiniated, which can cause confusion for newcomers. Here are a few tricks I ve picked up after building a few dozen projects with CocoaPods. Source Control Should you check in Podfile.lock ? How about your *.xcworkspace and the Pods directory? Since all of these are automatically generated by running pod install , is it redundant to also include them in your…
The fun times building a tiny open source class to use an iOS device s hardware volume buttons in 3rd party apps. This wasn t too hard, but the I thought the process merited a short blog post. I recently made a pixel-for-pixel clone of Apple s iOS 7 UIImagePickerController (the camera portion, not the library portion). The full code can be found on github . My motivation for doing this was that I…
This is my road (so far) to WWDC13. This should serve as a reminder to my future self to avoid WWDC next year. The effort that went into getting a ticket is far more than I m willing to admit it s JUST a conference, after all! Here s a recap: Early April Start researching WWDC history to be well prepared (see last section). I felt this was critical to get a ticket. Rumors and trends converge…
I just released a new iOS component called JPSThumbnailAnnotation which is a great way to display thumbnails on a map. This component was actually originally built at MBS for the ScalaOne iPhone app (now called TypesafeCon). You can find the original source here . After seeing Sam Vermette s talk on Saturday at NSNorth on Open Source and his philosophy towards it, I decided to go back and extract…
I ve been building Magnetic Bear Studios for the last two years. From a logo on a napkin and a 200$ contract, to an exponentially growing mobile dev shop. One of my first big lessons running a young company was that it takes on a life of its own! It s scary. You re focused 24/7 on finishing feature/contract #89 while dealing with time-sensitive business issues and when you finally take a breath to…
Yesterday, I open sourced a Letterpress [1] cheating app for iPhone. I built it because I knew it would imply a bit of computer vision, OCR, basic set comparisons, yet it could probably be done in just a few hours. Even though it will never make money and the codebase is slightly embarrassing, I feel reenergized after writing it and my mind is clearer. Given that most of our projects at MBS spend…
How MBS is leading the way to creating a new type of agency: a fully open one. This article was originally published on magneticbear.com Since we started Magnetic Bear Studios about a year and a half ago, one of our core values was being as open as possible; our history, our process, our margins, our code. Up to date, we have open sourced 10 internal projects on github . In 2013, we re making open…
Writing my goals for 2013 publicly to keep myself accountable. Gig monthly What? There was a time when I played sax at local restaurants, corporate gigs, heck I even recorded an album with my brother that sold pretty decently. How? I ve got a bassist, drummer and guitarist lined up. I m approaching several of the bars/restaurants I used to play to set up some gigs. Learn Japanese What? Christine…