Server Down

So much for my five-nine's of availability1 in 2019. Today I had a couple of minutes between meetings at the day job, so decided to connect to the web server hosting 10Cv4 and install some operating system updates. This is something that I've done hundreds if not thousands of times with various servers over the years. After the installation scripts completed I saw that I was within the 38-minute "lull period" where traffic to the service is generally at its lowest for a Wednesday and issued a sudo shutdown -r now command, telling the server to reboot.

Less than 30 seconds later I was reconnected and checking available storage space when my phone notified me of an issue with 10C. The site was offline. I checked with the notebook and found that the service was indeed unresponsive. The server was running, as I was connected via SSH. Apache was running on the server. The database was also operating well. But no traffic was being received. I checked to ensure that the firewalls were configured correctly, and that the IP address of the server handn't changed2. I cycled the software. I rebooted the machine. I checked error logs, installation logs, and configuration files. Everywhere I looked, the server appeared to be fine.

Cloudflare's Dreaded Error 523

By this time the service had been down for five minutes and a recovery plan needed to be enacted pronto. There were three viable options:

  1. Restore the VPS: This would essentially see me wipe the server clean and start with a fresh installation of 10Centuries. A backup would be pulled down and restored, returning the system to its previous state seconds before the reboot that brought the service down. Total recovery time: 90 minutes.
  2. Transfer 10Cv4 to the backup VM: As one would expect, I have a virtual machine image set up on the same server that is running 10Cv5. The machine could be brought online in less than 30 seconds with the most recent database restored and ready less than 45 seconds after that. I test this process every morning and it consistently takes between 73 and 75 seconds to complete. Once done, I would need to ensure the routing and forwarding was properly configured on the v5 server, which could interfere with some of the Apache settings that allows v5 to do what it does. Total recovery time: 15 minutes.
  3. Migrate v4 to v5: With the virtual server in Osaka slated to be decommissioned in two weeks when the annual service package expires, the v4 service would have to be migrated to v5 in the very near future anyway. One could argue that it's better to rip off the band-aid now rather than buy time and delay the process any further. Total recovery time: the rest of the day.

Yes, I went with the third option.

While it may not seem like the wisest decision given the lack of complete documentation, the lack of notice, and the stunning lack of functional code in various parts of the system, forcing the migration to v5 should work out to be a net positive. There will be more incentive to complete the outstanding items, as if there wasn't enough already, and it will be possible to see how well the home network can handle the traffic. If problems crop up right away, then it will still be possible to renew the VPS service with the Osaka data centre3, set up a newer infrastructure, and move everything over as a single package.

This is the plan, anyways. And with everyone on the same version on the same server, there will be a singular place to read updates rather than the plurality of timelines that has existed for the last eight months.

To the people who use 10Centuries on a semi-regular basis, I am very sorry for the downtime and hassle that will come from changing DNS records, workflow processes, source code, and preferences. One thing is for certain, though: once the migration is complete (along with a little more documentation and coding), people will prefer what v5 has to offer.


  1. Five nines generally means a service is accessible and usable 99.999% of the year, which means the system must be down for less than 315.6 seconds per year. My servers can generally shutdown and reboot in 23 seconds when everything is running properly, allowing for regular maintenance windows for security patches and other items to be installed.

  2. This would be weird, given that the 10Cv4 server is running in a data centre in Osaka with an IP that hasn't changed in years.

  3. 10Cv4 used a 2G VPS with 50GB of SSD for the web server and a 4G VPS with 100GB SSD for the database server.

Moving Closer Towards IndieWeb and Micro.blog

Over the last few days I've invested some extra time into getting 10Centuries and micro.blog on some rudimentary speaking terms. After quite a bit of guess and test plus a little bit of information from @manton, it's now completely feasible to have posts go from 10C to micro.blog … with just a little bit of configuration.

