photo by Julio TioVerde

iOS Dev Stories: Thiago Holanda & Swift Evolution App

Thiago Lioy
Cocoa Academy

--

Today I am starting a new section of Cocoa Academy called iOS Dev Stories. The idea is to talk with iOS developers and listen to their stories. My goal here is to share with new developers and readers similarities between then and experienced iOS developers with several projects under their belt.

For this first interview, I invited a friend of mine called Thiago Holanda who features in the picture above. Guess iOS development is not his only passion. Holanda worked with me in a company called Concrete Solutions a few years ago and also in some open source initiatives. Nowadays his getting a lot of attention and directing his efforts towards a new project: The Swift evolution app.

Today we’re going to talk about a few things ranging from projects, open source, tools, community, etc.

Thiago Lioy

How and when did you start developing for iOS?

Thiago Holanda

Hello, first of all, thank you Thiago Lioy for inviting me to this first issue of iOS Dev Stories. It’s an honor to tell a little more about my story as an iOS Developer, which started in a galaxy far far away, ops…
We are talking about development, not Star Wars!
My story as a programmer began in 2005. After working with PHP, ASP.NET, and Python for a few years, I joined Concrete Solutions Mobile Team in April 2011. Back them we were a small team with no more than four people, trying to make sense of all this different and new technologies. I fell in love with mobile development: phones, watches, TVs, IoT, you name it and count me in.

Could you share some of your experience? Projects that you contributed for, events you went, etc.

As long as I remember, I’ve always felt a deep connection with the open source scene. By using, contributing, learning from these projects or a mix of that. Open source’s projects have been enhancing my everyday life and making me more productive in so many ways. We don’t only support open source through the writing of code, sometimes all it takes is to open an issue, fix a typo, write some new section on the readme, ask for features, show interest! Open source is not only code, and my contributions were mostly modest, like I did for Zewo, a Swift Server Side project of which I am a Core Member. My very first participation began with a partnership with Paulo Faria, together we created HTTPBasicAuth middleware, after that, we kept discussing Zewo’s future among other things. I’ve also made some presentations in CocoaHeads about IBDesignable, Swift Server Side, and AppleTV. In 2015 I went to 360iDev in Denver, CO. It was a perfect experience, where I met excellent people, who I still talk almost every day until today. Next target is WWDC, but I’m still waiting! ;)

iOS Community is very active. How do you keep yourself in sync with everything that is happening in the community?

I’m part of an iOS community in Brazil, the iOSDevBR. Some members of this community also manage the CocoaHeads Brazil, so I have the chance to be where the information is shared. These communities are a great place to get new information; you almost need no effort to find it. I joined a few other slack channels, and also subscribed in a few weekly letters from around the world. Another way to keep updated with what is going on in iOS Development is to follow key people on Twitter and Github; they always share so many insights and new content. Github’s “Explorer” is another way to find great stuff, check what is trending, etc.

Whats tools do you usually use to get the job done?

In the first place, Xcode haha. Some friends can’t see their lives without extensions. I like to use an IDE without much to configure or many extensions and themes.

Terminal: iTerm2.
Git: I have a license to Tower and also use the free version of GitKraken and CLI of course 😉
Design and Export Assets: Sketch and Adobe XD.
Code/Text: Sublime Text3 (there is no editor with multiple cursors as Sublime), CodeRunner (I still use Objetive-C and CodeRunner is my Playground) and VSCode.
HTTP Requests: Paw.cloud, HTTPie and cURL
Markdown: MacDown or Hackmd.io
And last but not least: Spotify and iTunes.

How did you come up with the idea of building The Swift Evolution app?

The idea came on March 1st when I entered the Swift Evolution’s GitHub Repo and saw that Apple created a simple web dashboard to help people search and filter proposals. As a big fan of reverse engineering, I opened Chrome inspector to see where that data was coming from; For my surprise I noticed that Apple not only created a dashboard but a single endpoint too. This URL lists all proposals from Swift Evolution. Even with this endpoint, I would still need to workout a couple of somewhat complicated things. For instance, parsing free markdowns with some structure, etc. In the end, the result is a free text, and that is not a trivial job. Then I sent a message to my friends Bruno Bilescky and Diego Ventura talking about the idea to create a simple iOS app to do the same thing that web dashboard does, nothing else. I believe that making this exact copy from the web dashboard, but this time shipped as a iOS app was enough to deliver to the user a great experience, and the opportunity to keep up to date with everything happening on Swift Evolution.

