• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Remember Lenny

Writing online

  • Portfolio
  • Email
  • Twitter
  • LinkedIn
  • Github
You are here: Home / Archives for Product Development

Product Development

5 things I learned launching my first iOS app

December 5, 2014 by rememberlenny

Public Art — Find street art nearby.

Public Art iOS app.

1. Having control of the external services is important

The primary function of my app is to check your current location against a database of geotagged images. This is a straightforward call that leans on a ruby gem called Geocoder. To translate the user’s current location, I grab the longitude and latitude of a user, then use Google Maps Geocoder API to translate the coordinates into usable data.

Not the Google Maps API Quota. Rails memory maxed by a bad Model.all call.

I was unprepared for the Google Maps Geocoder api quota. At midnight, I noticed that my server wasn’t returning queries to users because Google Maps quota had expired. This could have been incredibly frustrating if the logic for the query was in the iOS app. Fortunately, the query was made through the Rails application I setup as an API endpoint. I was able to make adjustments to the Geocoder source and spin up a Data Science Toolkit virtual machine on a AWS box. I switched the API endpoints to the DSTK and got the Geocodes back up and running.

2. Misusing app push notifications is very easy

This is what I saw after unintentionally sending a 12am push notification.

Last night, after noticing the Google Maps api quota was maxed out, I tried to find a way to communicate to any users who were receiving empty queries. I intended to send an in-app notification to anyone currently on the app. In the process, I accidentally sent all app downloads a push notification. This was right at midnight on the east coast, so I felt very bad for any people who may have been disturbed. If it was me, I’d be pissed.

3. Launching on the Apple store is time consuming.

I spent days of continuous work to figure out how to get the correct assets, prepare my build files, get the right version of ode installed, etc. The week before Thanks Giving, I was on the subway home from Brooklyn and editing the promo video for the app on Photoshop. Anything that can help accelerate the process is helpful.

http://sketchtoappstore.com/

A huge help were all the Sketch.app plugins that helped generate in-app and app store assets.

4. Setting up analytics is hard

The lean startup approach is all about doing as much work as needed for getting core functionality, without making assumptions about your user’s taste. In this way, you use data to gain insights on what needs to be further developed. To do this correctly, you need to have a good analytics framework setup.

Downloads reported in Parse. Its cool seeing so many timezones.

I spent time setting up event tracking on my app, but completely missed some obvious things. The main pitfall was that I didnt set up a user definition attribute. I accounted for the events that would help me track user frustration, but Im not able to do any effective user segmenting. Its hard for me to isolate the data trails to specific users.

I also leaned on two analytics services because I couldnt get one to fulfill all my needs. I used Mixpanel for event tracking and Parse for push notification management. In the process, I didnt fully set up Parse correctly and never integrated user profiles into Mixpanel. The partial setup handicaps me from knowing the user response to push notifications or segmenting data by users.

5. Understanding analytics is also hard

I set up enough tracking to generate a solid list of events. I find when people query, where they query from, how they click, what they click, how many searched they do, etc. Now that I have this data, I dont have any inherit insights. I need to go back to each event and understand exactly how it is generated. I have some events that were called hundreds of times and others that were called only 10 or 20 times. Differentiating how the event may be set up incorrectly, or how there is a huge demand for a certain action is hard.

MixPanel dashboard for tracked events.

One thing that I wish I had was a basic events list for user actions that are not in my app. For example, I want to know if people tried to swipe left or right, pinched, rotate their device. I didnt try to capture these events but it would be useful for understanding how to develop future features.


Im still not sure what the actual total downloads or user actions were. iTunes, Mixpanel and Parse are all out of sync. Ironically, I trust Parse more than iTunes because it reports unique device parameters that I can see.

Overall, the process was a success. Most importantly, I feel good about the process. I was excited to see Laughing Squid post about the app and Product Hunt attention.

If you haven’t already, check out Public Art. The app to discover graffiti and street art near you!


If this was interesting to you, follow me on Twitter.

Filed Under: Uncategorized Tagged With: Product Development, Programming, Startup

How should I populate my content?

July 31, 2014 by rememberlenny

