LinuxQuestions.org
Welcome to the most active Linux Forum on the web.
Go Back   LinuxQuestions.org > Blogs > BenCollver
User Name
Password

Notices


Rate this Entry

TiddlyWiki bookshelf

Posted 02-13-2015 at 04:02 PM by BenCollver

Back in the day, my brother introduced me to goodreads.com and it was good. The site gradually became more and more Javascript-intense until I couldn't use it from my netbook. The mobile site worked for a while, but then it too became unusable on my netbook. The injustice of it all! It was all the excuse I needed for a new programming project.

I had recently finished a book Introduction to Object-oriented Programming by Timothy Budd [1], and was eager to apply it. I wrote an object-oriented TCL script that featured 3 interfaces (CLI, CGI, and GUI) and 2 data stores (CSV and SQL). I also made a simple query language with a parser and adapter for CSV and SQL. The script was able to import and export the goodreads CSV format. I maintained this script for a few years. As much fun as it was to write, the software was over-engineered [2] and not something I wanted to show in public.

Ansible got me hooked on YAML, so I wrote a small script to convert my SQLite book database into a separate YAML file for each book. Around the same time, I wrote a file indexer and search engine on top of SQLite's full text search feature. Between ed, grep, and a web browser, my bases were covered.

Lately I have been listening to podcasts about web development and related topics. Much time is spent talking about front-end development, and I have seen some single-page applications. I needed a wiki for something at work. Clearly it was time for another programming project.

I played with DokuWiki and TiddlyWiki. TiddlyWiki's flexibility and minimalism won me over. By default, TiddlyWiki runs entirely in the web browser. TiddlyWiki is distributed as a single .html file with functionality in Javascript. When you save changes, it downloads an updated copy of itself. Wiki pages are known as tiddlers. TiddlyWiki can batch-export and batch-import the tiddlers in JSON format. TiddlyWiki has a CLI thanks to node.js, which is a boon for automation.

I wrote a small script [3] to convert the YAML book entries to a JSON file for import into TiddlyWiki. I wrote another small script [4] to convert TiddlyWiki to static HTML files, which can be indexed by Google and viewed by plain-HTML web browsers.

I am happy with the results so far [5]. Javascript enabled browsers are redirected to the TiddlyWiki content. Plain-HTML browsers view the static content.

The main drawback is speed. Due to the size of the TiddlyWiki data, it takes extra milliseconds to load. But for the most part it is snappy and easy to use.

-Ben

[1]
http://terrorpin.net/~ben/books/book...udd,%20Timothy

[2]
http://www.codesimplicity.com/post/w...erengineering/

[3]
http://terrorpin.net/~ben/books/scri...ddlersjson.tcl

[4]
http://terrorpin.net/~ben/books/scri...i-to-static.sh

[5]
http://terrorpin.net/~ben/books/
Posted in Uncategorized
Views 2460 Comments 2
« Prev     Main     Next »
Total Comments 2

Comments

  1. Old Comment
    Short follow-up: My tiddlywiki is completely unusable on my android device because of slowness. Another promising option is below.

    http://treeline.bellz.org/scrnsht.html
    Posted 03-28-2015 at 08:58 PM by BenCollver BenCollver is offline
  2. Old Comment
    These links are dead because i no longer have the terrorpin.net domain. Tiddlywiki did NOT scale well for my single-user book collection, so i no longer use it. I am still using the same YAML format and i still have the scripts if anyone wants them.
    Posted 11-08-2023 at 10:31 AM by BenCollver BenCollver is offline
 

  



All times are GMT -5. The time now is 03:40 AM.

Main Menu
Advertisement
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration