Top 10 Ultimate meaningful gifts

This might come a bit as a shock but I’m an atheist :-O (always was, raised that way) and I simply don’t celebrate X-Mas. If you do, please keep in mind to invest in some MEANINGFUL gifts for your family and friends!


Ultimate meaningful gifts collection:
(everything also last minute available, you can buy everything online!

  1. Intensive-Workshop for Programming Voucher with Women And Code in cooperation with Business Riot Series
  2. Feminist book “No More Bullshit” by Sorority
  3. Wine Box by g’schickter wein Lucia Lagger
  4. Photography workshops by Cliff Kapatais
  5. Expat Magazine Metropole Subscription by Maggie Childs
  6. IT Book “Understanding SEO” by Franz Enzenhofer
  7. Feminist Magazine An.Schläge Subscription
  8. Online Seminar “Bitcoin & Co sicher nutzen” or IT Book “Bitcoin & Co” by Anita Posch
  9. SciFi Book “Ran[s/d]om Death” by Klaudia Zotzmann-Koch
  10. DIY Workshop at werksalon by Antoinette Rhomberg


Feel free to share!

Posted in news | Leave a comment

My talks in 2018



This year I already talked at:




And there is yet more to come…

Last year I was also quite busy speaking publicly.

Posted in konferenzen | Tagged , , , , | Leave a comment

Howto: AWS beanstalk custom subdomain with HTTPS

How to configure my (tomcat) webapp running on AWS elastic beanstalk with an SSL certificate available at my custom subdomain


Why AWS?
– you can host your (tomcat) webapp on AWS beanstalk for free*
– you get a free SSL cert from AWS
– Problem: no HTTPS on elastic beanstalk URLs by default

Why not Heroku?
– Heroku has HTTPS out of the box, but…
– Heroku is super nice when building directly from github, but if you need some custom modifications or have a custom build process, beanstalk is more flexible

Needed steps for configuration:


1. create new SSL cert for HTTPS (via AWS, it’s free!)
– for e.g. “”
+ validation via email
-> create new free SSL certificate for your custom subdomain

2. setup app (e.g. tomcat webapp) at beanstalk
– during setup: set custom domain “Environment settings” – Name & Domain
-> setup new beanstalk environment at
– opt. check webapp with URL (tomcat apps runs on /healthcheck)

3. setup subdomain forwarding at your own domain provider
– CNAME ->
-> app runs at:
– opt. check webapp with URL

4. my beanstalk environment: configure LB
– configure – scaling -> load balancing: enable

5. my beanstalk environment: configure HTTPS
– Network Tier – Load Balancer
– Secure listener port: 443
– SSL certificate ID: pick your new SSL cert “”
– “Apply”

6. opt. beanstalk configure SSL for direct access
– configuraion – instances – EC2 key pair

7. EC2 instance – adapt security group, add ports
– add 80 (http), 22 (ssh), 443 (https)
– opt. 8080, 8443 (tomcat)
– opt 3306 (mysql)

My webapp runs on beanstalk (tomcat) with an SSL cert to my custom subdomain:

* if eligable AWS EC2 free tier

Posted in howtos, technik, work | Tagged , , , , , | Leave a comment

Upcoming talks in 2017


My talk at the CodeMotion Rome conference

This year I already talked at:

  • Talk – Bots Berlin Meetup – 1.2.2017 – Berlin
  • Talk – AICR – 23.1. – Vienna
  • Podium – DerBrutkasten Roundtable – 16.3. – Vienna / Online
  • Talk – Digitalk / Digital Society – 15.3. – Vienna

Upcoming confirmed tour dates:

  • TV Discussion – W24 Spezial – „Medien 4.0 – Wiens Blogger- & Youtube-Szene“
  • Talk – CodeMotion Rome – 24.3. – Rome
  • Panel discussion MobileMonday #34 – 27.3. – Vienna
  • Talk – Copenhagen Bot Meetup – 30.3. – Vienna
  • Lecture – FH Joanneum – 11.4. – Graz
  • Talk – ELEVATE – 20.4. – Vienna
  • Panel discussion – Pizza Beer Mobile – 25.4. – Vienna
  • Talk – – 29.4. – Vienna
  • Interview – Brutkasten – 29.4. – Vienna Online
  • Breakout-Session „Digitales Marketing & eCommerce“ – „The Digital Enterprise“ conference – 4.5. – Vienna
  • Talk – Linuxwochen – 5.5. – Vienna
  • Talk – TechSummit – 11.5. – Bratislava
  • Talk – Disrupt Cyprus Meetup – 16.5. – Cypus
  • Talk – London Tech Week TechXLR8 – 14.6. – London
  • Non-stop pitching ;) at the GIN goHongKong program – 19.6.-10.7. – Hong Kong / China / Taiwan
  • Podium Discussion – Chatbot Summit – 26.6. – Berlin
  • Talk “Anatomy Of Chatbots Users Will Love” – Bots-Meetup-Oslo – 5.7. – Oslo (remote)
  • Podium Chatbot Q&A – 4.9. – sektor5, Vienna
  • Panel – The Chatbot Conference – 12.9. – San Francisco
  • Round Table – „Frauen in der Start-up Welt“ – 13.9. – Wien
  • Ö1 Radio Punkt Eins Social Bots – 20.9. – Wien
  • Austrian Chinese Business Association – 20.9. –  Wien
  • Podiumsdiskussion “Frauensache IT” – 27.9. Wien
  • Talk – The BACKEND Talks – 28.9. – Vienna
  • Talk “Developing Cross-Platform Chatbots” – Developer Circle Vienna – 2.10. – Vienna
  • Virtuelle Zukunftstrends – 3.10. – NJoy Radio (German)
  • Talk “Probleme mit E-Voting” – Privacy Week – 28.10. – Vienna
  • PodiumFuturezone Days “Künstliche Intelligenz” – 9.11. – Vienna
  • AI Panel, BAI Themenabend – Bank Gutmann – 15.11. – Vienna
  • Talk – Symposium “Meet the Bot. Feed the Bot” – 16.11./17.11. – Linz
  • Panel/Seminar “Start me up Monday: Chatbots” – FH Technikum – 4.12. – Vienna
