Show HN: Ledge.sh – Runnable Markdown Notes
Thread
Loading the complete thread in the background. This saved snapshot is available now. Refresh
Unofficial Hacker News client; not affiliated with Y Combinator.
Show HN: Ledge.sh – Runnable Markdown Notes
Loading the complete thread in the background. This saved snapshot is available now. Refresh
Unofficial Hacker News client; not affiliated with Y Combinator.
xinyao27 · · focus · HN ↗
[dead]
fanthus · · focus · HN ↗
[dead]
wakaru44 · · focus · HN ↗
dancablam · · focus · HN ↗
bpshaver · · focus · HN ↗
dancablam · · focus · HN ↗
bpshaver · · focus · HN ↗
rpdillon · · focus · HN ↗
<a href="https://hammacher.com/" rel="nofollow">https://hammacher.com/
dancablam · · focus · HN ↗
funkaster · · focus · HN ↗
skrtskrt · · focus · HN ↗
Hasn't this guy heard of [old product that is a huge pain and no one likes]? Why would he ever make something that suits his own interests and preferences?
bpshaver · · focus · HN ↗
It seems like you think that pointing out that I'm sharing my attitude is some sort of gotcha, but I'm confused. Sharing one's attitude is the whole point of posting an internet comment, isn't it?
baranguneysel · · focus · HN ↗
Feel free to get in touch if you are open to an exchange, you can find my contact details in the write-up.
dancablam · · focus · HN ↗
mirror_neuron · · focus · HN ↗
I always thought it was only a matter of time before I came across another project just like it.
rvdca · · focus · HN ↗
dancablam · · focus · HN ↗
tux404 · · focus · HN ↗
[dead]
TheGoodBarn · · focus · HN ↗
I wish Notion could just integrate these things together and make it work, or someone build an Obsidian plugin. More often than not it would be so convenient to do something like this.
dancablam · · focus · HN ↗
tetraodonpuffer · · focus · HN ↗
dancablam · · focus · HN ↗
melito · · focus · HN ↗
theCodeStig · · focus · HN ↗
dancablam · · focus · HN ↗
imglorp · · focus · HN ↗
mijoharas · · focus · HN ↗
To be clear, is the issue with org-babel that it's not accessible to other people on the team? or something else that this solves?
dancablam · · focus · HN ↗
theCodeStig · · focus · HN ↗
Markdown (although it doesn't adhere to a strict standard) is ubiquitous, and support for Ledge notebooks degrades gracefully. If one doesn't have Ledge installed to run it, it can be assumed that their editor is able to render markdown. Even opened in a plain text editor, markdown is a lot easier on the eyes.
UX matters.
michaelastreiko · · focus · HN ↗
dancing · · focus · HN ↗
imglorp · · focus · HN ↗
replwoacause · · focus · HN ↗
orthecreedence · · focus · HN ↗
classictraffic · · focus · HN ↗
KetoManx64 · · focus · HN ↗
dancablam · · focus · HN ↗
dannyw · · focus · HN ↗
edude03 · · focus · HN ↗
0: <a href="https://github.com/atuinsh/desktop" rel="nofollow">https://github.com/atuinsh/desktop
junehwi · · focus · HN ↗
For people who used these tools long-term: what held them back? UX/accessibility, or do people simply prefer keeping documents separate from the actual work?
ellieh · · focus · HN ↗
we saw a bunch of issues with desktop, in no particular order
1. authoring runbooks is difficult, most people barely document their work let alone make it executable
2. keeping runbooks up to date is difficult, they are error-prone across systems
3. agents are now pretty good at a number of the tasks these ideas solve for, and are good at working around issues caused by docs becoming out of date/etc
all these tools are great for your own notes, but are very difficult to scale
junehwi · · focus · HN ↗
cyan_indigo · · focus · HN ↗
Very happy to hear what you think of it. I've built it specifically for reviewing outcomes instead of impementations.
Humans define what correct looks like, agents implement and attach evidence (image, videos, etc.) that humans can review.
skinfaxi · · focus · HN ↗
cyan_indigo · · focus · HN ↗
I've updated the landing page so it's clear that it's in beta and added a small "your data" page for now <a href="https://higherlevel.to/your-data" rel="nofollow">https://higherlevel.to/your-data
dancablam · · focus · HN ↗
1. Ledge's bet is it shouldn't feel like authoring at all. I've always had markdown docs chock full of commands and docs so making them runnable was the next logical step for me.
2. True. Keeping any kind of documentation up to date is difficult
3. Also true. I'm hoping Ledge's built-in agent support will bridge that gap and allow agents to help keep the docs up-to-date
And yes, a "Team" notebook is a challenge. Technically anyone with SSH access can all share a Ledge notebook. But that probably doesn't get us all the way there.
Thanks again for providing your thoughts. This by no means is a solved problem but I'm interested to see where it goes!
rancar2 · · focus · HN ↗
To give a bit more discouraging advice to Ledge, these tldr insights have made me run circles to resolve. My experience is that one will start getting into build system and dependency mapping to make this sustainable. And then if one wants something more universal, one ends up building something like homebrew, which doesn’t even cover all OSs for good reason.
As you dig deep across system dependency and updates and configurations, there are crazy, crazy, crazy cascading bugs that popup from personal experience. As an example of how this comes up in practice, this is why many teams end up building on Electron as a common cross-platform bug fixer (Tauri has catching up to do although generally works well).
frumiousirc · · focus · HN ↗
- Keep diagram source (eg Graphviz dot) with the document.
- Write software developer manuals that can reference code robustly as the code changes (eg include code snippets from source based on regex).
- Literate Coding / Reproducible Research pattern. Eg, org file explains and generates/builds/runs code and graphs/figures which then get included back into the document.
Some of the problems
- At some scale, one needs a DAG (eg make) or to make every command idempotent with fast no-op. Otherwise, each little change to a source block takes too long and there is a worry that something didn't update which should.
- At some scale, the document becomes the size of a library/package and it does not compose and/or I want to run the code outside of the document.
- The unenlightened around me do not use Emacs so an org file is a "me" file. In some ways this is a plus as it keeps others fingers out of my pie but it also means no way to share the baking.
That was in the days before LLMs. As ellieh's #3 points out, things are different now (we all know that). I now have an LLM externalize org-babel. The LLM maintains an org or LaTeX document describing bits of work, an external library/CLI which runs to produce content including putting numerical results into LaTeX macros, a Makefile or Snakemake to regenerate content and figures. When things are found to change prior understanding the LLM remakes a section of prose in the LaTeX document. I then write my own notes or another LaTeX document so that the trip through eyeballs to fingers on the keyboard assures I keep some level of understanding.
Likewise, in the software documentation goal, it's far better to give a good LLM access to the source and have it generate documentation targeting some learning goal with follow exploration via Q&A than it is to read some prepared document that assumes my goal. Software documentation is kind of a relic useful only for those people that have not yet taken up LLM tools.
drayfield · · focus · HN ↗
<a href="https://github.com/atuinsh/desktop" rel="nofollow">https://github.com/atuinsh/desktop
dancablam · · focus · HN ↗
RationPhantoms · · focus · HN ↗
jamietanna · · focus · HN ↗
olexsmir · · focus · HN ↗
[1]: <a href="https://www.youtube.com/watch?v=YufgfbUgEgI" rel="nofollow">https://www.youtube.com/watch?v=YufgfbUgEgI and xiki.org
coursenumpls · · focus · HN ↗
hensenjuang · · focus · HN ↗
[dead]
Gabrys1 · · focus · HN ↗
dancablam · · focus · HN ↗
pavo-etc · · focus · HN ↗
20after4 · · focus · HN ↗
More prior art: xcfile²
I've used xc³ for a long time now and it's fairly solid. The idea of runnable markdown is definitely useful. A lot of projects have attempted it and none that I've seen have achieved what I'd call perfection, however, xc gets close enough for my needs.
I'll check out Ledge a bit more thoroughly and give some feedback if I can think of anything constructive. I think xc is probably more suited for my uses, however, I do like electrobun and that seems like a good runtime to build something like this.
Here's what I like about xc:
1. It's built with GO and brings all the power of go's template engine. The portability of go's runtime means that it is just one binary and doesn't have any crazy runtime dependencies.
2. It has a built in dependency system so that each block of code can be predicated on another block completing. It can also ensure that each block in a dependency chain runs just once.
I've built a sort of configuration management system for my home infrastructure with config files in a git repo and all the deployment scripts and dependencies directly in the readme. I use it to maintain and deploy changes to my router, firewall rules, dhcp and dns, git repositories, and various containers.
1. <a href="https://en.wikipedia.org/wiki/Literate_programming" rel="nofollow">https://en.wikipedia.org/wiki/Literate_programming
2. <a href="https://xcfile.dev/" rel="nofollow">https://xcfile.dev/
3. <a href="https://github.com/joerdav/xc" rel="nofollow">https://github.com/joerdav/xc
20after4 · · focus · HN ↗
trwhite · · focus · HN ↗
dancablam · · focus · HN ↗
DylanMerigaud · · focus · HN ↗
theis_once · · focus · HN ↗
jdranczewski · · focus · HN ↗
mfld · · focus · HN ↗
IanCal · · focus · HN ↗
Marimo - recently had a lot of success with this: <a href="https://marimo.io/" rel="nofollow">https://marimo.io/
RMarkdown: <a href="https://rmarkdown.rstudio.com/" rel="nofollow">https://rmarkdown.rstudio.com/
Quarto: (this is more the editor really I guess) <a href="https://quarto.org/" rel="nofollow">https://quarto.org/
genxy · · focus · HN ↗
dancablam · · focus · HN ↗
NamlchakKhandro · · focus · HN ↗
nullbio · · focus · HN ↗
usrbinbash · · focus · HN ↗
robowo · · focus · HN ↗
mcptokensaver · · focus · HN ↗
lightningspirit · · focus · HN ↗
dancablam · · focus · HN ↗
rarisma · · focus · HN ↗
rohitpaulk · · focus · HN ↗
paulmwatson2 · · focus · HN ↗
[dead]
nullbio · · focus · HN ↗
dancablam · · focus · HN ↗
And, dang - sorry it's laggy for you! I've created a GH issue that includes some things for you to try and I'll work through them myself too: <a href="https://github.com/ledgesh/ledge/issues/8" rel="nofollow">https://github.com/ledgesh/ledge/issues/8
nullbio · · focus · HN ↗
IanCal · · focus · HN ↗
I like the concept, I know there have been some other things in the general area but often tied a bit more to data analysis.
I am a big fan of documenting processes as "do nothing scripts" which just repeatedly prompt you to go and do something, and you then incrementally actually add automation. I think this is a nice side of something here as well, as well as things for observability (baked in queries)
I scanned about a bit, so may have missed this but not sure I saw how the code for sh things looked in the markdown. I thought it'd be cool if existing readmes and common ways people put the code in automatically meant opening a readme/quickstart authored by a random person meant I'd get a clicky auto-run set of things.
I don't know if it makes sense to add, so don't take it as a "I need X" however I think you will probably soon hit either for yourself or from requests how to chain things together in non-linear ways. Dependencies, X if Y, running things in parallel, etc. And also things like failures, continue vs rerun, things like that.
Not sure how to add those latter things neatly, or if you should, but I think those are the next features you'll probably see requested and you may need to decide your philosophy for the project and not only what it does but what it explicitly does not try and address.
Side thought, with lots of sandboxing and stuff these days I'm thinking about ledge and what could exist under it for like a "system ran and did things, changes are here and proposed to accept/deny/roll back".
dancablam · · focus · HN ↗
Piraty · · focus · HN ↗
I see it might be handy for exploring your own pipelines (and so are things like <a href="https://github.com/akavel/up/" rel="nofollow">https://github.com/akavel/up/ ) , but I advise against using this for any serious project management. Nontrivial and/or crucial code-blocks in markdown files is an anti-pattern.
Once i find I'm re-using code from my markdown notes, I make it a script in ${dotfiles}/bin or in ${project}/scripts and put related docs in there. This feels like the inverse of this tool's imposed workflow and has the upside of composability of tools.
Then use something like a makefile to call these tools/scripts behind generic phony targets (or you can roll your own 'project.sh' entry point script if really needed). It then becomes just `make release`. it is portable already and does not add yet another host dependency on everybody nor a fricking javascript engine.
ps1: Same goes for weird stuff like <a href="https://pypi.org/project/taskipy/" rel="nofollow">https://pypi.org/project/taskipy/ . use `make release` over `poetry run task release`
ps2: if you're copy/pasting-workflow sucks: improve it. vim has :Terminal, it has yank-to-clipoard etc.
dancablam · · focus · HN ↗
amdivia · · focus · HN ↗
<a href="https://github.com/mktip/bsh.nvim" rel="nofollow">https://github.com/mktip/bsh.nvim
pratikdeoghare · · focus · HN ↗
Here I am using it as frontend to Jupyter and ollama.
[1] <a href="https://github.com/PratikDeoghare/brashtag" rel="nofollow">https://github.com/PratikDeoghare/brashtag [2] <a href="https://youtu.be/IMXgIE0Vljg?si=sBmmZ1nHlbHifKBd" rel="nofollow">https://youtu.be/IMXgIE0Vljg?si=sBmmZ1nHlbHifKBd
Andromeda_1050 · · focus · HN ↗
4b11b4 · · focus · HN ↗
nelsv · · focus · HN ↗
[dead]
akavel · · focus · HN ↗
- env vars parametrization;
- a CLI tool with interactive or non-interactive interface (maybe you also have one? I didn't check);
- flags in fence-blocks rather than in frontmatter.
dancablam · · focus · HN ↗
- env vars parametrization: this is an issue I've hit myself and am looking to add a solution for it. Created an issue for it: <a href="https://github.com/ledgesh/ledge/issues/9" rel="nofollow">https://github.com/ledgesh/ledge/issues/9 - CLI: Ledge does have a CLI. One gap is it can't run a code block from the CLI - another good item to add. Created as an issue: <a href="https://github.com/ledgesh/ledge/issues/10" rel="nofollow">https://github.com/ledgesh/ledge/issues/10 - flags: you can add flags in the codeblock in Ledge (like confirm, norun, etc)
Thanks for the great input!
jawhite2822 · · focus · HN ↗
[dead]
ArvidSu · · focus · HN ↗
cckolon · · focus · HN ↗
<a href="https://blog.atuin.sh/atuin-desktop-runbooks-that-run/" rel="nofollow">https://blog.atuin.sh/atuin-desktop-runbooks-that-run/
haaz · · focus · HN ↗
nashashmi · · focus · HN ↗