I’ve recently cited a tweet about labeling you feelings to manage the pain or the overthinking they may cause. I decided I wanted to share my feelings about writing a mobile app for one of my customers.
Remember, this is about my own feelings, not the experience of my customer.
I’m visiting Oslo, and got to see the Monalisa of our times. I wouldn’t say that this composition reflects what I feel, the version above may be more accurate.
Double bind
Well, the following is what I feel about building an app for Android and iOS using low level C++ libraries. To summarise, at the time of this writing, I have an android app that compiles but crashes on start, and an iOS app that does not compile in the cloud.
A troubling API
The first problem we had is that we’re using a low level C++ API that simply returns false on Android and there is no GetLastError kind of method that I was once used to call for discovering the nature of the problem. So the first feeling was frustration.
But it turns out that using the phone camera was not the ultimate goal, so we assumed that using the RTSP video feed would work.
Crashes
Nope, the result was worse because the app crashed on both Android and iOS with this new call. This is when I had to welcome the shame for visiting me.
Workaround
We decided to break one of the injunction to exit the double bind and use another API to access the video feed.
Only to hit another problem. The code would crash when ran on armeabi-v7a target phones… while working on armeabi-v8a…
Building the app in the cloud
I’m using AppCenter as my build platform of choice. One advantage of doing so is to free you from buying a Mac in order to build your app. I’m pretty satisfied with that choice.
iOS: Unable to build successfully from the command line
I encountered a problem, that is, my projects’s header search paths parameters are not being used by the xcodebuild tool. The build is working fine within Xcode though.
I have to specify them again as a build setting. Unfortunately, AppCenter, for now, do not allow you to add additional settings for an iOS build. I’ve send a feature request through the support chat. Wait and see.
Endless roller coaster
I used to love riding roller coaster in amusement parks. This is because the fear ends pretty quickly. But I have to say that writing low level cross platform C++ code is very hard and I’m felling riding an endless roller coaster with the uncertainty of reaching the end of the loop where the train would stop.
This is what’s causing the most pain. Welcome the impostor syndrome.
From the beginning of my activity as a freelance, I’ve decided to not charge my customers for the time consumed by solving problems in Open Source Software. Usually it is ok because the problem could be solved quickly.
But for this particular experience made me think again about that. I’m still thinking about the right way to handle this though.
Letting go
May be my pugnacity is degrading… but I’m kind of tired facing so much problems as soon as I’m doing something at the margin. Yes I’m not using Java to access the phone’s camera on Android, and it shouldn’t be so hard to do that…
I have to admit, that, as a developer, I’m learning something new every day. This is what matters the most. This is OK to feel bad because something is not working as I expect.
Final words
Writing this blog post actually helped a lot dealing with my negative feelings. Fortunately, those feelings are not ruining my days, they come and goes and I encouraged me to welcome them out loud every single time, then gently say goodbye after a while. Yes they’ll be back soon and I am not a machine, I’m a human being.
May be I’ll try to write about all this Artificial Intelligence nonsense that we heard often these days. The suffering human being knows that AI is far from having feelings…
Anyway, I’ll do a more in depth technical blog post about all those problems once we’ve overcomed them. Stay tuned.
2 thoughts on “Label your feelings”