Posted in news | 1 Comment

My C​onferences 2016

This year I gave a bunch of different talks, mainly on these three topics:

  • Ionic & AngularJS
  • Chatbots
  • E-Voting

Speaking at the WebClearks Meetup

Here you’ll find a list of the 20 meetups and  conferences I was talking at:

– Vienna 12.12. Panel Discussion Female Founders

– Online 7.12. BotsCamp “Lessons learned creating a virtual personality” Video Slides

– Riga 1.12. DevTernity “Insights into Chatbot Development – Implementing Cross-Platform Chatbots” Video Slides

– Wien 28.11. CryptoParty Meetup “Risiken von E-Voting” Slides

– Wien 24.11. Vienna Valley Meetup “Chatbots vs. Apps – An Overview” Slides

– Wien 5.11. DevFest “Insights into Chatbot Development – Implementing Cross-Platform Chatbots” Video Slides

– Brussels 1.11. Startup Live Seminar “The Austrian Chatbot Ecosystem” Slides

– Wien 27.10. Privacy Week “Data Security And Privacy Of Chatbots” Video Slides

CvyXKLtWYAIvF3Y.jpg large.jpg

– Wien 24.10. Web Clerks Meetup “Best Practices At Implementing A Cross Platform Chatbot” Slides

– Austin 28.9. Talkabot “A Success Story – Mica, the Hipster Cat Bot” Video Slides

– Linz 11.9. Ars Electronica “Chemistry of Intelligence” (Panel) Video

– Wien 19.7. Austrian Startup Stammtisch (Panel) “Product Launch – the first step in rocket science”

– Wien 28.6. Demo Night Meetup (Show Case / Demo)

– Wien 24.6. Vienna Bots Meetup “A Success Story – Mica, the Hipster Cat Bot”

– Berlin 13.7. TOA Satelite Meetup (Podium Pascale)

– Wien 11.5. AngularJS Meetup “Simple Mobile Development With Ionic” Slides

– Wien 27.4. ViennaJS Meetup “Simple Mobile Development With Iconic” Video Slides

– Wien 13.4. We Are Developers “Simple Mobile Development With Ionic” Video Slides

– Bratislava 17.3. Rubyslava Meetup “From Java to AngularJS (without pain)” Video

– JQuery 5.12. Conf Berlin “From Java to AngularJS (without pain)” Slides


Talking at the WeAreDevelopers conference

Posted in konferenzen | Tagged , , , , , , , , | 1 Comment

