How to use C in Swift Packages
C language is never going away. Not only is it portable, efficient and performant, but it's also very easy to find a compiler for any platform. SQLite might be one of the most well known C library, but it's not the only one. Lua scripting language. curl ...
Utilising the iOS Secure Enclave with your data
The Secure Enclave The Secure Enclave is a pivotal part of most modern Apple devices. On your iPhone, it's what keeps secure your most sensitive information. Information such as your biometric data, to use with Face & Touch ID and your payment inform...
Automating tasks with SPM plugins
Swift Package Manager plugins are a great way of automating tasks, like, enforcing code conventions and style. In this tutorial we're going to learn what are package plugins and implement 2 plugins; one that outputs code statistics and another that genera...
How to implement realtime updates with Live Activities
Live Activities were introduced in iOS 16.1 as a way to display up-to-date information on the iPhone Lock screen and in the Dynamic Island. In this article, we're going to explore the Live Activity API by implementing a fake Delivery App where the user wi...
iOS Accessibility Support Within SwiftUI
Accessibility in our iOS applications is something we should all strive for. To be inclusive and have our applications available to all is a massive goal for us at Monstarlab in every project we undertake. To accommodate to each user, whatever their needs...
Information System for Storing and Analysing Qualitative Studies of Refugees
Refugee crises continue to be a major concern around the world. As of today, the number of refugees and internally displaced people worldwide has grown to almost 90 million. Due to multiple barriers like culture, language, etc., ensuring adequate access t...
UITableView DataSource Prefetching
Apple has introduced an API for prefetching the data for a UITableView or UICollectionView in iOS 10. This is a short story about how to implement the UITableViewDataSourcePrefetching protocol. Let's learn how to make our apps buttery smooth, richer, and ...
Swift: From Protocol to AssociatedType then Type Erasure
When Swift was made, it had been the first protocol-oriented programming language. Though Swift is great for object-oriented programming, but from the way for-loops and String literals work to the emphasis in the standard library on generics, at its heart...
Privacy for Photos Access
Apple always takes care of Privacy. Prior to iOS 14, for accessing photos, users were prompted with two options Don't Allow and OK. To use a feature that actually only required limited access, users still had to expose their entire photo library. This yea...
What's new in Swift
This year's "What's new in Swift" included a plethora of improvements and new add-ons. Some of the news are: better diagnostic compiler error's and hence better debugging improved and faster code completion improved auto indentation improved integration ...
Building a COVID-19 Tracing app in a week
We wanted to create a prototype app to help people to find out if they contacted anybody infected by the COVID-19 disease. It will use wireless technologies searching near by and notify users. In this post we're going to talk about the thoughts behind thi...
Animated Transitions in ViewController - Part 1
The hunger for magnificent design, animations and transitions is huge and nowadays designers are pushing developers to create beautiful views with lots of animations and smooth transitions. Based on this, I will present some basic concepts of transitions ...
Compositional Layout Basics
Even though this year at WWDC Apple introduced the new SwiftUI framework, which will redefine the way we create our app UI's from iOS 13, there were as well presented some advances in UIKit, precisely, in the way we can build an UICollectionView through t...
Supplementary Items and Decorations
The previous part of this series covered the ground base for implementing a Compositional Layout. Now that we are comfortable with the base implementation, this part of the series will focus on the Supplementary Items and Decorations that we can use in a ...
Building the App Store using Compositional Layout
In the first 2 parts of this series we learned the basics for implementing a [Compositional Layout]({{ site.baseurl }}{% post_url 2020-01-10-Compositional-Layout-Part1 %}) and how to add Supplementary Items and Decorations. With this knowledge in hand we ...
NSSpain 2019
NSSpain 2019 NSSpain is one of the most well-known iOS conferences held in Europe. This year was its seventh year, and with over three hundred participants, the tickets got sold out even before a single speaker was announced. Taking place in Logroňo, a be...
ServerSide.swift 2019
What it's all about As stated on their website, ServerSide.swift is aiming to be a non-profit, framework-independent conference "solely run for the love of server-side Swift". This was the second year of the conference, this time organized in Copenhagen, ...
Sharing code between iOS and Vapor
Code reusability has always been one of the ultimate goals for us developers. Building your backend with Vapor not only gives you highly scalable apps with shallow memory footprint, but also the potential to share some of your backend code with your iOS a...
Fetching files easily in Vapor when you are writing tests
Vapor has a nifty build-in feature to derive the working directory of a project. This makes it easy for you to fetch files from your project and serve their content; fx if you want to seed some data in your database, if you are building an initial mock ap...
Join the dark side and implement Dark Mode in iOS
WWDC this year brought to light a lot of amazing features Apple has been working on lately. One of these features, and maybe one of the most expected, was Dark Mode support. As Apple mentioned in their keynote, Dark Mode is easy to implement and will brin...
Higher order functions in Swift
Higher order functions in Swift are extremely powerful tools to have in your developer toolkit, the only issue is that it might take some time to get comfortable with them. Before we get started, let’s have a look at some important terms to know in relati...
Add a Swift Package to Your iOS Application
With the release of Swift 3.0, Apple introduced the Swift Package Manager, a tool for managing the distribution of Swift code. It is integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies. Though...
Create Your Own Swift Package
In Part 1, Add a Swift Package to Your iOS Application, of this Swift Package Manager series we saw how you can add an already existing package to your application. Now, you might be wondering, "How can I create my own package?" The answer is simpler than...
Swift Alps
Swift Alps - as the name might imply - is a conference revolving around anything Swift related. As the name might also imply, the conference takes place in the Swiss Alps, in Crans-Montana more specifically. What sets this conference apart from many of th...
Going to ServerSide.swift 2018
The first conference in the world to focus on server-side Swift We (the Vapor team at Nodes) were excited when we heard that a conference focusing on server-side Swift was announced. We did get the news a bit early since the conference is run by Tim Condo...
Getting started with Vapor 3
Vapor has been our go-to framework when we develop backend solutions at Nodes since January 2017. A lot has happened during the past year, especially when we saw Vapor 2 got released back in May. Our overall opinion is that Vapor 2 has been a mature and a...
Vapor code generation with Sourcery
Swift is a relatively new language in the server realm that brings a lot of nice changes, such as type safety and compilation. But it's not all sunshine and rainbows. Swift's poor metaprogramming can introduce a huge amount of boilerplate into Swift proje...
Getting stack traces in Swift on Linux
Bugsnag is a convenient service for reporting and catching bugs and crashes that Nodes has been using for a long time. When we moved our backend stack over to Swift, we noticed that there was not a Linux-friendly package. So, we built our own! Doing so le...
Nodes Wars - My experience as a Vapor intern at Nodes in Copenhagen
Hello! My name is Valen, I am studying in Spain and the last subject of my training consist in an internship in a company. They gave me the chance to do this abroad and it seemed like a good opportunity. So, here I am, in Nodes, a digital agency in Copenh...
Our experience at iOSCon 2017
iOSCon is an annual conference in London, focusing mainly on Swift development for iOS, but with talks also spreading this year to as diverse subjects as Accessibility and making the most of the time you have with no regrets. The conference was hosted at ...