Skip to main content
 

"Britain": a pitch for a sitcom. (cc @aiannucci)

One-liner: a gaggle of inept public servants attempt to maintain a fully-functioning Orwellian dystopia. Or, Yes, Minister meets 1984. Or, Little Britain meets Brazil.

It's the near future, or an alternate present, or our present, or even the recent past - we're never quite sure. The government is doing everything in its power to spy on its citizens, as well as any visitors hapless enough to wander in through the borders, in the hope of retaining the status quo.

Scene: Etonian public servants attempt to run sham coffee shops at the G20, in order to dupe attendees into sharing their state secrets over the wifi. None of the public servants have the first clue about how to run a coffee shop.

Scene: journalists are detained at Heathrow. There's no good reason to keep them there, so cue awkward, protracted explorations of the contents of their luggage, as if Harold Pinter had written the Generation Game.

Scene: the government erects an Internet filter, recording all data traffic going in and out of the country, despite nobody in Whitehall quite knowing how to use a computer or how the Internet works.

In other words, the premise is that the government is inept, hopelessly bureaucratic, and catastrophically bad at running the dystopia it so badly wants to call its own. And how could that not be hilarious?

· Posts · Share this post

 

What's the best way to give developers space?

Software developers are not technicians. Whereas technicians are employed to do practical work involving technical equipment, the development process is more akin to writing. Paul Graham was absolutely right when he pointed out that:

[...] Of all the different types of people I've known, hackers and painters are among the most alike.

What hackers and painters have in common is that they're both makers. Along with composers, architects, and writers, what hackers and painters are trying to do is make good things. They're not doing research per se, though if in the course of trying to make good things they discover some new technique, so much the better.

Making requires concentration, creativity and skills. In turn, those things require the right environment, talent and practice. All three can be cultivated.

As a CTO (and, in effect, product manager), part of my role is to protect the team I work with and ensure that they have the right environment to do their creative work. Depending on the startup, the resources and the context, how well this works is a mixed bag.

Most developers I know work with great big headphones on. This isn't an accident; think of all those scenes in The Social Network where someone can't be interrupted because they're "in the zone". It's a great big social signal that says, "I'm working". Completely understandable: regaining your concentration after an interruption can take a very long time.

More than a set of kick-ass headphones, though, a productive environment needs to be cultivated. Here, asynchronous communication becomes important - developers tend to prefer communicating by email because they can do it in a natural break, without replying right this second. Similarly, meetings need to be scheduled carefully. Non-developers sometimes have trouble with this, and perhaps see it as an anti-social trait. It's not: you've got to leave people alone to work. If you're looking for a frenetic pace and for something to always be going on, I'd hazard to say that a software company shouldn't be your first port of call.

(The flipside of this is that developers have to remember to send those emails and be communicative. Nobody likes a black hole in their team.)

I've been thinking a lot about this lately, and would love to hear your thoughts:

If you're a developer, what do you do to maintain your concentration?

If you're a CTO or a product manager, what do you do to help ensure that your team has the creative space to do their work?

If you're a non-technical manager, how do you prefer to interact with your technical teams?

· Posts · Share this post

 

Idno and the #indieweb at the W3C Workshop on Social Standards #osfw3c

It was an honor to present Idno to the W3C Workshop on Social Standards: The Future of Business in San Francisco last week.

My position paper, The Indieweb as a Minimally Viable Platform, was previously posted on this site. It speaks for itself: the decentralized social networking technologies evolving as part of the , I believe, are perfect for exploring and testing new social workflows and interactions without significant resource expenditure. In enterprise situations, this is key: too often, technology stacks are dictated by committee, and user experience becomes subservient to a growing list of untested needs. Silicon Valley startups know that you need to validate your ideas before you invest too heavily; it's time that enterprise caught up to this approach.

Conversely, larger organizations do have a different set of needs, and it's important to incorporate those into software designed to serve them. Security is often paramount (as it should be), and most large organizations won't consider running software on third-party clouds, or that "phones home" with aggregate statistics about their data. As it happens, those are some of the values that the shares. It's also Elgg's largest market, and it's clear that there's still a need for a simple to use, off-the-shelf, fully self-hosted platform that enterprises can use to facilitate social communication internally. Idno's intent as a replacement for Elgg that works with modern web standards continues to be vindicated.

Some comment was made about how the presenters at the event had to overcome their fear of the enterprise to get there. That's very far from the case. I've been working on easy-to-use enterprise software for almost ten years, and I continue to be passionate about bringing the ease of use and fluid social interactivity of the rest of the web to that market. I believe that the community's work is very applicable, intend to help get it there, and know that I'm not the only one.

Thanks to Harry Halpin, Mark Weitzel and the Programme Committee for inviting me. I learned a lot, and had fun meeting everyone.

Also posted on IndieNews

· Posts · Share this post

 

Working from home: how not to get distracted

Far away

In 2004, I quit my job and spent six months working on Elgg full time, burning through my savings. My living room became my office, and I quickly learned I had to find a way to stay motivated and un-distracted.

I'd worked from home once before, of course, when I was doing my degree. As a student, my brain was scattered; I never figured out how to block out the world around me and concentrate on what I had to do. Partially that was because I was still figuring myself out as a person; partially that was because the Edinburgh University environment itself was sub-optimal for me. It often seemed like nobody was concentrating on the work they had to do.

For the first month or two, I'd sit and stare at my computer, make myself some food, listen to music, go for a walk - anything but actually get started on work. It'd sometimes be 3pm before I put down a single line of code or even write an email.

For the nine years since then, I've mostly had to be self-motivating. I've learned a series of very simple techniques that keep me working, let me achieve my tasks, and allow me to stay relatively sane while spending lots of time by myself. Some of them probably work just for me; some of them might be more universally helpful. Everybody's different. Nonetheless, here they are.

Don't be macho. Burning the midnight oil on a project makes you sound like you're super hard working, and it can be pretty satisfying while you're doing it. But not taking care of sleep, exercise, nutrition and your social life will very quickly impact your performance. You'll probably find that your work from 3am isn't quite as awesome as you thought it was at the time - and you'll struggle to concentrate for at least the next couple of days. Keep relatively regular hours, and take care of the rest of your life. Take regular vacations, too; downtime is good for your creativity. (The one semi-macho thing that works really well for me: sprinkling my day with regular exercise. I always walk 10,000 steps a day, and if I start my day with 100 decline crunches and some push-ups, I feel much better than when I don't. It's not hard to work yourself up to that point, either; trust me, I'm hardly what you'd call athletic.)

Drink water. Sounds dumb, right? But drinking water improves concentration. For one thing, you're keeping your brain hydrated. But coffee - or worse, sweet drinks like cordials and sodas - will set your off on a spike-and-crash pattern that gets in the way of steady thought. Bonus: drinking plenty of water through the day will also help you sleep, which also helps with concentration. It's the little things. And for the same reason:

Don't eat junk. I mean, duh. I've found that eating lighter food during the day, with plenty of vegetables and protein, results in much better work. (If possible, cook for yourself.) Actually, my biggest problem is not eating enough: it's easy to under-consume calories when you're eating things like salad. You need to give yourself enough fuel. Meanwhile, while I think they're delicious, meals with a lot of meat or carbs tend to send me to sleep. Not useful.