Mica, the Hipster Cat Bot on Tour

Lately I got a little bit PR for Mica, the Hipster Cat Bot, but I also attended a couple of meetups with my new chatbot:

Vienna Bots Meetup #2

On 24.6. I was presenting Mica as a showcase at the 2nd Bots Meetup in Vienna.

Vienna Bots Meetup (2)Vienna Bots Meetup (1)


BotsHackathon Vienna

One day later at the first BotsHackathon I was mentor / couch / judge.


Coaches & Team of the Bots Hackathon


Finishing ceremony


 Austrian Startups Stammtisch

On 19.7. I’m going to present at the Austrian Startups Stammtisch in Sektor5.



Further upcoming Tour Dates:

Posted in news | Leave a comment

Simple Mobile Development With Ionic

At the We Are Developers conference (13.4.2016), at the ViennaJS Meetup (27.4.), and at the AngularJS Vienna Meetup (11.5.) I was presenting my talk “Simple Mobile Development With Ionic”.

I presented Ionic as a hybrid mobile development framework (with a hands on experience @ AngularJS Vienna) and show-casing the app development of LIKE A HIPSTER.


Abstract of the Talk

Ionic is the beautiful, open source front-end SDK for developing hybrid mobile apps with web technologies. By building only one single AngularJS web app with Cordova extensions you can deliver up to 8 different native mobile apps. With this talk I will give you an overview about the features of this framework.

Create mobile apps with the web technologies you love.

Free and open source, Ionic offers a library of mobile-optimized HTML, CSS and JS CSS components, gestures, and tools for building highly interactive apps. Built with Sass and optimized for AngularJS.


We Are Developers Conference


Intro on the Conference Page


Speaking at the We Are Developers Conference


The Audience: 500 Devs


Key Note at the We Are Developers Conference

ViennaJS Meetup

ChEPt8OWMAEyxYu.jpg large.jpg

The Challenge: LIKE A HIPSTER

There is also a video of the talk from the ViennaJS


AngularJS Meetup

My Slides @ Slideshare


What’s next?

As speaker I’m going to have a talk at the DevFest in Vienna in November and I’m going to speak at a conference in Berlin.

Upcoming Babe Tour Dates:
– November 2016 DevFest Conference; Vienna
– October 2016 Berlin

So stay tuned :)

Posted in konferenzen | Tagged , , , , , | Leave a comment

Launch of Mica, the Hipster Cat Bot


A week ago I launched Mica on Product Hunt. Mica, the Hipster Cat is one of the first bots that got approved by Facebook to run on the brand new Facebook Messenger platform that helps you discover hip venues. You can talk to Mica here 😼.

What is a Chat Bot?

A Chat Bot is a (ro)bot that is programmed to talk to you and answer requests. The topic depends on the business’ focus and could be a weather forecast bot, (online-)shop assistant bot, or a hotel reservation bot, but in our case it’s a venue recommendation bot.

Poncho, a weather bot, on Facebook Messenger (left) and The Economist bot on Line app (right)

Bots could also replace regular services of bigger companies such as service hotlines or FAQs, which would lead to massive cost savings.

You don’t need to install a specific app to use a bot because it is integrated in the chat provider infrastructure such as Messenger, WhatsApp or Telegram.

Meet Mica

I love fancy coffee shops and restaurants! I spend lots of time hanging out in them, meeting friends or working, and I have my own favorite hipster locations where I know the coffee and vibe is just perfect. So I thought it would be great fun to have a chat bot that shares my love for good coffee and food that can be asked for recommendations worldwide.

This way whenever I want to try a new café or when I travel somewhere, I know, I can ask my trusted companion about her suggestions.

Here are a few screenshots that illustrate how interacting with Mica feels like:

Mica on Android

You can send her your location as city name or Facebook Messenger attachment and you can also use some basic chat phrases such as”Hello”, “How are you?” or “Thank you”

Mica on iOS

Since the Messenger platform is platform-independent Mica can also be used in the browser itself:

Mica in a browser

Mica on Product Hunt

So how did the Product Hunt launch go? Quite well actually! Since Mica is a fairly simple bot I did not expect that it would get a lot of attention. But I clearly underestimated the Product Hunt community’s enthusiasm for cats and coffee.

User comment on Product Hunt

What happened since the launch?

  • #1 in the Product Hunt category Facebook and Travel
  • Over 2.500 hipster location recommendations given
  • 400 funny cat pics sent

