genea 1.0 is here

I’m happy to announce that genea 1.0 is released. Genea is a notebook app specifically designed for genealogists. Today we release genea for iOS and iPadOS, supporting iOS 12.4 and higher. iOS 13 features like dark mode are supported like you’d expect.

start-light-dark

What is the difference between genea and another notes app?
genea starts with a note. This can be a picture (e.g. act of birth) or a written note or a combination of both. What makes genea unique is everything you do after you have taken the picture or written the note. Genea allows you to add genealogy specific info to notes. This means you can add events and people to a note. All standard gedcom event tags are supported.

You can add multiple events to a note. This is useful because a document or note can refer to several events. For example a marriage act can contain info about the marriage, the birth and death of several people and their relationship, and more… All can be added to the note.

note-light-detail

An event has a date, tag, place, description… like you have in your family tree app. You can add this info in genea, and later export the info to your family tree.
The power of genea is that you can store all your notes in detail in a structured and reusable way without making things complicated. This allows you to search your notes on text, events, people, places etc. This also allows you to export the info of a note as gedcom, with all the info and relationships that are defined.
In the example below you can see that the birth event contains the child (here the owner of the event) and the father and mother. If the parents are linked to another child’s birth event, the other child will also be included in the gedcom export.

event-person-light

New people and places can be added or existing people and places can be linked to events. For an event to be exported, there needs to an event owner. Other people who are linked to the event, can  have a relationship like spouse, parents, children, parents-in-law, witnesses, neighbours…

note-shareMedia-dark

A note with all the event(s) info and the image can be shared on social media, mailed….
Images can be edited and cropped.
Your notes can be grouped in a notebook. You can easy move notes from one notebook to another, rename a notebook…

How is genea positioned?
First and foremost, genea is not a family tree app. Genea is a note taking app for genealogists. This means that our starting point is the note in picture or text form. All other info you add is genealogy specific to help you with your research.
We believe that people who do genealogy research don’t want to add all possible research info to their family tree app, because this becomes a mess of multiple people that turn out to be not related. We propose you keep your family tree, and you add your research notes, events and people in genea. You can export the info when you need it, and import it in your favourite family tree app.
We believe that existing note apps don’t provide the tools to add structure and info to notes, and definitely don’t allow you to export gedcom data.
We believe genea can help genealogist to structure their family tree research, with this unique set of features.

We hope you try out our new genea app. If you have questions or requests… we are here to help.

And we wait…

We have finished our genea app, and uploaded it to the App Store. It will be available in English, Dutch and French. Initially we wanted to make it an iOS13 only app, but we made some changes to also support iOS12.4.

We are finalising our website for the genea launch, and hope Apple will quickly approve the App. I’m really looking forward to present our genea App in our next blog 😊

Preparing for iOS13

iOS13 will be released next week. Our new Genea app will be available  for iOS13 and supports Dark mode and other iOS features. It will also be available for iPadOS and after the release of MacOS Catalina, we will release it for MacOS.
Now we focus on testing and releasing our new app Genea. More on this in a next post.

Less is more

This is a slogan that is true for a lot of things, but especially for apps. When I started programming I made a lot of apps for iOS, MacOS, you name it. This was mostly inspired by the need to experiment, to try out new ways of implementing stuff … After every developer conference I could spend weeks and months imaging how to use the new possibilities. In the end, you use the same new tricks that everybody uses.

Everybody knows an app needs to be easy to use and needs to be useful. That turns out to be a difficult task. The basic idea for an app is often implemented in a few weeks, but also creating a great user experience,  is a challenge.

We’ll focus on a few apps which we’ll make as good as we can. The user experience has to be good. We’ll try to make iOS, iPad and MacOS versions of these apps, if possible from the same code-base. Features and functionality will be almost the same on all devices.

So time to focus and clean up.

 

New beginnings

It’s time for a new beginning. I’ll be updating our website in the coming weeks and months, adding new stuff and remove some older stuff.

2019 is a year of change for me, and this will also be reflected here. More to come soon…

My model is not like your model

I’m not talking about models in the fashion world, but Machine Learning (ML) models to use in Apps. Everybody knows Artificial Intelligence (AI) and ML are on the rise, and it is becoming easier en easier to use it in your Apps.

Last year Apple introduced CoreML, stating that the programmer doesn’t’ need to know anything about ML/AI to apply it in Apps, and that’s correct. It is considered to be a black box. You input something, and you get an output. What and how the black box gets to the result is “magic”. For example, you input an image of an animal, and you get the name(s) of the animal(s) back. You input an image of a person, and you get the sex of the person back. You input a text, and you get the keywords back…
As a programmer you can use the existing models, which are mostly trained models. The results you get are as good as the model. Let’s say you get a model that was trained to recognize a list of objects. This means that the model will potentially recognize all objects that you specified. If you didn’t specify a bicycle, the model was never trained for it, and the model will never recognize a bicycle. This is a fixed model that doesn’t learn. The down side is that the users of your App can not teach or train the model to improve. In a lot of cases this is absolutely no problem. If you do need to train a model, this stops being a simple black box, and does require the programmer to know more about ML and AI.

For the simple programmers, like me, you try to find existing, trained models you can use, and you quickly see that there are not a lot of them. So you have a few options.
1. Find a model and convert it to your model if needed
2. Use an only, in the Cloud model, and connect to it through an API
3. Make your own model

Finding a model can be hard. There are differnt model formats out there (Caffe, Keras, Watson…) and converting them to, in my case mlmodel (Apple) is a challenge. You have to install stuff and use Python tools hoping to get a mlmodel you can use. I have to say this is a difficult step if you do not know how these model are setup. In this case the convention of the model is much more difficult than the implementation in the App. I hope Apple will make this easier.

More and more ML/AI Model Stores become available. Most allow you to access a model that is hosted in the Cloud. In general you pay for the CPU-time needed to process the request. For the developer, this is an easy solution, as we are used to connect to services in the Cloud. The down side is that you have to be connected, and you may sent a lot of data over your mobile connection, which costs money.

If the model you need is very specific, but not complex, you could train a model yourself. For example, you want to recognize different types of bicycles… There are more and more easy to use tools, that allow you to make a model and train in. Several desktop and Cloud solutions are available. Most of them are focused on one platform (iOS, Windows, Android…) or another, so be careful which one you use.

If you look at all this, you see that there is an emerging market for models to use in Apps. There is a need for specifically trained models, and it will become more and more easy to train a model with your data. As this is an emerging market, it is “normal” that there is not yet a good standardized approach to convert one model to another. But as this is all quickly falling into place, future Apps will be able to do new and amazing things.

The generalist specialist

I’ve been having a lot of conversations with startups lately. I love their energy and sometimes “simple” view of the world, in which everything is possible. In a way they are correct, and I’m probably getting old(er). I’ve been coaching startups to help them organize and prioritize their projects and ideas. This is all very fascinating but here is what strikes me. I see myself as a generalist, but they see me as a specialist.

There are a very wide range of items I’m interested in, from design, programming, music, architecture, painting, literature, cooking… If I considering myself to be a generalist, I also believe I know some stuff about those domains, but I don’t consider myself to a specialist. I presume that people who earn a living in one of these domains, will be better informed, and more professional than me… but apparently this is often not the case. This makes me very smart, let’s say a genius, but I know that’s not the case 😉

I’ve noticed over the past 5 years, that nobody takes the time to really understand anything anymore. We get some high level info about a topic, which gives us a partial and distorted understanding of the topic, which we use to construct our logic on.

In my professional field of software and project management, there are less and less people that have a good understanding of the business processes of their customers. Enterprise architecture (EA) is often seen as a technical decision, completely separated from the business logic. Everything is divided into generic micro-services for reusability, which is good from a EA standpoint, but which can be a disaster from a business logic point of view, making applications overly complex and too dependent on reusable components.
We’ve reached a point where we stop looking for a solution if we don’t find an answer after a few hours; where a software developer changes from platform and technology every year. How can you become a specialist if you only have been using a tool for a few months? They do it because this way they are in demand, and they can ask a higher price. But it doesn’t deliver a better end result, in my opinion.

So as a generalist, who understands how things work, and takes the time to understand stuff, I go further and deeper into complex problems, and turn out to be a more specialized person than you’d expect.
Startups need flexibility in concept thinking and problem solving, and than the expertise to quickly execute the developed concepts. Business logic and business insight are way more important than a discussion about the technology landscape.

What’s on the table

Ok the title is probably misleading. In this post I liked to talk a bit about tableau. Tableau, and is this case public Tableau, is a free data-visualization tool, that allows you to share visualized data on-line, for free. Have a look at the tableau gallery with the vizz of the day.

Tableau desktop (free for MacOS, Window…) allows you to link data in the form of static files (Excel, csv, pdf,json…) or online data (e.g. Google Doc – sheet, databases…), and visualize your data.
You can visualize data in worksheets, like a chart, a table, a map. You can than combine these worksheets in a dashboard, and add text, links, images… to explain the dashboards. These dashboard can be seen as slides, which you will use in a storyboard, to tell your story.