Find music you love. Now that we've taken care of your body, let's talk about removing all those distractions. For me, that means plugging in some ear buds (or immersive headphones; the point is to block out exterior noise) and sticking on a playlist. Usually, I'm into artists like Ani DiFranco, Hamell on Trial and Eels, but when I'm working, those don't work for me at all. Instead, I've found - and again, this is purely subjective - that the best concentration food for me is stoner music. Groups like Nightmares on Wax, Mr Scruff, Lemon Jelly: perfect. There's something about the slow beats that block out the rest of the world and promote concentration in just the right way. I consider my Spotify subscription to be one of my most important productivity tools. I've built a coding playlist, which I often use to seed a radio station. I guess one reason why stoner music works for me is that a continuous sense of calm is helpful. (It's worth saying that I don't actually get stoned, and don't recommend it.)

Don't be interrupted. Turn IM, IRC, your phone, off off off, unless you absolutely have to be contactable. If you share your home with others, let them know that when you're working you shouldn't be interrupted unless it's really important. That can be really hard to understand, and I've seen (other peoples') entire relationships disintegrate because of it. It might seem like a small thing to people who aren't in the zone, but it can take 30+ minutes to regain your concentration after you've been interrupted. (I find that even seeing people around me doing non-worky things is disruptive.)

Sit up / stand up. Working from the sofa doesn't work. Don't try it. And get up and walk around for at least 5 minutes out of every hour.

Accept that you're human. If you're bashing your head against a problem or a piece of work that doesn't seem to be budging, there's nothing to be gained by continuously, fruitlessly hammering away at it. Go for a walk; have a glass of water; focus on something that isn't your screen. When you come back to it, you'll have a much better chance of getting something done. Furthermore, everyone has bad days, and they don't make any of us feel good; if you're really getting nothing done, it's okay to go get some fresh air instead (if you can).

Find your motivation. Finally, figure out what makes you excited to work. For me, that's getting feedback, so I'll often release my work early - sometimes a little too early. Knowing that there are people - a manager, a client, users - looking forward to seeing the work I'm doing is spectacularly motivating. Other people are motivated simply by creating something beautiful, or finding an elegant solution to a problem. Again, everyone is different. It's important to understand your own goals and desires. It may help to figure out how to mark your own progress, beforehand, so you can maintain a sense of momentum.

This is probably the most important thing for me. It's not enough to have a job; I've got to be working on something that has meaning for me, in a situation where it's possible to make an impact. If I believe that the project I'm working on isn't important, or there's no way to succeed, it's all over for me. Nobody likes working on a treadmill.

All the usual advice about working with great teams comes into play here: if you're working with other people, make sure they're great people. One bad apple can poison a team, and I've certainly seen situations where one guy's poor attitude ruined an entire startup. Working at home is still working - in addition to the above, all the usual workplace tips apply.

Finally, regarding keeping your brain running, this article from the New Scientist is pretty good. I don't think I like the idea of smart drugs, but there are some solid tips here.

Written with the help of Georgie St Clair, Jonny Miller, SamarKaushal, Jaqueline Png, Danae, Joachim, Julien Genestoux, Paul Birch, Domenico Perri, Jamie Bullock, Annalyn Aguilar, Ahmed El Gabri, Kristian Kruse, Linda Mork, Zoe M. Gillenwater, Gordo, Mike Sirrah, 不能淋雨的眉毛, Niall Thompson, olga_zagorzelska, Antonella Iselli, Jack Smith, ntlk, Aisha Rawji, Lowfill Tarmak, sanjaypoyzer, Thomas Kjemperud, Chloe Nicholls, Paul Sturrock, Stef Lewandowski, Johnathan Leppert, damnitnicole, Robin Lynch, Emarcroft, fee plumley, Jeri Dansky, and Erin Jo Richey

The photo was taken in 2007, when I was working on Elgg.

· Posts · Share this post

 

Outmap: a collaborative geodata platform I couldn't release.

When I left Elgg in 2009, I immediately started working on Outmap, a social geodata platform that you could use with any web browser. It never saw the light of day.

Outmap allowed you to collaboratively create map layers, either privately in a group, or in public. Here's two use cases that illustrate what you could do with it:

  • Crowdsoucing useful free wifi hotspots Back in 2009, finding free wifi that worked well was a mission. Suddenly, you weren't alone: you could set up an Outmap space, and tell it to watch a hashtag, for example . Users could then tweet with an address with that hashtag, or add geo-information to the tweet itself. Outmap would also watch Flickr for that tag, and check for location information either in the Flickr metadata, or in the EXIF data in the photo itself. The data then could be mapped, or simply displayed in a list based on your current location.
  • Gathering (or crowdsourcing) scientific data Users could add fields with types. For example, if you were doing wildlife counts, you could take your GPS-equipped smartphone into the field, and as long as it had a web browser that supported the Javascript Geolocation API, that would be all you'd need to record a result. Your Outmap space would tie your numeric recordings of wildlife data to the location where you recorded them. And because it was all social, and tied to individual user accounts, you could examine (or even remove) recordings made by particular individuals for full accountability.

It was based on data tied to individual location points, but further developments would have allowed you to group points into areas, in order to better support some scientific applications. And again, it was all web-based used existing web standards, all social, and (like Elgg) had per-item access permissions.

Outmap couldn't be released for reasons I won't go into here, and were unrelated to the mechanisms of the platform (but were related to the fallout from my decision to leave Elgg). Let it suffice to say, it was out of my hands. I abandoned work on it in 2010, and moved on to work on latakoo.

Geolocation has evolved since 2009, and I think we all now understand that the web is something that we can access from anywhere, and that pages can know about your geographic context. Some other use cases were covered by Google Maps and (particularly) Findery, which is building up a world of memories, found objects and resources on a shared map. Geoloqi, whose founders I really like and respect, supercharges the kinds of use cases Outmap supported (as well as many others). Meanwhile, there are (and were) professional GIS platforms that are extremely powerful and used for many scientific and industrial applications.

I still think there's a place for this kind of functionality in an enterprise social platform. Luckily, I'm now in a position to work on that. Watch this space.

· Posts · Share this post

 

Building latakoo into a flexible media database

I don't think it's saying too much to talk about how we're building latakoo into a cloud media database. Customers from all over the world - a large number of which are television journalists - are using us to send footage, archive it in a searchable way, and synchronize it with their own enterprise infrastructure. Broadcasting and Cable recently discussed one of the things we're doing with NBC News, which leverages our API to distribute archive footage to paying clients. But every day, we're adding more hooks and functionality to allow people to build sophisticated media workflows with latakoo as the back-end.

Here's one example of how it works.

