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.

IMG_20160404_111421

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.

IMG_20160404_111554

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…

IMG_20160406_203001
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.

IMG_20160410_124233
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.

Hardware

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:

 

Fazit

Mein Fazit bisher: Ambivalent.

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

Pro:
– 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

blog.huawei.at

Huawei Watch im Test: Luxuriöse Smartwatch mit Macken

Android-Wear luxuriös verpackt

Advertisement

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″>
<key>name1</key>
<string>value1</string>
<key>name2</key>
<string>value2</string>

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?.

Kudos?


TL;DR  iOS sucks, long live queen Android!

From Java to AngularJS (without pain)

At the jQuery Conf in Berlin (December 2015) and at the Rubyslava Meetup in Bratislava (17.3.2016) I was presenting my talk “From Java to AngularJS (without pain)”.

jQuery Conf

jquery-conf.png
jQuery Conference Berlin 2015

Rubyslava

rubyslava_meetup.png
Rubyslava Meetup March 2016

This is a (pretty shitty, sorry for that) video of my talk at Rubyslava – btw no, I’m still not a Ruby developer ;)

Talk Summary

The “Superheroic JavaScript MVW Framework” AngularJS is a state of the art JavaScript tool for single page web applications that offers a lot which JS alone does not – namely structure. As Java Developers we like the law and order of object oriented Java with all its tools; so I would like to show how pleased I was after discovering AngularJS for front end development (instead of JSF or Spring MVC).

My slides

Full abstract of the Talk

The “Superheroic JavaScript MVW Framework” AngularJS is a state of the art JavaScript tool for single page web applications that offers a lot which JS alone does not – namely structure. As Java Developers we like the law and order of object oriented Java with all its tools; so I would like to show how pleased I was after discovering AngularJS for front-end development (instead of JSF or Spring MVC).

In my presentation I will give a short introduction on basic principles of MVC in Java and point out some common solutions (JSP, Spring MVC…). Then I will continue with a description of AngularJS (Google yay!) and how client-side model–view–controller (MVC) can be achieved with Angular. Next I am going to show you how structure will be enforced by using extended HTML and JS vocabulary with modules, directives, and controllers (ng-what?? no JS/HTML mix). I will continue by answering the question of the implementation of the back-end (REST via jQuery) and add an overview of supporting state of the art frameworks (npm FTW!, bower, gulp, less, coffee script / jasmine, jade, bootstrap, lodash…). I am going to finish with some best practices and the downsides of Angular (no pain, no gain).

This talk is suitable for (intermediate and higher) Java (or JS) front-end developers who are eager to try out new front-end frameworks and principles. Some code examples will be presented on slides. If there is enough time left, I’ll show a live demo.

What’s next?

As speaker I’m going to have a keynote about “Simple Mobile Development With Ionic” at We Are Developers in Vienna April 13!

Upcoming Babe Tour Dates:
– 13.04. We Are Developers Conference – Ionic
– 26.04. Demo Night #4 – likeahipster.com
– 27.04. ViennaJS Meetup – Ionic
– 11.05. AngularJS Meetup – Ionic

Also I plan to visit some conferences such as the Craft conference in Budapest.

So stay tuned :)

42 Things You Should Have Done At The TECHNICAL University

technical-university

