Sheety is een experimenteel project dat spreadsheet-definities (in YAML- of Excel-formaat) compileert naar zelfstandige binaire bestanden met een Terminal User Interface (TUI). Het resultaat is een executable die zonder externe runtime-afhankelijkheden zoals Python of JVM werkt.
De belangrijkste functionaliteiten zijn:
- Interactieve TUI: Een grid van 1000x1000 met muisondersteuning, formulebewerking en live herberekening.
- Hoge snelheid: Door hash-gebaseerde caching is het openen van spreadsheets na de eerste run vrijwel onmiddellijk.
- Brede formuleondersteuning: Meer dan 50 functies zijn geïmplementeerd, waaronder
VLOOKUP, SUM en diverse tekst- en datumfuncties.
- Zelf-herbouwend vermogen: Wijzigingen in de TUI kunnen ervoor zorgen dat het programma zichzelf opnieuw compileert.
- Flexibiliteit: Ondersteunt volledige roundtrip-conversie tussen YAML (ideaal voor versiebeheer via Git) en
.xlsx bestanden.
Het project is geschreven in Crystal en is primair bedoeld voor educatieve doeleinden, plezier, of voor gebruikers die spreadsheets willen distribueren als één enkel binair bestand.
Sheety - Spreadsheets, gecompileerd
Waarschuwing: Dit is experimentele software. Door dit te gebruiken, ga je ermee akkoord dat het compileren van een YAML-bestand naar een binaire spreadsheet waarschijnlijk belachelijk is, maar dat je het toch gaat doen.
Fig. 1 - SHEETY.EXE in zijn natuurlijke habitat
"Sheety is een van die projecten die me direct doen grijnzen omdat het zo glorieus en zinloos over-engineered is, op de best mogelijke manier."
— Grok
Wat is dit eigenlijk?
Sheety compileert spreadsheet-definities (YAML of Excel) naar standalone, interactieve TUI-binaries. Elke spreadsheet wordt een eigen executable met een terminal-gebruikersinterface (TUI).
Ja, echt. We vroegen onszelf af: "wat als spreadsheets gecompileerde binaries waren?" en daarna zijn we gewoon doorgegaan.
Er zijn geen runtime-afhankelijkheden. Geen JVM. Geen Python. Gewoon één binary die je spreadsheet draait met formuleondersteuning, celbewerking en in-process herbouw.
Functies
- Hash-gebaseerde Caching: Slimme content-gebaseerde caching maakt het opnieuw uitvoeren van ongewijzigde spreadsheets ongeveer 400x sneller. Eerste run: ~3 seconden. Volgende runs: ~0,007 seconden (onmiddellijk).
- Formaatondersteuning: Werkt met YAML (vriendelijk voor versiebeheer) en Excel-bestanden (.xlsx). Converteer tussen elk formaat met volledige roundtrip-ondersteuning.
- Terminal UI: Interactieve TUI met een 1000x1000 grid, muisondersteuning, formulebewerking en live herberekening. Navigeren, bewerken, opslaan—alles in je terminal.
- Zelf-herbouwend: Bewerk een formule in de TUI en het programma compileert zichzelf opnieuw vanuit de binary. De binary bouwt de binary opnieuw. Het is binaries tot in de kern.
- Statusbehoud (State Persistence): UUID-gebaseerd statusbeheer dat herbouw overleeft. Het onthoudt de cursorpositie en slaat alle wijzigingen op in je bronbestand.
- Excel-formules: Uitgebreide formuleondersteuning:
SUM, AVERAGE, IF, VLOOKUP, CONCAT, tekstfuncties, datumfuncties en meer. Er zijn meer dan 50 functies geïmplementeerd.
Hoe te gebruiken
Optie 1: Download statische binary (Aanbevolen)
Download een vooraf gebouwde statische binary; er zijn geen afhankelijkheden vereist:
C:\SHEETY> wget https://github.com/ralsina/sheety/releases/latest/download/sheety-static-linux-amd64 -O sheety
C:\SHEETY> chmod +x sheety
C:\SHEETY> ./sheety my_sheet.yaml
Uitvoer: Creating new spreadsheet: my_sheet.yaml Building... Launching TUI... [Press Q to exit]
Ook beschikbaar voor ARM64 (Raspberry Pi, AWS Graviton, etc.)
Optie 2: Bouwen vanuit broncode
C:\SHEETY> git clone https://github.com/ralsina/sheety
C:\SHEETY> cd sheety && shards install && shards build
C:\SHEETY> ./bin/sheety my_sheet.yaml
Converteren tussen formaten
C:\SHEETY> ./sheety data.yaml --save-to=data.xlsx
# Converted: data.yaml -> data.xlsx
C:\SHEETY> ./sheety data.xlsx --save-to=data.yaml
# Converted: data.xlsx -> data.yaml
Spreadsheet Formaat
Definieer je spreadsheet in YAML:
Sheet1:
A1:
value: 100
A2:
value: 200
A3:
formula: "=SUM(A1:A2)"
B1:
value: "Hello"
B2:
formula: "=CONCAT(B1, \" World\")"
Sheet2:
A1:
formula: "=Sheet1!A3*2"
Waarom zou je dit gebruiken?
- Distributie: Verstuur één binary in plaats van een fragiel Excel-bestand met kapotte referenties.
- Versiebeheer: Het YAML-formaat werkt goed samen met git. Geen "binary diff hell" meer.
- Prestaties: Hash-gebaseerde caching zorgt ervoor dat het openen van spreadsheets onmiddellijk gaat.
- Portabiliteit: Eén binary, geen afhankelijkheden, draait overal.
- Nieuwsgierigheid: Je wilt zien hoe spreadsheets onder de motorkap werken.
- Omdat: Waarom YAML niet compileren naar binaries? Wie gaat je tegenhouden?
Formuleondersteuning
- Wiskunde:
SUM, AVERAGE, MIN, MAX, COUNT, COUNTA, MEDIAN, STDEV, VAR, ROUND, POWER, SQRT, MOD, ABS
- Tekst:
CONCAT, LEFT, RIGHT, MID, LEN, UPPER, LOWER, TRIM, FIND, SEARCH, SUBSTITUTE
- Logisch:
IF, AND, OR, NOT, IFS, SWITCH
- Lookup:
VLOOKUP, HLOOKUP, INDEX
- Datum:
TODAY, NOW, YEAR, MONTH, DAY, DATEDIF, EOMONTH
- Voorwaardelijk:
COUNTIF, SUMIF
Status
- [OK] Functies: Formule-parsing, YAML/Excel-ondersteuning, TUI, interactieve bewerking, statusbehoud, in-process herbouw, hash-caching.
- [!!] Experimenteel: Dit is "ik had een vreemd idee en ben ermee doorgegaan" software. Gebruik het voor educatieve doeleinden, voor plezier, of omdat jij ook gecompileerde spreadsheet-binaries wilt.
Eigenlijk, als je de financiële modellen van je kerncentrale draait op gecompileerde spreadsheet-binaries, laat het ons dan a.s. weten. Dat zou een geweldig verhaal zijn.
Bijdragen
Heb je een bug gevonden? Een idee voor een nieuwe functie? PR's zijn welkom! Onthoud alleen: we compileren hier YAML naar binaries. Laten we het vreemd houden.
Gebouwd met Crystal.
Sheety - Spreadsheets, gecompileerd
Waarschuwing: Dit is experimentele software. Door dit te gebruiken, ga je ermee akkoord dat het compileren van een YAML-bestand naar een binaire spreadsheet waarschijnlijk belachelijk is, maar dat je het toch gaat doen.
Fig. 1 - SHEETY.EXE in zijn natuurlijke habitat
"Sheety is een van die projecten die me direct doen grijnzen omdat het zo glorieus en zinloos over-engineered is, op de best mogelijke manier."
— Grok
Wat is dit eigenlijk?
Sheety compileert spreadsheet-definities (YAML of Excel) naar standalone, interactieve TUI-binaries. Elke spreadsheet wordt een eigen executable met een terminal-gebruikersinterface (TUI).
Ja, echt. We vroegen onszelf af: "wat als spreadsheets gecompileerde binaries waren?" en daarna zijn we gewoon doorgegaan.
Er zijn geen runtime-afhankelijkheden. Geen JVM. Geen Python. Gewoon één binary die je spreadsheet draait met formuleondersteuning, celbewerking en in-process herbouw.
Functies
- Hash-gebaseerde Caching: Slimme content-gebaseerde caching maakt het opnieuw uitvoeren van ongewijzigde spreadsheets ongeveer 400x sneller. Eerste run: ~3 seconden. Volgende runs: ~0,007 seconden (onmiddellijk).
- Formaatondersteuning: Werkt met YAML (vriendelijk voor versiebeheer) en Excel-bestanden (.xlsx). Converteer tussen elk formaat met volledige roundtrip-ondersteuning.
- Terminal UI: Interactieve TUI met een 1000x1000 grid, muisondersteuning, formulebewerking en live herberekening. Navigeren, bewerken, opslaan—alles in je terminal.
- Zelf-herbouwend: Bewerk een formule in de TUI en het programma compileert zichzelf opnieuw vanuit de binary. De binary bouwt de binary opnieuw. Het is binaries tot in de kern.
- Statusbehoud (State Persistence): UUID-gebaseerd statusbeheer dat herbouw overleeft. Het onthoudt de cursorpositie en slaat alle wijzigingen op in je bronbestand.
- Excel-formules: Uitgebreide formuleondersteuning:
SUM, AVERAGE, IF, VLOOKUP, CONCAT, tekstfuncties, datumfuncties en meer. Er zijn meer dan 50 functies geïmplementeerd.
Hoe te gebruiken
Optie 1: Download statische binary (Aanbevolen)
Download een vooraf gebouwde statische binary; er zijn geen afhankelijkheden vereist:
C:\SHEETY> wget https://github.com/ralsina/sheety/releases/latest/download/sheety-static-linux-amd64 -O sheety
C:\SHEETY> chmod +x sheety
C:\SHEETY> ./sheety my_sheet.yaml
Uitvoer: Creating new spreadsheet: my_sheet.yaml Building... Launching TUI... [Press Q to exit]
Ook beschikbaar voor ARM64 (Raspberry Pi, AWS Graviton, etc.)
Optie 2: Bouwen vanuit broncode
C:\SHEETY> git clone https://github.com/ralsina/sheety
C:\SHEETY> cd sheety && shards install && shards build
C:\SHEETY> ./bin/sheety my_sheet.yaml
Converteren tussen formaten
C:\SHEETY> ./sheety data.yaml --save-to=data.xlsx
# Converted: data.yaml -> data.xlsx
C:\SHEETY> ./sheety data.xlsx --save-to=data.yaml
# Converted: data.xlsx -> data.yaml
Spreadsheet Formaat
Definieer je spreadsheet in YAML:
Sheet1:
A1:
value: 100
A2:
value: 200
A3:
formula: "=SUM(A1:A2)"
B1:
value: "Hello"
B2:
formula: "=CONCAT(B1, \" World\")"
Sheet2:
A1:
formula: "=Sheet1!A3*2"
Waarom zou je dit gebruiken?
- Distributie: Verstuur één binary in plaats van een fragiel Excel-bestand met kapotte referenties.
- Versiebeheer: Het YAML-formaat werkt goed samen met git. Geen "binary diff hell" meer.
- Prestaties: Hash-gebaseerde caching zorgt ervoor dat het openen van spreadsheets onmiddellijk gaat.
- Portabiliteit: Eén binary, geen afhankelijkheden, draait overal.
- Nieuwsgierigheid: Je wilt zien hoe spreadsheets onder de motorkap werken.
- Omdat: Waarom YAML niet compileren naar binaries? Wie gaat je tegenhouden?
Formuleondersteuning
- Wiskunde:
SUM, AVERAGE, MIN, MAX, COUNT, COUNTA, MEDIAN, STDEV, VAR, ROUND, POWER, SQRT, MOD, ABS
- Tekst:
CONCAT, LEFT, RIGHT, MID, LEN, UPPER, LOWER, TRIM, FIND, SEARCH, SUBSTITUTE
- Logisch:
IF, AND, OR, NOT, IFS, SWITCH
- Lookup:
VLOOKUP, HLOOKUP, INDEX
- Datum:
TODAY, NOW, YEAR, MONTH, DAY, DATEDIF, EOMONTH
- Voorwaardelijk:
COUNTIF, SUMIF
Status
- [OK] Functies: Formule-parsing, YAML/Excel-ondersteuning, TUI, interactieve bewerking, statusbehoud, in-process herbouw, hash-caching.
- [!!] Experimenteel: Dit is "ik had een vreemd idee en ben ermee doorgegaan" software. Gebruik het voor educatieve doeleinden, voor plezier, of omdat jij ook gecompileerde spreadsheet-binaries wilt.
Eigenlijk, als je de financiële modellen van je kerncentrale draait op gecompileerde spreadsheet-binaries, laat het ons dan a.s. weten. Dat zou een geweldig verhaal zijn.
Bijdragen
Heb je een bug gevonden? Een idee voor een nieuwe functie? PR's zijn welkom! Onthoud alleen: we compileren hier YAML naar binaries. Laten we het vreemd houden.
Gebouwd met Crystal.