A journalist out in the field shoots some footage, and pulls it straight off the camera into the latakoo desktop app. (For example, we'll take footage from a Panasonic P2 card.) They choose one or more destinations, and hit "start". The app then intelligently compresses the footage, taking note of metadata like timecode, and stitches segmented video files into a single long piece of footage if the user wants it to. It's then rapidly sent over a standard Internet connection (some folks use 4G cards, others go to Starbucks or use sat phones) to our servers. There's an iOS app too, of course, and Android is on the cards. We're also releasing new versions of the desktop app later in the summer, which includes much faster uploads for high-bandwidth environments.

Once the media hits our servers, it might be transcoded into a format of the recipient's choice, and sent to their infrastructure. That's important, because media operations don't want to have to worry about format incompatibilities: they just need to receive the footage quickly, in a predictable, fast way. There's full individual and role-based permissions, so only the people of the recipient's choice can see it on latakoo.com, and of course they have full control over their infrastructure.

They can embed the video on the web, of course, but they can also add extras like automatic transcriptions, or push to a custom-branded video portal. They can also use our API to search, retrieve and manipulate their content (which is designed to make integration simple, unlike the SOAP-based messes a lot of professional media platforms are saddled with).

Internally, our platform has the ability to hook any custom metadata at all off the footage, and we're in the process of releasing that to our customers too. There are also tags, notes, comments, and everything you'd expect from a social platform for business.

We're a very small team, but I'm proud of everything we've put together. We punch above our weight, consistently, and although enterprise software might not be as sexy as the next Snapchat or Instagram, we get to be the delivery backbone for some very high-quality news operations around the US. They depend on us, and we're proud to serve them.

· Posts · Share this post

 

On engineering the life I want to lead.

Here are some of my high-level life goals. Some are pretty universal and bland; others are specifically mine:

  • Have a positive, progressive impact on the world
  • Live comfortably
  • Work on projects I'm proud of in collaboration with great people, which allow me to fulfil the previous two goals
  • Be able to choose my location, and have the freedom to discover new ones
  • (Eventually) have a family, give them the attention they deserve, and ensure that my children, too, understand that they're citizens of the whole world instead of one specific place

That last bullet might read as being a little odd, but it's borne from necessity. I was born in the Netherlands, grew up in England (with gaps in Austria and North Carolina), went to university in Scotland, and now live in California. Part of my family can be traced back to the Mayflower; other parts come from Switzerland, Ukraine and Indonesia. My ancestors and contemporaries have fled pogroms, helped reform religions, lived through internment camps, built up lives over and over again. My relatives are scattered across nations and continents. In order to be connected with my wider family, I have to travel. I'd hope that my children would be connected with their wider family too!

This is both the blessing and the curse of the third-culture kid: I'm not tethered to any real sense of patriotism for any particular place (and don't feel much empathy for the sense of patriotism that others hold). Family is my nationality, and I feel relatively free to try new places. But because that extended family is scattered, I need to have a certain budget - one that is obviously multiplied with a family of my own. And I need to have freedom to travel.

I'm lucky to work in software, and I'm lucky to have been born where and when I was; all of these things are feasibly within reach for me. Nonetheless, it's a life outside the box: the world is still set up for people who live in more or less one place for their whole adult lives. My challenge, then, is to engineer the life I want to lead. (Of course, this is probably a good exercise for anyone.)

As time goes on, I think more and more people will be like me, with scattered families and backgrounds, who want to live in a way that's tailored for them, rather than dictated by tradition or a cookie-cutter mold. One possible future of work isn't with vast corporations, as it largely still is today, but with individuals loosely joining around projects. Just as Just In Time automation allows for working inventory to be minimized and components to be sourced as they are needed, Just In Time employment allows workers will specialized skills to join projects on demand.

