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.

Unproductive

The last seven days have been pretty rough for reasons that partially elude me. The "Demons of Self-Doubt" have been incredibly loud, but this is nothing new. Stresses at the day job have reached new highs for what is actually a very silly reason that I take way too seriously. A lack of "walking with the puppy" time is also bothering me. In isolation these are all tiny issues, yet they seem to be bothering me a lot more recently than usual. To add insult to injury, I'm seeing a much smaller amount of traffic on 10C-powered sites and services, which means people are moving to better systems that are actively supported and better align with certain goals and expectations. I'm in yet another burn-out-induced slump.

The Slump

With me — and many others I'm sure — slumps often lead to a slight depression that can extend for weeks. This certainly seems to be the case as of late given my state of mind and recent thought patterns. What makes no sense is the lack of a concrete reason for this particular mental state. Life is generally really, really positive right now, and is vastly superior to what it was in 1998 when I slipped into a six year depression and self-imposed isolation period as a result of "stuff". What is there to be negative about?

Unfortunately, being a human is hard. We can be handed the world on a platter and wind up disappointed because there wasn't any pepper to go with our side of fries. When I hit ruts like this I try to spend more time with Nozomi as she's one of the only souls who can bring a smile to my face regardless the situation. She's helped me get through a lot just by being her consistent, non-judgemental self. She has the patience of Job and a heart of solid gold. Unfortunately, I cannot bring my dog to work, so Nozomi spends her days at home.

Maybe I should just start working from home more often? Productivity drops through the floor when I do, but Nozomi is generally right there. More than this, I'd be more readily available for the boy when he needs a bit of extra attention or a different parent to keep things generally calm. In time we could all work out a mostly-agreeable working schedule that would allow productivity to remain high enough that the day job is happy. But would this be enough?

One of the many things that I really dislike about these slumps is the indecisiveness that comes along with it. It's hard to focus. It's hard to make a decision. It's hard to accomplish anything.

January 2018 Review

The second month of personal goal-setting has come to a close, so that means it's time to look back and see whether I've succeeded or failed to meet the relatively simple expectations that were set about 31 days ago.

A ToDo List

Under the optimistic heading of creativity & hobbies I stated that I wanted to write 10 blog posts, publish an episode of DDM every day of the month, and read 1 technical book and 1 fiction novel. Unfortunately, I managed to publish only 7 blog posts on this site. Everything else on the list was attacked with vigour and enjoyed. Heck, for the technical books, I didn't read just one, but two and am midway through a third. On the fiction side, I read David Mack's Fortune of War1 and am looking for something slightly different to read in the coming month.

For family I wanted to spend 4 days this month "computer free" and bake something new. Oddly enough I was able to take 5 days away from the computer during January, and even managed to bake a pumpernickel bread on the 7th, which I had forgotten about when recording today's episode of Doubtfully Daily Matigo. Time flies ....

At work I aimed to complete the core 4.2 updates and prepare the 4.3 "Portal" demo to knock some socks off in Tokyo on the 16th. Socks were knocked off, though my concept for the portal was not chosen. Version 4.2 of the LMS is still in development for a number of reasons but, with luck, it'll be done quite soon.

So there we go. Not exactly a perfect month, but better than I had initially expected. February will be a bit more modest, I think.

Creativity & Hobbies

  • write 10 blog posts ⇠ for realz!
  • continue to publish an episode of DDM every day this month
  • read 1 technical book and 1 non-Star Trek novel
  • complete the UI design of the 10C Podcasting app

Family

  • spend 4 days "computer free"
  • continue packing away more of the house in preparation for April's move
  • read an English-language book to the boy on weekends before bed2
  • bring Nozomi to the big park one last time before the move

Work

  • get the visa and other requisite documentation ready for a trip to the US mid-March
  • get Version 4.2 of the LMS out the darn door
  • begin putting together a series of training sessions to be delivered in the US

Hopefully February will be just as decent as January, if not more so. The goals here are not impossible, though they do require time to be properly allocated and protected.


  1. a Star Trek: Titan book
  2. he currently gets a lot of Japanese books read to him, since that what we have more of. That said, we do have a number of English books I'm sure he enjoys, too.

Supporting A Static Web

A number of bad actors on the web are taking advantage of the ease advertisers have in injecting JavaScript into websites, forcing visiting computers into mining various cryptocurrencies while the people operating those machines are unaware of the activities. The method behind this madness is rather slick, as the cost of using Google's DoubleClick ad distribution service is much lower than the amount of revenue generated from the hundreds to thousands of computers crunching the numbers necessary to create the blockchain-based wealth. And, while this activity is not illegal as far as I am aware, it's very scummy and reeks of criminal intent. So much so, that some security companies have started repeating their suggestion that people disable JavaScript in their browsers — an action that would make as much sense to some people as rotunding the rig diggler would to most readers of this article.

JavaScript is far from perfect, but it's certainly enabled a world of possibilities with its relative simplicity and wide acceptance. Just about any browser developed in the last 15 years supports it out of the box, and just about anyone with the intent can sit down and learn the basics in an afternoon. It's through the use of JavaScript that that a lot of people are introduced to programming, and it's through the use of JavaScript that a lot of websites can do interesting things. For all the problems disabling JavaScript in our browsers might solve, a slew of new ones would pop up. But maybe this is what's required for the web going forward. There are too many developers doing stupid things without explicit permission on our computers via the ridiculously optimistic JavaScript engines that reside in all of our browsers. Disable JavaScript and all of a sudden a lot of ads will disappear. A lot of complex tracking will become impossible. Our computers will not be coerced into mining cryptocurrencies, revealing potentially sensitive information via CPU bugs, or performing other less-than-ideal tasks without our knowledge.

