[HN Gopher] Show HN: Tenno - Markdown and JavaScript = a hybrid ...
___________________________________________________________________
Show HN: Tenno - Markdown and JavaScript = a hybrid of Word and
Excel
Tenno is a web app that lets you create Markdown documents that can
include computational cells. You can think of it as a mix of Word
and Excel, some sort of "literate programming" environment. 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.
Author : deepmacro
Score : 255 points
Date : 2024-10-10 13:15 UTC (9 hours ago)
(HTM) web link (tenno.app)
(TXT) w3m dump (tenno.app)
| perftime wrote:
| Nice! What about integrations with Google sheets?
| macro-b wrote:
| That seems quite doable but it would require a backend to store
| the OAuth
| pdyc wrote:
| Public sheets don't require oauth, i am using public sheet as
| test url to display csv in my tool.
| cjonas wrote:
| Vet cool! I've always wanted something like this in my note
| taking (currently use obsidian), but it being a "webapp" is kinda
| a deal breaker. I want something that runs and stores my data
| locally.
| deepmacro wrote:
| Well it's a web app but it's not using anything in the cloud at
| the moment, I experimented with packaging it in an app for Mac
| and works nice. If more people wanted it this could definitely
| be converted in something running locally where you can store
| .md files in your computer.
| _1tan wrote:
| That would be great!
| deepmacro wrote:
| Good to hear! There is a form to collect feedback, feel
| free to add comments in there! https://docs.google.com/form
| s/d/e/1FAIpQLSf0senRYfIo_034Ukno...
| bshaughn wrote:
| You can do a lot of this in obsidian with the dataview and
| execute-code plugins!
| deepmacro wrote:
| Didn't know about this! Will look into it, one nice thing
| here is that you do not need "ordering" like in imperative
| programming when you define your cells.
|
| Is that possible too in Obsidian? Or perhaps it's not
| useful...
| ulla7653 wrote:
| If you hate spreadsheets this could be your way out of it...
| oulipo wrote:
| Nice idea, could be a lightweight enough way to create some
| visualizations
| deepmacro wrote:
| Yeah, at the moment I only have line charts but I can add other
| charts using ChartJS. I also think it could be useful to share
| some initial prototypes with less technical folks.
| btbuildem wrote:
| Interesting effort.. I'd just spin up a Jupyter Notebook
| instance, but hey.
| deepmacro wrote:
| Right, something that's potentially difficult with Jupyter is
| sharing something that looks nice with non technical folks
| where they can easily change values and see the result change
| immediately without having to execute cells.
| FredPret wrote:
| Very cool. I've always thought there's a lot of untapped
| potential in literate programming [0].
|
| There are lots of reports and documents that should be this
| instead of static Word files.
|
| [0] https://en.wikipedia.org/wiki/Literate_programming
| Ennea wrote:
| Tenno is the name of the faction in the video game Warframe the
| player characters are comprised of. Just want to point that out.
| sickofparadox wrote:
| This was my first thought, probably will make searching stuff
| difficult.
| Ennea wrote:
| Should not be too bad. The two are different enough that you
| can add some sort of context to your search terms, like
| searching for "tenno markdown".
| deepmacro wrote:
| Cool, didn't know that, but I can assure you it's also the name
| of a lake close to where I live
| philipov wrote:
| Make sure to always google a name you want to use before
| using it, to make sure you're not going to get clobbered by
| someone else's dominant SEO on the word.
| deepmacro wrote:
| Actually I did some very simple search and most results
| were about my local lake, so I figured that the context was
| different enough, we'll see.
| jsnell wrote:
| That's personalized search results for you :) That lake
| would not be ranking high for anyone except the people in
| the vicinity.
| layer8 wrote:
| It's also the Japanese Emperor.
| yodon wrote:
| You might be interested in the Handlebars integration[0]
| Microsoft recently added to their SemanticKernel AI SDK.
|
| 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-...
| jnordwick wrote:
| Sounds similar to emacs org mode where you have markup and tables
| can have Elisp formulas in them.
| subsection1h wrote:
| Yeah, that's what I was thinking.
|
| 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?
|
| [1] https://orgmode.org/manual/The-Spreadsheet.html
|
| [2] https://orgmode.org/worg/org-syntax.html
| pdyc wrote:
| i do my taxes with org spreadsheet i doubt it lacks and you
| also have the option to get output in html/pdf etc. with
| babel.
| deepmacro wrote:
| Honestly, no. I heard of it but I never used it. I am sure it
| has a lot of features that can inspire Tenno, I'll look more
| into it. One of the main points here was making it more
| approachable, but it depends on who the audience is.
| james_marks wrote:
| Really nice job, the emphasis on local+live execution is much
| appreciated.
|
| 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.
| deepmacro wrote:
| Thanks! That's why I posted this here to see if people would
| resonate with this or not... I've only worked a couple of weeks
| on this and I had the same questions!
|
| Can I ask what you ended up building? Is there a website for
| it?
| robertlagrant wrote:
| I can imagine having a secrets store whose contents can be
| embedded into API calls, either in the URL or in a header, would
| be pretty useful.
|
| 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.
| pzmarzly wrote:
| I opened the docs page, tried editing one of the examples, the
| page immediately crashed. You may be interested in setting up
| some error boundaries between your components.
| 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)
| deepmacro wrote:
| Right, I did not put a lot of checks in place for such
| failures. Does it keep happen if you refresh? I've never seen
| it TBH https://tenno.app/docs
| pzmarzly wrote:
| Yup, still happens. The easiest way to reproduce it to change
| a title of one of the charts to `title=""` (make sure to type
| it, not copy-paste). I'm using Safari for macOS if this makes
| a difference. Unexpected Application Error!
| Unexpected EOF eval@[native code] parseChartC
| ommand@https://tenno.app/assets/index-y2OkIpP6.js:114:333
| deepmacro wrote:
| Ah, yes, I just fixed that. While you edit, if the code is
| not valid now it will prevent from crashing the whole thing
| (band-aid fix).
| vb-8448 wrote:
| How did it compare with https://observablehq.com/ ?
| deepmacro wrote:
| I'd have to look more into it, one thing for sure is that Tenno
| does not try to be something like Jupyter. The cells execution
| order is sorted out for you.
| buremba wrote:
| Observable also handles the execution order for you.
| cscheid wrote:
| Specifically, this brings to mind Observable Framework, which
| takes the "jupyter-like" UI of observablehq.com and makes a
| static site generator out of it, where you write Markdown,
| and add "reactive Javascript" bits to it:
| https://observablehq.com/framework/. (see
| https://observablehq.com/framework/javascript specifically)
| mbo wrote:
| Note that there's nothing stopping you from embedding the
| Obervable runtime straight into scripts littered throughout
| a HTML document, see https://maxbo.me/celine/ (my own
| work).
| niek_pas wrote:
| I wanted to check this out on my phone, but it is unfortunately
| impossible to even read the text on the page or look at the
| examples.
| deepmacro wrote:
| Yes, a responsive layout it's something I'll tackle in the
| future, but I think that in 90% of use cases people should use
| this on a laptop. Check it out again on a laptop if you can!
| brospars wrote:
| Great demo, reminds me a lot of Jupyter Notebook but the "inline"
| cells are so much better
| tgv wrote:
| Excel, but linear, without the reference mess. It looks cool for
| mocking up dashboards. Some form of grid with nested documents
| could make it more useful.
| deepmacro wrote:
| +1 this! I think writing helps you create a narrative that
| disambiguates the mess you can create in Excel. It also forces
| you to think more about what you do. Good suggestions! Thanks
| tgv wrote:
| Easy on the features, though. If you make it too complex, it
| can lose its (fairly) unique proposition of simplicity.
| hello_computer wrote:
| It would be helpful to have a built-in bignum type. Excel's usage
| of float is performant, but it is also a mistake. A complex
| number type would also be nice to have.
| gregwebs wrote:
| Neat little tool. I was looking for Excel in the examples but
| only saw charts.
|
| 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.
| yawnxyz wrote:
| Reminds me of Ink and Switch's Potluck:
| https://github.com/inkandswitch/potluck but this has way better
| DX / is way easier to use
| fenomas wrote:
| Very cool! A couple first-blush bits of feedback:
|
| - 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 ::
| chaosprint wrote:
| interesting idea. try to understand the dsl for the chart but the
| doc is not very detailed
| Sauravsingh6 wrote:
| Thank you for sharing Tenno with the HN community! It's always
| exciting to see new tools that enhance productivity and bridge
| the gap between document creation and computational analysis.
| dartos wrote:
| The lotus will be pleased.
| lf-non wrote:
| This is a great concept. I'd love for this to be a part of a
| notetaking solution that I can run locally.
|
| 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.
| deepmacro wrote:
| I was trying to get a sense of what people like and find
| useful. Your suggestions and comments are helping to figure
| that out.
|
| 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
| masterj wrote:
| It would be cool if you could run SQL queries against lcoal
| SQLite or DuckDB instances and generate tables
| bhl wrote:
| Was looking into local DuckDB notebooks and found this:
| https://www.duckbook.ai/
| majkinetor wrote:
| Very nice.
|
| 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?
| deepmacro wrote:
| Thanks! Yeah, I kind of want to integrate with gSheets so you
| can have a place where you can dump the data and then operate
| on it.
|
| Also need to find a nice and easy way to deal with local
| tables, I'll look into the extension you suggested.
| majkinetor wrote:
| The extension allows you to add calculation even between
| tables by naming them in the comment: <!--
| table1 --> | Date | Amount | |
| ---------- | ------ | | 2024-10-01 | 1 |
| | 2023-09-01 | 2 | | |
| Amount | | ----- |
| ---------------------------- | | Last |
| [1](#table1!B1) | | Total |
| [3](#SUM(table1!B:table1!B)) |
|
| > gSheets
|
| I am personally not interested in anything beyond my
| computer.
| cole_ wrote:
| Reminds me of https://evidence.dev/
| deepmacro wrote:
| nice I did not know about this, thanks for sharing!
| pragma_x wrote:
| I'm not knocking it. At first glance this reminds me of a
| notebook like Jupyter. Was that an inspiration here? Also, how
| would you say this stacks up in terms of sharing these files
| and/or running them locally? Thanks.
|
| 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.
| deepmacro wrote:
| The idea was to have a more linear way to express your thoughts
| and adding calculations. Another big problem for me was that in
| excel when you want to create various plots for the same multi-
| variate problem you have to create a ton of copies of your data
| and formula.
|
| 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.
| Terretta wrote:
| Check this out:
|
| 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:
|
| https://x.com/hisaac/status/1355720844929019909
| deepmacro wrote:
| Nice, I saw this years ago!
| hiergiltdiestfu wrote:
| The company security team at my workplace is blocking tenno.app
| as grayware :D
| deepmacro wrote:
| It can execute arbitrary JS in your browser using eval(), that
| could be why.
| anthk wrote:
| Ah, like a reduced version of Org-Mode.
| jnordwick wrote:
| I hate to be that guy: Org mode did it.
|
| (actually, I love pimping emacs)
| skrebbel wrote:
| Nice! _mad_ nitpick, I feel like the Euro display filter is
| weird, as it renders "12.25EUR" whereas I'd expect a Euro value
| to be displayed "EUR12.25". I've never seen it with the euro sign
| at the end in my life! Maybe this is country-dependent?
|
| 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!
| cocoflunchy wrote:
| What country are you from? In France it's always at the end for
| example
| deepmacro wrote:
| In Italy it's at the end, hence my interpretation
| x3ro wrote:
| Same in Germany. Definitely at the end here.
| MrQuincle wrote:
| In the Netherlands it is a prefix, at the beginning.
|
| https://nl.m.wikipedia.org/wiki/Euroteken
| deepmacro wrote:
| Thanks! I was always told the dollar is a prefix unit while the
| euro is not, but perhaps between european countries there are
| differences in that...
|
| 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.
| devjab wrote:
| The dollar sign isn't a prefix in many EU countries. It's so
| weird to learn that currencies go first. Then again, I still
| don't understand a single American measurement either so why
| wouldn't it be weird? Seriously, I have no idea what a mile
| or a feet is. I've learned from time to time when I needed
| to, but I always forget again because it's just not making
| any sense to me.
|
| 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"?
| aejfghalsgjbae wrote:
| LOL, Americans don't do ml. It would be 1/8 fluid wainscot
| of milk or something.
| HideousKojima wrote:
| I realize making fun of the imperial measurement system
| is a great internet pastime, but almost everything in
| America has measurements in both imperial and metric on
| the packaging. The can of soda I'm looking at says 12 fl
| oz, and then in parentheses it says 355 ml.
| indymike wrote:
| How many hot dogs is that?
| Kydlaw wrote:
| Concerning the currency symbol positioning, yes, it is indeed
| country-dependent. Countries of the Commonwealth usually place
| the currency sign in front of the figure, but most european do
| not, and instead place the symbol after the figure.
|
| See the Use section in https://en.wikipedia.org/wiki/Euro_sign
| tdba wrote:
| Very cool! I'm working on something similar but a little more
| wysiwyg and collaborative (think gdocs meets gsheets rather than
| word meets excel). Let me know if you want to chat - email in
| profile
| hyperbrainer wrote:
| Org mode in JS?
| RBerenguel wrote:
| I've been writing something similar that keeps evolving, although
| computable code blocks and markdown have been in there since v1.
| Runs locally, saves to LocalStorage and is always in a partially
| broken state because I add more things than those I fix:
| https://github.com/rberenguel/weave
|
| 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...
| deepmacro wrote:
| Nice work!
| Remnant44 wrote:
| First of all, I love this concept!
|
| 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 ;)
| DonnyV wrote:
| Yeah, I think using the same concept you did for the charts,
| use that for the tabular info. I can imagine using those dash's
| and bars would eventually get annoying to create a decent size
| table.
| buremba wrote:
| I think this would be great as an evolution of MDX
| (https://mdxjs.com/). MDX is already pretty popular for
| documentation and it plays well with React but unfortunately
| there is no framework that adds interactivity to MDX which will
| enable use cases like data applications.
| seanw444 wrote:
| Thank God for all these banners. Without them, the wars would
| probably still be going! Oh wait...
| mads_quist wrote:
| Sorry, but Excel is so great and the most loved software in the
| world because every user intuitively understands that the cells
| can be edited "right where they are". The markdown abstraction is
| nice, and probably has many usecases, but it's just not a hybrid
| of Word and Excel because it introduces an abstract language to
| describe cells and words.
|
| (Anyway, great project engineering-wise!)
| emaro wrote:
| > Excel is [...] the most loved software
|
| Citation needed.
| deepmacro wrote:
| I think having to use a tool different than excel is hard
| because people have been used to that type of UI for 40 years.
|
| 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.
| gavinray wrote:
| Absolutely brilliant. Bookmarked.
| deepmacro wrote:
| Glad you like, I'll keep you posted for new updates in case
| you're interested.
| ffsm8 wrote:
| You might want to add a horizontal split mode and use that by
| default depending on the resolution of the device
| (phones/tablets)
| deepmacro wrote:
| Good idea, thanks, I'd also like to prevent edit mode on mobile
| so one can only see the HTML rendered part.
| daft_pink wrote:
| This seems really cool although I'm not sure that I would call
| that a cell
| deepmacro wrote:
| I was hesitant to call it a variable because most people that
| only use excel are not going to be familiar with that concept.
| Suggestion for other names?
| crazygringo wrote:
| I love the idea of finding new and better interfaces for
| spreadsheets, and I applaud this effort!
|
| 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.)
| deepmacro wrote:
| Tables are something I want to tackle and I'd like to do them
| right because (as you point out) are crucial. I didn't get
| there yet...
|
| 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.
| dotancohen wrote:
| I highly suggest that you look at both Org mode table
| formats, one of them almost certainly has much of the UI and
| features you are targeting.
| tupolev wrote:
| to your first point i think its a good idea to offer both if
| possible. Like hide the code behind an interface wysiwig-style
| but give users the option to also edit the code directly if
| they want to
| cyanydeez wrote:
| These are basically block editors. The problem is more,
| regular users just arnt going to be doing it period.
|
| 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
| dotancohen wrote:
| The large tables issue might be solvable with Emacs. Org mode
| had two table formats, one of which is a veritable spreadsheet.
| It's all text under the hood, but Emacs (at least with Evil)
| provides a easy interface to create and populate rows, columns,
| and cells.
| perpil wrote:
| Neat, you might also look at https://speedrun.cc for ideas. It's
| a slightly different space, it's markdown to wrap tools with UI's
| instead of to plot things, but the way I enable you to prompt the
| user and run little bits of javascript might be of interest to
| you.
| vid wrote:
| I did another take on this, that extends Markdown links to
| include types (like triples, like Semantic Mediawiki) called
| "mdld". It's quite powerful but I left it at a good-enough stage
| for my uses. https://github.com/vid/mdld
| nunobrito wrote:
| A beautiful concept. Thank you for sharing.
| BenFranklin100 wrote:
| Can this run locally?
| jhbadger wrote:
| Reminds me of the "Pipedream" package on the old Cambridge Z88
| laptop
|
| 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.
___________________________________________________________________
(page generated 2024-10-10 23:00 UTC)