#1 on Product Hunt

Key learnings about the Facebook Messenger Platform

Building a bot for the Facebook Messenger platform was way easier than I expected. It just took me two afternoons to get to a simple proof of concept. Now that Mica is white-listed 900 million users of Facebook Messenger can get coffee shop and restaurant recommendations without having to go to any app store. They can just directly interact with Mica.

This might not sound like a huge deal but just a few months ago I also built location based recommendation apps for iOS and Android. One big adoption barrier for apps is that you have to get people to the app store to download your app. If your app is not mission critical this is even more difficult. The whole process of downloading apps is quite complicated for many people. It often means they might have to enter a password or figure out how to free up storage by deleting other apps. Because of that some people don’t use any apps apart from what comes pre-installed or what other people helped them to get onto their phone.

By building on top of the Messenger platform a lot of adoption barriers suddenly disappear.

Another key learning for me was that most people are still quite unfamiliar with the idea of a bot within chat platforms (yet). Most people expect that they have to download an app and are very surprised about the fact that they can just directly send messages to Mica. I’m curious how fast bots will become mainstream.

What’s next?

I’m currently working on a Telegram bot to cover its users too — they recently announced to serve 100M monthly active users.

These are quite exciting times, building one of the first bots feels a bit like building the first mobile applications back in the day when the app stores where still empty. If you haven’t yet I’d encourage you to try some bots and think about what kind of bot you would build.

So keep in touch and chat! :)

Try me: ;) (click!)

Note: No app install needed, everyone with a Facebook account can chat with me! Just tell me your city!

ps. I’ve uploaded some screenshots of Mica and the other bots here.


Originally posted on Medium

Posted in news, work | Tagged , , , | Leave a comment

Huawei Watch im Test

Letztens wurde ich gefragt, ob ich die neue Huawei Watch testen möchte, und wer mich kennt, weiß dass ich gerne neue Gadgets in die Finger bekomme. Also habe ich nun dieses Android Wear-Produkt für ein paar Wochen testen können.

Als die ersten Smartwatches auf den Markt kamen, dachte ich mir als Early Adopter, ich brauche unbedingt eine und zwar sofort, war dann aber doch recht enttäuscht, als ich die Motorola Moto 360 und die Apple Watch bei Freunden bestaunen konnte, denn die erste Generation dieser Geräte kostete recht viel und konnte dann aber doch recht wenig. Also war ich auf die nächsten Generationen der Smartwatches gespannt.

Ein kurzer Blick auf die Android Wear Seite von Google zeigt, dass schon viele andere Hersteller wie TAG Heuer, Fossil, Casio, LG, Asus und Sony auf diesen Hype aufgesprungen sind und auch bereits neuere Generationen produziert haben. Smartphones werden (wieder) immer größer, somit ist eine Mini-Version am Handgelenk nur die logische Folge für die praktische Verwendung und Integration dieser Tools in den Alltag.


Huawei Watch Unboxing

Die Huawei (gesprochen “(h)Wau-wi”) Watch kommt in verschiedenen Ausführungen mit edel verarbeiteten Metallarmbändern oder in Leder- oder sportlichen Versionen. Ich konnte zwischen einer dekadenten Metallvariante (Rosé-Gold beschichtetes Edelstahlgehäuse und Metall-Gliederarmband) und einem schlichten schwarzen Gehäuse mit passendem Lederarmband wählen und suchte mir letztere aus.


Was zunächst stark aufgefallen ist, war die edle und aufwändige Verpackung. Das Wearable kommt in einer hübschen Verpackung wie ein Verlobungsring vom Juwelier.


Für mich persönlich finde ich die Uhr eine Spur zu groß (42mm Durchmesser) und zu dick (11.3 mm) am Handgelenk, aber ich bin es auch nicht gewohnt, Uhren zu tragen und habe sie etwas störend empfunden (Gesamtgewicht 60.5 g, 47 g Korpus), allerdings gefällt mir das runde Design im Gegensatz z.b. zur Apple Watch sehr.

Um die Smartwatch verwenden zu können, muss man zunächst die Android Wear-App auf dem zugehörigen Handy (Android oder iOS!) installieren, denn die Smartwatches selbst haben keine SIM-Karte und funktionieren (derzeit noch) nur mit passendem Handy. Also schnell installiert und über Bluetooth verbunden und schon konnte die Uhr mit meinem Handy kommunizieren.

