Show HN: Structpad: notepad-database hybrid that helps you use abstract thinking
structpad.appHello. Briefly about Structpad: All interaction with app comes down to simple typing, like in a notepad. No buttons, commands or special characters needed. However, you can still build complex structured data.
Something about why I'm building Structpad: I love taking notes and I think it's necessary for deep thinking because our brain is very powerful, but it has one weakness - memory. I noticed that not only the text itself matters, but also some invisible structure in our minds. There are various tools that try to reveal this structure, such as filenames, folders, tags, links, tables of contents, but they are often complex and unreusable. So I wanted more structure, less clutter, and no extra clicks.
Programming languages use OOP for a higher level of abstraction, to create more complex programs, so why not use something similar for our thoughts instead of plain text? In this way, Structpad reduces the load on memory for the sake of the quality of using the mind. I think if it is marketed as a better replacement for such a basic tool as a text editor (notepad in this case), it cannot be a webapp, it has to be native and daaaamn fast, but let me emphasize the fast part, because an electron app will not cut it. I like the visual looks of it, but it needs to be a very fast and very much native app for me to even consider adding it into my workflow. If you'll forgive me for my unsolicited advice, I have some thoughts about what I would change... As is there is already the option to switch from "About" to "Local Storage", which presents me with a blank page at a new URL to start creating my own structs... What if you use the URL as the key in localstorage, and store the document as a serialized string there? Then I can create new blank documents by visiting a yet-to-exist address. Then the dropdown menu could be used to switch between documents... oh, I guess we're just back to files and folders then xD ...so if the goal is to have one global document that I can zoom into and out of (arbitrarily nested structs), perhaps I could select any block and blow it up full screen, hiding all data outside of it, but allowing child-blocks to be added. You could implement these as folds so you only show the struct to x depth, or move down into the struct, following the rabbit hole as it were. As the complexity multiplies, I expect eventually I'd want the ability to re-use blocks in multiple places, like a hard link, different paths to the same content. Then you get to visit a block in one place and ask "what are all the structs that include this block of text" ? I always thought Wikipedia should work this way, there's so many articles on history and chemistry etc that have some context or background info -- very similar content produced by many authors. You should instead be able to embed a paragraph from an existing article and optionally pin it to a version/hash, but if its not pinned, you could update a hundred wiki articles at once by improving one sentence, and you could tell the computer, "show me all articles that embed or quote this paragraph", Now we're getting Xanadu-ey! Thank you. I love your thoughts! Mine are similar :) So I will implement something like that.
(Also, if someone likes the idea of Structpad and wants to work with me, you can email me at contact@structpad.com) > No buttons, commands or special characters needed. I'm unsure what benefit you are trying to describe here. When I jot things down in Notepad++, I use tons of commands all of the time to edit the text. You don't just type from start to finish, you know; you move around and you make edits. People who are more mouse-driven than me use buttons for the same purpose. I also make extensive use of (“special”) Unicode characters to make things clear to myself. Why would I use a software whose explicit aim is to take this all away? I mean, there are things where we can avoid additional actions, for example:
We can enter text and a new structure block will be autocreated, no need to click "add block" button before.
We can cut whole block by Ctrl+X, without select text before. Sure, more complex functions will require buttons or something. This is similar to Ted Nelson's Xanadu in some ways, and also similarly liquid text. Nice work. The problem you're solving is a hard one. Memex maybe, one day. In 10's there was a lot of innovation with GUIs, incl. 3d interfaces (pre virtual reality era). File managers, document environments, really interesting stuff. Tons of demos, mockups, POCs. Even YT was full of these. All of this is gone and I can not dig up any of this. I still remember quite a few concrete demos. Also, lots of hardware, like touch tables. It all kind of disappeared, I dont get it where and how. (Enterprise?) Thank you, I haven't heard about Xanadu, I'll take a look.
And liquid text, is it app for reviewing and annotating PDFs or something else? For your perusal, here's a video of Ted demonstrating Xanadu: [0] (3min18sec to jump right to the demo) You can also browse the book he published describing the system, Literary Machines (1981) [1] -- it's a sprawling vision but I think where the parent sees overlap is in storing each text fragment as a singular entity and visualizing the links between two fragments. > A user may also make side-by-side connections of other types. On contemplating any two pieces of text, he may make a link between them. Thereafter, when he displays either piece of text, and asks to see the links, a link-symbol is displayed, and the other attached text — if he wishes to see it. > Naturally, making a marginal note consists of writing the note and hooking the link. The link facility gives us much more than the attachment of mere odds and ends. It permits fully non-sequential writing, or hypertext. BTW I really like the interface of just typing and moving my cursor around, and how easy it is to pick up a block of text and move it somewhere else. [0] https://youtu.be/En_2T7KH6RA?t=203 [1] https://archive.org/details/literarymachines00nels_3/page/n6... A friend of mine is also building a memex [2](1945), as mentioned in the parent. His is a fairly radical DOS interface that he's been keying his thoughts into daily since the 80s, and it's great fun watching him try to remember something [3](2013): in about 5 or 6 keystrokes skipping across the graph of all notes, he's able to find that name on the tip of his tongue, and then hop to their phone number and the date they first met, then see what else he wrote down on that day... [2] https://www.theatlantic.com/magazine/archive/1945/07/as-we-m... Thank you for all the references! The topic is interesting and closely related to Structpad Absolutely nailed it. My fellow Xanadu dreamer. I think this space, for all the energy already being poured into it, is still having a tough time finding the right abstraction for deeply-linked note organization without resorting to reinventing the wiki. I'm really glad to see an approach that isn't trying to be a Roam replica plus a couple extra features, the whole space is desperate for better abstractions. It seems to me like the flexibility of existing tools can lead to everybody building a subtly different and incompatible notetaking strategy, which is fine, but sacrifices a lot of the benefits of standardization and opinionated tooling. Exploring different structural patterns like you're doing might be just what the space needs to jump out of the local maximum it's in. For a proof-of-concept, I really like your approach to hierarchical notes here! I'm a student and that structure makes sense for a lot of what I need to take notes on, but existing tools for linked notes don't have a great answer for that (and sometimes actively discourage it). I think you're onto something, looking forward to seeing how you develop these (and more) ideas over time! I love this! Skimming the about page is enough to grasp the main mechanic and it's very intuitive after that too. The pointer-free navigation is awesome! One tiny thing I've noticed in the first minute is that using shortcuts like Ctrl+A or Ctrl+Shift+Home (in Firefox/Windows anyways) selects stuff outside of the current "label" which feels a bit off. I use these shortcuts to quickly select a bunch of text and start typing to replace it with something else. What are your plans in terms of data portability / syncing? Thanks for the feedback on shortcuts. I plan to build an electron app so that it allows you to synchronize data between devices over a local network or by export / import (a mobile application is also planned). I also plan to implement the export of not only raw data, but also note files in some common format. Reminds me of Workflowy. I love the concept of structured notes, but I think the colors are distracting. Also not accessible to color blind people. Reminds me of TreeSheets [0]. I'll think about colors, thanks. I like it! I know the goal is to move beyond plain text, but I wonder if you plan to ever support exporting the data to plain text files (e.g. Markdown)? That is a hard requirement for me to consider a note-taking app. I need data portability if I am going to invest a bunch of time adding notes to a particular app.... Definitely yes, I plan on it. A note taking the provides a VIM Based keybindings to navigate and edit by using various modes, will be so good. Very interesting. Call me lazy, but I'd like to see a demo - animation or video to help me grok it. Bookmarking. Thanks, maybe the "About" page should start autobuilding from scratch after the visit. Won't be annoying? Nice start, in the same simple-is-good spirit as https://thinktype.app/ If you switch between browsers and machines, how do you transport/export/import/backup the localStorage content? And my understanding was that localStorage didn't actually have any specific permanence guarantees; how do I know I won't spend a bunch of time putting in some information, only to have it disappear behind my back if I don't touch it in a few months? Sorry, in a few days I will add an export and import function. And will build electron app later, as it will be more convenient than export/import. Yes, Structpad isn't well polished now. But I posted it anyway, as the purpose of the post was to find out people's interest. Much work expected :) Love the look and the idea. Reminds me a bit of OmniOutliner and the more modern web app Dynalist. I want to be able to drag bits from one parent to another. This lets me start out with a flat list and iterate towards structure. Keep going! Thank you for the kind words and feedback! The visuals are nice, but I found the example insufficient to proceed. I would be very grateful if you could explain. Do you mean missing some features? Or a need for better instructions for use? seems more outline than database. I also find the colors to be overwhelming. The sidebar ToC feels novel but that is not a huge value add for me. The UX is woefully lacking in expressiveness, and there are no notable gains from not using files/folders/tags. Plus cue all the portability / dependence issues. So... a miss for me on this helping with abstract thinking. That said - keep iterating and challenging what is possible, and start talking to "customers". Thanks for the feedback and advice Very nice. Not sure how I'd use it but looks and works great. Also, kudos for using local storage. Thanks, I like to use it as a way to keep a journal, put all sorts of ideas in there and look at them from different angles. The app is just a blank screen on my iPad. :( intended as constructive feedback. Nice. How do I delete everything? How do I backup and restore? Thanks. For possibility to delete everything, I have to implement a selection for multiple blocks. This, restore and backup will definitely be implemented in the near future. > For possibility to delete everything, I have to implement a selection for multiple blocks. Why do you believe you have to? A simple "start afresh" button discarding all the objects would do. Such a tool is essential for experimentation, studying a new tool. > This, restore and backup will definitely be implemented in the near future. I hope so. Just dump/load JSON. Lack of this functionality seems killing a great concept. I doubt many people will spend even a minute outlining if the only way they can backup their work result is a screenshot. Thanks for the feedback. I added this functionality :) Fantastic! Thank you very much!! its really neat... but i find that something about it causes me to lose my train of thought. I'll play a bit more but there is something about the interface that just doesn't work for my thought process. Interesting, I would be grateful to know more about what it could be if you let me. If you find out it. Is it open-source? It isn't. Maybe someday Do you have a business model in mind?