I came across a list of 101 things you should have done during studies (German) recently and I thought, that it’s more of a list of fun things to do during your studies of social sciences but not so much technical ones. That’s why I made my own list*:

  1. Attend the lecture “Theory of Relativity 101” and frequently ask “Why?”
  2. Install games on your pocket calculator.
  3. Turn off your computer and try to research a current topic only with books from a public library.
  4. Try to wake up a professor, who fell asleep during your presentation with a sudden enthusiastic expression.
  5. Go to an exam about “Mathematical Logic” without preparation, because it’s “only logic”. Fail.
  6. Fall asleep during “Electrical Engineering” at 8 o’clock in the morning.
  7. Wake up during “Technical Mathematics” at 10 o’clock in the morning.
  8. Get offered a Schnaps by a professor because he thinks you are too nervous.
  9. Get in a fight with a professor about the integrity of science.
  10. Bash social sciences because they’re not “real” science. Get convinced of the opposite.
  11. Get left behind in a laboratory after opening hours.
  12. Join a group of nerds.
  13. Spend 5 days in a row preparing for an exam and oversleep on the day it actually takes place because you are too tired.
  14. Go to the library for socializing and not for reading.
  15. Get old exams from the Student Council (Austrian: “Fachschaft”).
  16. Figure out far too late that all the mathematical courses are easier at non-technical universities than at your university and that you could have completed them there.
  17. Learn to read the cryptic handwriting of an eccentric professor.
  18. Disagree with your professor.
  19. Agree with your professor.
  20. Know at least the first 10 digits of Pi by heart.
  21. Make friends with the librarian.
  22. Make friends with your favorite (grumpy) waiter at your favorite coffee house.
  23. Play hooky a lecture and discuss the matter with your fellow students.
  24. Write a technical paper and only use the feminine form.
  25. Attend an super important scientific conference at a very pleasant place such as Hawaii.
  26. Learn how to program. Even if you don’t study computer sciences.
  27. Let other fellow students copy from you during a course.
  28. Study a semester abroad at a university that is on the other side of the world.
  29. Don’t do anything for your studies for an entire semester. Really nothing. (Can be combined with 28.)
  30. Learn to use LaTeX – hate it first but fall in love with it later.
  31. Win a price for your master thesis and spend the price money with your friends in a bar.
  32. When a tutor discusses the wrong layout of your paperwork, try to convince him that it was the printer’s fault.
  33. Correct a scientific Wikipedia article.
  34. Work as a tutor and teach freshmen.
  35. When you finished your thesis and still have some time left during the semester take a random course – because you paid for the whole semester.
  36. Take at least one course about “Soft Skills & Gender Studies”.
  37. Invite your thesis supervisor for a drink after your defensio.
  38. Spill your coffee over the “Maths Basics” book. On purpose. Alternatively burn it.
  39. Submit a paper containing only lorem ipsum for peer review to a scientific conference.
  40. Get good grades at the “Analysis II” exam although you never ever will need it again in your entire life.
  41. Write a cheat sheet with formulas. Then write it again but smaller. And then smaller again. And again. Until you memorize it.
  42. Read The Hitchhiker’s Guide and use the number 42 as often as possible.

And what was the funniest thing you did at the university?


* I accomplished some of these things during the ten years at the Vienna University of Technology, others I suggest you do.

Two Weeks After The Launch Of Our LIKE A HIPSTER App – Insights In Continuous Delivery

logo

Kathrin already wrote about our first week, so I take the chance to update you on our second week after the launch of our LIKE A HIPSTER app.

It’s now been two weeks since our mobile app LIKE A HIPSTER hit the app store. LIKE A HIPSTER is a SOcial LOcal MObile app, that helps users find venues with a hipster vibe in their neighborhood. We pretty much went:

  • From idea to prototype in 3 hours
  • From prototype to launch in 24 hours
  • From launch to world domination in 7 days 14 days

So it was quite an exciting time and I want to share some thoughts I had during the past two weeks.

What’s Your Niche?

Have you ever watched Big Bang Theory? If yes, then you probably have a pretty good idea of what my life looks like at the moment. I (the Ami) have a temporary roommate. Her name is Kathrin and she’s a marketing guru, and the Penny (Don’t tell her I said that!).

Two weeks ago we had lunch together in one of our favorite restaurants and we discussed my current project the Hungry? app, a restaurant finder app based on the Foursquare and Yelp APIs I wrote because I got used to and bored of my common eateries and I wanted to discover new places resp. I wanted to get good restaurant recommendations when traveling. So I asked Kathrin about her opinion on the app and she said, that she likes it but she would not use it but use directly the Foursquare or Yelp apps instead. She would use it if there was some special attribute available… such as… (she glanced around in the restaurant)… hipster places! Suddenly our eyes popped and we got very excited about the idea, so we went home and started working on the “Hipster project”.

Let’s do this!

So we went home and I forked the source code of the Hungry? app. Kathrin did some research on a hipster logo and after a quick hack in Photoshop our corporate identity was fixed: pink, unicorn + cat = caticorn / unicat.

My first idea was to make a spin-off of the Hungry? app and to name the app “Hipster?” but Kathrin had a better idea and found out that likeahipster.com was not taken. So she setup a Facebook page, Twitter, and Instagram account – later also a YouTube channel.

She also found a street art picture under CC license with a lumber-sexual guy and we adopted him as our “Hipster Oida” (literally “old hipster guy”) – our ambassador and face of LIKE A HIPSTER.

