HN user

garritfra

1,230 karma

This is an OpenPGP proof that connects my OpenPGP key to this Hackernews account. For details check out https://keyoxide.org/guides/openpgp-proofs

[Verifying my OpenPGP key: openpgp4fpr:2218337e54aa1dbe207b404dbb54af7eb0939f3d]

Posts97
Comments58
View on HN
garrit.xyz 7d ago

Be using a meta harness for agents

garritfra
6pts0
github.com 2mo ago

Show HN: A terminal spreadsheet editor with Vim keybindings

garritfra
126pts50
garrit.xyz 5mo ago

Seeking Order in Chaos

garritfra
4pts0
garrit.xyz 10mo ago

Making family IT support effortless (and free)

garritfra
4pts0
garrit.xyz 1y ago

Git diff –ignore-all-space makes code reviews way easier

garritfra
2pts0
garrit.xyz 1y ago

No matter what you do, always leave a breadcrumb

garritfra
10pts0
garrit.xyz 1y ago

Mental AI Fog and how to cure it

garritfra
4pts0
garrit.xyz 1y ago

Embedding models encode semantic meaning

garritfra
1pts0
www.youtube.com 2y ago

Fixing Your Daily Scrum with Football? [video]

garritfra
1pts0
en.wikipedia.org 2y ago

Six Degrees of Separation

garritfra
2pts0
garrit.xyz 2y ago

Pandoc: Convert links to footnotes (the easy way)

garritfra
2pts0
www.rfc-editor.org 2y ago

RFC 9457: Problem Details for HTTP APIs

garritfra
2pts0
garrit.xyz 2y ago

Cost per Request

garritfra
3pts1
toutestquantique.fr 2y ago

Quantum Made Simple

garritfra
1pts0
garrit.xyz 2y ago

A better publishing workflow for static blogs

garritfra
1pts0
garrit.xyz 2y ago

Greg, the Developer

garritfra
2pts0
news.ycombinator.com 2y ago

Tell HN: Merry Christmas

garritfra
8pts4
garrit.xyz 2y ago

Why You Can't Divide by Zero

garritfra
2pts2
garrit.xyz 2y ago

Real vs. Fake Trends

garritfra
2pts0
github.com 2y ago

Show HN: A Positive-Only Hacker News RSS Feed

garritfra
1pts0
garrit.xyz 2y ago

Organizing Multiple Git Identities

garritfra
3pts0
fosstodon.org 2y ago

A DevOps engineer walks into a bar

garritfra
2pts1
garrit.xyz 3y ago

Principles of DevOps: Flow

garritfra
3pts0
sendpasswords.net 3y ago

Show HN: Easily send passwords using PGP

garritfra
1pts0
github.com 3y ago

SOPS applying as CNCF sanbox project

garritfra
1pts0
cloud.google.com 3y ago

DevOps Capabilities

garritfra
2pts0
garrit.xyz 3y ago

Software is not defined by the language it's written in

garritfra
4pts0
news.ycombinator.com 3y ago

Ask HN: What software are you dogfooding?

garritfra
3pts6
garrit.xyz 3y ago

The fundamental difference between Terraform and Kubernetes

garritfra
2pts1
iximiuz.com 3y ago

Containers vs. Pods – Taking a Deeper Look (2021)

garritfra
1pts0

Thank you!

XLSX and ODS support won't be trivial, but I see the value of having it. I added it to the roadmap: https://github.com/garritfra/cell/issues/22

Regarding your question: This idea has been sitting on my todo list [1] for over 3 years now. I don't usually work with large data files in my dayjob, but occasionally working with the odd CSV on macOS frustrated me enough to put it on the list. And now that spec-driven development has matured enough to be actually useful, there's no real excuse not to build this.

I genuinely see myself caring for this long-term. I'm comfortable with the scope, and there seems to be some real interest from the community.

[1] https://garrit.xyz/todo

Author here - thanks for bringing this up!

Cell is very much tailored towards what you're looking for. My vision was "Excel but it's (Neo)Vim". Editing files should feel just as smooth as looking at the data. I believe Xan and Cell could actually pipe into each other quite nicely for rendering more complex data.

I'd really appreciate your time to report the bugs you encountered. Looking forward to them.

Thanks for trying it, and the spreadsheet repo is great prior art — I'll dig through it.

Drag-fill. Not yet, but the parts are mostly there. The formula layer already carries abs_col/abs_row through tokenization → AST → eval, so $A2 + B$1 parses correctly today; what's missing is the editing op that copies a formula across a range and shifts only the relative components. Opened #17 for it. The tricky part isn't the rewrite, it's the keybinding — Vim doesn't have an obvious idiom for "drag," so I'm leaning toward a visual-selection + fill-from-anchor key (Y is a candidate) or a :fill command. Open to suggestions if you have a feel for what works in a modal editor. It also needs to land on top of the bulk-undo work in #8/#9 so a fill is one undo step instead of N.

bar() / inline visualizations. Love it, opened #18. The interesting design call is whether BAR returns a CellValue::Visual { … } that the renderer dispatches on (correct under column resizes, but ripples into CSV export, copy/paste, and how SUM treats a visual cell), or whether it just returns a string of block-drawing chars at eval time (trivial to add, but width gets baked in at compute time which is wrong). The first is the right answer; the second is a tempting MVP. SPARKLINE(range) is the natural follow-up once the abstraction settles.

#17 — https://github.com/garritfra/cell/issues/17 #18 — https://github.com/garritfra/cell/issues/18

Thanks!

Honestly, the current implementations are pretty naive — they pass the tests and feel snappy on the small sheets I work with, but they'd buckle pretty quickly under real load. Most of what you're asking about is already on the tracker; I opened a batch of issues citing your comment as the prompt.

Recalculation. Right now it's a full recalc on every edit: recalculate collects all formula cells, computes in-degrees across the whole formula set, topo-sorts, and evaluates top to bottom. The dirty flag gets propagated by mark_dirty but isn't actually used to prune work. It's also re-parsing every formula from its raw string on every pass. Two issues cover this: #8 introduces a batch boundary so paste/fill/CSV import trigger one recalc instead of N, and #7 adds criterion benches so we can actually tell whether the parser, the BFS, or the topo sort is the hotspot before optimizing. AST caching on Cell is the obvious next step once #7 confirms parsing dominates.

https://github.com/garritfra/cell/issues/8 https://github.com/garritfra/cell/issues/7

Dependency tracking. The bigger smell is in extract_deps — a range like SUM(A1:A1000) literally enumerates 1000 cell positions into the dep graph, with a HashSet per cell on each side. Fine at hundreds of cells, a disaster at hundreds of thousands. Range expansion is one of the bench cases in #7; the proper fix (interval-keyed deps so ranges stay first-class instead of fanning out) doesn't have its own issue yet — I should open one, since #7 only measures the problem.

Undo/redo. This is the worst offender right now. UndoEntry only had a single-cell variant until very recently; #12 added MultiCellEdit, but #13 tracks two destructive paths I missed — visual-mode d and p/P paste — that still don't push undo entries at all. #9 is the broader coalescing story (one dd = one undo, CSV import = one undo, etc.), tied to the batch mechanism from #8 so a single transaction produces a single undo entry. sort_by_column is also non-undoable today and belongs in that bucket.

https://github.com/garritfra/cell/issues/13 https://github.com/garritfra/cell/issues/9

Larger CSVs. Storage is HashMap<CellPos, Cell> — fine sparse but with overhead per cell; for very wide imports a column-oriented or arena layout would pay off. I haven't profiled it though, so this is speculative; the dependency-graph blowup will hurt before raw storage does. #7 includes a 100k-row CSV load case to put numbers on it.

And #10 is the meta-issue to lift all of this out of source comments and into actual architecture docs, which I probably should have done before posting.

https://github.com/garritfra/cell/issues/10

So: nothing here scales today, but the architecture splits cleanly enough that none of it needs a rewrite — AST caching, dirty-set recalc, range-aware deps, and grouped undo are the four threads, and most have issues attached.

Gui can't remember screen to desktop placement across plug unplug replug of screen.

This! Adding it to the list.

GNUnet 0.16 4 years ago

This is a new major release. It breaks protocol compatibility with the 0.15.x versions.

No, it's a minor release. It breaks compatibility, so it should be v1.0.0

It's quite the opposite in fact. BTRFS was pulled INTO the kernel recently. It's seeing massive development and is production-ready.

Why not ZFS?

The main reason for me is its flexibility. Just an example: Expanding BTRFS is just a matter of shoving in arbitrary disks and rebalancing the existing array. ZFS requires you to plug in drives of the same size to properly scale.

I wrote about this some time ago, in case you're interested: https://garrit.xyz/posts/2021-02-07-storage-setup