Questions about note-taking are very popular on Hacker News. I am always interested in the responses. It seems like developers are always interested in the best tools and methodologies. Me too. I’ve been researching and using different approaches for decades. Over all that time, I’ve written thousands of notes, both short and long. Most notes become uninteresting after awhile and are just erased. But thousands have persisted for many years because I still refer to them.
With the recent announcement that Bitbucket is “sunsetting” Mercurial support, I’ve been looking at ways of hosting remote copies of my repositories on my own. In the short term, I have just cloned my repositories from Bitbucket onto a Raspberry Pi 4 sitting behind my home desktop. I use Pi to run a River of News aggregator for my family. It has plenty of capacity for a task like this.
Recently, I’ve been working on what I thought was a simple feature – changing the width of the sidebar in the CWiki wiki program. There were two ways the user could do it. First, they could set it manually in the “Preferences” page. Second, and more naturally in my opinion, they could use the mouse to drag the separator between the sidebar and the main article area to the location they wanted it.
Sometimes, a web client just needs to know what font it is using. The use cases may vary, but when you need it, you need it. In my own case, I have a tag editing component for my personal wiki. The component allows entry of any number of tags. It also changes the size of the input as the user types in the text, getting smaller when characters are deleted or larger when new characters are entered.
As part of a book cataloging project, I want to be able to use a webcam on a desktop or laptop to scan ISBN (International Standard Book Number) numbers from the jackets of physical books. This isn’t quite as easy as scanning barcodes with a phone or tablet because of focus, magnification, and depth of field characteristics of desktop and laptop cameras. (Or so I’m told. I really don’t know much about it yet.
I’m surprised by how often questions like this come up on HN, but I always find the responses interesting and educational. What I Want Non-negotiable items include: Low Friction: A little initial setup is ok, but just taking a note should require no more than a click or two (whether clicking a mouse or a pen). Open source. Aesthetically Pleasing: I’m tired of looking at ugly stuff. Has to handle LaTex.
Update: 2018-12-15 This post substantially updates the original. The most significant changes are that the layout now works as expected - no partial success. A few weeks ago, I wrote a post about a wiki layout for reading. I used that project to experiment with improvements to the reading view of CWiki, a personal wiki that I am writing. I used the lessons learned in the project described in that post to make some changes to CWiki.
As many of you know, I’ve been working on a personal wiki for some time now. (See the CWiki repository.) In fact, I’m using it to write this post. It’s very comfortable for me. One of the things I have been trying to get absolutely right (for me at least) is the layout. There are really only two layouts; one is for the “reading” view, the other for the “editing” view.
Writing wiki pages using Markdown is a great way to do things because it is simple, well-known, and capable. One of the annoyances of using Markdown is that it has no default syntax to create wikilinks, a type of hyperlink that links one page in a wiki to another. I’ve been working on a home-grown, personal wiki, CWiki, for almost a year now off and on. It’s written in the Clojure programming language, which is a pleasure to use.
Starting the implementation of user options (preferences) in CWiki (a personal wiki program) got me thinking about refactoring the project into a shape that is more compatible with Stuart Sierras reloaded workflow. Naturally, that led to thinking about his component architecture. Here are some more resources related to the component architecture. Stuart has a blog post about his reloaded workflow, linked above. The component code repository is on Github here.