Cross-posting does not happen with every post, as it does not make logical sense to do so. A conversation on one network does not always translate to another, so replies will not be sent from 10C to micro.blog. In addition to this, the auto-generated "New Post" posts that announce when a new article is published to a blog will not be sent over. In the future these will be customisable decisions but, for the time being, they're global. In addition to this, posts published on micro.blog will not be read into 10C … yet. This is a preliminary step towards the next version of my platform, which will be based on IndieWeb principles, play nicely with other tools, and be available for download to people who wish to host their own content.

How to Set Up Cross-Posting to micro.blog

Setting up cross-posting to micro.blog can be done in as little as 3-steps:

  1. Open the Account page on micro blog
  2. Click the "Edit Feeds & Cross Posting" button (or click the link here)
  3. Add your 10C-powered website, with /socials added at the end

micro blog Account Page

This Might Interest You

When social posts are sent to micro.blog with a link to a URL different from the website address in your account profile, the link to that post will be added to the end of everything sent to micro.blog.

No Thanks

If you don't want to see this, you'll need to set your 10C website in the account profile. The rest will take care of itself.

This Might Also Be Of Interest

Would you like to have a "verified" checkmark next to your website on micro.blog? No problem. On your 10Centuries profile page, add your micro.blog username to the appropriate spot and press "Save". Then go back to micro.blog and save the profile again. This will force the service to check your 10C site, looking for the rel="me" link that was added to your blog after saving your profile.

Not The Easiest Process In The World

This is not at all an easy thing for most people, but I hope the process is understandable. As I get more feedback, I fully plan on simplifying this process even more. By the time 10Cv5 is available for download, I'm hoping it's down to just 2 steps1 or less.

One of my many goals for this year is to drastically improve 10Centuries and make it available for people as part of the IndieWeb community. By making these tools easier to use, I hope to lower the barrier to entry that keeps a lot of good people from trying to take control of their online identity.


  1. I could get it down to two steps by asking for the micro.blog app token, then having the 10C API coordinate with the micro.blog API and get things configured … but another day

A Missing Piece

Something has been bothering me with the structure of the 10Centuries data model recently and I've been unable to identify exactly what the problem was until I was on the train home from work yesterday when, in a flash of insight, things became clear. The underlying problem stems from a core limitation in 10Centuries with regards to accounts and how they're used in the content publishing mechanism: every account is treated as an identity, and every identity is essentially an account. If a person wants to publish posts on one website as "Tom" and on another website as "Jerry", they can easily use the same account. The problem is that when someone looks at the blog post via the RESTful API, they'll see that Tom and Jerry are both the same account but with a different author name.

This is silly, and it's something I've also blindly dealt with over the years writing the occasional post under an alias on various sites all the while using this very account. To make the matter even more blindingly obvious, publishing a social post alongside a blog post or podcast would come from the origin account, not an alias. So what exactly was the point of allowing aliases in the first place?

But this line of thinking is how the missing piece fell into place …

Missing Piece.jpg

What 10Centuries could really use are "personas". A single account could have many personas, but a persona would belong to only one account. This would allow a person to have what appears to be multiple accounts on here that are all available through a single sign-in. But then comes the obvious question: why would anybody want to do this?

With the dwindling activity on 10C — across all functions, not just social — I've been looking at ways to potentially resolve the "dead timeline" problem that people can face when they look at one of the social apps or sites. A lot of people have micro.blog accounts, and that project appears to be "open" enough that it's possible to build the necessary interfaces to play nicely with the network. Making 10C an "easy" way for people to use their micro.blog account seems like a natural fit. People would see posts from that network in their timeline, and they'd also see locally-created posts as well. The system would be smart enough to know where to send the response, posts too long for a single 280-character object on micro.blog could be presented as a partial with a link back to the full message in a proper stream view on a person's personal 10C site. Of course, people who do not wish to use micro.blog wouldn't have to. They could continue to use the system however they choose and everything would continue to work as expected. As working with micro.blog would require the full adoption of microformats, 10C sites would also — finally — adapt to play nice in the IndieWeb space.

