Real-time data-driven apps create new challenges in the way we structure our programs, especially on mobile. In this article, Toptal Freelance iOS Developer Lucas van Dongen implements an iOS chat app, comparing the classic MVC approach with a static immutable MVVM pattern.Continue reading →
Traditionally, connecting devices for peer-to-peer communications has been a tedious task: An application needs to discover what’s around it, open connections on both sides, and then maintain them as network infrastructure, connections, distances, etc. Realizing the difficulties inherent in these activities, in iOS 7 and macOS 10.10 Apple introduced its MultipeerConnectivity framework.
Join Toptal Freelance iOS Developer Ben Gottlieb as he explains what MultipeerConnectivity is, and teaches us how to use it.Continue reading →
The development of cross-platform mobile applications has always been a source of many challenges. Although tools like Apache Cordova and Haxe do solve some of the associated issues, they are still not the ideal solution in many cases. React Native changes that by providing the power of React.js for mobile platforms and a promise of consistent developer experience across multiple platforms.Continue reading →
Working on an iOS application can be tedious, especially when you are wasting countless hours doing the most boring tasks: taking screenshots, signing code, and jumping through similar hoops to get your app to the users’ devices.
In this article, Toptal Freelance iOS Developer Francisco Reynolds walks you through the ultimate release automation tool for your iOS app and shows how it can save you from all of the tedious tasks.Continue reading →
In this article, Toptal Freelance Developer Roman Stetsenko explains what it takes to create a pixel-perfect iOS interface from the ground up and why it matters.Continue reading →
The Model-View-Controller (MVC) design pattern is great for the longevity and maintainability of an iOS application’s codebase… but you may find yourself adding similar functions to multiple models as your app grows. In cases such as networking, moving common logic out of your model classes and into singleton helper classes can be a better approach. In this article, I’ll teach you how to set up a centralized singleton networking object that, decoupled from micro-level MVC components, can be reused throughout your application.Continue reading →
Writing reusable code that can be shared across multiple platforms can make developing mobile applications a lot easier. But, how do you do that without paying the usual cost of maintainability, ease of testing, and poor user experience that comes with cross-platform mobile application development?
In this article, Toptal Freelance Software Engineer Emran Bajrami walks us through Xamarin and shows us techniques for building high-quality cross-platform apps.Continue reading →
Developing a mobile app for multiple platforms can be quite costly. Implementing the same functionalities in multiple programming languages and dealing with a plethora of unique libraries for each platform requires a massive amount of time and knowledge.
In this article, Toptal Freelance Software Engineer Sylvain Gravel talks about Xamarin and its companion technologies that let you build mobile applications for multiple platforms without compromising familiarity, performance, and uniqueness.Continue reading →
Modern mobile application development requires a well thought-out plan for keeping user data in sync across various devices. This is a thorny problem with many gotchas and pitfalls, but users expect the feature and expect it to work well. For iOS and macOS, Apple provides a robust toolkit, called CloudKit API, which allows developers targeting Apple platforms to solve this synchronization problem.
In this article, Toptal Software Engineer Paul Young demonstrate how to use CloudKit to keep a user’s data in sync between multiple clients.Continue reading →
In this tutorial, you will learn how automated testing works for the iOS platform and how to implement it in your project.Continue reading →
On every new project, you have the privilege of deciding how you’ll architect the app and organize the code. But if you don’t pay attention, or you rush through coding, you risk ending up with spaghetti code. The solution? Use a proper design pattern.
In this tutorial, Toptal Software Engineer Dino Bartošak explains how to implement an MVVM design pattern on a demo Swift application.Continue reading →
Most modern programming languages, in the hopes of enhanced maintainability and reusability of code, offer some constructs that help the developer keep the definition of behavior and its implementation separate.
Swift takes the idea of interfaces a step further with protocols. With protocols and protocol extensions, Swift allows developers to enforce elaborate conformity rules without compromising the expressiveness of the language.
In this article, Toptal Software Engineer Alexander Gaidukov explores Swift protocols and how protocol-oriented programming can improve the maintainability and reusability of your code.Continue reading →
Client-server interactions play a vital role in most modern mobile applications. By leveraging available backend services these mobile applications can provide some really amazing functionalities. However, as mobile applications grow complex it becomes essential to keep the networking module as clean and maintainable as possible - separated from the rest of the application logic.
In this article, Toptal freelance software engineer Alexander Gaidukov walks us through the design of a simple networking module that allows your iOS application to interact with RESTful APIs.Continue reading →
Apple’s iOS is the second-largest mobile operating system in the world. It also has a very high adoption rate, with more than 85 percent of users on the latest version. These highly engaged users have high expectations: If your app has bugs, you’ll hear about it. And once the one-star reviews start rolling in, it’s hard to recover.
In this article, Toptal Software Engineer Nikita Tuk outlines the 10 most common mistakes that developers make—and how to avoid them.Continue reading →
Smooth animations and flawless transitions are key to perceived performance in modern mobile applications. Without the right tools, tuning iOS animation for efficiency can be a challenge in itself.
In this article, Toptal engineer Stefan Progovac demonstrates the role of Instruments, a sophisticated set of performance profiling tools for iOS, discussing how they can help you understand animation performance bottlenecks and some strategies for working around them.Continue reading →
Spotlight search in Apple iOS 9, compared to earlier versions, has been made much more prominent and personal. With suggestions from Siri and integration opportunities for third-party apps, iPhone’s search functionality is no longer limited to the scope of Apple’s own apps. In this article, Toptal engineer Richard Forsythe explores some iOS SDK functionalities that allow apps to make content available to the user via Spotlight search.Continue reading →
Apple’s iOS 9 and WatchOS 2 updates brings a number of novel features, including improved multitasking for iPads and a host of aesthetic tweaks. However, while iOS 9 is just an incremental update with a focus on the new iPad Pro, WatchOS 2 is not a skin-deep update. Apple has changed the WatchOS architecture and opened up a range of new possibilities for developers.Continue reading →
Today, we will be taking a look at the future of mobile payments and emerging opportunities for developers. Needless to say, with each new opportunity, developers will have to face new challenges.
However, since we are talking about money, I don’t think anyone expects a shortage of software developers eager to learn a few new tricks and get into this space.Continue reading →
Cars with next-generation connected infotainment systems will create new opportunities on several fronts. In case you already have an infotainment system with a neat touchscreen and GPS in your car, please accept my condolences; it’s about to become as obsolete as a Nokia 3310 compared to an iPhone.Continue reading →
A large number of modern mobile applications interact with web services in one way or another, and iOS applications are no different. Mantle (a model framework) and Realm (a mobile database) come with the promise of simplifying some of the hurdles in consuming web services through RESTful APIs and persisting data locally. In this article, Toptal engineer Marcin Kmiec shows how to build a simple iOS application using Mantle and Realm and demonstrates how this approach helps to eliminate a large amount of boilerplate code.Continue reading →
Whether you’re an avid angler or an app developer, you may be interested in taking a closer look at the development of a fishing app, which involved some of your fellow Toptalers.
The goal was to create an app that would be truly useful in a professional fishing setting, while at the same time meeting a hard deadline. Since Fatsack Outdoors wanted to launch the app at one of the biggest fishing tradeshows of the year, the deadline was non-negotiable.Continue reading →
Detecting objects of interest in images has always been an interesting challenge in the realm of computer vision, and many approaches have been developed over recent years. As mobile platforms are becoming increasingly powerful, now is the perfect opportunity to develop interesting mobile applications that take advantages of these algorithms. This article walks us through the process of building a simple iOS application for detecting objects in images.Continue reading →
iOS 8 introduced a new concept called App Extensions. This new feature did not break down the walls between the applications, but it opened a few doors providing gentle yet tangible contact between some apps. The latest update gave us an option to customize the iOS ecosystem, and we are eager to see this path opening up as well.Continue reading →
You are what you read – and most Toptal members and blog subscribers are software developers. So what do you read? Where do professional developers get the latest information about how their peers work and think?
Today, we will be taking a look at a small selection of popular developer blogs frequented by Toptal developers. We’re counting on you (our readers) to expand the list in the comment section.Continue reading →
Passwordless authentication has been the Holy Grail of security for years, but progress has been painfully slow. Until a few years ago, the technology to implement passwordless logins on a grand scale simply wasn’t available.
However, the industry juggernaut is slowly but surely changing this. There are a few technical, legal and even ethical considerations to take into account, but be as it may, biometric, passwordless authentication is here to stay.Continue reading →
Apple has released a fully functional WatchKit and SDK that enables iOS developers with all the tools to start building their Apple Watch applications.
This article provides quick overview of the Apple Watch functionalities from a developers perspective.Continue reading →
Since Apple’s launch of Swift this past June, many iOS developers have been struggling with the question of if, how, and when to transition from Objective-C to Swift. This article explores some important points to consider before jumping into Swift development.Continue reading →
After 6 years of improving and working on Objective-C, Apple decided to throw another challenge at developers. Once again, iOS developers will need to learn a new programming language: Swift.
Swift 1.0 is already a stable and strong development platform, which is sure to evolve in interesting ways over the coming years. It is a perfect moment to start exploring this new language, as it is the future of iOS development.Continue reading →
I often hear iOS developers ask some variant of the same key question: “What’s the best way to develop a UI in iOS: through Storyboards, NIBs, or code?”
Answers to this question, explicitly or implicitly, tend to assume that there’s a mutually exclusive choice to be made, one that is often addressed upfront, before development.
I’m of the opinion that there’s no single choice to be made. Rather, each option has its strengths and weaknesses—and there’s no need to use any one of them in isolation.Continue reading →
With the increasingly ubiquitous nature of mobile devices and applications, if you’re not already thinking about mobile apps, you probably should be. This post focuses on methodologies and tools to employ, and pitfalls to avoid, in the development of highly functional, intuitive, and easy-to-use mobile web apps.Continue reading →
If you’re an experienced developer, you’ve probably progressed from being a humble tester to a senior developer, and if you’re a freelancer, you’ve made another leap, perhaps the biggest of them all, when you started working with clients directly.
Some clients aren’t in the software business; they’re in an entirely different industry that needs a piece of software, and they don’t have a clear and precise vision of what they want from you. This is a far greater challenge than it appears, and here’s what you can do to improve client communication and project documentation.Continue reading →
Building games for the iOS platform can be an enriching experience in terms of both financial and personal growth. Recently, I deployed a Cocos2D-based game to the App Store. In this post, I’ll explain the process behind developing games for iOS, from Cocos2D through to publishing.Continue reading →
Starting a new remote gig, be it a contract project or a full-time job, can be a little intimidating if you’re used to going into an office day after day.
But this style of employment is growing in popularity, with some very notable companies lending it their endorsements.
I’ve worked remotely for years now on projects of various scales and durations. With this post, I hope to enumerate some of the best practices that I’ve picked up for working in a variety of situations. The advice here ranges from specific recommendations for software and hardware, to tips for hitting your team’s deadlines.Continue reading →
These days, I’m living in the great city of San Francisco. I’ve got a job that I love, and one that I’ve dreamt of having for a long time. Everything seems easy now, but it wasn’t always like this.Continue reading →