HNHacker News
TopNewBestAskShowJobs

dtkav

266 karma · joined October 10, 2013

working on: https://relay.md

email me: hn@danielgk.com

submissionscomments
dtkav··on Drawgent: Coding agent on a live Excalidraw canvas
I am working on a similar thing for jsoncanvas (.canvas files in Obsidian). My takeaway is that agents are heavily trained on specific formats (e.g. svg), and are conversely pretty bad at niche formats. My strategy was to create a native renderer [1] so that at least they can rapidly iterate "visually" by reading svg and png renders instead of trying to one-shot.

I have yet to see an AI generated visual diagram that doesn't feel like slop though... I'd be very interested in examples of actually-good diagrams workflows if anyone has seen them.

[0] https://jsoncanvas.org/

[1] https://github.com/dtkav/canvas-native

dtkav··on What even is an OS now?
We were on a call recently where I mentioned that as a fly user SDLC and declarative config was more important than ever, and so I was pushing for sprites to have OCI images.

I'm pretty AI pilled, and I'm building a local-first personal software platform, but I dunno... I've been feeling like i need to cram the "AI spirit" into very specifically shaped boxes to actually build robust software tastefully at speed. Like software on the outside and AI on the inside instead of the other way around.

I do think the future of computing will definitely be more like the Linux diaspora than the apple ecosystem, but also.. it is easy to get "duped" by AI without actually shipping. I'm starting to want "KPIs" to help me measure if my time is actually well spent against the things i care about.

I guess I'm extrapolating from your post, but even if the programming language is English, we'll probably still want to spend a large amount of additional compute to produce "artifacts" that have things like performant code, security hardening, and certified taste.

I do think the future of computing will definitely be more like the Linux diaspora than the apple ecosystem, but also... when i first got into linux i spent way too long trying to get my desktop perfectly aesthetic because it was all suddenly malleable. Now i vibe more with Debian.

I wish you luck, and I'm looking forward to seeing what you come up with! Fun times ahead for sure.

dtkav··on Replacing Pull Requests with Delta
I want artifacts (PRs / work that was done) instead of sessions. The worst part about this era is that everyone feels productive because they are doing work and sessions are shaped around doing work instead of delivering. It is so easy to get duped by AI optimism and not actually ship stuff.

I agree with them that github should die and that we should track every bit of context and every edit, but I am sick of seeing tools about the input instead of the output. I actually only want to see/try PRs. good ones.

dtkav··on Show HN: Self-hosted company OS, Claude Code and Codex agents in departments
I work on a realtime collaboration platform, and I've been building something similar for internal use - cool to see your mental model.

Do you find voice mode to be helpful? How do you route to the right agent?

Some minor feedback, but the mobile site is pretty unusable on my device (Firefox, Android). I'm also turned off by the 3d visualizations and ai stuff in marketing (even though it is an AI infra product).

Good luck!

dtkav··on Aphantasia Beginner's Guide
There's been some great research into aphantasia in the last ~5 years - worth reading about if you have aphantasia.
dtkav··on Aphantasia Beginner's Guide
I think i have this too (also play piano, have perfect pitch). I have an excellent musical memory, but i have to actually play a song / sing it out loud to hear it if that makes sense.

I do have the motion-centric imagination sense (i could "feel" what it would be like to do a layup) without physically moving.

No ability to generate audio, visuals, etc "on the inside".

Do you have an internal voice?

dtkav··on Aphantasia Beginner's Guide
Also differences in pupil dilation when asked to imagine scenes [0].

[0] https://pmc.ncbi.nlm.nih.gov/articles/PMC9018072/

dtkav··on Prolly: A content-addressed ordered map built on prolly trees
Thank you for sharing this. I've been looking into prolly trees for relay.md - I'll try swapping this in and see if i can provide any perspective for real world CRDT use cases. I'm happy to see the various key policies.
dtkav··on Understanding is the new bottleneck
I've been using Geoffrey's /explain-diff skill in my replace-github-with-tailor-fit-personal-software journey, and I'm liking it. I recommend at least giving it a try.
dtkav··on Chuwi Minibook X
I have a matte black Pixelbook Go running PopOS and i love it.