Why the multiple personas, though? Separation of identities, really. Not everyone may want their micro.blog account tied to their main 10C account, and not everyone would have just one account to link to. It makes sense to allow multiples for personal, professional, creative, and silly accounts to exist all within one account, while appearing as multiple personas with varying degrees of data visibility via the API.

This is more or less a logical progression so far … right? I certainly hope so.

But wait. IndieWeb is an alternative to the "corporate web" and its silos. While 10C is most certainly not a corporate entity, it is still very much a silo. So this means in order to make this idea ideologically complete, I need to share the source code for 10C with the world.

Okay. I can do that. Version 5 is still very much slated to be the 100% open version of 10C that anyone and everyone can download, install, use — and abuse — to their heart's content, ideally finding issues and contributing back to the community whenever possible. This just means that Version 5 needs to have files to share.

Another Ambitious Goal?

As I explained recently, the last little bit at the day job has been an absolute slog. I'm not excited to go to work and solve problems there anymore. I'm dreading the inbox with every glance at the little mail icon. I'm just not much into the corporate tools right now. What I'd like to do is focus a bit on making something that I can be proud of, even for a little while. A basic version of 10C v5 might just pull me out of the doldrums and get the brain firing on an extra cylinder or two.

But this means I need to put a bit more thought into the data model and how everything will be structured. With 10Cv4 I started playing with the idea of "channels" and how every object was a self-contained entity that resided in a channel that could be accessed via a site or a pipe. While this model did solve some interesting problems, there's still room for improvement. The same can be said about the account structures, which still use the terrible term user and will be changed as soon as is feasible. It's already been decided that accounts can have personas, and accounts can own channels and be granted permissions to them. But what else can be improved about accounts and the model? Are the ToDo and Notes entities as effective as they could be? How about the Photo entities? There is a lot to think about, but not all at once.

What I'm going to aim to do is release a proof-of-concept of a Version 5 implementation in the coming weeks. It will not be too ambitious at first, instead being a simple little tool that will contain an API, a web presentation layer, files, and the start of a self-hosted platform with a few ideas I've been toying around with for 10Cv4 that would probably make more sense to ship with a more modern API. If the project is something people see potential in, then maybe there will be a few people contributing to the project and building something much better than a single person could hope to accomplish. I won't hold my hopes out, though.

There's a lot that I still don't understand about microformats and the IndieWeb project, and there are things in both projects that break my brain as I try to parse the logic behind decisions without knowing the context. That said, it's one of the few ways forward for people who truly care about owning their data and for the 10Centuries platform that I've invested so much time and effort into building.

Let's see if this concept of personas is the missing piece that will make 10C a little more interesting.

Renaming and Rejuvenating

Over the last few years the name of the software powering the 10Centuries service was, for lack of a better name, 10Centuries. While this works fine for services that operate in isolation, it can make for a bit of confusion when talking about something. The next version of the software will be doing something I've wanted to offer for years with 10C and allowing people to host their own instance of the service. In order to keep things simple, I've decided to rename the software starting with the next version simply to v5.

For people who have been using or watching the development of the current site, the first question will undoubtedly be something like "what about all the half-written features in the existing software?" A valid question, too. I plan on completing a few more items for the current platform before putting more attention into v5. Photos and ToDos have some more updates coming, as does the long overdue Comments API, which is functional but has not yet been implemented across the various site themes. With these three key areas complete, it will then become possible to focus on the next version of the software while also seeing whether the newer updates are remotely popular.

One difference with how v5 will be developed compared to other projects I've worked on involves documentation. This is an area that I've been historically weak at, often writing a few pages only after being rightfully pestered by people who are showing an interest in the system. With v5 I plan on writing and updating the documentation with each and every commit. This will hopefully keep everything better aligned and up to date. More than this, the documentation will be part of the software package. This will make it possible for people to read about the tool while offline. A small thing, perhaps, but completely doable given the files will all be plaintext with standard Markdown formatting.