Huawei Watch im Alltag

Ein gewöhnungsbedürftiger Punkt ist, dass Eingaben ohne Tastatur und nur mit Sprache möglich ist. Also steht man da und spricht mit seiner Uhr, was irgendwie komisch ist, vor allem, wenn sie einen nicht sofort “versteht”, andererseits fühlt man sich etwas wie in “Knight Rider” ;)

Ein weiterer Nachteil ist, dass die Smartwatch ohne Handy nur beschränkt einsetzbar ist, denn die Notifications wie auch GPS-Position und Telefonanrufe funktionieren nur mit drahtlos verbundenem Handy. So kann man z.b. nicht einfach mit der Uhr alleine einen Lauf machen, denn die GPS-Route wird dabei nicht aufgezeichnet und man bekommt auch keine Benachrichtigungen.

Jene Funktionen, die sozusagen “offline” verwendet werden können, sind Schrittzähler, Wecker, optischer Pulsmesser (nicht kontinuierlich sondern nur punktuelle Messung) und natürlich die Anzeige des Datums/Uhrzeit. Durch ein verbautes WLAN-Modul können aber einige Apps auch ohne Handy verwendet werden wie etwa Google-Suche oder Übersetzung.

Im Alltag haben sich recht schnell auch einige weitere Schwächen der Uhr gezeigt: So hält der Akku leider nur 1-2 Tage (300 mAH), je nachdem, wie viel man die Android Watch benutzt. Bei starkem Sonnenlicht kann man das Display nicht besonders gut lesen und trotz Mikrofon fehlt der dazugehörige Laufsprecher, um etwa telefonieren zu können, denn für letzteres braucht man ein Bluetooth-Headset.

Trotzdem macht die Uhr total Spaß und ist sehr praktisch! So kann man direkt am Handgelenk Benachrichtigungen empfangen und über die Google Spracherkennung auch direkt beantworten…


Notification mit Facebook-Usergesicht

…weiters ist es recht spannend, so seinen Bewegungsaufwand im Alltag zu verfolgen, etwa wie viele Schritte man so macht, wenn man den ganzen Tag zuhause verbringt oder wie viele Kalorien man bei einem 30-Minuten-Lauf so verbrennt.


Ergebnis nach einem 6km Lauf beim Vienna City Staffel-Marathon

Die Auflösung des Displays ist sehr hoch (AMOLED 400×400 mit 286 ppi) – iPhone-User würden dazu “Retina-Display” sagen. Es ist auch sehr praktisch (allerdings manchmal etwas störend), dass man direkt auf das Handgelenk die App-Notifications erhält und so nicht etwa das vibrierende Handy aus der Hosentasche ziehen muss. Auch nett, ist dass man aus vielen verschiedenen “Watch-Faces” wählen kann.

Etwas gewöhnungsbedürftig ist auch, dass einem die Uhr ständig “zuhört”: Wenn man schnell etwas suchen will oder jemandem texten will, muss man lediglich “OK Google …” sagen und die Uhr macht, was man ihr befiehlt.

Apps, die ich größtenteils verwendet habe, waren LIKE A HIPSTER und Hungry?, Google Now, Fitness-Apps/Pulsmesser, Wetter-Apps, Chat-Apps, Google Music (via Bluetooth mit Lautsprecher verbinden!), Google Translate und Google Navigation. Ein interessantes Feature ist auch der Fernauslöser der Kamera am Handy mittels Smartwatch.


Aufgeladen wird die Uhr mittels USB-Kabel, das per Magnet andockt, kontaktloses Aufladen (Induktion) wurde leider nicht verbaut. Das Display ist hinter Saphir-Glas geschützt. Weiters ist das Gerät mit einem Speicher von 512MB RAM (als lokaler Musikspeicher und für Offline-Daten der Apps) und mit Gyroskop, Beschleunigungsmesser und Barometer für Fitness-Messungen ausgestattet.