Ive been working through publicartfound and struggling to pinpoint the way I want to display content. I feel like the problem Im trying to solve is not unique, but I can’t seem to find an example that I like. Im manually adding entries into the website, but this is not the scalable option.

I dont know how to best populate the site and I dont know how I want to display what is on the site.

I have the problem of having a lot of generic graffiti images that need to be tagged. The content itself is rich, but for it to be useful to others, it needs to searched and faceted. Ive considered various approaches to releasing a set amount of content at a consistent interval and letting people vote on the highest quality content. Ive also considered making a “game” out of identifying the artist in a picture. Neither of them feel right.

I want to be able to display a homepage of the most relevant content to a user, based on the location or style of the content. If you knew the style preferences of the user, then you could display that content as the landing page. The content in a facebook newsfeed or a tumblr dashboard uses people’s network to accomplish this. Other services may pull a user’s IP address or user input to do this.

I also like the ability to have a “most popular” based content page. People would engage with the content if it is known to be the “highest” quality selections that the service has to offer. I see this frequently with Kickstarter, AirBnb, and various service offerings.

For now, I have a ton of pictures that aren’t well tagged. If I want to use them, I need to figure out a way to effectively display them.

Filed Under: Uncategorized Tagged With: orbital 2014, Product Development, product market fit

Primary Sidebar

Recent Posts

  • Thoughts on my 33rd birthday
  • Second order effects of companies as content creators
  • Text rendering stuff most people might not know
  • Why is video editing so horrible today?
  • Making the variable fonts Figma plugin (part 1 – what is variable fonts [simple])

Archives

  • August 2022
  • February 2021
  • October 2020
  • September 2020
  • August 2020
  • December 2019
  • March 2019
  • February 2019
  • November 2018
  • October 2018
  • April 2018
  • January 2018
  • December 2017
  • October 2017
  • July 2017
  • February 2017
  • January 2017
  • November 2016
  • October 2016
  • August 2016
  • May 2016
  • March 2016
  • November 2015
  • October 2015
  • September 2015
  • July 2015
  • June 2015
  • May 2015
  • March 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • August 2014
  • July 2014
  • June 2014
  • May 2014
  • April 2014
  • March 2014
  • February 2014
  • January 2014
  • December 2013
  • October 2013
  • June 2013
  • May 2013
  • April 2013
  • March 2013
  • February 2013
  • January 2013
  • December 2012