What's Going In v5?

v5 will have a number of features that I've not seen anywhere else. People will naturally be able to publish blog posts, podcasts, social streams, and other basic things that many publishing tools can already do, but it will also allow for automatic backups across servers. This can be to other servers that a person operates, servers operated by people they trust, or to the main 10Centuries service itself. By doing this, a person can safeguard their data from being lost forever if a server goes offline. The feature will be an opt-in service, of course, and encryption will be used at every level to ensure only authorized access to the data.

This distribution mechanism is also how the social feeds will be managed. Rather than have a social client that subscribes to different feeds like an RSS mechanism, the posts will be read into the same server pools, and distributed this way. People will still have the option to selectively subscribe to accounts on different services, of course. The pool would simply allow for a global timeline to exist.

Some other nice features that will go into v5 include:

  • IndieWeb support out of the box
  • JSONFeed support out of the box
  • Archive.org support out of the box
  • Podcast download stats
  • Simpler website templates
  • Bi-directional sync with other social networks
  • and quite a bit more

Why?

Why not? I've looked around at a number of the open options for a lot of the core and bonus features I'd like to see in a package like v5 and found some great work hidden behind incredibly complex configurations. v5 is going to me my attempt to simplify this stuff as much as possible. Software is still too complicated in 2017. I think we can do better.

Development of v5 will happen in the open via GitHub, and people are encouraged to participate if they choose. While it will be impossible to appease everybody, it shouldn't be improbably to satisfy many.

What (Real) Problem Am I Trying to Solve?

Over the last year or so, I've invested a good amount of time into learning about blockchain, JSON, encryption, and a myriad of other tools that could be used in the next big version of 10C. After a great deal of research, I've come to the conclusion that blockchain is not what I'm looking for as a means of message validation and will instead fall back on other methods that employ technologies that are much easier to explain and verify. In addition to this, I've been looking at a number of other projects that are quite active across the web such as IndieWeb and JSON Feed1 to make the next version of the platform something people might actually want to use themselves. Yet, despite the effort going into the research and pre-development, a lingering question remains: what real problem am I trying to solve here?

There are already a number of open-source blogging tools that are admittedly much better in terms of UI and web standards than 10C. Why am I not simply using one of these as part of the larger goal? The same is said for social networking, photo sharing, notes, todos, and just about everything else I've been slowly building into the 10Centuries platform. What could possibly make anything I make better than setting up a NextCloud instance with a bunch of plugins to fill in the gaps?

It's a problem I struggle with because, while I am very much interested in helping people keep the words and images they want to share with the world online for a millennia, do I need to do it with a software platform that I build rather than one assembled from various open projects around the web? What could possibly make 10C better than WordPress with a myriad of plugins? Despite what people might want from the 10C platform, it is a silo. Even in v5, which involves a globally distributed system of servers operated by anybody who might want to participate, the system is a silo. A silo that anybody could operate, but a silo nonetheless.

Is this what people actually want? Would I be better off investing my time contributing to open projects that already have large, vibrant communities and encouraging adoption of ideas rather than of software?

One of the reasons these thoughts have been rolling around in my head is because I'm downright exhausted, and any amount of free time I might have enjoyed in the past is all but gone as a result of expectations elsewhere. This tiny blog post right here required 8 separate attempts across three devices and 30 hours to complete. This right here. Which is the length of something I used to bang out on an iPod Touch with Evernote while on the train to work. Despite all of my best efforts I just feel as though I'm letting people down as a result of diverted attention, and I really dislike letting people down.