Was ich bei der Huawei Watch nicht so ganz verstehe ist, dass sie nur einen Knopf hat, den man nur drücken kann, im Vergleich zu der Apple Watch, die zwar auch nur einen Hardware-Knopf hat, den man aber auch drehen kann, um zu scrollen. Wenn man schon einen Knopf verbaut, würde ich dem, wie bei gewöhnlichen Uhren auch, gleich mehrere Funktionen geben (z.b. Herausziehen des Knopfes), aber den Knopf lediglich zum Ein- und Ausschalten des Display bzw. des Geräts zu verwenden, erscheint mir etwas verschwenderisch. Das Samsung Gear S2 enthält z.b. hat eine Lünette als Eingabealternative.

Dafür werden einige gewöhnungsbedürftige “Wrist-Gestures” unterstützt, mit denen man einhändig durch z.b. eine Liste scrollen kann. Das Problem dabei ist, dass man jene Gesten auch aktiviert, wenn man z.b. sich leicht gestikulierend mit jemandem unterhält.

Warten auf Updates

Zu diesem Zeitpunkt teste ich die Huawei Watch mit Android 5.1.1. Mit dem Update von Android 6 soll allerdings der bereits verbaute Laufsprecher aktiviert werden …

… und andere Features wie eine simple Tastatur nachgeliefert werden:

Was auch noch kommen soll, ist ein Doze-Mode zum Batteriesparen und andere Android 6 Features wie auch neue Gesten:



Mein Fazit bisher: Ambivalent.

– teuer
– kurze Akkulaufzeit (1-2 Tage)
– einige Hardware-Features fehlen: GPS, SIM-Karte, Umgebungslichtsensor, Klinken-Ausgang, Induktionsaufladen etc.

– fancy!
– Design / Display
– Benachrichtigungen am Handgelenk

Ob die moderne Huawei Watch tatsächlich den saftigen Preis von fast 350€ Wert ist, muss also jeder für sich selbst entscheiden. Ich jedenfalls freue mich auf zukünftige Generationen der Smartwatches!

Weiters werde ich einen Artikel über das Marshmellow Update schreiben! So stay tuned :)

Andere Reviews

Huawei Watch im Test: Luxuriöse Smartwatch mit Macken

Android-Wear luxuriös verpackt

Posted in technik | Tagged , , , , | Leave a comment

12 things I hate about iOS development

Originally posted as “10+ things I hate about iOS development” on Medium March 11.

As you might know, I finally released the first iOS versions of LIKE A HIPSTER and Hungry?. So I finally stumbled upon iOS development, although I tried to avoid for so long. And I’m not very happy with it.

I like to try out new technologies. I love to play around with stuff, especially mobile. So I submitted some more or less serious Android apps in the Google Play Store and developed also professional Android apps for Keyosk Tablets and Freewave. Since I already program with Java for 15 years now, it’s fun to develop Android apps because there are no obstacles concerning the language and it’s a very well thought-through framework.

But iOS is different. Why? Here are at least 10 reasons:

1. Swift is not intuitive

You can program iOS apps natively in Objective C or Swift. First I tried to learn Swift on my own because it’s the successor of Objective C (why learn an ancient language when starting iOS development from scratch?) but I soon realized that Swift and I were not made for each other. I never tried Objective C but Swift is super unintuitive and as some of you also might know I’m very impatient. But also pragmatic – so I checked some (Cordova) alternatives such as React Native and finally found Ionic. And this time it was love at first sight!

I’m a Java back-end (and Android) developer but usually I try to see the full picture of a software project so I would rather be called a “full-stack developer” nowadays. Usually I try to avoid front-end development because there are for sure better skilled people out there adjusting CSS and that other hardcore FE stuff, but with my current project George I slipped into AngularJS, which is very nice to work with, when you are used to the “law and order” of Java (I already had a talk or two about AngularJS at some conferences – here are my slides from Berlin).

Ionic is based on AngularJS so for me it was the perfect choice since I was already familiar with AngularJS. But developing for iOS means to use OS X.

2. Must use OS X

There is no way around it! You have to use OS X to build the iOS binaries and I never was a Mac user. Coming from the Java world which was from the very beginning conceptualized as platform independent it is strange to be bound to an OS.

So what I did was to virtualize OS X. Yeah, you might think now “WTF?”, but I really did! Some people warned me about it because it would be too slow or to complicated or so but I though I’ll give it a try anyway because “how hard can that be?” (famous last words!) and I really didn’t want to buy an overpriced MacBook.

So what I did was to get my hands on an OS X image and virtualize it with Oracle VirtualBox, which worked pretty well. The VM is fast, not slow at all! Also with the virtualization I didn’t have to switch computers all the time.