hipster-oida-hintergrund

After forking the code I rebranded it, changed the colors and icons, added “hipster” as search term to the API calls, and set up the Google Play Store page.

We quickly launched the website, app, and other social media channels until the end of the day.

nexus5 (2) nexus5 (3) nexus5 (1)

Some insights and highlights:

  • Kathrin and I know each other already for some years but we never worked together. So it was thrilling to find out that we totally have the same working pace and enthusiasm about this project.
  • Kathrin’s texting skills were amazing! Just check out our website. We were sitting at my tiny kitchen table – I did the technical stuff, Kathrin wrote the pages for the website – every couple of minutes she started giggling about what she currently wrote. Especially our Testimonials site.
  • My Photoshop skills weren’t that bad as I thought.
  • We chose to give both of us the roles “C*O” because we actually did everything. Except our Head of Communication should become my cat Mica – because diversity.
    hipster-cat-round
  • Since I am a Java / Android developer I was not able to quickly produce an iOS app, so we decided to add a nice quirky joke to our website: We added an iOS download button but it links to a Nexus 5 in the Amazon webstore – meaning: “Looking for the iOS app? Get an Android phone instead!”

The Results Are In!

On the next day was my birthday and Kathrin surprised me with the app being featured on Product Hunt which was pretty cool – some people say Product Hunt is the next Tech Crunch…

We decided to be as transparent as possible about our processes so I set up a blog to write about our progress and share some insights. I also configured some ads for our app with Goolge AdWords with a Mickey Mouse budget of 5€ per day.

Kathrin wrote a (for my taste far too serious) press release and finally we received press coverage in

Additionally Singapore Airlines asked us if they could feature our app in their monthly magazine Silverkris!

And we got some really funny reviews in the Google Play Store and other reactions on twitter. My favorite:

https://twitter.com/gianpaolodamico/status/650428318521667585

