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 Coding, Design, 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 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: 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 | Comments Off on Link: Why so little Chinese in English?

What’s really different about “Enterprise”

(I wrote this in 2011 as a draft and then forgot about it. It still reads OK, so here it is, basically unchanged, and without the extra sections I’d probably originally planned to add.)

Even though big web sites use lots of so-called “enterprise” technology, and big companies and government departments create browser-based applications, there’s still a huge chasm between web developers and enterprise developers.

We’ve been flooded with clichés and stereotypes about both sides — enterprise developers do everything the hard way, web developers don’t understand security and reliability, etc. — but it’s best not to take that too seriously. A lot of my consulting work and personal projects straddle the line between Enterprise and Web, so I’ve had a decade and a half to observe people and processes on both sides.

I’ll post more about this later, but here are two differences that strike me right away:

  1. Enterprise does a lot of integration
  2. Enterprise doesn’t have many rock stars

Enterprise does a lot of integration

Enterprise IT projects are always about integration. We’re not talking about fun integration with a REST API on the web, but nasty, ugly integration with legacy systems as old as your parents, using custom data formats and unpronounceable character encodings out of the Mad Men era, like EBCDIC (if you’re lucky).

In web dev, whether you’re using SQL or a noSQL approach, you almost certainly own and manage your application’s data (unless you’re building one of those doomed Twitter or Facebook mashups). In an enterprise project, most of your data is coming from somewhere else (the 1970s mainframe at the Oakland data centre, the 1995 PowerBuilder app used by 350 analysts in Hong Kong, etc.). It comes veeeeery slooooowly, and it’s unreliable, and it’s almost guaranteed to be out of sync with the data you’re receiving from other sources (so forget about strict referential integrity). There’s nothing you can do about that, because huge parts of the enterprise are based around those legacy systems, and there’s no one left alive who knows how to change them anyway. Your whole $50M system might depend on data sent as a CSV email attachment every Tuesday night, and rejected 55% of the time because it’s malformed.

There’s a lot of snake oil out there that promises to “fix” this problem — ESB products, ETL products, WS-* products, etc. — but these all address the easy parts, near the middle, not the hard parts, at the edges (and sometimes they make even the middle more difficult than it needs to be).

The benefit of all this mess, though, is that an enterprise application designer is always thinking about distributed data, something that web developers talk about don’t always really get. It’s hard to imagine a CMS like Drupal or WordPress — that naively assumes it can keep all the information that it presents in its own (preferably MySQL) database — coming out of the enterprise.

Enterprise doesn’t have many rock stars

Really, it’s true. Developers working for government, or Fortune 500 companies, on average, aren’t very good. Of course, there must be some real talent hiding here and there, but on balance, coding for most enterprise employees (as opposed to outside contractors) is a 9–5 drudge job that they’re happy to leave at the end of the day. They’re nice people, but they’re not passionate about IT the way you and I are, and they’re not interested in becoming so.

This talent deficit has pretty serious implications for building projects in-house and for maintaining projects from any source — it means that enterprises micro-manage their developers in a way that a hotshot web developer would never tolerate. Part of that is just the overhead of working in a big team — even web companies do code reviews and write detailed requirements when they get big enough — but a lot of it is just a matter of not trusting developers to do the right thing on their own. There are huge numbers of tools out there to count, manage, audit, poke, prod, and otherwise abuse enterprise developers, and those tools are more widely-available in Java than in any other environment, hence the enterprise’s love of Java.

It’s hard to know where the fault is here: would good developers work for enterprise if the working conditions were better, or would they still run off to small startups or consulting for the variety and adrenaline rush? Would bad enterprise developers grow into average or even good ones if they were given more trust and autonomy? In any case, if you’re designing an application for enterprise, don’t expect things that seem trivially simple to you to seem simple to the developers.

The result of all this is that, even if you have a hotshot team of consultants and developers initially building an enterprise system, you have to design it so that mediocre technicians and developers can maintain it for the 10-30 years after you all leave. The enterprise has to be able to hire people with (generally useless) certifications as “Sharepoint specialist,” “Oracle DBA”, or whatever, and the system has to contain few surprises for them. Nothing cutting-edge, please, because they probably didn’t cover it in their certification courses.

Posted in General | 36 Comments

An easy break-up

Google Reader is going away soon, so, with tears in my eyes, I decided to break up with Reader before it could break up with me.  My rebound Android app is Feedly, which seems refreshingly easy-going — Feedly asked for only two taps to import all my stuff from Google, it started syncing my phone and tablet without being asked, and it let me pick up reading RSS and Atom feeds with it exactly where I’d left off a few minutes earlier with Reader.

