I like unit tests. They’re often the best documentation of a project’s behavior. They provide assurance that code modifications haven’t broken anything. But too many or poorly-written tests can have the undesirable effect of cementing code in place, making it more difficult to change. The following are some practical things I keep in mind when […]
Having worked on an app with both native iOS and Android versions, it’s been interesting to compare and contrast the layout approaches of both platforms. iOS has had a constraint-based layout system for quite some time now in the form of AutoLayout, while Android has only recently added a similar system called ConstraintLayout.
Debugging is a drag. I think we can all agree that working on new code is generally more fun and interesting than debugging or maintaining existing code. But the fact is that much of our time is spent doing the latter. When estimating time required a project or feature, it is practically impossible to predict […]
While writing an Android UI test involving a NumberPicker, I discovered that instrumenting the NumberPicker using Espresso was not as straightforward as some other Android controls.
When I first started using ReactiveCocoa (now ReactiveObjC), I mainly stuck to the basic operators: map, flatten, merge, etc. I saw a few examples of createSignal, but all I saw was a lot of manual work with disposables, subscribers, and other tedious sorts of things that I didn’t really want to mess with.
If you want mobile apps for both Android and iOS, the cross-platform framework approach sounds pretty great, promising that you only have to develop the app once to run on multiple target platforms. Developing two separate apps sounds as if it will require fully twice as much work.
Many of us here at Atomic take advantage of height-adjustable workstations, or “standing desks.” Some of the claims made in support of standing desks may be difficult to detect (burns calories!) or require time to verify (lowers obesity risk!), so I won’t reference any of those in this post. What I do have is first-hand […]
When writing code, there are many specific principles that aim to make your code more maintainable: DRY, the single responsibility principle, the Law of Demeter, the open/closed principle, etc. These are great principles to follow, but it can be difficult to keep all of them in your head at once. I’ve found it’s often easier […]
I have been developing software in Objective-C for quite some time now, but I continue to discover new ways to shoot myself in the foot, particularly in the way of memory management. A while back, I wrote a post about finding iOS memory leaks using Xcode’s Instruments. This is a great tool for discovering memory leaks […]
Having devices of varying sizes is great for allowing users to choose what is right for them, but supporting all those combinations of resolution and pixel density can be a hassle. Even if you develop all of your original artwork in some vector format, you typically have to export it in PNG format at various […]