frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

VisiCalc Reconstructed

https://zserge.com/posts/visicalc/
61•ingve•3d ago

Comments

bonsai_spool•1h ago
Are there good command-line interfaces for spreadsheets? I don't do anything super financially-important and I'd prefer to stay in the terminal for quick editing of things, especially if I can have Vi keybindings.
rauli_•1h ago
I actually created one for some time ago. It's nothing special but it has Vi keybindings.

https://github.com/RauliL/levite

vslira•1h ago
This is brilliant! Thank you for creating it
chungy•1h ago
Emacs with org-mode and evil-mode seems to be up your alley.
zie•55m ago
There is SC and now sc-im: https://github.com/andmarti1424/sc-im

You can also literally run Lotus 123 if you want. Someone has binaries to make it work on linux. or under dosemu

freedomben•46m ago
Neat, thank you! sc-im looks amazing, and it's even in the Fedora repos (though the repo version doesn't support xlsx, so I'll compile myself and try it out)

Edit: Quite painless! Opened some test xlsx files without issue. Did get a stack trace on a very complicated one, so when I have time I'll try and dig in deeper. Added a doc to the wiki in case it's helpful to other: https://github.com/andmarti1424/sc-im/wiki/Building-sc%E2%80...

0x20cowboy•52m ago
sc has been around for quite a while: https://github.com/robrohan/sc there are several versions floating around.
freedomben•50m ago
Oh man, a TUI spreadsheet application that can edit ODF or XLSX format would be absolutely killer. Would love to hear if anyone knows of such a tool
airstrike•41m ago
Pretty sure I can build one based on code I already have. If others are interested in this, please let me know and I'll bang it out in the next couple of weeks.
f1shy•10m ago
I would be interested! Clixel
segmondy•37m ago
vibe one. ;-)
hunter4309•12m ago
Visidata[0] is a killer data swiss army knife. It's even inspired off Visicalc

[0] https://www.visidata.org/

afandian•1h ago
Quote:

  #define MAXIN 128  // max cell input length
  enum { EMPTY, NUM, LABEL, FORMULA };  // cell types
  struct cell {
    int type;
    float val;
    char text[MAXIN];  // raw user input
  };
  #define NCOL 26    // max number of columns (A..Z)
  #define NROW 50    // max number of rows
  struct grid {
    struct cell cells[NCOL][NROW];
  };
I doubt that 171 KB of static allocation would fly on an Apple II! I do wonder how they did memory allocation, it must have been tricky with all the fragmentation.
vidarh•55m ago
According to Bob Frankston, Bricklin's co-founder[1]:

> The basic approach was to allocate memory into fixed chunks so that we wouldn't have a problem with the kind of breakage that occurs with irregular allocation. Deallocating a cell freed up 100% of its storage. Thus a given spreadsheet would take up the same amount of space no matter how it was created. I presumed that the spreadsheet would normally be compact and in the upper left (low number rows and cells) so used a vector of rows vectors. The chunks were also called cells so I had to be careful about terminology to avoid confusion. Internally the term "cell" always meant storage cell. These cells were allocated from one direction and the vectors from the other. When they collided the program reorganized the storage. It had to do this in place since there was no room left at that point -- after all that's why we had to do the reorganization.