I was (and am still) totally overwelmed with this positive feedback we got for our app. My key learnings:

  • You can NOT force your friends to upvote your on Product Hunt or review your beloved app on Google Play Store – unluckily some just don’t care (enough). I really didn’t expect that!
  • We got more revenue from the Amazon Link joke than with the app ads.
  • Finally we got “employees” (somehow): Besides my cat who works for cat food we bought an animated logo from fiverr (employee #4)

    and a pretty cool YouTube video (employee #5) that explains our app’s user interface (with music from mattluedke.com):
  • We had a photo shooting with Cliff because for press coverage we needed pictures of us two without holding a beer in our hands. But it turned out, that it was not such a good idea to take pictures of our tired 9 o’clock selves. So I think we should make some other pictures soon.
    founders

The brave 500

And than on Oct 13 it happened: We hit the 500 app downloads mark!

playstore-gesamtinstallationen20151013

As I already mentioned we bootstrap our business and have no money what so ever but our private money to invest. Besides the 5€ a day marketing budget on Google AdWords I installed some cross-app “in house” promotions which are for free in AdMob. So on Hungry? there are ads for LIKE A HIPSTER and vice versa. And as you could see in the graph above we gained approx. 40-50 users each day. (I launched Hungry? two weeks earlier so I got about 630 downloads there so far – interestingly both apps are performing quite alike, although we thought that the user groups are different.)

And I figured out I love performance marketing. Some numbers:

  • We currently have an average of 60-70 active users per day.
  • 5 Best performing countries besides Austria
    GoogleAnalyticsCountries20151015

    • United States
    • Iraq (I really don’t know why!?)
    • Morocco
    • Bangladesh
    • Canada
  • Facebook ads are quite cheesy because we didn’t see any conversions there! So we disabled them again
  • Amazon earnings so far: ~75$
  • AdMob earnings: ~15€
  • AdWords spendings: ~75€

500

And Now?

Implement new features (rework of the UI to better match Material Design is done) and try to monitarize the app further. Catching good press coverage and submitting the app to app review sites. And I really need to take off a week or two to implement the iOS app – we’ve obviously got a really high demand for iOS.

Continuous Delivery

One word (or two) about Continuous Delivery.

Continuity in delivery could be boon and bane. I try to release new versions with freshly handmade features as quickly to the market as possible. Meaning that the app needs to be updated every couple of days.

One of the downsides is that sometimes I release too early and unintentionally add some bugs (currently performance issues). Or the users got kind of used to old features and are now confronted with new ones (as with the Material Design makeover).

But as I always say: If you don’t continue enhancing your apps and stop developing, they die!

And I won’t let our baby die! So keep tuned for new features.

Move subfolder into new GitHub repo

Sometimes it happens that you want to outsource a sub directory from your GitHub repository to a separate new repository.

e.g. you have a structure like

# github repo
/electrobabe
  /chefbabe
    /app
  /papierwahl

and want to have a new structure like this

# old repo
/electrobabe
  /papierwahl

# new repo
/chefbabe
  /app

This can be done super easy with only two commands (from help.github.com):

  1. in your original directory
    cd electrobabe
    git filter-branch --prune-empty --subdirectory-filter 
     chefbabe master

    The directory electrobabe now only contains the files of chefbabe.

  2. Push to your already created new empty repo:
    git push git@github.com:chefbabe.git -f master
  3. Optional: Clean up (e.g. clone the original repo again) and to set your configs in /.git/config again

Integration Test Coverage with Sonar

I love to develop test driven, but even more I love code analysis tools that show me what to improve. Sonar is quite “popular” and common for Java developers and I’m using it already for years in different projects.

If you want to see integration test coverage, you have to set the jacoco maven plugin together with the fail safe plugin in your maven config (pom.xml):

    <build>
       <plugins>
            <!-- integration tests -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- for integration test coverage in sonar -->
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>jacoco-initialize</id>
                        <goals>
                            <goal>prepare-agent-integration</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <properties>
      <!-- needs to be set for jacoco's forked process -->
        <argLine>${env.MAVEN_OPTS}</argLine>
    </properties>

argLine is used as additional param in the javaagent command line section jacoco uses (needs to be set, otherwise the maven opts are not set for the forked process – OutOfMemoryException and so on…). See jacoco’s documentation for details.

The result in Sonar is pretty amazing:

sonar-jacoco

Aus der Serie “Ich bin Ingenieur, ich kann das”: Wie man sein Nexus 4 repariert

keep-calm-and-trust-me-i-m-an-engineer-74[1]Als Ingenieur hab ich keine Scheu davor, Geräte und Maschinen auseinander zu nehmen. Die  Eingeweide von Computern und Notebooks sind mir bestens bekannt, meine Vespa kenne ich auch nackt, letztens musste der Geschirrspüler dran glauben und alles, was zu schrauben war, habe ich in meiner Wohnung selbst erledigt. Allerdings ist es ein wenig spannender, ein Smartphone auseinander zu nehmen, weil alles super filigran ist und auf kleinstem Raum angeordnet.

Nach dem ich wiedermal das Display meines Handies durch Ungeschick zerbrochen habe, dieses mal aber leider nicht nur das Glas, sondern das gesamte Display, habe ich auf Ebay nach einem Ersatzteil gesucht und bekam es “prompt” nach einem Monat aus China geliefert. Natürlich ist man da skeptisch, wenn man ein Nicht-Originalersatzteil aus dem Land der aufgehenden Sonne geliefert bekommt, aber das macht es um so spannender. Nachdem ich mir bereits das Nexus 5 als Nachfolger gekauft hatte und das Ersatzteil gerade mal 35€ kostete, hatte ich nichts zu verlieren, denn ein zerstörtes Nexus 4 ist nichts mehr wert und eine Versicherung hatte ich nicht (jetzt schon!).

Also, Ersatzteil angekommen, alle winzigen Schrauendreher bereitgelegt und es kann schon los gehen!

Auf YouTube findet man diese Anleitung von Fixez.com, an die ich mich weitgehend gehalten habe:

Man braucht einen Föhn zum Erweitern des Metalrahmens. Weiters einen Kreuzschraubendreher und einen Torx T5 in Barbie-Größe, letzteren hatte ich bereits von einer anderen Reparatur, ich glaube an meiner Digitalkompaktkamera, bereits in meinem Tool-Sortiment. Außerdem ist es sinnvoll, das Gerät mit einem Plektron oder ähnlichem aus Plastik zu öffnen und nicht wie ich mit einem Buttermesser, dann hinterläßt man weniger sichtbare Spuren auf dem Gerät.

IMG_20140619_191557

IMG_20140619_123549IMG_20140619_125539

 

IMG_20140619_191648

IMG_20140619_135814

 

Die Reparatur hat etwa eine Stunde gedauert und ich denke, wenn ich das regelmäßig machen würde, könnte man das Gerät wohl in 10 Minuten reparieren. Ein Spaß war es allemal und der Patient hat überlebt und strahlt wieder in gewohntem Glanz.

mechanical_engineer

Frauen in der IT – die helle Seite der Macht

prinzess-leia-gun
Auf der hellen Seite der Macht

Frauen in der IT. Na, und?

Es vergeht ja kaum eine Woche, wo nicht wieder in irgendeinem Magazin, Radio oder Zeitung skandiert wird: “Oh mein Gott! Es gibt so wenig Frauen in der IT”. Meine Antwort darauf: Na, und?

Ebenso dieses ermüdende Gerede über Vereinbarkeit von Kind und Karriere oder die Frauenquote im Management… Ich arbeite seit 13 Jahren erfolgreich in der Branche und leite gerade mein drittes agiles Software-Entwicklerteam und ich mache das mit Leidenschaft. Keiner fragt mich, ob ich wegen einer Quote eingestellt bin, sondern ich mache das, weil ich gut bin. Vom Team werde ich unterstützt (und geliebt) und die Geschäftsführer schätzen mich. Was will man mehr?

Wenn ich jemanden neu kennenlerne und dann erzähle, dass ich Software-Entwicklerin bin, kommt zu 90% immer eine dieser beiden verblüfften Reaktionen:

  • “Was? Wirklich? Ich kann mit Computern ja gar nicht umgehen…”
  • “Was? Wirklich? Da gibt’s aber nicht so viele Frauen, oder?”

Auf die erste Phrase antworte ich gerne mit dem naheliegenden Witz: “Ich auch nicht! Aber verraten Sie es nicht meinem Chef!” und auf die zweite würde ich am liebsten gar nicht antworten. Natürlich ist Small Talk dazu da, um über das Offensichliche zu plaudern, aber wenn ich nur jedes Mal einen Cent für jedes verwundertes Gesicht über meinen Beruf bekommen würde… Naja, ich würde vermutlich eh weiter das gleiche machen, das ich auch jetzt tue!

Wieso müssen wir immer so einen riesen Wind drum machen, was sich von ganz von alleine auflösen wird? Ich denke, das ist alles nur ein aufgebauschter Sturm im Wasserglas.

Aber, wo sind die Frauen?

Wo sind die Frauen?

Heute (12.4.2014) bin ich am BarCamp Graz und war bei den Session vom App Dev Camp, wobei ich (wiedermal) die einzige Frau war. Bei den letzten ViennaJS Meetups war ich eine der wenigen weiblichen, wobei man schon sagen muss, dass einige Langhaarige (und einige mit Brüsten ;) ) dabei waren.

Es gibt löbliche Veranstaltungen wie Rails Girls, die Frauen/Mädchen das Programmieren näher bringen sollen, oder Digitalista, ein Netzwerk nur für Frauen. Aber meine Frage ist: Brauchen wir Frauen denn das alles wirklich? Unterstreicht diese Aussondierung nicht noch zusätzlich, dass wir es nicht von allein schaffen und extra Hilfe brauchen? Wozu positive Diskriminierung wie Frauenquoten etc.? Ich hab noch nie einen Programmierclub gesehen, der dazu da war, nur Buben zu fördern – und glaubt mir, Frauen sind unter Burschen IMMER mehr als willkommen. Man kann z.B. in den Hackerclub Metalab in Wien reingehen und sich aufgrund der reinen Anwesenheit bewundern lassen.

Wie wärs, wenn wir einfach einmal so tun, als wär es ganz normal, dass es Frauen in der IT gibt? Reden wir lieber über dieses komische Völkchen der Geeks und Nerds. Das ist viel lustiger!

Frauen haben Vorteile in der IT

Selbstverständlich gibt es Leute, die Vorurteile haben, das möchte ich gar nicht leugnen. Der “gewöhnliche Alltagssexismus” aufgrund anerzogener Konventionen gehört ja fast schon zum Leben dazu wie das Koffein zum Morgen, und ich denke nicht, dass sich das bald stark ändern wird. Zwischen Männern und Frauen gibt es nun mal signifikante (körperliche) Unterschiede, die man nicht wegdiskutieren kann, also bekämpfen wir diese bitte nicht, sondern respektieren wir Grenzen und leben wir damit zusammen. Unterschiede sind Ungleichheiten, aber diese sollen nicht wertend behandelt werden.

Während meiner drei Studien an der TU Wien bin ich benachteiligt wie auch bevorzugt worden. Es gibt da eine lustige Geschichte mit einem Statistik-Professor, die ich jedem gern mal bei einem Bier erzähle, wo mein (weibliches) Auftreten Eindruck gemacht hat. Klar gibt es Unterschiede, wie man behandelt und behandelt wird, aber vieles hängt eher meiner Meinung nach mehr von Sympathie als mit dem Geschlecht ab. Und das kann jeder als Vorteil nutzen.

Frauen haben ihre Reize, das ist klar. Objektiv gesehen sind sie einfach hübscher anzusehen und mit einem kleinen Anstoß kann man (als Frau) das auch Nutzen. Ich plädiere für eine breite Charmoffensive von uns Frauen statt dem Gefühl, sich durchsetzen zu müssen und extra auf “männlich” zu tun und imaginären Spielregeln nachzujagen.

Nachdem ich bei knallgrau gearbeitet hab, hat mir einer meiner Ex-Chefs auch gesagt, dass sie extra wieder eine Entwicklerin anstellen wollten, da es das Team sehr gut auflockert. Das kann ich nur bestätigen. Ich hab das Gefühl, dass es bei “Würstchenparties” einfach etwas gröber zugeht (Stichwort: Machogehabe, Alphatierverhalten… sorry für die Verallgemeinerung) und Teams generell besser funktionieren, wenn sie ausgewogen sind.

Würstchenparty
Würstchenparty

Interessant ist, dass in vielen Branchen Leute berichten, dass sich die Atmosphäre ab der Inklusion der ersten Frau ändert, viel stärker als bei jeder weiteren. Mit anderen Worten: Der Unterschied liegt darin, ob mindestens eine Frau im Team ist, nicht darin, wie viele es sind.

Man kann und soll Frauen in IT-Teams stecken, genauso wie qualifizierte Leute mit unterschiedlichen Hintergründen etc. Diversität ist immer eine Bereicherung!

Gendern heißt (nicht) Ändern

Und noch ein Wort zum Gendern: Ich glaube, dass das gerade nur ein pseudo-altruistischer Trend ist, der auf lange Sicht sich nicht bestand hat. Wieso Unterschiede suchen, sie betonen, und dann versuchen sie wieder umständlich aufzulösen?

Ich hatte auch Diskussionen, ob ich nun das Binnen-I bei meiner Dissertation verwenden soll, oder die doppelte Schreibweise (etwa “der Benutzer und die Benutzerin”) und habe schließlich komplett drauf verzichtet zugunsten der Lesbarkeit des Textes (wobei die dopplelte Schreibung mir locker drei Seiten mehr Text gebracht hätte). Also hab ich eine kurze Erklärung im Vorwort geschrieben. Das reicht für mich, denn ist es nicht Feministisch genug, überhaupt eine Diss in technischen Wissenschaften auf der TU Wien zu schreiben?

Vergesst die Unterschiede

Es geht nicht darum, dass Frauen bevorzugt werden oder nicht. Ich finde, das ist sowieso die falsche Frage. Der “Kampf der Geschlechter” soll einfach ruhen gelassen und am besten gleich vergessen werden.

Wie wär’s, wenn wir nicht unsere Zeit damit verschwenden, Unterschiede zu suchen, sondern uns um ein konstuktives Miteinander bemühen! Chauvinismus gibt’s und ich denk, den werden wir auch nicht los, aber es hilft nicht, darüber zu jammern, sondern als gutes Beispiel eigene Zeichen zu setzen. Wer Unterschiede erwartet, wird auch welche finden, ich finde allerdings die Gemeinsamkeiten interessanter. Und das “Problem” (das keines ist), dass zu wenig Frauen in der IT sind, wird sich ganz von allein lösen.

Zur Person:

Dr. Barbara Ondrisek hat drei Studien an der TU Wien abgeschlossen und arbeitet seit 2001 erfolgreich größtenteils als Freelancer in der IT als Senior-Software-Entwickler, Java/Android-Entwickler und Scrum Master. Ohne “in” ;)