So what is the real problem I am trying to solve with future versions of the 10C platform? Automatic distribution of encrypted content across servers to act as a backup for friends/family when systems go down? Self-hosted community creation on minimal hardware? An API-driven system that is open enough for people to easily create their own tools that interact with the system? Yes on all counts. But does it need to be something that I've written top to bottom? Is absolute control over the software stack really that important to me? Is it important to others? This is the question I need to answer ….


  1. this one will make its appearance in the existing version of 10C quite soon

Tailwinds

Yesterday I wrote about how I haven't been doing too well psychologically over the last little bit as a result of being pulled in a number of directions for too long and not being able to focus on the things that I consider to be more important in life. Interestingly enough, an episode of the Freakonomics podcast talking about the perception of life's problems1 appeared on my phone a few hours after I published the blog post. The title was "Why Is My Life So Hard?" and, while I don't believe my life is particularly hard given the amount of egregious inequality in the world, the show was asking the right question at the right time. For me, I just want to create truly wonderful tools, raise a family, and enjoy some time with my dog. On the surface, these are not difficult or impossible goals.

One of the great things about listening to smart people talk about the human mind is that they ask some really good questions. This is one that got me thinking quite a bit:

Most of us feel we face more headwinds and obstacles than everyone else — which breeds resentment. We also undervalue the tailwinds that help us — which leaves us ungrateful and unhappy. How can we avoid this trap?

This describes how I feel about 10Centuries when I see other, younger networks that I perceive to have zero value pop up, earn millions in funding, and receive far more press coverage than one can shake a stick at. Does anyone remember Yo? Here's a snippet of its history, lifted from Wikipedia:

Yo was created by Israeli developer Or Arbel in eight hours, being launched on April Fools Day 2014 for Android and iOS. Originally chief technology officer of stock trading platform Stox, Arbel quit his job and has since begun working on the app full-time. The app has received USD$1 million in investment from a group of investors led by Moshe Hogeg, CEO of Mobli, who had originally asked Arbel to design a single-button app to call his assistant. […] The app was valued at between $5 and $10 million in July 2014 and received a further $1.5 million in funding. Website IFTTT included Yo as an option for their service in July 2014.

Success stories like this frustrate me, because 10Centuries does a whole heck of a lot more than Yo, and it's not an April Fool's joke. Where are the investor inquiries into this service? Where is the press coverage? Where is the rapid growth that would put my auto-scaling mechanisms to the test? While I've often said — quite honestly — that having millions in the bank would ruin me, I would not be averse to some form of investment, given the right conditions, in order to bring in talented people who could help make the platform better for everyone.

Sour grapes, right? I agree. Because there's a lot of really good stuff happening with 10Centuries, too. The dozens of people who do find value in the project. The 2-million page views per week that are served across every public-facing site. The fact that the darn project is actually starting to break even and turn a small profit after years of hard work and serious financial investment on my part. Then there's the personal satisfaction I get from seeing the whole thing running and people making use of the service.

Are the headwinds — the challenges — facing the 10C project really getting in the way of the system's success? No. For every problem there is a solution. If I'm serious about keeping the system going for ten centuries, then I should play the long game and focus on incremental updates that continually make the system better. There's no need to rush. There's no need to compare my offerings with those of similar competing services, aside from rationally examining what other systems do better (or worse) and using those lessons to inform future decisions.

When I take a step back, breathe, and think about the things that are really bugging me, I can see that the tailwinds are far stronger than the headwinds. There are always occasional gusts that can knock a person off kilter for a while but, like most other weather patterns, they're just temporary distractions.


  1. Warning: Annoying, full-page, attention stealing advertisement will immediately get in your face.

Ownership vs. Ownership

There is a growing movement online that has the wonderfully optimistic slogan "Own Your Content". This is a concept that I fully agree with, though I will admit to being incredibly confused for quite some time by the meaning of the first word in the sentence. What does it mean to "own" your content, and can the people who encourage others to take back control honestly say that they own the digital information they share online?

