This is still an early version but I wanted to get some feedback from HN on what could be nice features to add.
Check out the Docs and examples page, it has a ton of (in my humble opinion) cool stuff!
Why did I build this? I was building some estimation for cloud costs in Google Sheets and I quickly ended up with a mess. I realized that if I wanted to analyze how a certain thing changes wrt to multiple variables by plotting it, I had to create a bunch of copies of data and copy my formulas everywhere... a SWE nightmare!
Tenno simplifies this because you can essentially define a function you are interested in, and only the analyzing it using plots that explore various dimensions.
BTW, you can also use Tenno to build dashboards by pulling data from APIs, checkout the weather data example.
That being said, if you want this to be useful for people in general, not just programmers:
- People like WYSIWIG. Markdown and the split-pane view seems to be something only programmers like. So I'd suggest being able to do everything, or mostly everything, directly in the rendered/HTML panel. (Maybe the Markdown panel is for power users only)
- This is great for working with individual calculations, but a lot (most?) of spreadsheet use is about applying formulas to whole rows, columns, and tables of values. I see you support basic tables, but they're a huge pain to encode/format/edit in Markdown, and I don't see any ability to support things like 200 rows x 5 columns and do things like calculate sums and averages
So I think there's a ton of potential here! But I think WYSIWIG and easy tabular data support are going to be key here for broader usage. While the kinds of programmers this seems aimed at now, are already using Jupyter notebooks and Matplotlib for this kind of thing. (Like, when you describe "why did I build this", I don't understand why you didn't just fire up a Google Colab notebook.)
I want to make it such that you can code on the left and then hide everything and share that with non technical folks. That's why I did not use a Colab, creating something interactive with it (and I did that quite a lot in the past) it's a bit of a PITA.
The second problem has had good attempts in the recent years, but no single web application can beat excel in terms of data tables (while not 100% relevant anymore, I really like the super light introduction here from Joel Spolsky: https://www.youtube.com/watch?v=JxBg4sMusIg )
There's also the fact that if this is supposed to become more than a design exploration, it might be useful to focus on what this can do that spreadsheets can't - a WYSIWYG editor for spreadsheets is just a spreadsheet.
And I definitely think there's something good here, and that is not a spreadsheet or a colab notebook. It's worth digging into what that might be.
It's basically a pyramid problem:
1 programmer will program all the things
2 power users will create all the forms from pieces of the programmers documents
999+ will use the output and never care about any of the rest
There's just minimal middle ground, and the only answer is to cater to all three but in Different ways
And a couple recent-ish updates (sadly twitter, because I use it as throw-devlog-there):
- https://x.com/berenguel/status/1837917590804451378?s=46&t=jc...
- https://x.com/berenguel/status/1799770200310726731?s=46&t=jc...
- https://x.com/berenguel/status/1796917242791113118?s=46&t=jc...
I’ve spent some time working on something like this and ended up in a Turing tarpit, I hope you are able to avoid that fate.
The questions I let myself avoid for too long was, who is my user, and what are they trying to accomplish? How technical are they?
Once I answered those (on year 2, after running out of money) I built the same capabilities into a very different offering. Still with the goals of local, live, executable docs, but you wouldn’t recognize it.
Can I ask what you ended up building? Is there a website for it?
Curious what your long term plans are.
I am also curious if it supports taking (entire) tables as inputs and creating derived tables from them which can then be presented as chart etc. That would be really powerful.
I am planning to add support for entire tables, like one coming from a gSheet, and then present data from it. But not there yet, if you have suggestions, please add them to the feedback form https://forms.gle/A8Q8WAG8zj4sLvwQ7
Edit: after seeing this, I kind of wish Jupyter worked with markdown exactly like this. Jupyter's GUI-oriented blocks jammed into my VSCode workspace always felt unnecessarily clunky to me.
For sharing files, it could be as simple as sharing a text file. You can also imagine a future where you create something and you only share the nice looking html view that is still interactive.
Running locally? not a problem, I already tested packaging this into a OSX app and it was like 4MB and has the same functionalities.
Soulver - https://soulver.app
Notepad, meet calculator...
Soulver is a natural language notepad calculator app for the Mac, iPad & iPhone.
It is a better way to work things out than a traditional calculator, and a more lightweight tool for working through problems than a spreadsheet.
Here's an example from a real user:
Here's our launch HN in case you're interested: https://news.ycombinator.com/item?id=28304781
Happy to chat anytime. adam at evidence.dev
(( Tenno is also a Japanese word usually translated as "emperor". ))
https://en.wikipedia.org/wiki/Cambridge_Z88
It had a combined spreadsheet/word processor. No, not as separate modules like Microsoft Works and so on, but like this, as a single program where documents had both functionalities.
deepmacro, before you created Tenno, did you try Org? It supports plain text spreadsheets[1] in Org documents whose content is marked up using Org syntax[2], which is a lightweight markup language like Markdown but with many more features. If you did try Org, how was it lacking?
As the developer of a wiki app of my own, I've been doing block-based (cell-based editors, like Jupyter) editors for literally decades. I've also considered adding calculation capabilities into my CMS so that it becomes a hybrid between a wiki tool and a spreadsheet as well.
Jupyter Notebooks is a nice thing that's got similar capabilities but what the world really needs most is just a simple extension to the Markdown format itself.
So while Tenno may be cool, what's even more important is that the world settle in on a syntax that can embed calculations into markdown. Because the Jupyter file format (although it may be great for what it does) is just too complex for general purpose use in the way Markdown is used.
Another one, the Editable filter is very cool, but every keypress seems to take focus away from the input, making it rather hard to edit a number in practice.
Regardless, I really like this! Of most similar attempts I've seen so far, this seems particularly ergonomic and up my alley. Great job!
See the Use section in https://en.wikipedia.org/wiki/Euro_sign
Anyway, yes the editable thing is a known problem that could be fixed by switching to a view mode rather than an edit mode. The problem right now is caused by keeping in sync the edit field and the code on the left side.
Or maybe it’s bit weird. Do you guys also put something like “ml” in front of numbers? Would it be: “you can buy 10ml of milk for $2”?
That's expensive ass milk.
There is no support for table cell expressions though, without which marking it as Excel is wrong.
There is VS Code extension I use now: https://github.com/cescript/MarkdownFormula
Do you consider adding something like that? Any way to use this locally? Is this going to be FOSS or no?
Also need to find a nice and easy way to deal with local tables, I'll look into the extension you suggested.
<!-- table1 -->
| Date | Amount |
| ---------- | ------ |
| 2024-10-01 | 1 |
| 2023-09-01 | 2 |
| | Amount |
| ----- | ---------------------------- |
| Last | [1](#table1!B1) |
| Total | [3](#SUM(table1!B:table1!B)) |
> gSheetsI am personally not interested in anything beyond my computer.
I am confused about using Excel as a metaphor, and calling things "cells" -- Excel is all about cells and tables, but actually this is just "assigning variables and doing a bit of math inside of :: these blocks :: like a templating language.
Suggestion: just explain it like that to people?
As a feature request, I often have a list of values (in a column) and want to sum them. It'd be nice if I could write it and have it print the sum in the view/wysiwym mode. Eg:
:: 10,000 20,000 5,000 = total_expenses ::
(maybe it could ignore commas too :) )
Cool work, love seeing things in the markdown space!
1.Support export rendered page to other format,e.g. html,pdf,png,svg 2.The above suggestion is about how to sharing with others.So it's good to procide a way to spread,e.g. every documents made can be viewed from a special url,if you want to make this be a platform. 3.Code blocks hightlighting.Suppose someone want to use teno like juptybook to share their research or other things,code highlight is the key for reading experience.
It's not identical to what you're doing, but there's considerable overlap and possibly some food for thought.
[0]https://medium.com/@shijotck/automating-tasks-with-semantic-...
Unexpected Application Error!
Cannot read properties of null (reading 'alternate')
TypeError: Cannot read properties of null (reading 'alternate')
at Uh (https://tenno.app/assets/index-y2OkIpP6.js:38:18238)
Unexpected Application Error!
Unexpected EOF
eval@[native code]
parseChartCommand@https://tenno.app/assets/index-y2OkIpP6.js:114:333
- The editable text fields currently lose focus after each keypress
- Error handling will be a hard nut to crack, but currently if you, say, add "a" to an editable textbox that expects a number, the live component reverts to text
- Minimal support for buttons would add a lot for simple interactive charts - something like:
::button
label="Set x to 5"
x = 5
::
There's something cool here, but I find the custom DSL very counter-intuitive. I'd much rather just type actual TypeScript or even Python than a half-way house.
So I guess while it's cool I think I'd rather just use full Jupyter (especially now it supports Deno)
Still an interesting project & thanks for sharing
And looking further ahead, having a way to authenticate users via Okta etc with the usual gubbins of groups and permissions and personal areas and sharing URLs would no doubt give you uptake in corporate areas.
There are lots of reports and documents that should be this instead of static Word files.
The editable fields within a markdown explainer is really intuitive.
What I'd personally like to see is a better data exploration tab or similar - basically some place that makes it easier to view the cells in use in the doc, and edit them. basically a spreadsheet tab ;)
For Excel + Word I use coda.io. You can also quickly create equations with sliders for variables to satisfy similar needs as Tenno but I haven't tried charting with it yet.
It would be great if it switched to top-bottom instead of left-right layout under certain width and/or aspect ratio.
Is that possible too in Obsidian? Or perhaps it's not useful...
It's pretty convinent
Cool stuff!
It's obviously your project, so you're free to do whatever you want, but if you prefer focusing on read only mode on phones, maybe you could consider a full screen/toggle mode instead (not split whatsoever - neither vertical nor horizontal), that let's you select editing or viewing mode - and it defaults to off / viewing?
(Anyway, great project engineering-wise!)
The problem I have is that once you go beyond a simple thing it becomes messy and you never know what you are dealing with. The way you present things graphically and they way you organize data to perform computations are tangled, making hard to read IMO.
Simple stuff that you do everyday like sorting data and removing duplicates is probably not difficult to implement by an experienced programmer (eg. in python), but excel has it ready for you and it's a 2 click operation that a complete beginner can figure out on their own with no training, no coding skills and no documentation.
It's the same with Matlab, engineers don't pay for access to the m language, they pay for the toolboxes and the thousands of small QoL details in the UI like importing your data with a quick Ctrl+C/Ctrl+V.
Citation needed.