> The actual representation was variable length with each element prefixed by a varying length type indicator. In order to avoid having most code parse the formula the last by was marked $ff (or 0xff in today's representation). It turned out that valid cell references at the edges of the sheet looked like this and created some interesting bugs.

It leaves out a lot of details - if you're skimping enough you could allocate variable length row vectors, but it seems they wanted to avoid variable length allocations, in which case you could start with a 255 byte array pointing to which subsequent equal-sized chunk represents each in-use row. You'd need at most 126 bytes per row in actual use to point into the chunks representing the cell contents. But this is just guesses.

[1] https://www.landley.net/history/mirror/apple2/implementingvi... and https://news.ycombinator.com/item?id=34303825

tracker1•1h ago
Kinda cool to see... TBH, I'd be more inclined to reach for Rust and Ratatui myslf over C + ncurses. I know this would likely be a much larger executable though.

With MS Edit resurrected similarly, I wonder how hard it would be to get a flushed out text based spreadsheet closer in function to MS Excel or Lotus 123 versions for DOS, but cross platform. Maybe even able to load/save a few different formats from CSV/TSV to XLSX (without OLE/COM embeds).

airstrike•42m ago
> Maintaining a dependency graph would give us the most efficient updates, but it’s often an overkill for a spreadsheet.

It's not overkill at all. In fact, it's absolutely necessary for all but the simplest toy examples.

OliverM•13m ago
Isn’t the existence & success of visicalc a direct counter to this?
airstrike•10m ago
[delayed]
breadsniffer•35m ago
Anyone know what kind of departments/parts of business were the first adopters of visicalc?
SoftTalker•10m ago
All kinds of operational departments. I'm sure it was used for accounting, payroll and commissions, inventory tracking, I know that teachers used it for gradebooks as I helped set them up when I was in high school (early 1980s).

Pretty much anything that you used to do on paper with a columnar notebook or anything that could be represented in tabular form could probably be implemented in VisiCalc, Lotus 123, and others. Spreadsheets are probably the most successful software application that was ever invented. Certainly one of the most.

TMWNN•5m ago
Accountants, and individuals within all kinds of businesses (what we today would call shadow IT). Imagine something like this:

* Person who deals with numbers all day goes to a computer store to browse.

* He sees VisiCalc, and immediately understands what it can do. It *blows his mind*.

* He wants to buy it right away. Pays for $2000 Apple II computer with disk drives to run $100 software; price is no object.

* Shows friends and colleagues.

* They rush to computer store. Repeat.

khazhoux•17m ago
I’m genuinely worried that we’re the last generation who will study and appreciate this craft. Because now a kid learning to program will just say “Write me a terminal spreadsheet app in plain C.”
ivanpribec•15m ago
Reminds me of spreadsheet-fortran (https://github.com/lwsinclair/spreadsheet-fortran), a project creating a VisiCalc lookalike in FORTRAN 66, which even runs on a PDP-11.
airstrike•8m ago
[delayed]

MacBook M5 Pro and Qwen3.5 = Local AI Security System

https://www.sharpai.org/benchmark/
23•aegis_camera•39m ago•21 comments

VisiCalc Reconstructed

https://zserge.com/posts/visicalc/
61•ingve•3d ago•23 comments

ArXiv declares independence from Cornell

https://www.science.org/content/article/arxiv-pioneering-preprint-server-declares-independence-co...
613•bookstore-romeo•12h ago•202 comments

Launch HN: Sitefire (YC W26) – Automating actions to improve AI visibility

5•vincko•15m ago•3 comments

France's aircraft carrier located in real time by Le Monde through fitness app

https://www.lemonde.fr/en/international/article/2026/03/20/stravaleaks-france-s-aircraft-carrier-...
74•MrDresden•4h ago•89 comments

Parallel Perl – autoparallelizing interpreter with JIT

https://perl.petamem.com/gpw2026/perl-mit-ai-gpw2026.html#/4/1/1
29•bmn__•2d ago•6 comments

The Los Angeles Aqueduct Is Wild

https://practical.engineering/blog/2026/3/17/the-los-angeles-aqueduct-is-wild
129•michaefe•2d ago•63 comments

Entso-E final report on Iberian 2025 blackout

https://www.entsoe.eu/publications/blackout/28-april-2025-iberian-blackout/
129•Rygian•6h ago•34 comments

The Social Smolnet

https://ploum.net/2026-03-20-social-smolnet.html
53•aebtebeten•4h ago•4 comments

Video Encoding and Decoding with Vulkan Compute Shaders in FFmpeg

https://www.khronos.org/blog/video-encoding-and-decoding-with-vulkan-compute-shaders-in-ffmpeg
98•y1n0•3d ago•35 comments

HP realizes that mandatory 15-minute support call wait times isn't good support

https://arstechnica.com/gadgets/2025/02/misguided-hp-customer-support-approach-included-forced-15...
211•felineflock•3h ago•130 comments

Super Micro Shares Plunge 25% After Co-Founder Charged in $2.5B Smuggling Plot

https://www.forbes.com/sites/tylerroush/2026/03/20/super-micro-shares-plunge-25-after-co-founder-...
110•pera•2h ago•41 comments

Flash-KMeans: Fast and Memory-Efficient Exact K-Means

https://arxiv.org/abs/2603.09229
129•matt_d•3d ago•10 comments

90% of crypto's Illinois primary spending failed to achieve its objective

https://www.mollywhite.net/micro/entry/202603172318
25•speckx•47m ago•10 comments

Regex Blaster

https://mdp.github.io/regex-blaster/
77•mdp•2d ago•33 comments

Just Put It on a Map

https://progressandpoverty.substack.com/p/just-put-it-on-a-map
87•surprisetalk•4d ago•39 comments

The Soul of a Pedicab Driver

https://www.sheldonbrown.com/pedicab.html
102•haritha-j•7h ago•28 comments

Having Kids (2019)

https://paulgraham.com/kids.html
84•Anon84•2h ago•126 comments

Exploring 8 Shaft Weaving

https://slab.org/2026/03/11/exploring-8-shaft-weaving/
24•surprisetalk•4h ago•1 comments

Delve – Fake Compliance as a Service

https://deepdelver.substack.com/p/delve-fake-compliance-as-a-service
80•freddykruger•22h ago•26 comments

Drawvg Filter for FFmpeg

https://ayosec.github.io/ffmpeg-drawvg/
150•nolta•3d ago•25 comments

Oregon school cell phone ban: 'Engaged students, joyful teachers'

https://portlandtribune.com/2026/03/18/oregon-school-cell-phone-ban-engaged-students-joyful-teach...
163•nxobject•1h ago•116 comments

Full Disclosure: A Third (and Fourth) Azure Sign-In Log Bypass Found

https://trustedsec.com/blog/full-disclosure-a-third-and-fourth-azure-sign-in-log-bypass-found
251•nyxgeek•16h ago•77 comments

Drugwars for the TI-82/83/83 Calculators (2011)

https://gist.github.com/mattmanning/1002653/b7a1e88479a10eaae3bd5298b8b2c86e16fb4404
236•robotnikman•16h ago•69 comments

Building a Reader for the Smallest Hard Drive

https://www.willwhang.dev/Reading-MK4001MTD/
83•voctor•4d ago•25 comments

Java is fast, code might not be

https://jvogel.me/posts/2026/java-is-fast-your-code-might-not-be/
97•siegers•3h ago•95 comments

Show HN: Sonar – A tiny CLI to see and kill whatever's running on localhost

https://github.com/RasKrebs/sonar
84•raskrebs•7h ago•46 comments

Chuck Norris has died

https://variety.com/2026/film/news/chuck-norris-dead-walker-texas-ranger-dies-1236694953/
467•mp3il•3h ago•270 comments

How the Turner twins are mythbusting modern technical apparel

https://www.carryology.com/insights/how-the-turner-twins-are-mythbusting-modern-gear/
310•greedo•2d ago•161 comments

Push events into a running session with channels

https://code.claude.com/docs/en/channels
378•jasonjmcghee•16h ago•226 comments