A technology architect’s disclaimer

I’m working on a large application architecture for an international organisation right now, and am including this disclaimer in the introduction:

1.1. Limitations

Like all technology-related architectural designs, this is a vision of how XXX could work, not a blueprint for how XXX will work — we will change much or all of this architecture during the implementation, some in minor ways, and some in major ways, as we discover more about the problem space, change our priorities, and work around the strengths and limitations of the people and technologies involved. The architecture in this report points the way for the implementation team at the beginning, and captures our initial understanding and goals. The XXX team will endeavour to keep the specification up to date as the actual architecture emerges during implementation.

Further reading

Neal Ford, “Evolutionary architecture and emergent design: Investigating architecture and design.” IBM developerWorks, 24 February 2009.

Martin Fowler, “Who Needs an Architect.” IEEE Software, July/August 2003.

Eric S. Raymond. “The Cathedral and the Bazaar.” Version 3.0, 2000.

Posted in General | 1 Comment

The diffusion of innovations, or of products?

Rogers Bell Curve

If you work anywhere near IT, you’ve probably been confronted with Everett Rogers’ Bell Curve on more than one eager PowerPoint slide deck, explaining how the presenter’s new standard, product, or initiative will move through the five audiences of Innovators, Early Adopters, Early Majority, Late Majority, and Laggards. There’s even a book, Geoffrey Moore’s 1991 Crossing the Chasm: Marketing and Selling High-Tech Products to Mainstream Customers, about how to move your product from the Early Adopter to the Early Majority (mainstream market) stage. After a (very) small amount of background reading, though, I’m starting to wonder if people are misuing Mr. Rogers’ curve, confusing the ideas of “innovation” and “product.”

You can’t invest in an idea

In 1962, Prof. Rogers, along with two other original collaborators, was studying how new practices spread among farmers in the US Midwest, not how, say, a new model of harvester found its market. In other words, they were studying what people do, not what people buy.

Does it matter? Consider the 1995 Netscape IPO, which started the dot.com bubble. The World Wide Web was a genuine innovation — a new way of doing things (building on existing technology) — and by 1995, it was clear that the Web was going to be important. However, people confused Netscape’s browser (a specific product) with the Web itself (an innovation), and assumed that by investing in the company that made the browser, they were investing in the Web. However, the two were not inseparable — Netscape’s browser tanked, while the idea of the Web grew stronger and stronger. Later, investors would pump up Apple’s and Facebook’s stock in a similar way, assuming that by doing so, they were investing in the innovations of mobile computing and social networking. Apple in particular has been able to deliver revenue to justify some of its stock price, but as it loses more and more of the smartphone and tablet market to Android manufacturers, the difference between innovation (mobile computing) and product (iPhone/iPad) becomes very clear.

Despite all that, most of the time I see people using Rogers’ curve, they’re using it for a specific product, project, or initiative, not for new ideas or practices. Does it make sense in that context, or are we being as lazy and confused as the 1995 Netscape investors? Rogers based his 1962 book on over 500 studies of how ideas spread; it would be interesting to see if there’s similar research to back the claims of over-eager sales VPs and project managers.

Posted in General | 2 Comments

Open source’s new frontier

Today, I explored the bleeding edge of open source and mobile, to see what might be normal in 5+ years.


The open-source Android application Andor’s Trail is a top-down role-playing game, sort of like Colossal Cave or Zork with pictures (for my fellow old-timers). I tried it out on my Nexus 7 tablet and enjoyed it — the story line isn’t finished yet, but over two years, the community has built a strong and engaging game. But that’s not the point of this post (we already know how open source works).

This morning, I was in a coffee shop with just my phone, and decided to do the following:

  • Found Andor’s Trail on GitHub
  • Cloned it using AIDE (an Android-based IDE)
  • Tapped “Open Project”
  • Tapped “Run”
  • Opened the compiled app

Building open-source apps didn’t used to be this easy. In Linux, you generally install a long list of library dependencies first, then run some kind of configuration, then do a make, figure out what went wrong/is missing, do another make, go on a mailing list to find out what went wrong, download a different version of some of the build tools or libraries, try again, etc. until eventually (maybe a few hours or days later) you raise your arms in triumph and shout that you’ve succeeded in building the app. After that, you’ve earned the right to be smug on mailing lists and tell the noobs to RTFM when they have the same problems you did.

Is this a glimpse at the future of open source? Cloning, building, and installing a dev build (7.1dev) was so easy that a non-developer could do it; on the difficulty scale, I’d say that it’s easier than figuring out how to upload a video or picture to Facebook.

Right now — despite the fact that Android itself is released under the Apache 2.0 license — open source in the mobile world is still in its infancy. We do have the F-Droid app store for Android, stocking only open-source apps. However, what if mobile itself became the predominant open-source development platform, with new types of tools, collaboration, and social cultures? Keep your eyes on this one.

Posted in General | Leave a comment

Link: Transitioning To a Mobile Centric World (Bill Gurley)


This article argues that the verdict is in, and users want apps, not mobile web sites.  My friend and colleague Michael Roberts (who, I suspect, is neutral in the debate) shared this link on Google+, and – as if to prove Mr Gurley’s thesis – I read his posting in the Android G+ app, not the mobile site. 

Here is the comment I left:

Interesting piece – thanks, Michael . He’s absolutely right that people prefer apps to the browser for common tasks, but I don’t think he’s got the whole story.  For example, like most people, I currently read G+, Facebook, and Twitter in the dedicated mobile apps rather than in the browser.  However, a large plurality (if not majority) of interesting posts to those services are actually links back out into the web, so the result of of reading a tweet is generally opening not a dedicated app, but a web site.

Case in point – we’re both reacting to a pro-app/anti-browser article, but the only reason we know about it is that you were able to share a web link in your G+ post.  If Mr. Gurley had created a “GurleyPosts” app for his thoughts, then (a) most people probably wouldn’t have it installed, and (b) you wouldn’t have been able to pass a link from iOS that I could use to read it on Android.

In other words, for something I do a lot (read Facebook, check the weather, play a game, get driving directions) I will tend to use an app.  But I won’t install a dedicated app just to read an article from a magazine or newspaper, and even when I am using an app, I need a link if I’m going to share it with anyone else.

So in 2013 for mobile, apps are for the tall head of any user’s activities, and the browser is for the long tail.  Of course, every startup thinks it’s going to be the next Facebook (at least in terms of its importance to the people who use it), but few of them end up there, so the way people are going to find them is by following links from FB, Twitter, Google+, emails, chats, etc.  I wouldn’t give up on that mobile web site quite yet.

Posted in Mobile | Tagged , , | 3 Comments

A plan for PRISM

The US government has two major problems right now:

  1. Out-of-control debt
  2. Bad PR around PRISM

Maybe it’s time to start thinking like a business, and figure out how to turn those liabilities into assets. If PRISM brought real benefit to citizens’ lives, would they look on it more favourably? Would they, perhaps, even be willing to give money to the program?


With that in mind, I’d like to propose a new, pay-for-use government web site named prism-suggests.gov. The web site will have a natural-language interface where people can ask questions about themselves or their friends and family, and get suggestions back. Here are some examples:

Q: What book should I read next?
PRISM: You bought Infinite Jest three months ago, but I’ve noticed that you always fall asleep when you try to read it on the subway on your way home. Perhaps something lighter, like Fifty Shades of Grey, would be better, especially since you go out of your way to read Facebook comments about it.

Q: What kinds of clothes should I buy Maria for her birthday?
PRISM: Maria’s credit-card and Google-search history suggest that it’s 87.3% likely she has a bladder control problem, so it would be best to buy things that fit loosely around the hips, to leave room for an adult diaper.

