Open Source

Piggydb: A little, interesting digital assistant

Find out why Marco Fioretti thinks everybody working with lots of interrelated, mostly textual content should try the free Piggydb Java application.

Piggydb

Very often, the main problem with computers and the Internet is not creation, or even discovery, of data or whole documents; it is to generally make sense of all those things and, above all, of their more or less evident connections. Today, I'd like to introduce you to a little piece of free software that tries to make this very task a bit simpler.

An ambitious roadmap

Piggydb is a Java application aiming to become "a flexible and scalable knowledge building platform that supports a heuristic or bottom-up approach to discover new concepts or ideas based on your input." Quite a mouthful, isn't it? In plain English, this means that some day, Piggydb should semi-automatically discover, or at least make much more visible, connections among pieces of information that the user didn't declare or know about when he or she first fed them to the software. This continuous, ever-improving self reorganization of data should help users discover new ideas and generally be more creative.

What does Pigggydb do today?

Don't let buzzwords and long-term roadmaps mislead you. In its current state, Piggydb already is an interesting combination of outliner, diary, notebook and personal wiki. It's definitely worth a try, in my opinion, by everybody working with lots of interrelated, mostly textual content.

Installation, architecture, and main features of Piggydb

Piggydb is available as a stand-alone desktop application or as an "all-in-one" package. The latter is a web server accessible by any browser, even remotely, and that's the version I tested and show here.

Both variants will run everywhere Java is available. The installation procedure on Linux, however, at least for the all-in-one package, is just a bit more work than it seems from the web site. In order to make the "run.sh" script work as advertised, you need to:

  • save it with Unix-style newlines, instead of DOS ones, with any of these one-liners
  • change its permissions to 755 (chmod 755 run.sh)
  • set it up to start automatically at every boot (this depends on your distribution)

Once the Piggydb server is running, log in to your browser at http://localhost:8080 or whatever URL and port you told Piggydb to use. The default account and passwords are both equal to "owner."

Figure A shows how to create the basic building blocks of a Piggydb knowledge database, called "fragments." 

Figure A

Figure A

Fragments are the basic building blocks of a Piggydb knowledge database.

A fragment can be a short note, a paper abstract, a citation, or even just a link to some local file or web page. Besides basic formatting and a spelling checker, you get the possibility to embed other fragments in the current one, as long as you remember their ID number. 

Figure B and Figure C show this process. By default, all the Pyggydb data are stored in the $HOME/piggydb folder.

Figure B

Figure B
Nesting fragments.

Figure C

Figure C

Nesting results.

Piggydb has tags...

The Piggydb developer rightly points out that, while it is possible, you really shouldn't use Piggydb as a traditional wiki -- that is, to create something with one main theme and a single, top-down hierarchy. The real knowledge organization capabilities of Piggydb lie in two other mechanisms. The first one, shown in Figure D, is Hierarchical Tags. You can create as many tags you want, arrange them in a tree, and attach them to any fragment.

Figure D

Figure D

Hierarchical Tags.

...but its relationships are better

As convenient and familiar as it is, tagging is not the best feature of Piggydb. Its other method to organize information, which (in my opinion) is the most interesting, may help you a lot -- even with very little tagging, or none at all.

The Piggydb user interface lets you drag and drop icons from one fragment to another to create relationships between them, as shown in Figure E

Figure E

Figure E
Create relationships between fragments.

Each relationship can be mono or bi-directional, and you can set up as many of them as you want. This produces decentralized networks of fragments instead of simpler tree-like hierarchies, regardless of any tags applied to the same fragments.

The result, if you keep tagging and creating relationships, is something similar to Figure F: a somehow spartan but complete view of all your fragments and their interconnections. If you look closely at Figure F, you'll notice that:

  • bidirectional and monodirectional relationships have different symbols
  • the independent "Fragment 6" at the bottom really is what I had embedded in "Fragment 1" in the previous figures of this page

To make navigation easier, a slider at the top of the Piggydb window lets you switch in any moment among a simple list of fragment names, a synthetic Tree View, or the complete, printer-friendly layout.

Figure F

Figure F
View the fragments and their interconnections.

The main problem of Piggydb

Piggydb may be the coolest and most powerful software in the world, but until you've entered a lot of content in it, it won't be able to do much. The good news is that Piggydb can import and export its database in a simple XML format. Therefore, if you know just a bit of scripting, it is quite easy to convert textual data that you already have in any other database to XML records, all in one plain text file that Piggydb can load. This should give you a database full of content, in which you "only" have to add tags and/or relationships manually: boring work for sure, but much less than (re)entering all the same stuff from scratch. I'm playing with the idea of doing this with all my SemanticScuttle bookmarks to see what happens. If you want me to explain the details in another post, please let me know in the discussion thread below.

About

Marco Fioretti is a freelance writer and teacher whose work focuses on the impact of open digital technologies on education, ethics, civil rights, and environmental issues.

5 comments
Daisuke Morita
Daisuke Morita

Hi,

I'm the developer of Piggydb. Thank you for the great article!

I feel I should rewrite the introduction because I didn't mean "semi-automatically discover", rather, it helps users discover and grow concepts on their own by allowing them to easily observe and organize the collected information.

Piggydb proposes concept-driven knowledge building and making connections is just one of features that support this process.

The following article at piggydb.net explains how Piggydb helps you capture and nurture concepts as central parts of your knowledge base:

http://piggydb.net/2013/03/16/why-does-piggydb-make-your-note-taking-stand-out-from-the-crowd/

And a deeper introduction on concept-driven knowledge building:

http://piggydb.net/2012/06/20/the-piggydb-way-1-tag-as-concept-over-tag-as-index/

dmcshane
dmcshane

How is this actually useful to people who do not sit on the computer surfing the internet all day? It has to be a tool to accomplish something and it isn't clear by reading your article what that is.

Please expand on the following:

1. How can this help students in a specific major.

2. How can this help a Network Administrator.

3. How can this help a city government, law office, or small business?

4. How is this "forming" any connections? It seems the user is forming them all himself and the program just reorders and displays them based on number and direction of connections.

aboba0
aboba0

@dmcshane+1 for #4. 

 I guess making connections is the "...some day, Piggydb should semi-automatically discover..."  part. Nothing starts fully formed though. 

I like the idea as illustrated. I just think the work of making connections, as required in the current implementation, is greater than the value of those connections for the information I access.

Maybe if Google, or FB or LinkedIn buys it and uses it to make connections for me with all my metadata then it could be a real discovery tool.

jp-eng
jp-eng

@dmcshane  

Look at the examples he provided in the figures.  Its usefulness is clear to me.  

And all your objections can be answered simply by applying a bit of thought.   Everything he mentions can be done in html, but drag&drop is much easier and less error-prone.  You can concentrate on your objective rather than floundering around in tag syntax.  For me, it's moved a project or two from "someday, maybe" to "think seriously" status -- assuming piggydb turns out as well when I get home to try it as it looks in the article.  


Thanks, Marco. 


Editor's Picks