Skip to main content
 

... But here's what's awesome about San Francisco

If you can get shit done, you can get shit done.

If you're in technology, there is nowhere else in the world to be. Period. The critical mass of talent, investment and employment opportunity mean that - if you're the kind of person who already has the skills and circumstance to be able to make something out of nothing - you can thrive here like nowhere else in the world.

For years, working on Elgg, potential investors would tell us, "move to San Francisco". Our advisors told us that. Some of our customers told us that. And we didn't listen, because we believed that we should be able to create the same kind of opportunity elsewhere.

You can create opportunity elsewhere, but San Francisco is a special kind of place. Need to talk to the person who created product or technology X and get their advice? You can have a coffee with them, almost guaranteed. Need to learn about a product, or get investment feedback, or find top-tier developers? This is the place to be. In other words, if you're here to make money, be surrounded in technology and other smart people, and create something quickly, you're golden.

It's not for everyone, and probably not forever, but it has its place, and I'm not unaware that being here is a privilege all on its own.

The fact that it's beautiful, the weather is pretty good, you're less than an hour away from incredible national parks and world-beating wine country, and it's highly connected with the rest of the world doesn't hurt either.

But more: there's a buzz in the streets, the restaurants all serve amazing food, there's music from every bar doorway and little snippets of culture and history around every corner. I work on the edge of Chinatown, and walk to get coffee past Francis Ford Coppola's restaurant on the edge of North Beach. The echoes of beat poets still hang in the air. Every house is an individual, and the stores are idiosyncratic and independent.

These things are what made San Francisco appealing in the first place, and it's these things that I'm worried will be lost.

· Posts · Share this post

 

Old-school mobile development. #elgg @davetosh #nokia

Old-school mobile development. #elgg @davetosh #nokia

Developing for mobile devices in a time before iPhone.

· Photos · Share this post

 

How #xoxofest and #indiewebcamp saved me, in a way.

For me, one of the most interesting aspects of was the humility on show from people like Evan Williams, Maciej Cheglowski and Cabel Sasser - people who, in my mind at least, have "made it", and should be happy, successful and singing on hillsides with butterflies. Instead, each of their presentations was introspective and personal in different ways.

Frank Chimero captures one facet of it well in this amazing post:

After several talks, an unstated theme began to emerge, providing fuel for many of the stories and ideas expressed throughout the two days. It was often hinted upon, but only directly stated in Christina Xu’s talk. It came out as bright and searing as magnified daylight: “Independence is lonely.”

Independence is lonely.

When I moved to the San Francisco Bay Area, I did so for personal reasons. My mother has (had?) idiopathic pulmonary fibrosis, an incurable disease of the lungs that causes progressive scarring until you can't breathe anymore. I wanted to be close to both my parents to support them, and to spend more time with them. It was a good decision: I was there when she had to be bumped up to two refrigerator-sized oxygen concentrators in parallel in order to be able to breathe, I was there when she had her double lung transplant, and she's lying on my sofabed right now, in readiness for yet another session at the hospital.

So I have no regrets, even with everything else aside. However, you've probably noted that the San Francisco Bay is not the worst place in the world to be if you're making software. Legends have been made here. The people here have have made the world change over and over again - even before the computer revolution - and will do so many more times. I want to be in that mix. Call it egotism, but I believe I can help the world change, too.

But I was lonely.

Now, it's true that I wasn't fully independent, or alone. I work for latakoo, an enterprise video management startup based out of Austin, Texas. I'd been working with them first as an unpaid advisor, and then transitioned to lead their technology team. However, they were all in Texas, and I was all the way over here. Flights and Google Hangouts are useful, but they're not quite the same as having a ready-made community to plug into.

I've always liked to have my own projects, but the last big self-owned project I'd helped to start - something called Elgg - had not ended well. It still continues to be widely used, and I'm still very proud of the work we did, but the startup we'd founded with it succumbed to a series of bizarre interpersonal issues that I still don't fully understand. It's a shame, because we had been successfully bootstrapping, and had succeeded in a way that I think most web startups wouldn't be capable of, from a standing start with zero knowledge.

