Mihaela MJ profile image

Mihaela MJ

she/her, #BLM, Senior developer for Apple devices (iOS, macOS, tvOS, watchOS), Vapor student, former Asterisk integrator, mom of 3, atheist, FSM minister

Twitter Blog

How and when did you get into programming? And into iOS?

I was a long-time Windows desktop developer, doing mainly Delphi and database (accessible from the desktop app). In 2012 I bought a MacBook Pro (non-retina) 13 inch and quit my job. I took a month off and watched the Stanford CS lessons with prof. Haggarty. I wrote an iOS app (universal iPhone + iPad) that scraped all banks operating in Croatia for the current currency exchange rates.

I think that none of them had JSONs. It was XMLs, CSVs and DOM parsing :)

After that I got a job as a junior iOS dev for a small Croatian digital agency, working for peanuts basically. I got an UpWork account during that time (it was called ODesk then) and found a client for rewriting his Ionic app into Objective-C. It had live audio streaming and Apple frameworks handled that very well. Soon after I started that, I quit my agency job, for I preferred to work from home.

After using my first MBP for a week, I have never turned on my big PC, ever again. It stayed under my desk for 5 years, in case I need anything from it, but it never happened, I've never used it again. I've coined a saying then: "Once Mac, never back" It's still true.

Wow, that was some serious switch 🙂 What was the main reason to get into iOS? What was ObjC like going from Delphi?

I didn’t want an iPhone when it was first released. I was happy with my Nokia E75 or something. But when iPhone 4 was released (first Apple SoC) I wanted it badly. So I got it and wanted to do apps for it

Was there like a single iPhone 4 feature that was the main reason for you?

The way it looked with the glass back, amazing retina screen, great battery for that time. iPhone 4 introduced the `A` SoC family, later it was used in the first iPad.

The most important iPhone feature, to this day, is its amazingly fast UI rendering engine (Core graphics + Core Animation) that makes the UI fast and snappy. Still unparalleled by any other mobile OS, by a large gap.

When did you transition from ObjC to Swift? With Swift 1.0 or later?

It was in 2016-2017 when I started doing Swift. I've never sat down and read a book about Swift, I just started coding. I was added to the project that was half-Swift half-ObjC and just started contributing. If I needed some explanation I would use mostly Apple documentation. It was swift 2.0 and soon after Swift 3.0

After I while I found myself not remembering how to do something in Obj-C. Luckily I found a small gig 100% Obj-C that "brought me back", more than a year ago.

Do you have a formal education (meaning computer science degree or similar)?

I have masters in Information Science and Speech Science.

Do you remember what was challenging to grasp when learning iOS/Swift in the beginning?

Actually, Objective-C came very easy to me as it had `interface` and `implementation` separated, just like Delphi did. Syntax was the only difference and I did appreciate the verboseness of the standard functions and the entire idiom.

What was challenging was envisioning iPhone as an embedded device that is not always connected to the power source and that has many sensors included. Coding for that environment is very different. It is like having a living organism with many limitations.

That is why coding for mobile has many more layers than web or desktop. For the same reason, frameworks that don't take the nature of embedded, live, mobile device into account, provide a lacking experience (to be polite) (like Flutter, or Electron for example)

Another challenging thing was understanding how the Core Animation framework works under the hood. It is an out-of-process library that works along with your app and generates frames for the change that is being animated. The process is similar to "tweening" in hand animation drawings. The key concept is the change that you have animated is not happening on the model (in the app). If you animate moving the circle from A to B, you also have to add the code to literally move the circle to B.

This applies only to explicit animation, but most people are not familiar with that concept, because it is not mentioned often. For that reason, I have started a series of blog posts explaining Core Graphics & Core Animation because I think that everyone should know that.

Have to say I am really looking forward to reading your posts! There isn't a lot of material dedicated to animations. Do you have enough opportunities to use Core Graphics / Core Animation in your development?

Not much, but when I did (professionally) it seemed advanced. And it shouldn’t have been. Just another paradigm to grasp. I have used CA many times in my projects. CG only a few times.

I am curious what is the iOS development landscape like in Croatia? Are there enough opportunities for developers?

I don’t work for locals, neither do other devs, only juniors learning the trade. You know I sold a shareware app back in the day (2010-2017) and I made sure the sales page was inaccessible in Croatia and the region. We live here, we don’t do business here.

That's surprising, to say the least. Is there a popular site or a way to find opportunities outside Croatia?

Nope. Not one source. My current gig found me on LinkedIn. Before that, I worked via Upwork mainly. Had an amazing US client till they sold their ventures to a UK company that did not need mobile.

Got it. To change the topic a bit... You have a magic wand... and can change one thing about iOS development. What?

Copy the VCL (Visual Component Library) concept from Delphi. Make it possible for a component library market vendors to thrive. Not only visual, networking, and data manipulation ones as well. Make a market for trained ML models for app developers.

This means that companies can easily sell their advanced UI components right? I remember those from my .NET days..

Yep, like DevExpress (I was a customer), but for non-UI needs as well.

Got it! To step back from code.. What do you do to relax?

I make YouTube videos about cooking in Instant Pot, while learning Final Cut Pro & Motion

Thanks so much for taking the time! I have learned a lot and looking forward to the blog posts. Do you want to give someone or something a shoutout?

Yeah, like everyone passionate about Apple devices and developers targeting them. Apple is the only company not gaslighting you about their development frameworks. They only take your money, for their expensive devices and you get everything else for free.

Other chats

All chats