The only disadvantage of OS X as VM is that VirtualBox has a limitation of screen resolution on the virtual machine’s window in your original OS. So the VM’s window does not scale. But at least it is Unix… -ish.

3. Must use XCode

Another very limiting fact about developing iOS is that you can only upload the binaries in XCode! As far as I know there are alternative possibilities to the IDE such as JetBrains’ AppCode or alternatives to the build tools e.g. Fastlane or Ionic (also uses its own build tools) but you have to use XCode (at least from command-line) to submit the artifact to the iTunes app store.

I don’t like proprietary software. I’m an open source girl. And being limited and bound to something is kind of strange to me. So for actual development I use WebStorm that is per se a JavaScript IDE and then I commit the iOS stuff with Git to OS X and build and submit it there with XCode.

The one good thing about XCode is that the emulators start very fast. When starting an Android emulator you have to wait a minute or so for the Android OS to fully start up. At least one small advantage of iOS development.

4. Paid Apple developer account

If you want to contribute to the iTunes app store you have to buy a developer license. That’s very strange: So the community builds killer-features for the iPhone and they also have to pay for that?

It’s around €/$ 100 a year! At this point I don’t even see that the app will amortize this 100 euro/dollars in the foreseeable future.

In contrast to that gorgeous Android land it’s free to publish withing the developer program, you just have to pay a registration fee of $25.

5. Certificates, certificates, certificates

Generally speaking certificates and encryption are awesome! It’s the only way to secure communication or authenticate and authorize in a proper way.

For iOS development you need a bunch of certificates. Many certificates. Far too many! You need two for yourself (iOS Development and iOS Distribution). Then you need to register each of your development devices (e.g. your iPhone and iPad). Next you need to register your apps themselves (“App Identifier”) and last but not least you need a bunch of “iOS Provisioning Profiles”, again two per app – one for distribution and one for development – and also three (!) iOS Team Provisioning Profiles (at least they are managed by XCode itself).

In Android you just have two Java key-stores, one for development and one for releases. That’s it. Super secure and easy.

6. Keychain Access my ass

Unfortunately at one point the “Apple Worldwide Developer Relations Certification Authority” certificate expired (after only 2 years…) and it took me several hours to find out what was wrong because the error message just told me that my app developer certificates were not valid. Googling and trying to change my certificates also broke the currently published apps… Finally I got the right google-hit that this one certificate was expired. It was hidden in the Keychain Access tool by default, well because it was expired. But I already destroyed all my dear certificates, so I had to create all of them again.

Having all those certificates and your bought license you can finally start developing. In XCode of course.

7. XCode is too complicated

XCode is strange. Very strange. Especially when you are used to (Java) IDEs like IntelliJ, Eclipse or Android Studio.

For example if you want to release a build you have to add all these different versions of the app icons and launch images. Why aren’t they just generated automatically?

many many different icons

If you use Ionic it already generates a bunch of these icons and launch images in different resolutions but still you have to create a hand-full of them manually. And you have to associate these icons to the proper versions. It’s like playing Memory for developers!

And you’ll find the build artifacts under “Organizer”. Totally plausible, isn’t it? Why don’t you just call this menu item “Artifacts” or “Archive”?

Also you cannot archive an artifact if currently an emulator is selected as run-time device. Why not just automatically archive it for the default generic device?

Just to compare iOS and Android I’ll show you the number of clicks you need to release a version. In XCode you need to:

  • Click “Build”
  • Click “Archive” → the “Organizer” opens
  • select your version
  • click “Upload to App Store..” → a pop up opens
  • every single time you have to select our “Team”. Why not use defaults? This point will not change that often
  • send to Apple by clicking “Upload”

In Android Studio it’s:

  • Click “Generate signed APK” → a dialog opens
  • (enter keystore password if you like and) click “Next”
  • (choose build type and path if you like and) click “Finish”

This is only half the number of steps! And I also think the last step in Android Studio is not really necessary.

Apple always proudly presents its software and other products as super usable, but I really have to admit that, at least for the developer tools and developer experience, this does not seem to be the case.


8. Apple-XML

I call it “Apple-XML” because iOS uses XML in an unusual way, especially for the plist-file (Property List file), which is a config file for your iOS app. If you are lucky you don’t have to adapt it at all because the Cordova build tool already alters it for you but I ran into a Cordova plugin bug so I had to adjust this file myself.

