
Impressly
Making webpages from your mobile
Five months after writing my first line of Objective-C code, I shipped the first version of Impressly to the App Store yesterday. In addition to an incredible long list of to-do’s that I still have to go, I have been wanting to share some thoughts on Why, What, and How.
The Why
Impressly was born out of a previous project, a job website centered around video resumes. I had learned all of 6 months of Rails by that point, and while learning Heroku, TDD and other developer tools was exciting, the most absolute basic parts of website infrastructure were still the same as when I had first learned to host an HTML web page 10 years ago.
Making web apps has gotten easier, and a lot of fun. Making a single web page, and getting it up and running, is still tedious as ever.
There are a plethora of fantastic, free blog services, as well as DIY web site builders. Blogs? Too much. DNS and FTP hosting? How did making a single web page become harder than making a Facebook page?
What: Impressly makes webpages from your iphone
The decision to go mobile was fairly straight forward:
- Your photos live on your phone.
- Mobile allows alot of small business owners to get the web page up and running fast. Great for hustlers on the go.
- No one else was doing it.
Mobile also presents a different set of constraints from the browser. We are used to certain interfaces in mobile. Javascript has seen some fantastic development recently, but browser based website builders are still stuck in desktop publishing interfaces.
A lot of small business owners owned Facebook pages, but did not yet have their own websites. Impressly follows a familiar mobile app UI pattern to capture content.


How I learned iOS in 5 months and built Impressly
The first thing I wanted to do immediately after shipping the first basic version of Impressly was to share my experience on learning iOS coding.
- Ray Wenderlich has the best beginner tutorial hands down. It is intuitive, has great examples to get started. Objective-C is a language. iOS is a complicated platform. RW’s beginner tutorials skims the parts you don’t need right away, and mixes in Objective-C and coding concepts when you need them. I paid for the 6 chapter beginner pack, and I was comfortable working on my first app by chapter 3.
- StackOverflow is of course essential to any developer. But iOS development has evolved fast. It took a while, but I learned to check the dates on answers and blog posts that addressed the specific problems I was having. Alot of this stuff gets outdated super quick.
- Alot of (outdated) tutorials start with the AppDelegate. Don’t worry about it too much, and focus on the UIViewController. Coming from Ruby/Rails, iOS doesn’t feel very MVC. As its name suggests, UIViewController does both View and Controller roles.
- Delegates in general: just confusing. Just think of each ViewController as totally isolated entities. Each ViewController can only have talk to one other controller (the one that came just before it). Think of the delegate as the only other controller the ViewController can talk to. Next, you need to add code so the previous view controller knows what to do with messages from the delegate.
- I see alot of questions on StackOverflow where a guy wants to do something really unconventional and needs help. Alot of time good design can solve problems, or suggests solutions in another direction. Pttrns.com is like UI porn.
- UITableViewController is like fried rice — boring and plain, but just awesome in the hands of a master chef. I approach every screen with UITableViewController in mind. The Prototype cell pattern seems like a lot of code at first — after all, in html/css land we just write a few tags and we’re ready to go. But UITableViews deal with gestures, scrolling, editing, layout, and a bunch of other tedious mess. Ray Wenderlich’s Chapter 2 is a great place to start.
What’s next
My to-do list for Impressly is littered with features and fixes, but I’m excited to see how this project unfolds. Currently, I’m doing alot of reading to learn about:
- UIAutomation and iOS testing frameworks. I was never comfortable with RSpec, but I found a Minitest/Spec setup that worked for me. I would like to spend some time to build up some basic tests before I work on new features
- In-App Purchases. Impressly will offer monthly subscriptions that allow users to put their page on custom URLs. I’ve been thinking about how to collect payment for a while now, IAP seems like the easiest way to get going.
Email me when airball publishes or recommends stories