So Swift Evolution App is just this dashboard as an app ?

No, it is not! When I decided to make a copy from the web dashboard, I didn’t think that Apple would reject the app. In fact, Apple always can reject our apps haha. The app’s first name was just “Swift Evolution”, and it also used Swift’s logo. Both of these went against of trademark. I was a little naive thinking they would not mind. “That’s okay; they will approve the app!”. Sweet mistake!
They rejected the app for two reasons:

“- Apple trademark, Swift, imagery — or likeness — in the metadata and name.”.

“… but since it does not sufficiently differ from a mobile web browsing experience, it is not appropriate for the App Store.”.

They rejected the app really fast, which was great. I just suffered for a couple of hours. The answers made me think about what I have done. Less than one hour later, I decided to create new features to address the “not sufficiently differ from a mobile web browsing experience.”

Features like: Author/Review Manager Profile, Proposal share, which by the way uses swift in the backend. All these news changes were done in almost one week, and when it was finished, I had only one thought in my head: “Okay, now I have an app ready for AppStore.”. Despite that, I still need a new logo, so I asked Guilherme Theodoro, our designer, to help me with that.

Could you share the experience of mobilizing several people towards getting Evolution app done?

The idea to create Swift Evolution App came from my curiosity to understand how things work under the hood. I have friends who share the same feeling. Always when some idea raises up in my mind, I sent some messages to two friends: Bruno Bilescky and Diego Ventura, we have the same passion for creating new things. I started the EVO project just to have something interesting to do. Then I realized that the project could fit this unexplored space. After one week I began to share the code with some other friends from the iOS community, inviting them one by one but asking a few questions first, to see if they fit with the endeavor.
“Do you follow the Swift Evolution proposals ?”
“Do you have any interest in an app to help you to follow proposals from Swift Evolution ?”

The EVO app has great contributions from many people. From writing code, as well as helping with code review, people who helped with the architecture and of course the ones that helped me to spread the word. Also, people who just followed the project, which is not less important. All the folks who have access to EVO’s repository are very important to the project and I am pleased to have them working with me. They believed in the project, and they help me to turn this idea into reality.

Do you mind to share some of your plans for the Evolution app future?

Right now, I’m working with two guys from IBM preparing the backend to allow us to bring more great features to the app. Version 1.2 will support iPad (many people asked for this), Push Notifications, Follow Proposals, Follow Authors and Review Managers. Before 1.2 version, we will have one update which will fix a few unexpected behaviors.

Since day one, my intention was to make this project open source, but I still need to do a couple of things before that. After this 1.2 version, you guys would be able to check and help the project in the open.

Do you have any final consideration to make?

I would like to thank my wife Carolina for keeping me motivated to start and finish this app. Thank you Bruno Bilescky for sent me messages every night asking me “let’s program ?”; This was really important. I’d like to thank also Diego Ventura, Bruno Guidolim, Ricardo Borelli, Bruno Hecktheuer, Diogo Tridapalli, Rodrigo Reis, Gustavo Barbosa and Brenno Ferrari for their amazing contributions. Also many thanks To Ricardo Olivieri and Taylor Franklin for the partnership on the backend side.
To Danilo Altheman, Daniel Dunbar, John Calistro and Liza Dziuba for help me to share this app and make it better with so many great ideas.

As always any thoughts, doubts or feedback are more than welcome. =)

Ps: If you like this post, share it on twitter, recommend it on medium, or both =). This really helps me to reach more people. Thanks a lot ..

--

--

Thiago Lioy
Cocoa Academy

iOS developer, design enthusiast, blogger, weekend cook, guitar player, traveler. Creator of iOS mag: https://medium.com/cocoaacademymag