The hardware feels great to hold (though the touchpad is still meh). I covered the Google logos with a glossy black vinyl Obsidian sticker.

https://notes.danielgk.com/Hardware/Travel+Laptop

dtkav··on The Future of Obsidian Plugins
let's collab! daniel @ relay.md
dtkav··on The Future of Obsidian Plugins
IMO Obsidian is currently the king of "personal software frameworks". You can look at YT channels for inspiration of what other people are doing, but I'd avoid trying to copy someone else's setup (for the vague promise of productivity), and instead just start to tinker and tailor your environment to yourself. The base experience is really good. What matters most is that you spend time actually writing useful things down.

For personal use - Obsidian + AI (claude code / codex) + self-authored plugins is the best AI experience available. Folks like Karpathy have been writing a bit about LLM-powered wikis and context management. That seems to be causing a big wave of interest at the moment.

What I see from our business customers is all about AI in a collaborative context. The more advanced customers are typically developing an in-house plugin for their agent so they can make setup really easy, centralize token tracking, and aggregate learnings (while respecting employee privacy/customization). We also see strong interest in the privacy/security aspect from red teams (trying to track the huge influx of vulnerabilities).

IMO the practices for using Obsidian effectively in a work environment are under-represented on YT and in tutorials (we have done some light consulting in this area).

(I'm the developer of Relay / https://relay.md )

dtkav··on The Future of Obsidian Plugins
There are a handful of plugins that might help. Obsidian sync works well for device sync and the CLI is great for agentic stuff.

For real-time collaboration, some options are:

- Relay

- Peerdraft

- Screen garden

(full disclosure - I am the developer of Relay)

dtkav··on The Future of Obsidian Plugins
Yeah, the answer definitely isn't "hey claude is this a good plugin?" as the only gate.

But for defense in depth, we've never had a more powerful tool to figure out if a plugin is being respectful of user-intent at scale.

dtkav··on The Future of Obsidian Plugins
Speaking as someone who has been building a business around an Obsidian plugin - I think you're on the right track.

What actually matters is that the plugin developer is pro-social, discloses the behavior, the user accepts that disclosure, and that the user isn't duped by their inability to review all of the code for every update.

dtkav··on The Future of Obsidian Plugins
Thank you <3
dtkav··on The Future of Obsidian Plugins
For those not aware, it has basically been impossible to submit new plugins due to the manual review (and how easy/fun it is to write a plugin with AI). The developer community was becoming increasingly frustrated, and the team was burning out under the load.

So congrats to the team! This relieves a huge scaling bottleneck. It has been really cool to see how y'all build and scale.

dtkav··on The Future of Obsidian Plugins
Hey kepano - can you please grandfather in existing plugin IDs?

Forcing a migration seems really user-unfriendly unless there's a symlink or something.

We have a "caution" score because our plugin (system3-relay) has a 3 in it (part of our business name), and we have thousands of daily active users that would need to essentially download a new plugin if we change it.

dtkav··on The Future of Obsidian Plugins
IMO this is an outdated view. Existing developer platforms have had to rely on static heuristics and capability-based permission systems, but now AI can run at scale and surface a lot of user-unfriendly intent that wasn't possible before.

The permission system are definitely useful for hard limits - but AI review can surface way more detail (what kinds of things are actually sent over the network, etc).

dtkav··on Introduction to Obsidian
Thanks for the kind words Chris :)
dtkav··on Microsoft is employing dark patterns to goad users into paying for storage?
> I don't think Obsidian does synchronous collaboration well (could be wrong) but for asynchronous collaboration it ought to be fine.

If you want to do real-time collaboration in Obsidian there are a few plugins available. relay.md (mine), peerdraft, screengarden, and YAOS are some options.

dtkav··on Show HN: Opensidian: Local-first notes in the browser with POSIX shell and sync
It seems like you're using stable IDs for the links. Did you run into issues using the name like Obsidian does?
dtkav··on Show HN: Opensidian: Local-first notes in the browser with POSIX shell and sync
This is really cool. I'm excited to dive into the code later today.