Q: Is Phillip going to ask me out on a date?
PRISM: Unless Phillip has been doing a “research project” for the last 3 years, the type of porn he views on his smartphone suggests that yours is not the gender that interests him.

Q: How can I get a promotion at work?
PRISM: Casually mention the phrases “St Lucia,” “offshore investment,” and “IRS” loudly in hearing range of your boss, then come back a week later and ask for the promotion.

If the site charged $5 for each question, imagine how fast the US federal deficit would shrink! And, of course, all those people whining about “privacy rights” and the so-called “Constitution” would be drowned out by billions of satisfied customers.

Posted in General | 1 Comment

The mobile development challenge

A bit over a week ago, I set myself a challenge: develop a mobile app entirely using mobile devices. I must never touch the app with a laptop or desktop computer, for even the most-trivial reason.  I don’t have a lot of free time in my life, so I’ve been able to tinker for only an hour here or there, but so far, I’ve had good success. 


Here are the ingredients:

  • the Android OS (Jellybean) running on a Nexus 7 tablet, with a small Bluetooth keyboard
  • the Android Integrated Development (AIDE) app, which uses the Eclipse project format and includes a git client
  • GitHub, for storing my source code

Progress and gotchas

I decided to create a kind of app that made sense as a mobile app (rather than a web site): a SQL query tool for databases on the device.  I’m calling it “Sloop-SQL”, and while my early prototype isn’t in the Play Store yet, you can grab the Public Domain source from GitHub: https://github.com/davidmegginson/sloop-sql and build your own copy with AIDE on your phone/tablet or Eclipse on your laptop/desktop.

The process has worked surprisingly well so far. When I want to test on my phone (rather than my tablet), it takes only a few seconds to do a git pull on the phone, and build and run using AIDE.  I also enjoy the simpler AIDE UI over the cluttered Eclipse one. 

I’ve run into only two significant annoyances:

  1. GitHub doesn’t have a mobile-friendly site, and their mobile app is severely limited, so it was a bit frustrating creating the repository.
  2. As of Jellybean, Android doesn’t let apps request permission to see other apps’ logs, so AIDE can’t show me the app’s logcat (which includes crash reports from uncaught, top-level exceptions).

I could work around the second problem by rooting my N7, but that’s also cheating.

I hope that the Android team will consider adding the read-logs permission back in — perhaps backed by a special developer setting — so that Android can grow into a full software development environment, rather than being nothing more than a development target (like iOS).

Posted in Coding, Mobile | Tagged , , | Leave a comment

Link: Why so little Chinese in English?


The Economist wonders why English has borrowed so few new words from China over the past 30 years, despite the country’s rise as a major world economic power. The Hermit Kingdom isn’t a hermit any more — Chinese government and business are everywhere, not only trading money for influence and business opportunities in the developing world, but also buying up American companies in sectors like general aviation.

Unlike the European colonial powers of 150 years ago, however, China does not seem interested in exporting its cultural values; for example, Beijing may donate a fleet of Chinese-made cars to a Latin-American government, but it doesn’t also set up missionary schools to try to teach the country’s elite to speak Mandarin and follow Confusian principles.

Can Chinese language and culture spread on its own, without a deliberate attempt to promote it, the way Europeans once promoted English, Spanish, Dutch, French, or Portuguese language and culture in the Americas, Africa, and Asia?  Would China even want its culture to spread (beyond just cuisine)?

One interesting model is Japan, which has also made little attempt to promote its language outside its borders.  For decades, while Japan rose as a world economic power, little happened.  Then, suddenly, Japanese culture exploded on the rest of the world.  American students, for example, not only eat sushi, but read manga, sleep on futons, and use Japanese terms like “panchira” to classify their pornography. And they’re often prone to take Japanese language classes, despite the complete lack of Japanese-sponsored missionary schools. 

Now, we’re starting to see the same thing happen with South Korean culture.  We might not be borrowing many new Mandarin words into English right now, but will that still be true in 20 years?

Posted in General