Tags

  • 10 year reflection (1)
  • 100 posts (2)
  • 2013 (1)
  • academia (2)
  • Advertising (3)
  • aging (1)
  • Agriculture (1)
  • analytics (3)
  • anarchy (1)
  • anonymous (1)
  • api (1)
  • arizona (1)
  • Art (2)
  • art history (1)
  • artfound (1)
  • Artificial Intelligence (2)
  • balance (1)
  • banksy (1)
  • beacon (1)
  • Beacons (1)
  • beast mode crew (2)
  • becausewilliamshatner (1)
  • Big Data (1)
  • Birthday (1)
  • browsers (1)
  • buddhism (1)
  • bundling and unbundling (1)
  • china (1)
  • coding (1)
  • coffeeshoptalk (1)
  • colonialism (1)
  • Communication (1)
  • community development (1)
  • Computer Science (1)
  • Computer Vision (6)
  • crowdsourcing (1)
  • cyber security (1)
  • data migration (1)
  • Deep Learning (1)
  • design (1)
  • designreflection (1)
  • Developer (1)
  • Digital Humanities (2)
  • disruption theory (1)
  • Distributed Teams (1)
  • drawingwhiletalking (16)
  • education (3)
  • Email Marketing (3)
  • email newsletter (1)
  • Employee Engagement (1)
  • employment (2)
  • Engineering (1)
  • Enterprise Technology (1)
  • essay (1)
  • Ethics (1)
  • experiement (1)
  • fidgetio (38)
  • figma (2)
  • film (1)
  • film industry (1)
  • fingerpainting (8)
  • first 1000 users (1)
  • fonts (1)
  • forms of communication (1)
  • frontend framework (1)
  • fundraising (1)
  • Future Of Journalism (3)
  • future of media (1)
  • Future Of Technology (2)
  • Future Technology (1)
  • game development (2)
  • Geospatial (1)
  • ghostio (1)
  • github (2)
  • global collaboration (1)
  • god damn (1)
  • google analytics (1)
  • google docs (1)
  • Graffiti (23)
  • graffitifound (1)
  • graffpass (1)
  • growth hacking (1)
  • h1b visa (1)
  • hackathon (1)
  • hacking (1)
  • hacking reddit (2)
  • Hardware (1)
  • hiroshima (1)
  • homework (1)
  • human api (1)
  • I hate the term growth hacking (1)
  • ie6 (1)
  • ifttt (4)
  • Image Recognition (1)
  • immigration (1)
  • instagram (1)
  • Instagram Marketing (1)
  • internet media (1)
  • internet of things (1)
  • intimacy (1)
  • IoT (1)
  • iteration (1)
  • jason shen (1)
  • jobs (2)
  • jrart (1)
  • kickstart (1)
  • king robbo (1)
  • labor market (1)
  • Leonard Bogdonoff (1)
  • Literacy (1)
  • location (1)
  • Longform (2)
  • looking back (1)
  • los angeles (1)
  • Machine Learning (13)
  • MadeWithPaper (106)
  • making games (1)
  • management (1)
  • maps (2)
  • marketing (4)
  • Marketing Strategies (1)
  • Media (3)
  • medium (1)
  • mentor (1)
  • message (1)
  • mindmeld games (1)
  • Mobile (1)
  • Music (2)
  • Music Discovery (1)
  • neuroscience (2)
  • new yorker (1)
  • Newspapers (3)
  • nomad (1)
  • notfootball (2)
  • npaf (1)
  • odesk (1)
  • orbital (14)
  • orbital 2014 (14)
  • orbital class 1 (9)
  • orbitalnyc (1)
  • paf (2)
  • paid retweets (1)
  • painting (1)
  • physical web (1)
  • pitching (2)
  • popular (1)
  • post production (1)
  • Privacy (1)
  • process (1)
  • product (1)
  • Product Development (2)
  • product market fit (2)
  • Programming (6)
  • project reflection (1)
  • promotion (1)
  • prototype (17)
  • prototyping (1)
  • Public Art (1)
  • Public Speaking (1)
  • PublicArtFound (15)
  • Publishing (3)
  • Python (1)
  • quora (1)
  • Rails (1)
  • React (1)
  • React Native (1)
  • real design (1)
  • recent projects (1)
  • reddit (3)
  • redesign (1)
  • reflection (2)
  • rememberlenny (1)
  • Remote work (1)
  • replatform (1)
  • Responsive Emails (1)
  • retweet (1)
  • revenue model (1)
  • rick webb (1)
  • robert putnam (1)
  • ror (1)
  • rubyonrails (1)
  • segmenting audience (1)
  • Semanticweb (2)
  • Senior meets junior (1)
  • SGI (1)
  • Side Project (1)
  • sketching (22)
  • social capital (1)
  • social media followers (2)
  • social media manipulation (1)
  • social media marketing (1)
  • social reach (5)
  • software (3)
  • Soka Education (1)
  • Spatial Analysis (2)
  • spotify (1)
  • stanford (2)
  • Startup (21)
  • startups (7)
  • stree (1)
  • Street Art (4)
  • streetart (5)
  • stylometrics (1)
  • Technology (1)
  • thoughts (1)
  • Time as an asset in mobile development (1)
  • Towards Data Science (4)
  • TrainIdeation (42)
  • travel (1)
  • traveling (1)
  • tumblr milestone (2)
  • twitter (1)
  • twitter account (2)
  • typography (2)
  • unreal engine (1)
  • user behavior (1)
  • user experience (3)
  • user research (1)
  • user testing (1)
  • variable fonts (1)
  • video editing (2)
  • visual effects (1)
  • warishell (1)
  • Web Development (8)
  • webdec (1)
  • webdev (13)
  • windowed launch (1)
  • wordpress (1)
  • Work Culture (1)
  • workinprogress (1)
  • zoom (1)