Those interpersonal issues were killer. There were, through the course of Elgg's evolution, a number of what felt like attempts to subjugate me in importance in the company, and in the project. I was threatening, I think, which is bizarre; if you've ever met me, you'll know that I go out of my way to be un-threatening. (And I was responsible for building the project, which is still in use in two national governments, Fortune 500 companies, etc etc.) In the end, though, it was a disagreement over a fundamental business direction that made me leave; I realized that it could never be profitable under its current heading, and I realized I didn't have quite enough clout to change this on my own. The company faded away less than a year later, and Yammer, a company that took exactly the direction I wanted to head in, was sold to Microsoft for a billion dollars.

So it goes. I left in 2009, just as the web was becoming more mobile; it was something you accessed from everywhere, rather than on your desktop or laptop. So I started to build something called Outmap, which would let anyone create, curate and crowdsource sets of geographically-tied data, and then share and access them from wherever they were. My two big use cases were (for the free version) crowdsourcing lists of free wifi access points using Twitter, which was a big issue at the time, and (for the pro version) being able to take biological species counts using a smartphone.

But then there was a kerfuffle with some people, because they felt that perhaps I shouldn't have been creating any social software at all after Elgg. All software is social, of course, and it was really an attempt to bully me into doing some things I didn't want to do, having already been bullied into doing some things that I also didn't want to do. They had a lot more money and power than me, though, which meant that I wound up shelving the project.

All of which brings me to San Francisco in 2011, feeling utterly burned-out about my own projects, and feeling shy about connecting with people in the industry because I was no longer doing the thing I was vaguely known for. I was forced to be a talker rather than a doer; something I strongly dislike. I had left my girlfriend behind in Edinburgh, I was dealing with a dying parent, I was in the midst of my startup's scrabbling-around phase (trying to find the right product-market fit), I was personally losing money every month because of the phase we were in, and I didn't know anybody at all. Without realizing it, I lost faith in my ability to create things on my own terms. Reader, I was miserable. For a year.

This is where community becomes important. Finally, in an act of desperation, I put out a message saying that I was having trouble meeting people (although, yes, that was mostly because of my own barriers). Tantek Çelik responded, inviting me to a microformats dinner in the Westfield Dome, where I had some great conversation with him, Kevin Marks and Ariel Waldman, and we collaboratively ended up submitting a pull request to Elgg, to get its profiles to support appropriate microformat markup.

A month or two afterwards, I went to XOXO and found a community of independent makers and doers who were creating things on their own terms using the power of the Internet and were improving their lives in the process. In a quiet corner one evening, I cried. And then I made a resolution: I would give myself time, every day, to build my own things again. In November, as part of NaNoWriMo, I wrote a novel.

That Elgg pull request was eventually rejected, and it was as a direct result of this that I found myself writing the first code for Bonita and then idno, and then eventually presenting my platform at IndieWebCamp. It was a lot more than a simple social platform that embodied some technical principles; for me, this journey has been more symbolic. It's been about taking my life, claiming some ownership, and rearranging it to be what I wish it to be.

(An important note: I have no ill will towards the current Elgg team at all, which is, in my opinion, doing a great job.)

I wrote the database and object code for idno while I was spending my evenings in my mother's recovery apartment, while she was getting slowly better after her invasive surgery. A couple of commits were from the ward after she was readmitted. I wrote the interfaces when I had moved back to my own apartment, and was still waking up every night with flashbacks from the day of the operation. I presented the first version - chickens! - when I was finally beginning to breathe again on my own terms, and was wondering what the rest of my life would look like. And now, I'm getting ready to release.

For me, the movement has been about software, sure, but it's more importantly been about meeting amazing people and once again being a part of a human movement. I have found my community in San Francisco, and I am no longer lonely.

They say that to have real satisfaction in your career, you should feel like you're making progress on meaningful work. More and more, I feel that way about my life. And it's helping me with my work on latakoo, my interpersonal relationships, and the way I feel about the world.

The power of XOXO isn't in the things that people are making on their own terms, although the things they're making are incredible. It's in the sharing of those things, and in the motivation to create, and in the community.

For both the and communities, I can say this: I'm proud to be there.

· Posts · Share this post

 

Love that the Austrian Pirate Party is running @Elgg. https://elgg.piratenpartei.at/

· Statuses · Share this post

 

"Benjamin Otto Werdmüller von Elgg": still too much for most form / name algorithm designers to deal with.

· Statuses · 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

 

Fun to see an site. More on that in a little bit ...

· Statuses · Share this post

 

@vassko There were some. I was working on Elgg, pitching investment banks at the time. But agree, far fewer.

· Statuses · 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

 

Officially sick of picking out a black T-shirt from my drawer to discover that it has an Elgg logo on it, but can't bring myself to get rid of them.

· Statuses · 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

 

<a href="http://twitter.com/erinjo">@erinjo</a> Though I've never been a customer, I know these guys through Elgg and trust them (note developers claim): https://www.arvixe.com/linux_web_hosting

· Statuses · Share this post

 

<a href="https://twitter.com/DeadSuperHero/status/343219048567431168">@DeadSuperHero</a> it's good advice (I used to work on <a href="http://elgg.org">@elgg</a> so come with open eyes). <a href="http://pump.io">pump.io</a> is pretty neat, too.

· Statuses · Share this post

 

Hey, cool. My old <a href="http://elgg.org/">@elgg</a> cofounder <a href="http://twitter.com/davetosh">@davetosh</a> is working on an open source data locker for education: http://learninglocker.net/

· Statuses · 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

 

A new website running on a new platform

idno.pngI just installed a vanilla configuration of idno onto my new website at werd.io.

idno is a personal attempt at building a publishing platform that adheres to IndieWeb principles: own your own data, publish on your own site, use existing social websites for dissemination but not as an origin. I've also tried to use microformats where possible, allowing every page to contain lightweight semantic information, as well as making it skinnable, extensible, and social.

I also wanted a chance to think about platform design again, separately from my work at latakoo (where I'm CTO) and informed by my previous work on Elgg (which I helped start nine years ago). What would I do if I was building a platform from scratch in 2013? How could I make it more useful?

I'm proud of the results so far, and the decisions I've made. Here are some highlights:

idno is based on Activity Streams, and every page is an API call

If you visit the front page of the site, or click on any user profile, the feed you see is an Activity Stream (albeit rendered to HTML). You can easily toggle a JSON version by setting application/json to be your web client's accepted type. There's automatic RSS, of course, too. And if entities have attachments - for example an uploaded file or a photo - the RSS items have automatic enclosure tags, as you'd expect. (That means idno can host podcasts and deliver other files via RSS.)

The system is designed so that all plugins automatically have an API without having to do any extra work. I'm also planning on implementing HTTP signatures, or something like them, to authenticate seamlessly in addition to standard sessions.

idno uses HTML5 (and Bootstrap, jQuery)

HTML5 needs no introduction or reasoning. Bootstrap is a very handy set of rails for responsive front-end design (with lots of pre-existing themes), and jQuery is an integral part of that. On top of that, idno bakes in some useful features behind the scenes - like autosaving works in progress using your browser's local storage, for example.

idno runs on PHP 5.4 with a MongoDB back-end.

PHP is a controversial decision, but it remains one of the most widely-deployed web scripting languages in the world. Version 5.4 is old enough to be installable on most servers, but new enough to contain some really neat features. Idno makes extensive use of the JsonSerializable interface. (It also uses a lot of 5.3 features like lazy loading and namespaces.) MongoDB, meanwhile, means that we don't have to force plugin writers to maintain schemas, nor to emulate NoSQL in MySQL, which has been a tactic I've used in the past. So far it's performing great, and it also provides GridFS, a useful file store.

All of this a work in progress, which has mostly been coded late at night, and there's still a lot to do. For example, at the time of publishing, the hashtags below aren't linked anywhere and aren't automatically marked up, but I bet if you check back in a few days, they will be. Another is that although my posts are automatically POSSEd out across the web, I can't yet posts things like replies to tweets from the idno interface. Nonetheless, I invite the brave to check out the GitHub repository (idno is released under an Apache 2.0 license), and let me know what you think.

· Posts · Share this post