This post isn’t really about Feedly, though, but about open specs and standards. The reason I can still keep reading all the same blogs, newspaper headlines, and status updates is that Google Reader didn’t control them — they’re publicly available on dozens or hundreds of independent web sites, all following the same set of simple, free syndication standards. Even the way Feedly imported my list of feeds is standards-based.

If I’d been reading all that information on Twitter, Facebook, Google+, Tumblr, or any other similar proprietary, centrally-controlled service, I wouldn’t be able to rebound so easily; even worse, if I’d been relying on one of those locked-in services to publish my content, it would have stolen my audience as well. Think of it as the equivalent of your ex knowing your bank card PIN, and emptying your accounts before running off.

I’ll stick with Feedly as long as we’re both having fun, but as soon as the relationship gets stale, we can part ways as friends and move on. While there may be only one Twitter or Facebook, there are lots of RSS/Atom feed readers out there.

Posted in General | Tagged , , , | 8 Comments

A handgun is like a smartphone, but with bullets

Think – how often do you hear  of someone dropping a laptop computer into a toilet or leaving it in a restaurant? How often do you see spider-web cracks on a laptop screen from a fall? Small, hand-sized computing devices are much-more likely be involved in accidents than larger ones, because we carry them around with us all the time, in pockets, purses, glove compartments, etc.

Reading this list (via John Hardy on G+), I think the same kind of distinction applies to long firearms vs handguns – handguns seem to have a lot more stupid/accidental discharges than long firearms like shotguns and rifles, because they’re the smartphones of the gun world. The problem is that the consequences can be much more serious than having to leave a smartphone in a bowl of rice overnight to dry out.

Posted in General | Tagged | Leave a comment

How government subsidies become censorship

«Pure science research drops sharply at National Research Council» (Ottawa Citizen, 2013-05-08)

We’re learning the danger in Canada of having let too many sectors become dependent on federal money. When the arts, NGOs, scientific research, many kinds of R&D business, and even our main national broadcaster all rely on government subsidies or funding, they’re all immediately vulnerable to any ideological shift in the government that doles out their money.

The Liberals created this dependency to ensure that the sectors would reflect their (central-Canadian, urban, moderate left) values in the 1990s, 70s, 60s, and earlier, but in doing so, they’ve handed a powerful weapon to their (western, suburban/rural, moderate right) successors and ideological opponents.

The US system has many problems of its own, but its relatively-independent arts sector — especially film, TV, and music — and the widespread existence of private universities and foundations, ensures that their government can’t entirely turn off the tap for arts, research, or NGO work that it doesn’t like.

Posted in General | Leave a comment

How to declare a conflict of interest in 140 characters?

How do you declare a conflict of interest in Twitter, when you have only 140 characters for your whole message?

The trigger discussion

The question came up after this Twitter exchange with Walter Robinson, an intelligent and moderate small-c conservative blogger and tweeter who later became a lobbyist for the pharmaceutical industry:


The irony, of course, is that Mr. Robinson himself was accusing the Ottawa Citizen of not including enough context in what it wrote.

How many characters for a disclaimer?

I believe that it’s right that someone should include a disclaimer when there’s a clear conflict of interest (e.g. you’re being paid specifically to defend an industry), but to be fair to Mr. Robinson, how, exactly, can you do that in 140 characters? “Disclaimer: I am a paid lobbyist for the pharmaceutical industry” would use almost half of the space available in any tweet.

Mr. Robinson suggested in his reply above that there’s no hidden conflict, because someone can visit his web site or read old tweets and see who he works for; but if someone retweets his tweet, etc., they don’t have that context, and it looks like this is independent evidence from an informed pundit who wanted to weigh into the discussion.

Let’s make a hash of it

Given the limitations of Twitter, I think the right solution is to flag your tweet with a disclaimer hashtag that indicates that it is not independent (that doesn’t mean that it’s dishonest or misleading; just that you’re in a potentially ethically-compromised position). The hashtag wouldn’t tell anyone exactly what the conflict is, but it would at least tell them that they should go looking. Then, a person could (for example) look at Mr. Robinson’s Twitter profile, visit his personal site, and see that the pharmaceutical industry pays him.

Do any such tags already exist? They need to be short, and not conflict with an existing popular tag. Here are some suggestions: “#COI” (conflict of interest), “#conflict“, “#disclaimer“, “#disclaim“, or even “#paid“.


(For the record, I believe that what Mr. Robinson wrote in his original Tweet is true, but I still think it’s important to disclose a major conflict in the tweet itself.)

Posted in General | 5 Comments