Johnny•DecimalBlog

2021 J.D update

20th January 2021 | #meta

Programming notice

This post is going out as both an email to my subscriber list and as a post on the new blog. Exactly the same words, I’ll just copy/paste the markdown that makes the blog post in to an email. (I’m not attaching images as the email will go out as plain text.)

This is the first email – ever! – to my list. Its intention is to tell you that the blog is a thing now, and that you’ll find content there. Future posts will not be emailed. You may subscribe via RSS, and I’ll post a notice to @johnnydecimal on Twitter when a new post goes up. Or you can just leave the page open and hit refresh like a maniac. Them’s your options, take your pick.

If you’re reading this via the blog post and aren’t aware that there’s a mailing list, there is. You should sign up – you’ll get about an email a year from me and it’ll be something you don’t want to miss. The next one will almost certainly be me telling you that I’ve got some software ready for you to use. Read on for more details of that. But if you don’t want to, totally cool, email is a curse. (You’ll never miss any news if you keep up with the blog.) ✌️


On to the update…

This system is my baby and I’m disappointed that I didn’t spend more time on it last year. But hey, screw last year. This year is going to be different.

I’ve started strong, finally getting the blog up here. I had to figure out how it was going to fit in with the rest of the site, and I’m happy with how it’s turned out. (I also had to remember how to use Gatsby, which powers this site.)

My goals this year are simple:

  1. Update the content on this site much more often. That means weekly blog posts plus whatever else.
  2. Get some software written to support this thing.

I need your help with both of these, please.

Site content

What do you want to see? I already have a list of things that people have asked me for via email.

  1. Examples.
  2. More examples.
  3. Another example or two couldn’t hurt.

So that’s an easy one, and will be the focus of the first tranche of blog posts: I’ll just go back through the last ten years of this system and document as many of those that I’ve personally developed as I can remember.

What else?

Build some software

This is the biggie. A bit of background might be useful.

I was born a nerd and have worked in IT all my life but have never known any programming language well enough to call myself a coder. I can hack a script together in any number of languages, but that’s about it.

J.D is a ten-year-old idea (I’ll tell that story in the next ‘example systems’ post), and for a while it’s been obvious that I need some custom software to support it. The main thing is tracking your numbers. It might seem crazy that I really insist that it’s a thing you do, but the more I use this system the more critical I realise it is.

A good index serves as the ‘home page’ for your system. It’s the place you go when you need to feel organised, to know where your stuff is. I have a bunch of ideas around this that I haven’t documented yet – they’ll also be coming this year.

I’ve tried a bunch of things and haven’t been happy with any of them. Excel, Airtable, various other systems or databases, none of them do exactly what I want. So it’s time to write my own.

Learning JavaScript

In 2017 I decided to really knuckle down and learn JavaScript, and from that I moved on to React. That’s going reasonably well, and I’m now at the stage where I can sit down and it just ‘flows’. The satisfaction is immense. I still wouldn’t call myself a programmer by any stretch but I’m getting there. (Actually it’s now the design stuff that I need to brush up on, but I’ve done a few little hobby projects the last few weeks just to get my CSS up to scratch and I’m happy with how that’s going. Tailwind CSS is a miracle.)

So … now what?

I have to decide what this thing will look like. Initially the obvious thing seemed to be to make a table. I’ve since realised that that’s kinda boring and perhaps a little clunky.

Just for the historical record, here’s a couple of the very early attempts. It’s funny to see how far I’ve come – at the time I couldn’t believe that I’d done this.

A very basic HTML table showing some JD areas.
A very early attempt: probably early 2018?

I think I sent a photo of that one to my partner. “Look at this!”

An only slightly less rudimentary table.
Progression: later in 2018, I think

Of late, though, I don’t use anything like a table. I’ve found that the simplest, quickest, most reliable, friction-free method is one of the old favourites: plain text.

My love of plain text

