With their tiny production runs, shanzhai could manufacture a thousand phones, seed the local markets, see if they caught on, and then crank out some more. Established players like Nokia were soon crying foul, even as they scrambled to keep up. Development cycles collapsed from 9 to 12 months to as little as three months. Instead of knockoffs, the counterfeiters were churning out innovation and forcing large companies to play catch up.Who knew that pirate cell phone makers were lean startups?
Wednesday, June 15, 2011
Chinese shanzhai counterfeiters practice customer development
Fast Company ran an interesting article yesterday about Chinese mobile phone pirates and the Arab Spring, but one paragraph jumped out at me:
Friday, June 3, 2011
Wednesday, May 11, 2011
Native Mobile App or Web App? Wrong Question!
The high level of interest in mobile has sparked a debate among mobile app developers about whether to develop separate native apps for each major mobile platform or one mobile web app that runs everywhere. You'll find empassioned arguments for both types of apps, and more thoughtful analyses like this one by Erik Larsson of Plexical.
I think the question of "web versus native" is a false dichotomy. Web technologies like HTTP, HTML, JavaScript and CSS are well supported by the market-leading mobile platforms. A capable web browser (and corresponding embeddable native web view) are required for a mobile platform to succeed in the marketplace. The killer app for mobile devices is the web; mobile platforms that have second rate web browsing have also lagged behind in the marketplace.
Web technologies are not diametrically opposed to native app technologies—if anything, native apps routinely embrace the web. Few native mobile apps run without connecting to the network to download content, send messages to Twitter and Facebook or to silently send usage statistics to the app's publisher. Web apps by definition are connected to the network and recent work on web standards has been about making web apps useful when disconnected. When considering network connectivity, there's little difference between native and web apps these days. So if network use is basically the same, what separates native apps from web apps? I can think of two things: how they're implemented and how they're distributed.
Different code for different folks
Web apps are built using HTML, CSS, JavaScript and standard web APIs and require no more than a text editor and a browser to get started. Native apps on most platforms are built in a compiled language like Java or Objective-C against proprietary APIs using complex development tools like Xcode or Eclipse. Developing in a dynamic interpreted language like JavaScript is a very different experience from developing in a compiled, strongly-typed language like Objective-C or Java.
Dynamic interpreted languages require writing less code and give the programmer quicker feedback but have drawbacks: dynamically-typed code is less explicit and can be harder for other programmers to follow, especially in larger programs, and subtle errors can go undetected if the code lacks thorough tests.
Strongly-typed compiled languages require more verbose code and the compile step means development is slower and less interactive, but strongly-typed languages have some bonuses: the explicit code is often easier for other programmers to read and understand, especially in larger code bases, and the compiler provides better error checking (but it's still no substitute for good testing).
Both types of development environments have their strengths and weaknesses. This is the "rock versus disco" or "Coke versus Pepsi" debate—there is no right answer. Individual developers prefer one over the other mainly due to individual temperament or because of familiarity and experience. Similarly, organizations will usually follow the path that matches their in-house expertise. There's nothing wrong with building on your strengths.
Free markets and free software
Native apps are for the most part distributed through app stores controlled by large corporations that subject app publishers to various restrictions and requirements. Web apps are distributed by anyone with a few dollars a month to rent space on a server and can be accessed directly by anyone with an internet connection and a web browser.
Some proponents of mobile web apps oppose the app store distribution model on idealistic political or social grounds. App stores and their corporate gate keepers are a potential threat to the open exchange of ideas and free commerce on the Internet. Yet consumers seem to be happy with the safety and ease of use that the app store experience provides, and many developers are attracted to the large and growing market of mobile app store shoppers and are willing to jump through app store hoops to reach them.
You can't argue with an idealist. All I can say is that from a pragmatic view, both the app store model and the open web have their place in the mobile ecosystem right now. As a mobile consumer, I appreciate the app store experience but still use my mobile web browser more than any other app. As a small mobile developer, I think the Apple App Store is the best place to reach mobile app consumers in 2011, but I see the danger in building a product and a business where another company controls access to your customers.
A spectrum of mobile apps
Computer programmers love binary arguments like "native app versus web app" but when you set idealism and personal bias aside, it's not so simple and actually much more interesting. Mobile apps can be built with different degrees of webby and native technology. I'll take a closer look at the space between "pure web" and "pure native" apps next time.
Monday, February 14, 2011
Best way to write an app for both Android and iOS?
There was an interesting thread last week on Hacker News asking for opinions on writing cross-platform mobile apps. Should you use a commercial framework like Appcelerator or Phone Gap, write core parts in C++ and custom UIs in Objective-C and Java, or just write everything twice? Lots of opinions and some tips on when a cross-platform framework makes sense.
Thursday, January 27, 2011
App Store marketing advice from the author of Flickpad
Mobile Orchard has a great interview with Chad Podoski, the founder of Shacked and creator of the Flickpad iPad app about his experiences marking his app in the App Store.
Chad covers a lot of interesting ground:
As you can see, there's so much great stuff here.
Chad covers a lot of interesting ground:
- How often to release updates
- Dealing with 1 Star reviews
- Handling third party services like Facebook
- App review sites
- The impact of being featured by Apple and Daring Fireball
- Screencasts
- Advertising on review sites
- Using Twitter
- Free and ad supported versions
- Pricing and sales
As you can see, there's so much great stuff here.
Tuesday, January 25, 2011
Using heapshot analysis to find memory leaks
If the memory use of your Mac or iOS app keeps growing, check out When is a Leak not a Leak? Using Heapshot Analysis to Find Undesirable Memory Growth for an awesome in depth look at debugging this kind of problem.
Subscribe to:
Posts (Atom)
