That doesn't quite cover the whole story, though: domain knowledge is important, and consistency across a project over time is valuable. My value to latakoo isn't just my knowledge of web development and technology strategy; it's also my knowledge of latakoo itself. At it's simplest, I understand why past decisions were made, and can make better future decisions with this knowledge in mind. Not only that, but "Just In Time" employment leans heavily in the direction of the employer; employment benefit, not to mention a steady income, remain a very important consideration for the vast majority of people. Nobody wants to be without health insurance, for example (in the countries where that's necessary). Or mortgage payments / rent money.

So employment isn't going away, even for folks like me - but I work from an office that I pay for myself, in a city by myself. So there's nothing stopping me from working from the Bahamas for a week, or from London, or Singapore. Well, okay, there's the money, but the effect on the company is exactly the same. I'm still in the chat channel, still on Google Hangout, still answering calls and emails, and still pushing work. Other organizations work in similar ways: Automattic, the company behind WordPress.com, prides itself on this.

This is possible because of the Internet, and it opens up some other new possibilities for employment and living: a world where your choice of city and country don't affect your employment potential, and where salaries are untethered from geography. In the future, as more and more projects become geographically decentralized, it's easy to imagine a software engineer's salary normalizing across borders. It's also easy to imagine choosing a place to live like you'd choose a car: efficiency, the experience, cost effectiveness, your values. It's also easy to imagine citizenship becoming more fluid, at least for skilled knowledge workers.

I'm looking forward to a time when people aren't locked into geography, and I'm doing my best to start avoiding that lock-in now.

· Posts · Share this post

 

A new way to measure continued progress of existence and events.

Today we're introducing a new app to measure the indefinite continued progress of existence and events in the past, present and future, regarded as a whole. It's a new way to determine where you are in your day, your week, and even your life, and we're rolling it out across the iTunes App Store, Google Play and Windows Store starting today. We call it Ticky, and we're excited to share it with you.

First, here are a few highlights that make this release stand out:

Explore. The new Ticky for Mobile will allow you to see where you are in the context of your day, and everyone else's, using a concept called tocks. Everyone gets exactly 114,300 tocks from birth to EOL. Simply tap the face and you'll see an at-a-glance visual representation of where you are in your life's path. Tock, tock, tock. It's fun!

Memories. A beautiful sunset; young hands touching for the very first time; the way that special someone made your heart feel, long ago. Now you can record all your memories in Ticky, just by jabbing it with your finger.

A revolutionary design. Examine your contextual progress using a beautiful, existentially flat design.

And finally, Ticky is a way to discover valuable offers, constantly.

One thing you should know is that the universal concept of time will be retired. We understand that you may still want to discover how your progress in the context of past, present and future relates to your peers and all of reality around you. We anticipate that you will now do this using Ticky.

· Posts · Share this post

 

Latakoo in Broadcasting & Cable

We got a mention in Broadcasting & Cable magazine!

You've got to be a subscriber to read it, so here's a pertinent excerpt:

One notable example of those efforts can be found at NBC News, which in 2011 became the first U.S. broadcaster to set up an online site that allowed clients to buy and download archive material, Fon-Sing says. “It is part of an underlying goal of opening up the archives so our clients have easier access,” she says.

To further improve those systems, NBC News is currently working with video company Latakoo to develop a new content delivery system. On a network level, tech teams are also using a new media asset management system that will improve the capacity and flexibility of the archive system.

You can check out the whole article here.

· Posts · Share this post

 

The #indieweb as a minimum viable social web ecosystem

This piece was submitted as a position paper for the W3C's Workshop on Social Standards: The Future of Business, due to be held on August 7-8, 2013, in San Francisco.

Really interoperable interoperability

Much has been written about both the power of APIs to connect social applications in powerful ways, and vendor lock-in in the context of those APIs. Rather than usher in a new era of interoperability and open computing, APIs have allowed vendors to create new ways to lock users into their ecosystems.

In many verticals, simply gaining access to a product’s API documentation is enough to require complicated licensing arrangements, vendor evaluation of your business intent for the API, and often, an asymmetric Non-Disclosure Agreement. “Open” is the new closed: too often, the API is a proprietary product in itself. This is as true in social software as it is elsewhere.

This proprietary nature carries multiple business risks. Not only does it require that customers invest heavily in a particular vendor’s products, but should that vendor subsequently decide to discontinue those products – as happened recently in the case of Google Reader and a number of Yahoo! products – the customer must repeat that investment in another platform. Finally, recent surveillance revelations must be food for thought for any business using proprietary services to host sensitive data.

Sophisticated open API standards mitigate these risks, but developing support for these can require a significant expenditure, and the business case may not yet be clear to most vendors. There is no doubt that they occupy an important place in the emerging social landscape, but not all vendors, or their customers, can justify the level of technical expense currently required to “buy in”. Indeed, given a high enough barrier to entry, even ostensibly open APIs may inadvertently have the same ill effects as closed ones.

Proving it

Although there have been significant advances in the field over the last five years, there remains a need to prove the business value of decentralized web technologies. To many of us involved in both the industry and the movement, this seems silly: after all, the business value of other decentralized technologies, like email and the phone system, are hardly questioned. Nonetheless, in a world where centralized data siloes regularly receive multi-billion-dollar valuations, the onus is on those of us who are building more open technologies to demonstrate their worth. Note, it is not enough to argue their worth: we must build, ship, and actively demonstrate a profitable product or service with a business model where the decentralized social web is an inextricable component.

I believe that these compelling business models exist, and that they are most easily discoverable in the enterprise. However, belief is not demonstration: we must continue to test and iterate them. During this exploration phase, this means that, our software and underlying protocols must be easy to write, adapt and change. Ease of development is more important than sophistication; we must not create our own technical lock-in before we even ship.

The IndieWeb

The “IndieWeb” movement was founded by Tantek Çelik, Amber Case and Aaron Parecki, around their annual IndieWebCamp event. Although it was originally created to encourage participants to self-host their own web presences (a laudable goal in itself), over the last year it has also begun to incubate a number of simple social web protocols based around Microformats 2 and Webmention.

At its simplest level, assets on the web are marked up with appropriate Microformats 2 classes, so that any parser may obtain a consistent JSON representation of their content. Linked targets on the page are then pinged using Webmention (or pingbacks), which alerts them to the presence of that content. They may then go back and parse the source of the ping, discovering content like comments, replies, event RSVPs and favorites. Adding more content types would be trivial, and indeed, more are emerging every week. If a content type is not registered, the target page may simply register that the source “mentioned” it.

An obvious further implementation incorporates signed HTTP requests for both parsing and Webmention pings, allowing for lightweight authentication so that protected resources can be selectively revealed.

The protocols and standards under development within the IndieWeb community offer some unique advantages for testing decentralized social models:

  1. They piggyback on top of an open, decentralized system that everyone has already bought into: the web itself. Indeed, on the IndieWeb, where possible, the web is the API.
  2. They are extremely simple to develop for, allowing you to concentrate on building well-designed tools that meet human use cases instead of building support for social protocols.
  3. Social software need not be “monolithic”. Suites can be constructed out of small, compatible pieces, loosely joined.
  4. Major search engines support Microformats, so marking pages up to be IndieWeb-compatible may also yield SEO benefits.
  5. The IndieWeb community actively embraces participation in existing closed networks through a process called POSSE, minimizing the potential business impact for entities transitioning to a decentralized model.

POSSE - Publish (on your) Own Site, Syndicate Everywhere, as coined by Tantek Çelik – accepts that your friends, contacts or customers are easier to reach on the social platforms they’re already using. Therefore, content on your own, independently-hosted platforms syndicate out to your audience across the networks they already use; links point back to the originals. In the short term, it becomes immediately possible to experiment with decentralized social models without losing your existing audience. Over time, it may be possible to transition those audiences to consume and interact with your web presences in a more decentralized way, ensuring that you can post on your terms, and they can consume on theirs.

While most implementations of POSSE concentrate on consumer social tools like Twitter, Facebook, Flickr and Foursquare, there is no reason why the same principle could not be applied to commercial platforms like Yammer, Avid Interplay, GitHub, Salesforce or SocialText – or any proprietary service used internally inside any enterprise, APIs permitting.

Idno as an experimental testing ground

Idno is one embodiment of an IndieWeb-compatible open source platform that can be installed across many hosting environments. It was originally designed as a replacement for older open source networking platforms, but rapidly evolved into a testbed for many of the ideas the IndieWeb community was proposing.

At the time of writing, decentralized social web activities supported by Idno include:

  • POSSE posts to Twitter, Facebook, Flickr and Foursquare, and replies on Twitter
  • The ability to comment on, or reply to, a post (or multiple posts) on another IndieWeb-compatible site
  • The ability to “like” a post on another IndieWeb-compatible site
  • The ability to RSVP to events posted on other IndieWeb-compatible sites
  • The ability to post content, including status updates, blog posts, bookmarks, photos, geographic “check-ins” and events that other people with IndieWeb-compatible sites may comment on, reply to, “like” or RSVP as appropriate

Due to its framework origins, Idno allows developers to easily build new post types. Indeed, support for events and RSVPs – at the time unsupported by any other IndieWeb-compatible software – were built in a single evening, with one developer, directly after an IndieWebCamp event. Other software produced by IndieWeb developers began to support events and RSVPs the next day. By the end of the week, at least three separate software platforms supported the content type. There is no doubt that the barrier to entry is low for individuals and businesses alike.

Conclusion

The rapid development that IndieWeb standards make possible is perfect for testing business models relating to the decentralized social web. This does not undermine the technologies and successes of the wider federated social web movement, or of other open social software projects; however, it does allow models to be tested much more quickly.

The relatively low barrier to entry of the IndieWeb also may encourage more developers to take part (as has already been shown), and as such, it seems likely that the standards that community is developing may find themselves in wide use for some time to come. An obvious analogy is RSS, which is not a sophisticated syndication standard, but saw widespread use due to its ease of implementation.

Many of the prevalent models for social software are hostile to the needs of both businesses and individual users. The IndieWeb aligns software developers with their users, while providing simpler tools for development, and encouraging both wider participation and more experimentation. I believe the result will be accelerated innovation in social software, and a much faster path to validating business models for the decentralized social web.

Syndicated to IndieNews

· Posts · Share this post

 

What idno is

idno.pngThis site runs on idno: an open source social publishing platform that I've been working on for the past few months in my own time.

You may know that I co-founded Elgg, the open source social networking engine, which is used by the likes of Oxfam, NASA, the World Bank and several national governments as a social intranet and learning platform. The original thinking around Elgg happened a decade ago. Given that, you shouldn't be surprised to learn that my original thought experiment was: What decisions would I make if I was building Elgg today, in 2013? What would I do the same way, and what would I do differently?

Some technical decisions

I knew that I could make a faster social networking platform, with a better templating engine, and a much smaller codebase - even while sticking to PHP as an underlying scripting language. Partially that's because PHP 5.3+ is a much better development platform than earlier versions. It's also because there are now some well-tested, intelligent back-end frameworks, like Symfony 2, and front-end frameworks, like Bootstrap.

One of the major decisions I made when we built Elgg 1.0 was that not only was it a hassle for plugin developers to write their own database schemas - it was undesirable to the point of being dangerous. We effectively faked a NoSQL schema in MySQL by creating a data model around entities (first-class objects like users and blog posts), metadata, annotations and relationships. People were taken aback, and it was row-intensive, but it worked, and it continues to work today.

Nonetheless, today we have NoSQL, so is based around MongoDB. This means there are far fewer database transactions involved - and adding new data to an object is incredibly easy. Together with a plugin architecture based on lazy loading, and Symfony's excellent observer pattern support, as well as the framework code I've built, I'm able to write a new plugin in an hour or two. That's important for a system I'm building in my spare time!

51d37de3bed7de3636a1d24e

Meanwhile, all of the things about that were great - a plugin architecture, granular access permissions - are intact. And on top of that there's a faster framework, and a responsive front-end that works really well in a mobile browser. Great!

But that's not the end of the story.

The community has existed for years as a force to advance the state of the independent web, and to promote ownership of our own spaces. IndieWebCamp is an annual event for creators to discuss their platforms, technologies and ideas.

One of the big concepts to come out of has been : Publish (on your) Own Site, Share Everywhere. The idea is that your friends or followers shouldn't have to join your site to engage with you; you should be able to post on your own site and be read on Twitter, Facebook, Foursquare, or wherever they happen to be. idno has built-in plugins for status updates, blog posts, images, checkins and events. Correspondingly, it also has plugins to this content to Twitter, Facebook, Foursquare and Flickr - and writing more would be trivial.

That's just as well, because I've committed to only post on my own site and copy to third parties (where that's possible).

Reinventing the social web

This year, though, something else happened. Using Microformats 2 (a way to very simply embed meaningful markup into any web page) together with Webmention (a way for any web page to lightly ping the pages it references), the community participants created the first indieweb decentralized comments thread.

Using nothing more than the markup on their own web pages and a very simple protocol, the participants created the basics of a decentralized social community, where each comment is hosted on its owner's own site, but nonetheless forms a coherent, easily-readable narrative.

This is a very big deal.

It's a completely different model to traditional social networking, where content typically doesn't bleed outside the walls of a specific social site. It's also different to previous decentralized social networking efforts, which have been in many ways more sophisticated, but much harder to join in with. Because a simple IndieWeb-compatible social tool can be built in an afternoon, just as a simple RSS-compatible tool can be built in an afternoon, these concepts have a much greater chance of succeeding.

51d2f810bed7dee523aaad1b

Needless to say, idno is now a first-class participant in the decentralized IndieWeb social community. I've implemented IndieWeb comments, and moved immediately to also implement decentralized events that anyone can RSVP to, as well as decentralized likes. It also integrates with Firefox's brand new Social API.

You can browse the web and reply to any page, on a site that you truly own.

As more sites and platforms implement the IndieWeb social standards, those interactions will become correspondingly more social. For now, though, you can go ahead and interact with the web already.

Beyond that, idno will continue to develop over time as a community platform in itself. I'm using it here on my own site as a single-person publishing platform, but it doesn't have to be that at all, and all those Elgg-style features will continue surface as time goes on. But there's a big, wide web out there, and it's important to embrace that as widely as possible.

idno's homepage is here. Meanwhile, I continue to do work I'm proud of in my actual job, working for latakoo to facilitate media storage and transfer for video professionals and the broadcast news industry. We're talking about using decentralized social networking there too - but more on that another time.

· Posts · Share this post

 

How chickens work #indiewebcamp

I built an easy way to post chickens.

To post a chicken, or series of chickens, the user just clicks on the appropriate content icon:

51c72621bed7de1c5e787b6c

Note that the content icons are designed to be accessible both on a touch device and with a pointer.

The user is then asked exactly how many chickens they would like to post (with clear messaging: "CHICKEN CHICKEN CHICKEN?").

Once the user has made their chicken selection, a new chicken object is created. An Activity Streams "post" event is called. I've written my chicken plugin to define chicken content as having an Activity Streams object type of "note".

Twitter and Facebook plugins are listening for new "post" events with object type "note". When I post chickens, they're sent one! If I've linked idno with my Twitter and Facebook accounts, the content is sent to those plugins, and they are in turn responsible for sending the content to their respective sites.

My chickens are posted to Twitter and Facebook.

Finally, the default template on my feed defers to my chicken plugin every time someone visits on my site and wants to see my chicken content. (The template there displays chickens with some photographic help.) I've added an h-as-chicken microformat content type behind the scenes, so third-party clients can parse my pages for chicken content. And finally, the Activity Streams content is available to anyone who requests my pages with an Accept: application/json header.

It took 30-45 minutes to code, except for chicken photo search and download time. And here's what a post looks like.

51c72a08bed7de3314375bf0

· Posts · Share this post

 

The tyranny of content types #indiewebcamp

I've been thinking this morning about content types and granular access permissions (which, it turns out, is ground the IndieWeb community has already tread).

Activity Streams is a data syndication format with very granular content types, which is awesome - unless those content types dictate the kinds of content you actually allow people to create with your software.

Why should a content type be strictly a note, or an article, or a place, image, video, application? One of the amazing things about the modern web is that we can combine content types to create experiences that are richer than the sum of their media parts.

At the simplest level, I want to be able to (eg) include a photo with a checkin. But why not construct a post that's a photo followed by some audio followed by some text followed by an interactive widget followed by a non-linear video with an interactive layer on top of it? One of the neat things about the is that you control your platform - and that should mean controlling the form of your content too.

Watch this space ...

· Posts · Share this post

 

Centralizing my digital trail into a single #indieweb stream is making me think about what I post.

It shouldn't be surprising. I've been on the web and posting on the Internet since 1994, but posting in the usual way scatters my data all over the place. Short status updates end up on Twitter; longer, more personal ones on Facebook; checkins on Foursquare; photos on Flickr; audio on Soundcloud; etc etc etc.

My site here at werd.io is an attempt to change my posting habits from being silo-first to more of a approach: Publish (on your) Own Site, Syndicate Everywhere. Now, all my status updates, posts, photos and checkins are here in one place, on a server that I own running code that I write, and copied to all those other sites.

It's made me think about posting much more deliberately.

A friend of mine often says that you shouldn't publish anything on the web that you wouldn't be happy seeing on a billboard. I don't think that's true on the whole web - for example, at latakoo we're building tools to make sending, storing and sharing private media content (video, audio, images, large data files) easier, including a self-hosted enterprise option that federates with our hosted .com site. But for the free, public, social web, it definitely makes sense.

This morning, I checked into my office, and then I checked into a local BBQ joint for lunch. Do I really need to share that? Possibly; possibly not. It's my choice, but at least having all this content front and center allows me to make it in a more informed way. I'll probably check in a little less often, except perhaps to announce my presence at venues for special events (like IndieWebCamp this weekend) or to "tweet" links to resources I think are interesting.

This is all new, and my thoughts on it are still baking. Having one stream has certainly made me think about my identity online in ways that I haven't for years. Maybe I'll maintain several identities? Run an anonymous site for frivolous checkins or photos of my latté? The jury's still out, but because I'm empowered to run my own platform, the choice is all mine.

· Posts · Share this post

 

Now I get it: markdown as a fail-safe markup notation

Earlier today, I noted that I didn't get why people would use markdown to blog on their own sites.

That post was syndicated to the social networks I'm active on, and I got lots of very passionate replies across all of them. HTML is too heavy, and the existing rich text editors can't be trusted. is easy to write, and its fidelity is easy to maintain when you send it: unlike a rich text editor, it isn't likely to break tags or be displayed wildly differently across systems. Finally, it's pretty close to the kind of hand-made markup you might add if you were writing a text file without knowing you were using a markup language.

Message received - and it was striking to realize how much people cared about it - but I respectfully have to disagree. All of those assumptions are based on the current state of software: you use markdown because you can't trust other editors to not break your stuff, and because most of the editors in use today have heavy, slow UIs that get in your way.

I think we can do better.

One pointer to the future, as Paul Squires pointed out to me, is Medium's editor, which is designed specifically to stay out of your way. I've written a few pieces on Medium, and have to agree: it's well-designed and just works. Of course, one of the reasons it just works is that it just runs on Medium. The portability use case isn't served here at all, either for transferring text content from place to place, or for using the editor on a bunch of different sites.

Nonetheless, I think there might be a future here, which is also pointed to by the likes of products like Aloha Editor. It seems reasonable that a configurable HTML editor could actually become part of the HTML spec. HTML5 does include the contentEditable attribute, which makes any content editable - but it unfortunately doesn't provide a way to submit that content as part of a form, meaning that these updates have to be sent via back-end JavaScript. It also doesn't provide style toolbars in the way that, for example, video tags can display player buttons using the controls attribute. It would be nice to see these things, so that users can begin to trust editors, and we don't have to use shims like Markdown when we don't need to.

In the future, hopefully we'll able to just write.

· Posts · Share this post

 

Announcing the Orwell Fund's inaugural startup batch

myDNA
Log into any website with just your DNA. Running your finger along the specially designed reader is enough to locate you in our database. Because your authentication information, payment details, address and identity are now stored with your genetic traits, ancestry, relatives and location, we can provide highly personalized services that make myDNA the best personal assistant you've ever had. Coming in Q3: harness the power of you as a service with the DNAPI.

Gait
Now, the real-world services you use every day can recognize you just by the way you walk! Step onto a bus and sit down: you've bought a ticket automatically. Walking to your favorite restaurant? Our extensive gaitkeeper camera network means that your table will be waiting for you by the time you get there. Keep track of your fitness goals without having to carry a pedometer, and check in just by walking in! Gait changes the world around you as you explore it, every day.

CitiesIn
Finally, a personalized civic crowdfunding platform that takes the friction out of participative democracy and helps make the world you need. Tell CitiesIn about what you would like to see from local, national and international government, top up your CitiesIn account every month, and we'll automatically divert funds to the pressure groups, lobbyist organizations and non-profits that are most likely to achieve your goals. Perhaps you'd like lower taxes, or feel passionately about civil liberties? You're not alone. Leverage the predictive power of the crowd with CitiesIn.

Mune
Airbnb for communes.

Keys.io
We're building an amazing secure communications platform that fits you. Are you worried about your privacy, but finding all that encryption and open source software hard to use? Yeah, us too. That's why we built Keys.io: we manage all that stuff behind the scenes, so all you need to worry about is connecting to your favorite apps, sites, and people. We "store your secure keys" in the cloud using military-grade security, and choose the encryption or security method that makes the most sense for what you're trying to do. You shouldn't need to think about security to be secure. With Keys.io, you don't have to.

· Posts · Share this post

 

I don't get why you'd use markdown to blog on your own site.

Markdown is useful: an easy-to-use notation system that allows you to mark up your text in a safe, fast way.

Because you're never letting your users write raw code, there aren't any worries about them posting malware or exploit attempts, or accidentally writing bad markup. At the same time, simple lines and dashes are converted to valid HTML. Everybody wins.

But when you're writing your own site, you don't need to worry about those things. You don't care about you posting malware or exploit attempts. (Either you want to, or you won't.) You also don't need to worry as much about bad markup - and if you're not proficient in HTML, you can install a WYSIWYG editor, like the one in WordPress. Unless you're a Dr Jeckyll who morphs into an id-like alter ego without warning, you don't need to worry about your own trustworthiness as a user of your own system.

On a self-hosted site, all does is restrict what you can do. It has a syntax to learn, just like basic HTML does, and because you actually have to keep in mind which HTML tags it uses when you write it, it's actually a little bit more complicated to remember.

I like a lot of the goals of new publishing platforms like Ghost (I backed it on Kickstarter) but this feature sticks out like a sore thumb to me. I'm not at all sure this is the best writing experience on the web. And I don't see what's wrong with HTML.

Updated to add: I've had lots of feedback by people who point out that they just want to write text, not HTML, which is more than fair enough. But surely this shows demand for a smarter, context-sensitive rich text editor rather than another syntax to learn. Why couldn't an editor know to start creating bullet points when you type an asterisk and a space at the beginning of a new line?

· Posts · Share this post

 

I'm not a designer, but that doesn't mean I shouldn't try and design.

I'm not a designer. I wish I was, but my background is in computer science and writing; the first project I ever released was a hypertext magazine with a logo drawn in MS Paint.

Design isn't, of course, just about the aesthetics of a product; it's about how the product serves its intended purpose, and how the user feels while they're using it. It's about building with empathy.

I think Apple was the first to really make that last clause part of their ethos; they've been building hardware products that focus on their emotional impact for decades. It was easy to conflate this with their premium price sticker, so I think a lot of engineers missed the point until the iPod (or perhaps even the iPhone) came out, but now it's hard to avoid.

Engineers, myself included sometimes, often make the mistake of thinking about a product in terms of its requirements, where requirements are a check-box list of desired features. The result is something that technically does what it should, but is counter-intuitive, or emotionally unsatisfying. That might sound somewhat waffly, but if you're using the same piece of software day in, day out, those moments of friction add up. Ideally, if you're using something often, it should be a pleasant experience that allows you to quickly obtain the desired result.

Designers are trained to do this. Unfortunately, in small projects or lean startup situations, you might not have the luxury of a trained designer. You should hire one as soon as you can, of course - it's a skilled, professional job, and in past startups I've worked on the designer has sometimes been the most highly-paid member of the team (a decision I stand behind). Nonetheless, when I don't have one, like I don't on idno, I have some tricks that I try and employ to minimize the fallout.

Trap to avoid: "I'm not a designer, so I won't try and design."

Lazy thinking at its finest. If you're a software engineer in a startup, you're not writing code, you're building a product. The code is not the product. If you've written beautifully elegant code but the product is awful to use, your work has been for nothing. (Unless your primary goal was to write some neat code, which is sometimes worthwhile too - but that's not a product.)

A second version of this trap, by the way, is to trick yourself into believing that design doesn't matter, or that it's superficial. It does, and it's not. Design goes to the heart of why you're building a product.

The way I avoid this trap is by trying not to code first.

Telling stories

I find it helpful to tell the story of what my user does on their journey through my product.

I'm not a hugely visual person. Diagrams are often hard for me, and I find I absorb text more easily. (I do sometimes make Sharpie sketches to test ideas.) Other people are different, and prefer to draw flowcharts, storyboards, comic books. Obviously, do whatever works for you.

eg, here on idno:

  • I want to update my status to let my friends know I'm going to be at the Albatross tonight, and invite them to come.
  • I unlock my phone and push my homescreen icon for werd.io.
  • The phone's web browser starts. The system remembers me, so I'm already logged in, and presents me with some touch-friendly icons for different kinds of content depending on which plugins I have installed. On this site, I have Status Updates installed (along with Posts and Photos).
  • I push the Status Updates icon.
  • The content pane swaps to a text field, which invites me to type my status update of any length.
  • I type my status update, and push a big "post" button.
  • My status update is posted to my site at werd.io, as well as to third-party services that I've linked my account to, like Twitter and Facebook.
  • I put my phone away, knowing that my friends will reply to me on the services that are convenient to them.

Now, I can look at that story and decide if any of it is inefficient, or feels wrong. Is it burdensome to expect the user to have a homescreen icon for a web app, for example? (I think they probably won't.) What happens if I want to send the message more privately, to a few select people, but who still want to reply to me on the sites of their choice? (Watch this space.) I bet you might think of other criticisms, so it's worth me sharing my user story around a bit, to gather some feedback.

And then, once I've got some idea of what I'm going to do, I need to figure out what it looks like.

Making it appealing

It's much easier to make an application look nice than it ever has been in the past - which is just as well, because we've got more form factors and platforms to consider than we ever have before.

The answer, of course, is to keep it simple. And aligned.

Simple grid systems are an incredibly useful concept in design. There's been lots written about this, also for non-designers, so the cheater's version is this: make sure your screen elements align with each other.

In idno's default theme, I cheated by using Bootstrap, the responsive front-end framework that originally came out of Twitter. (We're actually in the process of going back and using it for latakoo's new interface, too.) Bootstrap provides a twelve-column grid that shrinks on smaller screens, so that something that works on a 30" monitor can also work on a 4" phone. So that's the carrot: the fact that you don't have to develop a bunch of different interfaces. But it's a bribe. The biggest thing that Bootstrap gives you is a much better-balanced interface overall. It's a great way to encourage better-designed pages.

You don't have to use Bootstrap, of course, but I think its principles are sound. (There are also a bunch of alternatives.)

So that's the layout sorted. How can you cheat with things like icons?

Typography, done well, is iconography, and it just so happens that there are a bunch of free fonts out there to help you out. For type itself, it's worth thinking about what looks good across browsers, is easy to read, and also is well-aligned internally to itself. Google's Apache-licensed Roboto font is my favorite right now; it was designed for Android, but looks really fantastic across browsers in a variety of weights.

Using fonts for icons means you don't need to worry about retina displays or creating versions at different pixel sizes. Bootstrap ships with Glyphicons, which is paid-for for other purposes. I've happily paid the money, but because idno is an open source redistributable package, I needed something with a compatible open source license that I could redistribute with it. Font Awesome fits the bill perfectly; I've been using it across everything I do, and I couldn't be happier.

So, great. I've got satisfying user stories; a simple, grid-aligned layout; beautiful icons that work well on any device. I'm not going to talk much about color, except to say that I find Adobe Kuler to be pretty useful.

How do we make it work?

Making interactions not suck

Going into formal interaction design would take a textbook, and someone else would have to write it. I'm not an expert, remember; I'm a cheat. I just try and stick to some simple rules.

Talk to the user. Always give them strong cues about what to do next, and/or about what they just did. (And while we're here, although it seems obvious: never do this with Javascript alert() popups. They're intrusive, and the design isn't under your control.)

Think about how your eye moves. What pops out at you when you first see a page? Where does your eye go once you've interacted with it a bit? How do other peoples' answers to these questions differ when you try it with them?

Minimize clicks. If you can edit a field in-place rather than having to click through to an edit screen, for example, that's great - but only if you've made it obvious to the user that this is something you can do.

Treat the browser as an interface too. If you're breaking the back and forward buttons, you're doing it wrong. If you're making a one-page-app immersive Javascript-heavy experience, use the Javascript History API and make sure you can get and set the state of your application through URLs saved there. Twitter does this pretty well, for example. And if you can't do this: make your app out of separate pages. There's no shame in reloading the page; really, there isn't.

Don't repost forms when the user hits the Back button, though. You can avoid this by sending a Location: HTTP header once you've performed your form action work.

Understand that the user has a bunch of different devices. It's okay to use cookies to save user session information. It's totally not okay to save any other user or content flags in anything other than a back-end database. The user's state needs to be consistent across all the devices they use.

And finally, an oldie but a goodie: Don't target a single browser. In the old days, we'd see applications built for Internet Explorer only; these days I'm seeing more and more Chrome-only apps. If you're doing this, stop. Making applications work cross-browser is less intensive than ever before - and nobody's going to blame you if you don't include pre-HTML5 browsers in that mix. Enterprise developers may need to target IE7-8; everyone else can relax a little. And IE6 is just a distant memory at this point.

So this is how I cheat.

The above isn't design, really, but I find it helpful to have simple rules to follow that make my applications a little easier to use. Designers are worth their weight in gold, but I hope some of these ideas help you with your projects where hiring one is out of bounds.

I'd also love to hear your ideas. Write your own post, link back to this one, and I'll see the ping. Thanks!

· Posts · Share this post

 

Owning your data is cool - but having your own awesome site is cooler.

There's been a lot of news stories lately about how technology companies like Google, Apple, Microsoft and Yahoo! may or may not be giving your data to the as part of a project called . They deny it, news outlets confirm it and it's hard to tell what's real and what isn't real.

Whatever your political views, or whether you think government entities should be able to snoop on your phone and electronic communications, it's hard to argue that the sheen hasn't come off the consumer Internet industry. As the economist Umair Haque said earlier today:

The large online services have created a world where, despite the breadth of software's possibilities, the scope of our communications are limited. On Facebook, you can post status updates, links, photos and videos; on Google+, you can post status updates, links, photos and videos. What if you want to post a game, or an interactive multimedia presentation, or a live graph connected to real-time data?

Those things are hard for centralized services, because they've got to concentrate on common denominator forms of content - like status updates and photos - but they're much easier when you control your own site. If you could install your own publishing app as easily as an app on your phone, and then add new ways of posting stuff to that site just as easily, suddenly you would be able to make your presence on the web your own. And you could let other people in - you could create online communities that fit your needs, rather than bending your communities around the limits of a Facebook group or a mailing list.

That's what inspired me to start working on idno, and these are some of the ideas that inspired other people in a community of developers called the to build their own sites and platforms. We don't believe in treating people as data points; we believe in user-centered software for individuals. Software that you control.

will be available to install onto your own site later this month; a turnkey hosted version will follow. In the meantime, if you're a developer, you can check out Idno on GitHub, or some of the other IndieWeb projects out there.

Won't you join us?

· Posts · Share this post

 

We need to make better software and fight for our users.

This was a sad day. Unsurprising, but sad.

The web connects people from different contexts, backgrounds and geographies, with different skills and ideas. Learning happens when different contexts collide. I'm not a technological determinist, but I think the web is a tool that we can use to make a more tolerant, peaceful, progressive world. Yeah, yeah, I know. But I do.

I knew the risks from putting everything online, and from the data mining it enabled, but I saw the benefits, too. I knew that Silicon Valley had a lot in common with the progressive movements in the Bay Area in the sixties and seventies, and I felt like people had their hearts and minds in the right place.

There is nothing less empowering than filing yourself, your friends, your family and your neighbors into a surveillance database. If today's reports are true, every time you attach an email address or a profile page to a phone number and save it to the cloud, that's what you're doing. Every time you tag someone in a photograph. You're communicating with your friends and having fun, but you're also potentially crowdsourcing a surveillance state.

The point isn't that the current government might persecute you. I mean, there's a real chance that they might, if you're a minority or the wrong religion or something else that triggers an algorithm to flag you as being more likely to be harmful to national security. But that's not the crux of it.

The point is that we have created the tools so that we can be surveilled and persecuted. By a future government, by private companies with access to the data, by anyone with the right tools. A government didn't create the data-gathering tools behind . We did. We are the computer; we build it every day. All the NSA is doing is taking a peek.

What we do now defines us as a generation and as a society. It's not about whether the NSA is surveilling US citizens on their own soil, although that's certainly a legal point of conflict. It's no more moral to spy on anyone else's citizens on their own soil. No, it's fundamentally about the nature of all this data that we're creating. Who are we creating it for, and why are we creating it? Why does it need to exist at all, in this massively interrogable form?

Everyone talks about big data, but I'm much more interested in how we can keep data small without ruining the connectedness that the web provides. Movements like the IndieWeb and the federated social web are important. So is regaining a sense of community responsibility on the web. We're here to make the world better, after all. We should be fighting for the users from the ground up, not working against them behind their backs.

· Posts · Share this post

 

Questions, tribes and independence

I come from a culture of skepticism, in the best possible way. I was brought up to, and later sought out friends and acquaintances who would also, question and test the things around me. Leaders? Question them. Institutions? Question them. Traditions? Question them. And then, from what you've learned and been able to intuit, form your own belief system over time.

Part of that is understanding that you might be wrong, and being able to change your mind. I think having a willingness to change your mind is a strength, like skyscrapers built to bend in the wind, or trees that twist and adapt to their environments as they grow. Rigid ideas tend to break.

Another part is not believing something because you're told to. I always find it a bit alienating when people don't, for example, like me criticizing the President (or the Prime Minister), as if it's somehow wrong or disrespectful to point out his shortcomings. I tend to disagree: I think that's what democracy requires us to do. My opinions don't put me in a pigeonhole box, and I don't think, really, anyone's do. We're all demographics of one.

I don't like ideological (or theological) tribes. I don't think they're useful for their participants, although I think they're very useful for people who are in positions of power within them. We can agree on things and disagree on other things, and we're all part of a larger tribe. If the Internet has shown us anything, it's that we are all connected, we are all different and we all the same - and all of us contribute to a much larger whole. We should celebrate diversity in ideas, goals, opinions, knowledge and skills, just as much as we should celebrate diversity in our physical traits, personalities, sexualities and backgrounds. Values are ideas; rigid values are fragile ones. They're narrow gene pools. I think we should question ourselves, and each other, often.

· Posts · Share this post

 

My continuing adventures in MongoDB

I've been loving coding with MongoDB since I picked it up; I know there are worries, and I come into it with two eyes open, but so far it's been far more useful for my needs than MySQL.

Part of the reason for this is that applications I work on tend to be very document-centric, and where they're relational, they're relational in a way that lends itself very well to NoSQL (membership lists, etc). It's probably not an exaggeration to say that I'm querying the database 10x less than I would be with an Elgg-style entity-metadata-relationships table.

idno is MongoDB-based, including heavy use of GridFS, whereas the latakoo stack is not (I don't think this is the right place to write about latakoo's tech, but I may do on the official blog at some point). However, if my experiences continue to be great, I'll think about doing some more formal testing with the team. With the likes of IBM throwing their weight behind MongoDB (given their recent acquisition of SoftLayer, could 10gen be a target too?), this might be the right time to begin taking it more seriously.

· Posts · Share this post

 

#indieweb checkins; trying to decide the best approach

Map readersI've been self-publishing my photos and status updates for less than a week, but I already wouldn't do it another way. Idno lets me post easily from my phone or laptop, and the updates show up on the sites I'm connected to. Right now, that means Twitter and Facebook, but sites like Flickr and LinkedIn are coming. (This is all available as open source code, by the way.)

Technical aside: when I post something new, it gets an Activity Streams object type and verb. Status updates are notes, blog posts are articles, and photos are images. Plugins then listen for when new, public content is created with those object types (and, right now, the "post" verb) , and syncs them to third-party sites as appropriate. That way someone else could write a better status update plugin than mine, and nobody would have to rewrite the plugins that synchronize content.

The other silo that I use all the time is Foursquare. Theoretically, taking the user's location isn't hard - did I mention I'd written a book on Javascript Geolocation? - but in reality, this is harder than just grabbing the user's current latitude and longitude and saving it to an Activity Streams place object. Foursquare maintains an extensive database of venues, that's so good that a bunch of third party services use it as well. I don't really want to have to duplicate that.

There are alternatives: OpenStreetMap has a downloadable free software database of locations. The downside is that you need to extract points of interest yourself - and the database, perhaps predictably, is over 28 gigabytes. That's far too much data for most individual sites to be handling themselves. It's certainly not something I'd like to deal with on my personal server.

For me, the perfect use case is this: I click "check in" in idno, the browser grabs my location, I'm presented with a list of nearby points of interest and I select one. The content is saved locally and then synchronized to location-centric services like Foursquare and Facebook Places.

Now, I could use Foursquare's database to populate that list of locations, but somehow that feels unclean. The purpose of me self-hosting is to own my own data, and using that database would make me dependent on Foursquare's service. Also, the flip-side of that also makes me uncomfortable: if my purpose is to put less value into Foursquare's service instead of my own site, I probably shouldn't be using the database they put so much investment into.

I'm not sure anyone else is syndicating their location to sites like Foursquare from their own sites, but if they are, I'd love to hear from them. Until then, I'm considering writing the simplest possible shim: a geolocation plugin that takes my physical location and lets me save a "hint" along with it, that will act as a way to gently nudge the third party synchronization plugins to pick the best venue. The hint wouldn't be publicly displayed, but for example, I could type "amendment" when checking into one of my favorite brewpubs in San Francisco, and that'd be enough for me to be checked into 21st Amendment on Foursquare.

Speaking of which, time to head over the bay and grab a pint ... Sadly, I won't be checking in just yet.

· Posts · Share this post

 

· Posts · Share this post

 

From Ani DiFranco to Knife Party: how the Internet changed the way I listen to music

I'm an Ani DiFranco fan. That's my style of music: literate, powerful polemic set to angular acoustic guitar. I must have seen her play live eleven or twelve times now. Dar Williams, Joan Baez, Bob Dylan, Thea Gilmore, Jess Klein: all my cup of tea. I saw the Proclaimers at the Great American Music Hall just a couple of weeks ago.

Somewhere along the line, I managed to get into really dirty electronic dance music.

Spotify was my gateway drug. I've got a premium subscription, which allows me to run it on my phone, and I usually listen on the walk to and from work. Because I try and do the mile and a half in twenty minutes or less, I'm after high-tempo music; and because I'm the kind of person that gets sick of listening to the same thing over and over (or walking to work the same way), I've been using the radio function to find tangentially related music to my playlists. It's a bit like Genius mode in iTunes, but I'm not limited to music I actually own.

I guess I might have clicked "thumbs up" to the new Tegan and Sara album, which moves them from guitar folk-pop to eighties-inspired electro. (It's brilliant, by the way.) Somewhere in the mix, Skrillex's Bangarang might have turned up. And late at night, listening to music in a particular frame of mind on the way back from a night out at the Independent, I found Knife Party (of all things) and was hooked.

Spotify's model is pretty great: it comes close to how using Napster felt in the late nineties (except you pay, and don't get to keep the music when you stop subscribing). When I hear something I particularly like, I'll buy it on the DRM-free Amazon MP3 Store. I can try out virtually anything, anywhere, and easily discover new bands. It's one of the handful of paid online services I wouldn't want to do without.

But online music in 2013 goes so far beyond that. Soundcloud is a miracle: a place where anyone can upload and share any audio, and do. The tracks I embedded above are fully-sanctioned, fully-commercial audio that the artists have decided to release in a streamable form for free, because they understand that sharing is great marketing. If you discovered that you like either the Ani DiFranco or the Knife Party track above: you're welcome. And if you didn't, it's no skin off anyone's nose.

I remember listening to the Top 40 chart on BBC Radio One in the nineties, on a Sunday afternoon. I have no idea what's in the charts right now, and I can't imagine caring. I've got a great idea what my friends are sharing, what's being shared among my contacts. It doesn't matter what label they're on or who's doing their PR; it's all about the music. This track by my sister shows up in my feed right next to all kinds of famous artists, and it's available for anyone to discover in the same way.

With the freedom to share and discover, there's a new freedom of genre. I might be bemused by my newfound love of EDM, but I'm not surprised I found it. There's a big, wide, cultural commons out there.

· Posts · Share this post