I’ve just realised how many people are trying to sell me “apps”. I’m cool with that. It promotes good tech, and all that lovely stuff.
What annoys me is the amount of companies with online application retail outlets. Seriously, I can think of 4 (Google Play, Amazon AppStore, Apple App Store, Windows MarketPlace) almost instantly, without even trying. Two of those are even for the same platform. Every company seems to want one.
And that makes sense - they’re a good revenue stream. But the fragmentation it promotes is not good.
Every app store (with the exception of the multiple app stores for Android) has its own platform. That’s not grand.
Developers have to develop for every platform. That used to be fine: you made an app for Android and iOS, and made sure they kept feature parity up. However, given the linear increase in the number of platforms, that’s not a viable option, especially for small software shops. The number of different versions they’ll need to develop is just going to increase. It’s not scalable.
A common solution to this is to create a web app, but that has two major problems - no access to the application when you’re not connected to the web (yes, that still does happen), and no access to the platform’s internals. For example, there’s no javascript API to access a phone’s sensors.
A way to code once, and well, for every platform would be nice. And yes, there are libraries to code once for every platform, but they don’t provide as good an experience as coding natively. Which is all a little rubbish.
Protocols are lovely stuff.
Email is a protocol. Web is a protocol.
I can write a web browser, and it conforms to the HTTP 1.1, it’ll work with (preeeetty much) everything. If I write an email client, and it conforms to POP3, or IMAP, or whatever, it’ll work.
That’s why protocols are good. They promote growth and competition - anyone can write a better client, or a better server. Also, data privacy isn’t an issue - you can always move your data out to your own server, or just out of the system altogether.
Sadly, protocols are something we seem to have lost as of late. There is no microblogging (twitter) protocol, no social communication (facebook) protocol, no social news website protocol (reddit). There should be. Instead, we have centralized services, which do not foster growth, or data liberation.
With these services, instead of protocols to communicate over, there are APIs to communicate with the centralized hub. These are a terrible replacement - they can change at the whim of the centralized hub, without any community input.
So, I’m never going to write a centralized service again. I’m going to write protocols. They’re better.
I remember reading a piece by Douglas Adams about how he wished that technology would work seamlessly - the crux of the argument was that if he brought a piece of technology into a room, it should work with everything in the room, like magic. It’s been years since I read it, and I really can’t remember much about it, sadly.
It’s something I wish that was striven for however. Case in point - headphones are a real pain. Why do we still have wires with them? Why don’t my headphones just output the audio for whatever I’m playing on my devices? Why do I need to unplug them from my phone, and then plug them into my laptop? Why isn’t it magic?
I think what’s needed is for all your devices to, firstly, create some kind of mesh network, so they can all communicate even without an internet connection. And yeah, I know I harp on about mesh networks.
Then, you would need to pass messages across the mesh network, to determine the best device to use. It’s similar in concept to Android’s intent system, but replacing applications with actual physical devices.
For example, if you started to play a video on your laptop, it would send a message across the mesh network to determine the best device to output the sound on. As you’ve got your headphones in, they would have priority on playing audio, and the sound would go straight to them. If your phone then needed to play an alert message, it would go through the same process, so you could hear it over the video playing, and not miss a message just because you had your headphones in.
Finally, why define this global intent system at the application level? Why not the kernel level? If my phone could request to use my computer’s processor over this global intent network for a CPU intensive application, or my laptop could use my phone’s SMS capabilities, now, that would be magic.
ISPs have been, up to now, a necessary evil. Before the large-scale advent of wireless networks, you just plain needed to plug your computer into the wall. However, given the recent issues with SOPA, ACTA and all the rest, ISPs are becoming an issue to a free Internet. Media companies want to police the Internet, and that means policing ISPs - short of invading homes, ISPs are the best place to determine if copyright infringement is occurring, and to deal with it.
And, I dislike the idea of a policed Internet. So why not get rid of ISPs? How would that work?
With enough wireless coverage, networks could be meshed together, and all data transmitted wirelessly. Obviously, there isn’t a world-wide wireless network (sadly), so why not use everyone’s wireless devices to bridge the gaps - turning every wireless device into a wireless router.
Then, instead of the typical method of delivering packets upwards hierarchically, packets spread horizontally - across the mesh network - to their destination.
A new routing mechanism would have to be designed, probably using the physical location of the device, and aiming to move to the physical location of the destination - imagine sending a message to your friend, and it automatically being delivered straight to their device, completely removing the round trip to a centralised server.
While this may sound insane (it does to me), the idea of a world-wide communication network made out of the very devices that use it seems quite romantic. And, one that doesn’t even have any physical property that can be policed, or needed to be paid for.