Im building something similar but have been working from the opposite direction.

I started by making Obsidian real time collaborative (relay.md), and have been slowly heading in the direction of yjs backed filesystem (that supports the obsidian graph "protocol").

IMO the obsidian editor is best-in-class, and the important thing is owning sync. I also wish it was open source, but I'm also impressed with their business model (100% user funded) so I'm happy to support them.

I've found that many devs starting with the infrastructure tend to hand wave conflict UX with yjs. It can be useful to support LWW in certain scenarios like updating links across many files, or frontmatter updates.

Automated find-and-replace is particularly bad in yjs/ytext because deletes are idempotent but inserts are not. race conditions trigger broken links. (I call this the "machine edits" problem, not sure if there is a better name).

I think the other underexplored discussion for local first apps is how to build a business so that you can afford to work on it full time.

dtkav··on Practical LLM developer project management: Obsidian Kanban plan MD files in Git
Nice! Do you have a skill that describes this workflow?
dtkav··on A Markdown textfile based Kanban board in a single HTML file
The Obsidian kanban plugin does this. I recently added support for it in my real-time-collaboration plugin (Relay).
dtkav··on Starlink militarization and its impact on global strategic stability (2023)
I was early at Planet (and fresh out of college) and the transition internally towards govt money was very painful for the bright eyed save-the-world hackers internally.

The initial technical architecture was aligned with broad good (low res, global, daily, openly available), but the shift towards selling high res satellite capabilities directly to governments has been tough to see.

Their role of providing a public ledger is still a net good thing IMO, and i doubt Planet is adding much increased capability to the US war fighter (they have way better stuff). Harder to say for their deals with other governments that have fewer native space capabilities.

dtkav··on Free, private social media with Obsidian and Dropbox
This is really wholesome. Thanks for sharing.
dtkav··on Show HN: YAOS – A 1-click deploy, real-time sync engine for Obsidian
We let docs converge independently. This is a problem for bases in the current sync engine, but something we're resolving soon with "continuous-background-sync". I think it is also more scalable and matches the file model better.

We landed on folder-level sync rather than vault-level sync, so we have a map CRDT that corresponds with each shared folder. In our model these CRDTs are the ones that can explode, whereas the doc-level ones can kind of be fixed up by dragging it out of the folder and back in again which grabs a new "inode" for it.

If I were to start again I think I'd try to build a file-based persistence layer based on prolly-trees to better adhere to the file-over-app philosophy.

dtkav··on Show HN: YAOS – A 1-click deploy, real-time sync engine for Obsidian
IMO Obsidian Sync is a fantastic solution for e2ee device sync in Obsidian. It is a good/honest business model to fund the development of Obsidian.

What complaints are you hearing?

dtkav··on Show HN: YAOS – A 1-click deploy, real-time sync engine for Obsidian
Great work Kavin!

This is a super interesting space, and lots of fun and difficult problems to tackle.

A few trailheads of interesting complexity:

1. Concurrent machine edits - in particular handling links to renamed files across devices. This is a case where CRDTs fall over because they converge but are not idempotent. For example renaming a file [[hello 1]] to [[hello 2]] when multiple devices are online can result in [[hello 22]] because deletes merge before inserts.

2. Ingesting disk edits in the age of claude code. The intended behavior can change based on what I'm calling the "intent fidelity spectrum". I've been using that spectrum as a guide for when to apply merges in "text space" vs. "crdt space", including sometimes withholding ops based on origin (e.g. from obsidian processFile calls), cancelling them) or offline status. For example, if you made edits while offline and have a least-common-ancestor you may be able to look for conflicts via diff3 and then conditionally use diff-match-patch if there are no conflicts, or surface the conflict to the user if there's not a good merge strategy based on the low levels of intent.

3. History and memory management - how do you recover state if a user has a competing sync service which causes an infinite loop in file creation/deletion. This can be difficult with CRDTs because the tombstones just keep syncing back and forth between peers and can be difficult to clear. This is significantly worse if you use Y.PermanentUserData (do not recommend...).

Page 1 of 7Next →