Understand the World

Current Efforts

September 09, 2018

I focus on three major areas now:

  • Personal knowledge assistant – saves time, attention and focus;
  • Research paper management – I read a lot, there’s far too much information to handle manually;
  • Development tooling – to build things faster :)

Personal knowledge assistant

I have a terrible memory, and there’s a lot of distracting things around. That’s why for years I keep trying to simplify, organize or even automate things.

Paper notebooks are beautiful and cozy, but you can handle only so much information without search. I had to switch to electronic notes years ago.

It all began as a bunch of text files, then a simple wiki+diary (I remember hacking TiddlyWiki at some point, but it certainly was not the first incarnation). I tried a lot of other tools (Xmind, PersonalBrain, Kumu, RememberTheMilk, Redmine, OneNote, Airtable to name a few), but all of them missed critical pieces to close the loop and go full-digital. Linking information across them was especially terrible.

The version I use right now is not very smart yet, but I have a lot of prototypes for different task workflows (like automatic planning, habit tracking, managing expenses, meetings, recurring tasks, etc.), and ideas of automating even further.

Research

A lot of my work involves research. I read a lot. Papers, books, articles, blog posts, etc.

Tools like Mendeley, Zotero, Goodreads or Google Scholar do help a lot. Airtable and OneNote are fantastic, still, as with the personal stuff - they lack integration, depth, and breadth.

They solve some of the tasks, but none of them tries to cover all bases or connect with other tools. Comments, notes, links to other papers, datasets, contacts. Often these are straightforward things - why can’t I add a short private note to a book on Goodreads or a paper on Google Scholar? They have “collections,” but if you want to note something like “I have 2 of the 3 datasets needed to reproduce results from this paper” - tough luck! Go back to your notes and search for that paper, again!

In many ways, the tasks are similar to the personal knowledge management. However, the focus is different. There’s a lot more collaboration, more data, more of the formal stuff.

So it’s a separate project, but they will be integrated indeed.

Development

This one looks trickiest to explain.

Indeed, it might look like everything is written already. That you can’t compete with thousands of person-years put into popular tools. That combined experience of their users covers all corner cases, and all bugs have been already fixed or reported at least.

But over the years I discovered there’s a lot of accidental complexity hiding both in buzzword-heavy projects like Docker, MongoDB, Django, to name a few – and in projects that have been there for ages, like YACC, GCC, and bash. And if you find yourself messing with the tool more than with the problem itself, it often pays off to look for less-known alternatives, or make your own. Even when you account for the development time.

From the career perspective, while it might look like the industry is moving fast and you must keep up with all shiny new tech to remain relevant, 90% of that stuff will fade into oblivion in just a couple of years. Instead, it’s important to a) be able to get up to speed with fashionable tech quickly, b) have the tools that suit you, not the latest popular tools.
As a bonus, you’ll understand how these tools work, and in the long run, principles end up much more valuable than the how-to guides (available on Google and StackOverflow anyway).

But why don’t A-list tools get better than everything else, given all the effort?

Popular products, by definition, have to fit a large enough market. All of these people have to understand what the tool does, and why they need it. Sadly, this naturally handicaps all concepts that require some learning effort first. Even if these ideas are wildly more convenient and efficient. For example, a functional approach to GUIs was considered too academic and impractical for years, until React was released. Suddenly every new GUI library boasts to be functional too.

Large companies and very influential leaders can overcome this gap with considerable promotion effort, but again only if they’re reasonably confident, there’s a large enough market for that.

That’s why there’s a lot of “good enough” tools out there, and you still sometimes can supplement them with tools that fit your unique needs, leveraging ideas that missed the hype train.

Some examples include:

  • actor-based systems (functional actors in particular),
  • capability-based security,
  • state-based CRDTs,
  • asynchronous distributed systems,
  • reflective and self-aware systems,
  • stuff that’s now called “serverless,”
  • self-stabilizing incentive systems (now more commonly known as “blockchain”),
  • developer-fault-tolerant systems (now popularized as Chaos Engineering by Netflix), and more.

I kept this stuff private because it’s much easier to iterate (which includes throwing out old versions) when you don’t have to support it, but it may still be interesting, so I decided to tell about it as well.


Oleksandr Nikitin

Ideas, experiments and projects by Oleksandr.
Ping me via Telegram, Twitter, or just e-mail. There's also a Telegram channel of articles I like.