Over the course of the past few posts (see the overview here), we’ve introduced the ZooScan app and developed its UI using SwiftUI. In this fourth part, we will focus on integrating the Swift Vision framework to classify animals based on images captured by the app.
The first step is defining a protocol for our animal classification model. By using a standardized interface, we can easily switch between different models in the future if needed. Here’s how we can define the protocol:
In the previous post, we implemented the initial screen and the ImagePicker view. In this post, we will further develop the app. We will create a ViewModel and a ScannedAnimal model, and add the ‘Main’ and ‘Detail’ views. This will allow us to focus on the UI and the app structure before we dive into the machine learning part in later posts. By the way, if you’re looking for an overview of all the posts in this series, you can find them here.
In the previous post, I introduced the ZooScan app idea and shared a demo of the app in action. In this post, we’ll be getting our hands dirty. We will set up the project, create the basic UI, and implement the first steps of the app. By the way, if you’re looking for an overview of all the posts in this series, you can find them here.
To give you a basic idea of what we’ll be doing, here is an animated GIF that shows the app in action.
My son has always been fascinated by animals. We go to the local zoo multiple times a week, and when we’re on holiday, we always make a point to visit local zoos and other animal parks. On one of our holidays in Porto, we visited the local SeaLife. While we were there, their SeaScan app caught my attention. his clever app lets you scan fish and other creatures in the aquarium to instantly learn more about them. That sparked an idea: what if I build a similar app for zoo animals?
Over the past few years, we’ve seen some truly impressive advancements in AI and machine learning. I remember that 20 years ago, when I was studying Artificial Intelligence, even finding faces in images was a major challenge—something that smartphones now do effortlessly in real time. The same goes for speech recognition: once considered nearly impossible, it’s now embedded in tools like Siri, Alexa, Google Assistant, and even real-time translation apps. While voice assistants are still not perfect—as this video humorously shows—it’s clear that AI has come a long way. Today, AI opens the door to exciting new applications that were unimaginable just a few years ago. In this post, we explore key areas of AI and ML that app developers can leverage to create smarter, more engaging experiences. First, let’s look at Image Recognition…
First off, a huge thank you to all our testers!
Your feedback has been instrumental in helping us refine and improve ScaleDiary.
We’re excited to share the latest updates and improvements in Version 0.2.4, along with a glimpse into what’s coming next.
We’re thrilled to announce that we’ve navigated through the legal aspects of app development,
which took a bit longer than we anticipated. With those challenges behind us, we’re now focusing
on polishing the app before its official release on the App Store.
Just before the holidays we released ScaleDiary V0.2.2 to TestFlight. After testing this version, some bugs were identified, which
we now fixed in version 0.2.3. Version 0.2.3 was released today on TestFlight. Version 0.2.3 will hopefully be the last testing
version before we release a first version of ScaleDiary to the App Store. Hopefully, ScaleDiary can be released by the end of next
week.
Changes in Version 0.2.3:
Deselect current dates displayed when changing month in calendar view
Show a app store review dialog after the user has started the app at least 7 times
Made it impossible to go to a month in the future by disabling the next button if the current month is visible in the calendar view
Update the calendar view when the calendar view becomes active again, for example when the app went to the background. This fixes a
bug where the current date indicator was sometimes still visible for a day in the past.
After we release the app to the App Store, we are planning to work on the following features:
After our initial release of Scale Diary V0.2 to TestFlight we already got some useful feedback from
our testers. We were able to fix some bugs this week and version 0.2.1 was released today on TestFlight.
Changes in Version 0.2.1:
Swapped Cancel and Add button order in AddWeight view.
Hidden stepper if no weight has been entered.
Fixed a bug where weights in stones or pounds (LBS) were not plotted correctly in the graph views.
Fixed localization of period descriptions (W, M, 6M, Y) in the picker in the ChartView.
Reduced space between calendar columns for better visibility on smaller devices like iPhone SE 2.
Fixed CalendarView landscape orientation.
Added German translation to the app.
Keep checking this site if you’re interested in updates. If you would like to help us test ScaleDiary
please let us know. We are especially looking for testers in the following countries: US, UK, Germany,
and any Spanish speaking countries.
Today we have release the first version of ScaleDiary for testing on TestFlight.
ScaleDiary is an iOS app helping you track your weight from day to day. It helps you
analyze your weight development and reach your fitness goals. It is also designed to
be no-nonsense, this means it will be released as an one-time payment only app and does
not share your data in any way.
Key Features:
Daily Weight Logging: Easily record your weight every day with a simple, intuitive interface.
Progress at a Glance: Visualize your progress with clear, easy-to-read graphs and charts.
Simple and Clean Design: No ads, no distractions—just a straightforward tool to track your weight.
Keep checking this site for progress updates! If you are interested in helping us test the app,
please let us know.
At the beginning of the 90s, when I was about twelve years old, my mother decided to buy us a second hand
Olivetti 286 computer. The computer was a hand-me-down from Statistic Netherlands, the company I’m currently
working for. I loved the computer from the very start, and especially the games, which came on growing collections
of floppy disks (for everyone younger thant 30, those things that inspired the save icon :D). I was so enchanted
by those green-and-black games with bleeping music coming from the PC speaker, that I soon decided I wanted to write
my own games. I started learning my first programming languages, which had other-wordly names as QBasic and Turbo Pascal.
Together with my friend Joep, we spend hours, and countless summer holidays, trying to make yet another idea come into
fruition. While we never succeeded to actually finish a game, these days actually were the source of my love for programming
and creating things. It shouldn’t come as a surprise then that I choose to pursue a professional career as a software developer.