Bystroushaak's blog / English section / Programming / objWiki / Inspiration for objWiki

Inspiration for objWiki

I've collected countless inspirational ideas, posts, and quotes over the years. Here is the info dump, just so that you can see where I am coming from.

Note: this page will be updated.

Wikipedia

Relevant pages:

Programmable Notes (link)

Agent-based note-taking systems that can prompt and facilitate custom workflows

Interesting essay on the topic of programming your note taking application, with some quite interesting examples.

This has a lot to do with the reason why I always felt unhappy with the current state of the note-taking software.

The Block-Paved Path to Structured Data (link)

Quite fascinating presentation on the topic of using “blocks” as source of structured data for semantic-web-relevant-things.

Blocks are a great idea; instead of editing text, you edit blocks. The name of the page is a block. Paragraph is a block. Image is a block. Everything in your wiki is a block, which has some specific meaning and behavior. You don’t add different markup to the things in your text. You compose your text from blocks.

Dataspace 0: Those Memex Dreams Again (link)

Interesting articles from a person who has the same problems as I have.

A Gentle Introduction to Ted Nelson's ZigZag Structure (link)

ZigZag is an interesting data structure, usable for personal wikis.

Saturday morning hacks: Revisiting the notes app (link)

Interesting and pretty simple note-taking experiment in python.

What is still missing (archive)

Since the link is dead, I'll quote it here:

Basic innovations which is still not in general use, or even in use at all, which are all powerful aspects of a DKR which we can really benefit from:
  • A Journal which is a repository to which documents can be posted but cannot be deleted, only increased in version number if a new version is submitted. A basic and robust versioning system
  • xFiles. a data container, a format, conventions and structure for data storage for the DKR
  • Chorded Keyset. Doug invented more than the mouse and showed the power in having more opportunities to translate hand and finger movements to computer commands
  • Advanced Linking:
  • High Resolution Linking, so that a link can point to a specific sentence, paragraph or any other object within a document, not just to the document as a whole
  • Implicit Links through which the user can choose to view any corpus entry the text is implicitly linked to, such as a dictionary entry or a glossary entry
  • Basic ‘Hyper’ Characteristics where embedded objects called links can point to any arbitrary object within the document, or within another document in a specified domain of documents - and the link can be actuated by a user or an automatic process to "go see what is at the other end," or "bring the other-end object to this location," or "execute the process identified at the other end." (These executable processes may control peripheral devices such as CD ROM, video-disk players, etc.)
  • Multiple Links from one place to allow the user to choose what aspect to follow
  • Link Types to specify what the link points to, such as supplemental information and so on
  • Backlinks & Link Databases so that the a document is aware of incoming links as well as outgoing links
  • Links in Images. It is of course possible to create image maps but the current tools do not support this for non-graphics people. Doug had the example of showing a basic map where each location name could be clicked on to jump to its corresponding document. This is not quick to do today. https://youtu.be/a11JDLBXtPQ?t=395
  • Rich ViewSpecs (View Specifications) Allows the user to decide how to view a document, including options to show only the first sentence of every paragraph and so on:
  • Structure Cutoff. Show only the statements that lie “below” this statement in the structure (i.e., this “branch”); or show only those following statements that are at this level or deeper; or show all of the following statements that will fit in this windowLevel Clipping. For the designated structure cutoff, show only the statements down to a specified level. Lower-level statements are “clipped” from the view; the worker can thus view just a selected number of the upper levels of his document/fileStatement Truncation. For those statements brought into view (as selected by other view specifications), show only their first n lines. Truncation to one line is often used, along with level clipping, in order to get an effective overview.Inter-Statement Separation. For viewing ease -- blank lines can be optionally installed between statements. (Note: The foregoing view controls are extremely helpful when studying and modifying a document's structural organization.)Statement Numbers and Names. Optionally, for a given window, show the Statement Number (or the SID) of each statement -- with an option for showing them at either the right or at the left margin. Independently, the showing of statement names may be turned on or offFrozen Statements. A worker may select a number of statements, in random order, and designate them as "frozen." One of the view-specification options is to have the frozen statements appear at the top of the frame, with the rest of that window left for normal viewing and editing. The frozen statements may be edited, or even cross-edited between any other displayed (or addressable) statementsUser-Specified Content Filters. A simple content-analysis language may be used in a ‘Set Content Pattern’ command, which compiles a little content-checking program. One of the view-specification options will cause the system to display only those statements which satisfy both the structure and level conditions imposed by other viewspecs, and which also pass the content-analysis test applied by this program. Where desired, very sophisticated content-analysis programs may be written, using a full-blown programming language, and placed on call for any user

Relevant link: Doug Engelbart.

A few words on Doug Engelbart (link)

Interesting quotes:

Christopher Alexander is the Douglas Engelbart of architecture. Both were so far ahead of their time that their work was like a UFO landing on the White House lawn. Alexander's Order of Nature is well worth the time to read -- and it took me the better of two months to get through all four volumes. A Timeless Way of Building and A Pattern Language were accessible to a lot of people, but it didn't result in the changes that Alexander was trying to spark. Order of Nature put's all of his ideas on a solid rational footing and almost painful detail. You can feel it when you read it, the intensity of his vision, the fear that people won't get it or dismiss it because they don't get it and the fear that it will never catch on.
The last time I was in the States, I presented a paper that was based on a lot of Engelbart's work which never really made it into the mainstream. I was at a conference and I had showed the paper to a couple of people before the conference and wanted their feedback. I was taken aside at one point, and in hushed tones was told to be very careful of becoming associated with Engelbart and that it could threaten my career in the field. I could see the same thing happening time and again to people in academia who try to teach Alexandar's ideas.

Also interesting: https://www.reddit.com/r/slatestarcodex/comments/8jqwdf/the_forbidden_classes_of_christopher_alexander/dz7xzmk/

Literate Programming Considered Harmful (archive)

When I imagine reading my fantasy ACCRETE book online, I picture something like a fractal document. At first, you get a one-sentence summary of the system. You can then zoom in and get one paragraph, then one page. Each section, you can expand, at first from a very high-level English description, to pseudocode elaborated with technical language, finally to the actual source code. But this sounds like a very labor-intensive production. You would begin with the completed code and then invest significant additional time into it.

Dynabook concept (link)

Quote:

Therefore the Dynabook concept stands on three feet:
  1. User engagement in producing his own tools;
  1. User support to ease his effort in editing or creating tools suited to histasks. These supports take the form of tools editor, likely some sort ofdocumentation, knowledge base in the form of an existing and embarked pool oftools the user can edit, duplicate, etc. A. Kay does not give much detail onthis point;
  1. A user language to both describe and glue together the user tools. Smalltalk was specifically designed with this task in mind: written in itself to let the user to learn from it -- part of the knowledge base, late binding to ease gluing, encapsulation in objects and communication between objects with messages, live development and debugging.

Hypermedia: How the WWW fell short (link)

Interesting post about what we are still missing on the web, but also in general in our apps.

Examples:

Ask HN: How to organize personal knowledge? (link)

Discussion on topic of personal wiki, note organization and so on.

If nothing else, you can see that for most of the people, this is a complete mess and pain.

Does anyone else keep their own knowledge wiki? (link)

Similar discussion, this time on lobste.rs.

Ask HN: Organizing company knowledge? (link)

And this time about company knowledge. Some good points about required features.

Notion – Document Reimagined (link)

Some interesting points about what people want.

Random hackernews post by miguelrochefort (link)

Interesting quote:

Stop thinking that software should be tailored to its users. People don't know what they want. People have a tendency to under-generalize. They think that because two things look different, they're different. They're wrong.

There is not as much difference between hailing a cab, ordering a pizza, sharing a video, shipping a package, flying to Hawaii, renting a room, sending money, taking an elevator, and selling your couch, as people are lead to believe. They're essentially the same things, and software should treat them as such.

We need a general purpose communication platform. Not one monolithic app to which all possible features were added, but something that can be extended to a wide array of use cases. I'm not talking about plugins, micro-apps, or a web browser. These usually give too much freedom to developers, which once again results in fragmentation. I'm talking about a language, English on computer-steroids.

By communicating through a computer, this language gains access to the world's knowledge. This language can challenge your thoughts. This language can predict your thoughts. You only need to be as verbose as what the language doesn't already know about you. With time, the language becomes more like a to-do list a la Google Now (i.e., tells you what to do next) than a notepad. This language is your interface with the past, present and future world.

English is text-based and linear. You start from nothing, then a word, then a sentence. I don't want a language where you start with nothing. Start with the entire state of the entire world (as some sort of hyper-graph), communicate by editing it. Edit edges, introduce new nodes. One place for every idea. Never repeat, support instead. Invest your social credit to augment the credibility/value of facts. Use it as a way to describe both the past, present, and future (prediction and/or wish). Follow the path of PROLOG, RDF and lojban.

Graph-oriented communication is what the world needs. I believe we can make it accessible, not without a learning curve, by the use of inference and custom renderers. I'm not saying it's going to be easy, but I can't foresee it not being done.

The true promise of Interactive Computing: Leveraging our Collective IQ (link)

Some interesting points about the app we all need, but don't know it yet.

Interesting keywords:

Interesting quotes:

We need more facile ways to traverse our knowledge ecosystem, as if we are flying around in the information space. We need to be able to quickly skim across the landscapes, and dive down into whatever detail suits our needs in the moment, zooming in and out of detail as desired. In a landscape of interrelated documents, commentary, scratch notes, articles, dialog records, research intelligence, todo lists, videos, manuscripts, reports, images, calendars, source code, etc., we need to be able to glance across with a variety of visual cues about what’s there and how it all relates. We need a GPS.

Everything I know wiki (link)

This guy publishes his wiki for the whole world to see. Really inspirational, if you have some time, go skim through it to inspire yourself.

The lost medium (link, archive)

Excellent long post about our inability to use computers to their full potential.

Quotes:

Everyone takes the structure of the computer world as god-given but the computer world deals with arbitrary stuff that all was made up by somebody. Everything you see on your computer, smartphone and any other device was made up by someone.

And the computer world is not yet finished.

Yet everyone is behaving as though everything was known. At 50 years into the computer revolution, it feels like our moment of greatest progress.

This is not true.

Today’s omnipresent graphical user interface has its roots in Doug Engelbart’s ground shattering research of the mid-’60s. The concepts he invented were further developed at XEROX Parc in the ’70s, and successfully commercialized in the Apple Macintosh in the early ’80s, whereupon they essentially froze. Thirty years later, despite thousand-fold improvements along every technological dimension, the concepts behind today’s interfaces are almost identical to those in the initial Mac.

Our interface is based on metaphors with the familiar non-computer world around us. Files are represented as documents in paper folders that are placed on a desktop. They are deleted by dragging them to the trash. Nevertheless some metaphors and features work very differently in the real world. Our adaptations constrain and mislead users, and limit designers’ ability to invent more powerful interface mechanisms.

Analogies of the real world go on. Documents get written and read in sheet of paper-akin programs. Computer code is drafted line by line. Almost all of today’s representations were designed for the medium of paper. This limits us to pencil-and-paper thinking.

and

It would be a shame if going into the future we’re still using outdated metaphors, pencil-and-paper thinking, code in text files or collaborating manually. When I look at people using digital devices, I see them adjusting to the limitations of the computer. They are sharing instead of collaborating, consuming instead of producing, following instructions instead of experimenting, searching instead of thinking. Have we learned anything from this fertile recent period, and from these great ideas and visions?

If we don’t implement what we learn, it suggests we don’t care about how it will change our society for the better — or for the worse. It will show we don’t care what the medium computer will look like. That we don’t care how to make use of computers to augment our most human capabilities.

Our history shows if you free yourself from the idea that the current state of the computer world is the climax of our great progress we can almost magically give rise to new technologies, ideas and visions that do not only amplify humans, but also produce tremendous wealth for our society.

Recommended reading list (from the same post)

Technology is heroin post (link)

Post in the discussion about a book Tools for Conviviality and our relationship to technology.

For me, the more interesting point is about our inability to take control.

Interesting quote:

The book was influential in the development of the personal computer, especially through Lee Felsenstein. Alan Kay seems to have had a similar perspective, and you also see it in old school “bicycle for the mind” Apple. But something changed, I guess. Maybe mostly with the combination of 3G smartphones and mainstream social media.

We deserve better than Confluence and Notion (link)

Some interesting points on the topic of organization of information inside companies.

Interesting quotes:

But it is also too difficult to search in the raw data. That means it needs to be indexed, which can be achieved in many different ways:
  1. Put data in tree structures.
  1. Assign tags to data.
  1. Assign metadata to data.
  1. Group data by similarity.
A typical user of any knowledge management solution must be able to execute a few actions:
  • Create new content.
  • Collaborate with peers on a document.
  • Quickly retrieved a previous document deemed useful.
  • Explore and find specific content.
  • Be notified when content is updated.

Quartz (digital garden, markdown wiki) (link)

Quartz is a digital garden and markdown wiki that focuses on providing interactive elements for browsing. It features a fast search function and a simple interface.

Some interesting ideas about interactive elements used for browsing. Fast search, otherwise pretty simple.

Peritext - A CRDT for Rich-Text Collaboration (link)

Peritext is a conflict-free replicated data type (CRDT) for rich-text collaboration. It allows multiple users to edit a document simultaneously without conflicts or data loss. Unlike traditional collaborative editing tools, Peritext allows users to work offline and sync their changes later. It is designed to be platform agnostic and can be used in web or native applications. Peritext is still in development and is not yet available for general use.

A lot of information about how to do the lowlevel protocol for syncing multiple edits.

Development Environments - IDE, shell, terminals (link)

The article discusses different development environments, including IDEs, shells, and terminals. The author argues that while IDEs can be useful, they often have a steep learning curve and can be overly complex. On the other hand, shells and terminals are more lightweight and offer greater flexibility, but require more technical knowledge to use effectively. Ultimately, the author suggests using a combination of these tools to create a personalized development environment that meets individual needs and preferences.

The Data Model Behind Notion (link)

This article delves into the data model that powers Notion, explaining how it allows for flexible and powerful organization of information. The article covers concepts such as blocks, databases, and relations, and provides examples of how they can be used to create a variety of different types of pages and projects within Notion.

Automerge (link)

Automerge is a JavaScript library for building data-driven, collaborative applications. It allows multiple users to edit the same document simultaneously, without the need for a centralized server. Automerge uses a conflict-free replicated data type (CRDT) to ensure that all users see the same data, even if they are working offline or experiencing network issues.

One of the benefits of Automerge is its ease of use; it can be integrated into an existing codebase with just a few lines of code. It is also highly flexible and can be adapted to a wide range of use cases.

Some of the features of Automerge include:

Idyll - A Markup Language for Interactive Articles (link)

Idyll is a markup language for creating interactive articles that combine text, data visualizations, and interactive components. It allows authors to create dynamic, engaging content that encourages reader interaction and exploration.

One of the key features of Idyll is its ability to generate responsive visualizations that adapt to different screen sizes, making it well-suited for mobile devices as well as desktops.

Idyll is designed to be flexible and extensible, and it can be used to create a wide range of interactive content, from data-driven journalism to educational materials to creative works of art.

Some of the features of Idyll include:

Subpages

Become a Patron