To the best of my understanding, "Own Your Content" is a movement by people who do not wish to keep their data in silos around the Internet. People have recorded well over a decade of events into Facebook, yet that data is not portable enough to be extracted for your own archives. Same with Twitter, Medium, and the vast majority of places where people congregate online to share words, pictures, and audio. If any of these services were to disappear, like App.Net or PicPlz, then vast swaths of a person's online history could disappear. More than this, a number of the big services that encourage us to share information through their networks earn money through our participation. We are essentially using our free time to create content for other people to profit on, while (arguably) seeing very little in return. We are not the customer, but the product to be sold.

It's easy to see why some people are opposed to this and combating the commoditization of their time, creativity, and identity with software and systems that they have more control over. Rather than blog with Medium, one can set up a site of their own on Amazon, Digital Ocean, or other vendors. Rather than rely solely on Twitter or Facebook, people can use that same site to distribute their messages. Often times this means "cross-posting" the information stored on their virtual server to the silos they've worked so hard to escape. For many people, this is content ownership.

I disagree. While this is a step in the right direction, having our words on a hosted WordPress installation is content management and little more.

If a person truly wants to own their content, they cannot rely on Amazon, RackSpace, Linode, or any other corporate provider to host their information. Otherwise they are just trusting another party to not take advantage of them or interfere with the distribution of the data. To own content, one must own the hardware and have it on-premisis1. This way, if a vendor decides they no longer wish to host your content or if a government entity decides to swoop in and take the out of the data centre, you still have the content.

But how many people can actually do this? How many people would even want to try to have a server at home as well as one that's openly accessible to the public and broadcasting content to Facebook, Twitter, and other services? Despite the marked improvements in server management and software installation, there is still a rather large learning curve people need to overcome. We need something simpler …

Which brings me to something I've been thinking about for roughly two years.

Ubuntu@Home

Over the last few years I've become quite acquainted with the ins and outs of Ubuntu, and I've seen a lot of what it can do when given the right hardware. This is where the idea of owning one's content becomes real, because there's no reason why a person could not have a tiny, pre-built computer at home running Ubuntu which then synchronizes with a machine that is open on the web. Ubuntu, despite all its strengths, is still very much Linux. This means that the software that the home computer ships with would need to be pre-installed and painfully simple to use and update. The standard LAMP2 stack cannot apply. Instead, something new would need to be used: Snaps.

A Snap is a universal Linux package that works on (just about) any distribution or device. Snaps are faster to install, easier to create, safer to run, and they update automatically and transactionally so the software is always fresh and never broken. What this means for a normal person is that a tiny computer the size of a Starbucks coffee could be shipped to them and run on their home network. This would then interface with another server they have running in "the cloud". Rather than SSH into a Linux machine and install a bunch of disparate software packages, fiddle with configuration settings, and rage at Apache misconfigurations, a person would instead type something like the following into the public web server:

sudo snap install 10centuries

From there the package would be downloaded from a trusted source and started. People would see a message like 10Centuries Node started. Visit http://{server_ip_address} to configure the server. and then be off to the races. The public node would synchronize with the private node in their home and, should a person decide they want to change VPS providers for whatever reason, they could do so and simply reinstall a snap then re-sync the node. More than this, people could connect their nodes to those run by friends and family in order to share encrypted backups so that, if a server did disappear from the web, the data would not be lost. The nodes would also be configured to communicate with each other when social interactions are taking place. This would, for all intents and purposes, create a mesh network where no single point of failure could take a person offline indefinitely.

This has been the long-term vision for 10Centuries, but the software just hasn't been there for the average person. The open projects I've worked on or lead in the past have all suffered from a staggeringly high learning curve, and it's resulted in many people giving up in frustration. We've got to do better, and Snaps appear to be the way forward. I've been doing a bunch of testing with packages, deployments, and node synchronization over the last few months. A shippable product is still quite a ways away, but it's not at all an impossible project. More than this, there's a possible revenue stream available in mini-server sales that would make the project financially tenable for a small group of people.