But this will break a lot of the websites we frequent.

Should browsers leave JavaScript disabled by default, leaving people to enable it on a site-by-site basis? Perhaps. This likely wouldn't solve the issues, though, as most people are simply unaware of the dangers inherent in using the web and would prefer to leave things on by default. That said, I plan on making a more concerted effort in ensuring sites I develop going forward can be operated without the use of JavaScript.

A lot can be done with simple HTML and CSS as it is, and many of the themes used by 10C do not rely on excessive amounts of JavaScript for things beyond listing and filtering archives, comments, and fancy menu actions. All of these should also be made to work without JavaScript, and I'll do this going forward. The trick will be with the Administration themes, as these are often written as rich applications that interact quite often with the 10C API. These admin panels may be the only exception to the rule for now, but it'll be important to try and make many of the functions a little more HTML4 compliant to satisfy the needs of people who do opt to use their browsers with JavaScript disabled by default.

Sometimes I Just Want to ...

My inbox is full of questions from people who should know the answers before they even hit send, and it makes me wonder whether I should respond to the queries at all. What value do I provide when the same 5 people ask the same 10 questions day after day after day? What could possibly change so drastically in the software they trained me to use less than one year ago to result in people who seemingly, in the not-too-distant past, had all the answers to send messages that deteriorate the confidence I once had in their ability to understand our systems? I do not know.

As priorities, projects, and people's expectations of me stack up, new waves of confusion and confoundedness wash up in unexpected places to interfere with irrational schedules and illogical deadlines. I'm asked to answer questions about things that are outside my scope and responsibility "ASAP", as though none of the twenty other items on the day's priority list are actually priorities. It's weird.

Lately people are bypassing "the process" within the company and sending messages directly to me, trying to get answers for things that others either do not know or do not wish to know. While it's nice to feel wanted and to have people think I have the answers they seek, it's also a sign that maybe people at all levels of the company could do with a little follow-up training and support to help remind them of how things work, and why they work the way they do ... be it logical or otherwise. This will never happen, though. Managers do not like to think they're in need of this kind of support, and middle-management hates it even more.

Sometimes I just want to ditch email, as very few messages are ever positive. Rarely will a person write to say "Here's this awesome thing I found that you might like!". Instead it's people who want something ... or companies that want something ... or spam connoisseurs who want something.

Do we even need email anymore? Doing away with it would instantly drop the stress levels of millions around the world. It would also get rid of those annoying four and five-digit notification counters on people's phones. People who, admittedly and unashamedly, never read their email. This certainly sounds like a win-win.

It won't happen, though. Email, for better or worse, is here to stay. Even if I remove the work account from my mail clients. And sometimes I just want to ...

Books I'm Reading (or About to Read)

Since leaving the classroom and returning to the world of software development, I've tried to spend at least an hour a day reading about the changes that have taken place in technology since 2010. In July I started to dedicate my in-bed-before-sleep time to this task, and it's resulted in a lot of books being read and a bunch of new skills being acquired or refined. While it's impossible for any one person to know everything about a given subject, it should not be impossible for one person to know a healthy amount about a number of different subjects. This has certainly been the case with me while I learn more about data modelling, database design, and data warehousing. In fact, looking back at the technical books I've read in the last six months, it's easy to see that the vast majority are all related to databases in one way or another, and the four I have dedicated for January, February, and March are all on SQL Server.

I think I may have a little bit of a database fetish.

SQL Server Books

Last week I finished Stacia Varga's Developing SQL Data Models exam reference and I'm currently going through Victor Isakov's Administering a SQL Database Infrastructure reference in preparation for an upcoming Microsoft certification exam. On deck is Jose Chinchilla's Implementing a SQL Data Warehouse as data warehousing is a topic that has recently piqued my interest. Randolph's SQL Server 2017 Administration Inside Out is expected to be released by the end of next month, and I'll likely set aside some additional time to ingest the wisdom contained in the book. There's just so much to learn and explore!

A few people have asked why I read so much. They want to know specifically why I read so many technical books. When I think about it, though, the answer is not so cut and dry. Sure, I'd like to learn more about these tools so that I can make better use of the technology, but this isn't the only reason. Buried deep in the curiosity is the desire to discover what I do not yet know. As Bart Simpson so eloquently said to Mrs. Lovejoy all those years ago, "what you don't know could fill a warehouse."

It's true. We generally do not know what we do not know, and it's because of this ignorance that incomplete or inefficient decisions can be made to solve problems that other, smarter people may have resolved years before. Not a day goes by where I don't learn something new about the tools I use, and I hope this does not change anytime soon.

There's a certain excitement that comes from reading about an interesting feature or function, then trying it out and thinking about how it might be used to solve a real problem elsewhere. Back in November, I said that 10C would switch from MySQL to SQL Server just because I wanted to gain some experience with the platform on Linux. The conversion was finished mid-December, and nobody has reported any issues with the service since the switch. It was, by all accounts, one of the smoothest migrations of 10C I've ever performed. Learning more about SQL Server will (hopefully) allow me to do even more with the database going forward. More than this, I'd like to better understand how complex business problems could be solved with better use of this powerful tool.

While 10C is a personal project that I take very seriously and put a lot of care into, there is simply not enough "hard" work for me to do with the database. Businesses, however, ask a lot of tough questions. Depending on the quality of those questions, businesses may ask the question again and again in the form of reports. Being able to build the SQL queries to quickly and accurately return the answers is certainly a worthy place to use the skills I'm working so hard to acquire.

  1. 1
  2. 2
  3. ...
  4. 257