Self Help Software

Building off YANA

Nicholas Chen
7 min readAug 28, 2019

A few weeks ago, I made YANA, my personal notetaking app. You can read about it here.

There are no analytics built into the site so I have no idea how many people are using it, but in my view it’s a massive success because the target audience (me) has been using it on a daily basis. Am I kissing my own ass? A little, but it really has helped me keep track of my thoughts. Look at this screenshot of my YANA.

Holons and Daoism??

My thesis (detailed in the article I wrote about YANA, linked earlier) has been vindicated. I hypothesized that this style of notetaking would allow me to capture more of my thoughts, and indeed it has — a part of that might be me naturally being inclined towards using something I’ve made, but I do think the unique interface has facilitated that as well.

Where to go from here? Well, YANA has a planned feature list already. I’ll implement the ones I feel like doing. There are bugs, but none of them interfere with the core functionality, and the nightmare that is ContentEditable means the cost of fixing those bugs would far outweigh the benefits. For example, if the caret is in the middle of block of text and you press “enter”, it’ll put an extra newline there — annoying, but I’ve gotten used to it and it doesn’t bother me anymore. It’s like an old clunker car, kick it in the right spot and everything will work.

I want to build more projects that help me be more productive. Future spin-offs of YANA will focus around the two benefits YANA gives me.

  1. It helps me organize things
  2. It keeps me grounded

I’ll go over each of these benefits, and how future projects will extend them.

YANA organizes stuff

The entire tag system helps me organize things with minimal effort. I really like it.

In fact, I really wish something like that existed in my IDE…

The single biggest avoidable time sink I have while developing a project is just looking for stuff. Where’s this variable, where’s that array, etc. etc. Is it because everything I write is spaghetti coded? Maybe. My first React project was written entirely in a single JS file and only until my last project did I separate things into subfolders of /src (if you’re a recruiter reading this I promise you I’ve improved!)

But that’s with personal projects. At my internship, I’m working with a meticulously organized codebase, and it’s still a huge source of mental friction to find things. Furthermore, it’s not always possible to refactor all the code associated with a particular feature into one file without crazy gymnastics.

Current solutions to this problem? Comments, fuzzy search, bookmark extensions.

Comments are grey and blend right into the background, AND they’re usually just a single line. It’s pretty easy to miss comments scrolling past walls of rainbow syntax highlight. A possible solution would be to change the text color of comments and increase the font size (not sure if that’s possible at all with atom, actually…)

Fuzzy search is great for finding things in your project tree structure (especially with an unfamiliar codebase), but CTRL+Ting constantly just to find small features is annoying.

Bookmark extensions are great, I use them. Because finding things is such a pain, once you’ve scrolled to them in your giant source file you’re loathe to scroll away — dropping a bookmark on that line so you can come back is great. But there’s no way to keep track of multiple bookmarks, or sort them.

I’m sure you see where this is going — I want to build YANA’s tagging system as an extension for Atom.

By that I mean I want something functionally similar. The exact mechanics of that tagging probably can’t work the same way as YANA, because under the hood every YANA note is HTML, while IDE’s work with live source files, where you don’t have the luxury of inserting <div> elements to mark off highlights and tags. I’ll have to work within the limits of the IDE, which will probably mean using the existing highlighting they have built for git conflicts and comments themselves.

YANA keeps me grounded

Writing my thoughts down has been great. If you have a bug in your program, you scatter “console.log()” everywhere so you can see what’s going on — otherwise you don’t have much a clue. Writing things down in YANA serves the same function in my life. It’s pretty much a debugger for my life.

For example, I write a reflection on the stuff I’ve achieved every day, then tag it under “daily-reflection.” Clicking that tag later gives me a record of what I’ve achieved every day.

Still, the impacts of YANA are really just limited within a particular day. Recording my thoughts is great, but it doesn’t help me at all with scheduling things, or making long term plans. That’s why Google Calendar integration is on the feature list; eventually I want to be able to write something down, select it, then turn it into a Google Calendar event instantly.

But there’s more. If you think about it, the purpose of a planner/calendar is to help you organize yourself across time. There’s past you, present you and future you; if you’re like me, these three guys are in constant discord. They can’t agree over anything!

My shoes are nearing 2 years old; they’re practically falling off my feet. I was planning on buying shoes last Saturday — until I sat down in a coffee shop and wrote this. Present Nick thought it was going to be a short coffee break before I went to the mall. Future Nick had different plans. I finished that article in one sitting, but no shoes were bought that day.

Calendars are a way for you to force future/present/past you to agree on something. In a way, calendars are organized promises — putting an event on a calendar means you’re promising to yourself that you’ll do something at some time. So, calendars help you organize time — across spans of weeks, months and years.

But what if you need to organize time on a smaller scale?

Sometimes I’ll sit down to do something and end up doing something else entirely. I open my laptop to write an article; instead I’m working on my website. I plan on working on my website; instead I’m browsing Reddit. Very often I get distracted from a task en media res — I’m working on making a website, which means reading documentation, then suddenly I’ve fallen down a rabbit hole reading about a super cool framework (that I’ll probably never use).

Long story short, I get distracted. Here’s the thing: under the hood, trying to not be distracted is just organizing time, which is the exact thing calendars do. However, calendars are made such that they can’t organize time frames at this micro-scale. So, how do you organize time on a small scale — in other words, how do you stay focused?

What doesn’t work

The naive solution here is to block your distractions. Install one of those focus Chrome extensions, or configure your router to block Twitter/Youtube/Reddit/Facebook; whatever your poison is. A similar naive solution is using something like Forest to stop you from using your phone.

I don’t think this works. In my view, people don’t have a Phone/Twitter/Facebook, they have an information addiction. When I was a kid I’d read the cereal box while eating breakfast — now, I have infinitely scrolling feeds to read at meals. I’m a very creative time waster — block Reddit and I’ll find a way to flush time down the toilet reading tech news (sometimes on Medium!). How am I going to block Medium, when I’m writing on Medium? There’s the rub: your work tools are in the same window as your distractions.

The bottom line is, a hardline solution will not work. Software can’t force your brain to pay attention, that’s something that has to happen in your head. That doesn’t mean software can’t help, however.

Timers

As a starting attempt, I used the timer app on my phone.

Here’s what I did. Whenever I wanted to work on something, I’d start the timer. Then, I’d enforce a 0 distractions policy. Every time I opened a tab that was unrelated to the task at hand, I’d lap the timer.

It improved my concentration quite a bit! Seeing the timer grow gave positive feedback and helped me concentrate. Also, every time I instinctively opened Facebook, or clicked on a fascinating article, having to press lap on the timer reminded me that I was getting off task. It wasn’t a heavy-handed solution, like banning sites would be. Instead, it was a light reminder to get back on task.

Turns out, apps that use this approach already exist — they’re called Time Trackers. So, why not use one of them? They’re all targeted towards contractors, or teams, so they have loads of features that aren’t useful towards someone just looking to focus better.

I plan on building a time tracker that’s not much more complicated than the Timer app is, because honestly it worked pretty well.

Big Picture

  • YANA will help record thoughts.
  • Google Calendar + YANA will help me organize large chunks of time.
  • I’ll build a simple time tracking app to organize smaller work sessions.
  • I’ll make an Atom Extension to help organize my codebases.

Then later, maybe I’ll bundle them under a single project name and theme.

Hopefully, the end product will allow me to set up YANA + the time tracker app on a secondary display, to accompany me while I do my work. Something like this…

--

--

Nicholas Chen

Student; interested in Philosophy, Economics, and Computer Science, not in that order.