Imagine buying a small home server for $50 and having it synchronize automatically with a web server running the blogging and social services that you operate. Apps would be written that would interact with your servers rather than commercially-backed systems. If you're at home, you'd interact with the local machine reducing latency. If you're at the coffee shop or in a plane, the apps would use the public server. In every case, your data is synchronized and distributed just the way you want, all through a mesh network that can be configured to be more resilient to failure.

I've long considered the idea of content ownership implausible until the tools became simple enough for everyone to have their data safely stored in their own house. This idea makes it just a little more realistic.


  1. or be very, very strict with regards to data backups and automated collection and storage of that information

  2. Linux + Apache + MySQL + PHP

Battling Self-Perceptions

The human experience is an interesting one in that if we're not being attacked by forces outside, we're being attacked by forces inside. A common theme seems to be working its way through some of the blogs I read where the authors, experts in their fields, are struggling with topics for upcoming talks. They're worried that the subjects they plan on covering are uninteresting or that the audience will know more about the subject than they will. They're concerned that the skills they've actively developed over the last few years are already morbidly out of date. They wonder if it's better to dedicate more time to learning about this, that, and the other thing rather than try to teach. The vast majority of their readers will send notes of encouragement in an attempt to help the reader get out of the mental schlump but, reading about very smart people struggling with their self-doubt leaves me wondering just how little I know about anything.

I read their sites to learn things. If they don't feel they have anything of value to contribute, just how far down the chain am I?

Impostor Syndrome

This is something I've been thinking about quite a bit over the last few weeks as I looked at the 2016 numbers for my 10Centuries project. By all accounts, one could say that this is the start of a successful project. Almost 80,000 posts were written to it in the first year, with more than 50% of accounts seeing some sort of activity on a regular basis. The project cost a lot more than was budgeted, but it did manage to earn just a bit more than the budgeted amount meaning that — theoretically — the project could have been self-sufficient in the first year. Bugs are squashed regularly and new features are released and generally used right away. All very positive things.

And yet … I can't help but feel the project is being held back because it's me running the show. Over 95% of the code that runs 10Centuries was written by me, and the servers are running on a custom build of Ubuntu that I optimized given some of the limitations and traits of Amazon's EC2 infrastructure. There's too much of me in the project and not enough of other people, which is limiting growth or even a passing interest in using the ad-free, fun-filled platform. I look at all the tickets in GitHub staring at me, some over a year old, and wonder just why I'm re-inventing the wheel when I could have followed other people's lead and simply built on top of WordPress or some other open software package.

I know the answer to the question, of course. But this doesn't help dissuade the inner voices that laugh in my general direction like the French Guards in Monty Python's Quest for the Holy Grail. When the self-defeating thoughts stick around long enough, I wonder if I'm good at anything at all.

Silly, right?

One Year of v4

Happy 2017!

One year ago today the very first post on 10Centuries v4 was made. Quite a lot of code has changed since that early post, and a great deal of information has been added to the system since. I just hope that 2017 continues to see positive growth, positive improvements, and positive gains in functionality.

Enjoy the first day of the year, and remember to not drink and drive. There have already been a lot of wonderful people who have left the world in the last few weeks. We needn't see more taken before their time.

P.S. ⇢ I wrote a short post going over the numbers for 10Centuries this past year. Do take a look if you're interested. This is part of my commitment to keep the platform's operations transparent and accessible.

1% Complete

Today marks the tenth year I've been blogging with a self-hosted solution1, and this usually means that a person will look back over their posts to compare and contrast what was then versus what is now. I won't really do that aside from saying this personal project has come a long way since 2006, when it was running on a modified Synology DS-106j NAS that could just barely handle WordPress. Instead I plan on using this opportunity to look forward towards some of the goals I have for my writing, as well as the publishing tool that, quite literally, powers every web service I've worked on in the last eighteen months2.

The Notebook — Where Ideas Come to Life

Long-Form Writing

One of my goals for the near future is to return to some long-form writing. This was something I enjoyed doing for TheCarbonBlog, back when I was trying to encourage people to look at the various pros and cons of certain technologies such as fracking, carbon sequestration, and whatnot. The articles I wrote for that site in 2008 and 2009 often failed to reach their target audience because I was writing for the wrong people. Rather than attract readers who wanted to know more about the technologies, the site was inundated with activsts who meant well but were already mostly aware of the subject. Since then I've come to write longer pieces for various news sites around the web on topics such as distance education and how technology fails teachers, but I'd really like to build a larger audience here on this site with what I hope will be well-written pieces on the subject of positive growth. Yesterday I wrote a short article on how China could be smartly positioning themselves in space as a colony's one-stop resource shop, and I'd like to write similar stories that focus on the direction humanity may travel … so long as all the pieces align. Despite the craziness that we see in the news every day, I maintain a positive outlook that we will overcome our problems to tackle the grander ones in the coming generations.

Longer articles tend to take more time to write, though, so I don't want to limit myself to only long-form writing. Instead I'll set a goal to publish two articles a month, on the 1st and 15th, to start. If there is interest, then I will slowly increase the number of articles. There are no plans to put these behind a paywall, though. My writing isn't that good.

Growing 10Centuries

With this being my blog's 10th anniversary, one could argue that 10Centuries is 1% into its goal to be online for a thousand years. Unfortunately, 10C is just 5 years old, so this number is a little optimistic. That said, the project that is near and dear to my heart is seeing some interesting feature expansion in the near future that should make for an interesting service for people who are tired of being treated as a product rather than as a person.

A preliminary version of the ToDo lists have been out for a little more than a month now and soon we'll see the release of Notes, the first step towards an Evernote replacement that will allow a person to keep everything in a single location. In August I started tackling the concept of Notes as unstructured groups of structured data and this has allowed me to approach the problem in a way different from many note-taking tools. A lot of solutions will look at a note as a text file, but it's really nothing of the sort. A blog post is a text file. A transcript is a text file. A note, however, is not nearly so elegant, and people needn't be confined into thinking of notes as rigid objects. 10C will let people do things a little differently.

Another feature I'm hoping to roll out before the new year is Photos. Pardon the boring product names, but it's really for the better. Coming up with snazzy names is a senseless waste of mental processing power, just like searching for the perfect URL. I'd much rather invest the time into building the product than naming it. While the code might have various coffee-related code names, the actual product is very simply named. This also gets around the problem of trademarks, as you can't claim to own a plural that has been part of the language longer than anybody on this planet has been alive.

So by the start of — or early into — 2017 10Centuries will have:

  • Blogging
  • Social
  • Podcasting
  • ToDo
  • Notes
  • Photos

Also, come February or March, I expect to have saved enough to afford the services of a local web developer who has kindly offered to help out with a new interface for the account administration pages. Fully responsive and much more aligned with how people actually use web applications, the new UI should make it much easier for people to use all of the service's features from their browser. To make the system even better, a number of people are currently working on building native applications for a number of platforms that will give others the ability to use the 10Centuries platform in a more natural, more nuanced fashion.

It's an exciting time, to say the least.


  1. I did have a Live Blog, or whatever it was Microsoft called their service around 2004, but it was a terrible site full of poorly-written posts that had no place online. Mushy stuff with lots of pictures of my ex and I doing things around Vancouver. Nobody needs to read about that :P

  2. One of the reasons 10Centuries has been developed so quickly is because I have two other forms of the same code base that are actively developed for other purposes. One is a Learning Management System, and the other is a hyper-local music distribution service. Improvements to the underlying system elsewhere eventually makes it to the other projects so that everybody can benefit.