Technology is amazing – I think Airtable is magnificent, for example – but sometimes simpler is better. Look at plain text vs. Microsoft Word: it’s taken something simple and made it a monstrosity. It’s just so unnecessary. It gets in the way.

There’s a reason that Markdown is so terrifically popular.

Recently, I’ve realised that the simplest, purest way of representing a J.D system is by using plain text. You should have already seen the little blue boxes that I use on this site. Just in case:

J•D
10-19 The ubiquitous 'administration'
16 Travel
16.37 Holiday to the Maldives

That’s a nice way to show an example system, but it’s also exactly how I track my own numbers. Here’s a screenshot of a recent project from Bear, which is where I keep all of my notes.

Screenshot of the Bear application showing a JD system.
Text: simple, clean, quick

So what if we built…

I think this is where I’m going to start: basically, build a custom system that looks a bit like these text boxes.

It’ll do a bit more than that, of course. The main features I want for a basic v1 product are as follows.

1: Validation

It must check that what you’ve entered is correct. For instance, this is invalid:

J•D
10-19 Your first area
21 Umm what is category 21 doing here?
31.11 Are you losing your mind, my friend?

Things need to be in the right order, categories need to belong to areas and IDs need to belong to categories. You can’t use the same ID twice. Basic sanity-checking stuff to make sure you’re not doing something silly.

2: Help me add new things

My system is a trade-off: you put in some work, you become more organised. TANSTAAFL.

This does introduce a friction when we want to create a new item – where does it go? What is its number? How do I get that in to my system?

My thing will do this for you. I’m not sure what form this will take yet but I think a simple ‘command line’ type interface will be simplest and, crucially, quickest. I think the learning curve will be worth it.

So, for example – I’ve barely thought about this so this is just throwing random ideas around – you might type:

> + 16 Next trip to see my family

Which means:

  • +add (the next available number)
  • 16to my thing numbered 16 – which in this case happens to be a category (the most likely case)
  • Next trip to see my familyis the title of the new thing to add

If our current-highest ID in 16 Travel was 16.37 Holiday to the Maldives, then this command would create 16.38 Next trip to see my family.

Ideally it will do nice (optional) things like copy that string to your clipboard. One day I’d like to hook it in to your cloud storage and it could even create a folder for you.

This assumes that you happen to know that 16 is Travel. It assumes many things. That’s my job to figure out, but that’s where I’m currently leaning.

3: Be more than just the index

I’d like this system to replace a whole bunch of other systems for me. Why would I jump out to Bear to store a note when I can do it here? Same with my to-dos, it’d be nice if they were all integrated.

I see interesting possibilities here. For example, you’re at work and you’re doing something to do with 72 Data centre cabling. You have a to-do linked to ID 72.16. While you’re there, wouldn’t it make sense to look at the other related tasks and maybe do them at the same time? You’re ‘in the zone’ already. Maybe while you’re looking at the tasks for 72.16 the system can gently remind you that you have tasks for 72.18 that you might like to do at the same time?

I’ve already started using my index as a quick note-taking system. You can see this in the screenshot above: check out my notes under 00.11, 00.02, and 02.11. I’ll write this strategy up in a post soon.

What do you think?

I’d really like to know what you think. I’d really like to know what your problems are. It’ll be great if I build a thing that helps me, but my goal is for this to become the thing that pays my bills one day so if I build a thing that only helps me, well…

And yes, that’s my long-term goal. I would love for this thing – whatever it is – to support me in the future. I’d love to give up my job and work on this full-time. Mid-way through last year I realised that I needed to spend more time on this so I generally don’t work Mondays any more. Mondays are Decimal day, and I’m squeezing in every other available hour. This needs to become a thing.

Also, if you’re interested in having a look at the very very early software that I build – not even ‘alpha’ stage, pure development stuff – let me know. I think having a few people nagging me to get more done will be helpful. And terrifying.


That’ll do. Thanks for reading, if you got this far. If you only send one email a year you might as well make it worth the bother!

j.