30 Days to App, Day 30
or, Day 30 += 1
About 30 Days ago, I challenged myself to learn Swift and develop an app from scratch with a goal of getting it done in 30 days. Where does it stand? Read on…
In my last update, I was deep in “the dip” — that place where I couldn’t see solutions to the problems I’d encountered. That place where the goal seems to be receding. I wasn’t ready to throw in the towel, but I was capital-F Frustrated.
I navigated this funk by creating a list of the problems I wanted to solve and focused on tackling them one-by-one. Making incremental, steady progress provided small victories and kept me motivated. In fact, since I drafted this post a day ago and made my first editing pass, I’ve checked two more items off my list:
- Wrote a function to save the content of a note and load the content when the app launches. This wasn’t as easy as I’d hoped it would be — strangely, that’s because the app has a super-simple UI. When it launches, you’re presented with a simple UITextField (either blank or with any content you’d saved earlier) and the keyboard. That’s it. One note. So I had to figure out how to save the content of the UITextView, which demanded more research than I’d hoped, and coding that led to many dead ends. Ultimately, this tutorial had the answers I was looking for.
- Added a ‘Clear’ button to the toolbar. Again, since the app only allows one note, I wanted an easy way to delete the contents of a note. I also added a UIAlert to help prevent accidental deletions. When I initially stubbed it in, I realized I wasn’t sure how to implement custom button functionality, but once I thought about it and researched a few solutions, it worked on the first try.
So that’s all good, but there’s one feature that’s still giving me fits…
The elusive animated toolbar
The last key feature on my list — the one that’s been plaguing me for weeks — is moving the toolbar above the keyboard; ideally, animated, but I’d settle for static at this point. I’ve read and watched many, many tutorials. None have panned out. I found a couple of promising leads this week, so I’m making my way through those to see if I can make them work for me. The major hurdle I’ve had with this feature is most of the tutorials I’ve found are pre-iOS 10. Xcode does a pretty good job of suggesting updates, but there’s seldom a 1-to-1 transition.
The challenge continues…
So the app’s not done. But it does scratch an itch I have, and it’s working like I hoped it would, so I’m eager to finish it and start using it on a daily basis. I’m hopeful it will take another week or two to complete the remaining features, plus another week or two to prep everything for release. Which will make it more a 60 Days to App challenge. I can live with that.
At the 30 day mark, it’s a good time to reflect on what I’ve learned so far…
- The more I read (Swift) code, the more it makes sense. I’ve started to pick apart the examples I’ve found, customize them, and apply them to the problems I’m trying to solve — and the code works! Most of the time. Sometimes.
- I’ve really enjoyed combining my existing skills and experiences with the new skills I’m learning. I started my career as a designer, picked up web design, learned Flash / Actionscript, then UX, moved into advertising, sprinkled in marketing, design thinking, and strategy… in some way or another, many of those experiences have informed this challenge. It’s been rewarding to pull from all those buckets vs being relegated to one or two, as I might if I were working on the types of projects I normally tackle.
- Show up every day — even if it’s just for a little bit. This was a side project for me, so I couldn’t give it my full attention, but I did try to do something each day. There were some days I had a few hours to code. Other days, I only had time to search for answers to a question or two. The key was making a choice to make time for the challenge and consciously avoid distractions like email/Twitter/etc.
If you enjoyed reading this post, please ♡ and share the post to help others find it. Thanks for the support!