Apple does not use the “proper” XML standard way such as:

<key name=”name”>value</key>

but in a way where key and value alternate in a list:

<plist version=”1.0″>

OK, this is very technical (and correct XML) and I also think it’s not a super bad thing but it just “itches” in by brain and I cannot scratch it.

9. iOS development limitations

There are unnecessary limitations developing iOS such as: You cannot use a transparent PNG as icons. Why not? A transparent icon would be so much nicer on the iPhone home screen!

It would also be very, very nice to use a GIF as launch image in iOS, but this is also not possible in Android.

10. Bad Usability of the iTunes Connect website

I just sum up some usability points:

  • The iTunes connect website does not work properly on Android’s internal chrome browser! The lower part of the website simply does not show up. That was pretty annoying since last weekend I was AFK and only had my Nexus with me and wanted to add Beta users to my iOS apps.
  • The website has a timeout of 30 minutes or so and it has disabled the possibility to save your password in your browser. Well Apple takes security serious, but in the wrong way! Every time I go to the iTunes website I have to enter my password which is very bad because of possible sniffing attacks, key-logger, or person simply standing behind you (“shoulder surfing”) if you have to enter your password all the time.
  • The website is also broken in that way that when you ran into a timeout you’re redirected to the the login form three times in a row because of improper session management. I hope, they’ll fix that soon!
  • Every time you submit a new release you have to pass several steps until you can finally submit a new version. You also have to answer the same questions all the time (does your app use encryption? does your app use ads?). But in a way that is consistent with XCode ;)
  • When you want to update your apps’ screenshots it also gets a little bit difficult: When you generate the screenshots on your emulators or devices you usually identify the device e.g. “iPhone 5”, “iPhone 6S” etc, but when you have to upload the iPhone 5 screenshot, iTunes Connect just shows you the screen-size e.g. “3,5 inch”, “4 inch”, “4,7 inch”, “5,5 inch”! Ok, maybe you might say now, that every iOS developer knows the resolutions of all iOS devices by heart, but I tell you, that’s again just one other point of your Tech-Stockholm Syndrome.

11. Crash TestFlight

I almost forgot to mention TestFlight, Apple’s beta testing tool! It is – you might guess it – complicated. A developer can add very good friends or other abusable people as Alpha or Beta testers and I’m very glad for every single one of them.

So you start adding their Apple ID email addresses and TestFlight sends them an email invite. To make things a little bit more juicy this email has to be opened on the test device itself, and since some people use a different email address as Apple ID than they regularly do, this is the first difficult obstacle for some. After opening the invite email on the device the poor testers have to install the TestFlight app on their device! So you need an app to test an app. At least the testers can submit feedback though this app – but actually no one did so far, they just texted me directly.

Another advantage of a distinct test management app would be to show you pending invitations for other app, but for some reason TestFlight doesn’t!

With Android you can decide whether you want to create an open or a closed Beta or Alpha (cannot choose that in iTunes), just add these people and they get the updates pushed via the Play Store. OK, they also receive an email and have to click on a confirmation link, but no special strings attached.

If you want to release a new Beta you have to wait for an Apple review, that might take some days (usually 5 days) and when the artifact is accepted by the Apple consortium is also is not directly published as Beta, but you again have to click yourself through the dialogs.

At least you don’t need a review with Alpha releases, but you cannot simply add Alpha users, you have to define a certain role for them in your company in iTunes Connect. So, who wants to be my new Alpha tester slash Chief Legal Officer?

12. No Hot-Fixes!

Last but not least: There is no extra workflow for hot-fixes!

This would be a killer argument against iOS development: If you find a bug or even if you find out you uploaded the wrong screenshot you have to wait for a new release to be approved.

If you are lucky you can request (with a simple contact form) a quicker release but this is not the standard way and Apple does not guarantee anything. So you release the bug-fix and hope for the best. And wait, 2–3 day or up to a week, to get your bug-fix deployed or app store entry changed.

In Android all releases are deployed in 2–3 hours. Just FYI ;)

Describing all of these problems I had with the setup and development of my iOS apps I’m even more proud that I was finally able to release the iOS versions of my apps LIKE A HIPSTER and Hungry?.


TL;DR  iOS sucks, long live queen Android!

Posted in fun, howtos, work | Tagged , , , , , , , , , | Leave a comment