It’s completely up to you how to tell the story. You could start with a global birds-eye view of the data, and drill down to some detail, and maybe come to a conclusion. This is a great way to visualize data for a presentation, but the most powerful thing about it, is that this is not a static slide. As a user of this visualization, you can filter and view the data the way you want, and interactively get a better understanding of the data. Of course, as with all visualizations of data, it can become painfully obvious, that some of your data is incorrect or incomplete, so be prepared to clean up your data…

So why am I looking at tableau? In the context of my general interest in genealogy, I’m always looking for ways to visualize data, and in this case how to easily compare data, and look for data in my family tree.
In a first step I am converting GEDCOM files to useable files for tableau. Publishing my family tree in a tableau vizz makes looking for relatives interactive and fun, compared to the static html pages exported by most family tree apps.
In a later fase I want to compare 2 (or more) GEDCOM files, and look for places, people, events that might overlap… trying to determine if there might be a connection… This could be an interesting tool for the genealogy detective.

If you are interested in the test tools we are writing, and like to participate, you can contact me at geert@verticalhorizon-software.com

Have a nice weekend.
Geert

The life of a developer

Looking back on last year, I can say it was a very interesting year. There were complex projects and a lot of new tech to learn.

I think the most used tech term in 2017 was AI (Artificial Intelligence) or more specifically ML (Machine Learning) and it’s siblings like neural networks… I’m not going to explain AI or ML here, there are a lot of sites that can explain it better than I can, but I do want to talk about the perception of AI and developers to the general public.

Developers are often seen as these nerds that type stuff in the computer to make it do what they want it to do. Developers are also these people that cause all the bugs, or don’t understand what the user wants. They are the reason why your app doesn’t work, or does work the way you want.
AI is presented as the magical solution to fix all this, and developers will not be needed anymore… In some presentations AI is this thing you talk to that will figure out what you want, and will take care of everything. Well, good luck with that.

From experience I can tell you that most users have a hard time explaining what they exactly want. The way people explain what they want is full of pre-conditions, assumptions and limits that are so obvious to the person in question, that it is never explained or even listed. An App needs to know these assumptions, limits and pre-conditions, otherwise it will not work or work badly. What I’m saying is that when you can not provide a framework, a structure to an AI, it will result in a disaster. Maybe developers will become more like business analysts, I don’t know, but I do know you need to understand the process, the flow, the logic of an App for it to work.
Unfortunately, we see the opposite trend with users. More and more users only know their little part of the process, and not the whole picture. For an AI to write an App, someone will need to tell it what to do… For a super easy app this may be an end-user, but for more complex apps… I’m almost sure it will need to be someone else.

2018 will be great for developers. It will be interesting on all fronts. Developers will be needed more than ever. AI, AR (Augmented Reality) and ML will be more and more integrated. IoT (Internet of Things) will take of. BlockChain implementations will become mainstream… and so much more. Business analysts and developers will be in demand.

Have a happy and wonderful year.

Rework

I don’t know if you ever read the book rework, from the founders of basecamp, that’s what I’ve been doing: rework.

In the last posts I’ve been writing about the switch to programming in swift, and the setups for synchronizing data between macOS and iOS through CloudKit. Well, it’s still not finished, and I’ve started reworking my apps. Let me explain.
I’ve rewritten the iOS app in swift, and written a macOS version of the app. So far so good. This is all working fine on the local devices. I can also get data from CloudKit and sent data to CloudKit on both platforms, so that’s fine too. But covering all scenario’s to keep everything in synch, is more challenging than I thought.
You expect to be able to work with all your devices in an off-line mode. You may be on an air plain with your MacBook, or your iPad has no mobile connection, only WiFi… you expect that you can get all data magically synchronized and up-to-date once you get a connection. Your iPad may have not been on for several days, but you updated a lot of stuff on your iPhone…
Deciding how to manage changes you make in your local app, and tracking if the changes are uploaded successfully to CloudKit at first sight seems straightforward. But than you have to managed conflicting changes made on the same record (data) on different devices. So you start tracking changes and the moment that change was made, and compare it to what is in CloudKit… Before you know it you add state and date/time tracking to every field in your database… It’s a mess.

So you rethink what information is stored when, where, how, and what the logic is behind it. You write this out and think of all the possible use cases, to see what works for your app. You try to keep a good balance between complexity and functionality, keeping in mind that for the user, the behavior is normal and consistent… So that’s the challenge for the next weeks or so… reworking change logging and business logic…

Sounds easy enough. I’ll let you know.