Cool. One thing I found odd was that on export there are two listed formats. "ASCII" and "ASCII extended" but as far as I can tell, the ASCII version is actually outputting UTF-8. It's hard to tell for sure though because the output is just text that you can cut and paste and so it's difficult to know what conversions the browser or OS might be doing behind the scenes. But when I paste it into a text editor on my mac, it's definitely UTF-8, not ASCII encoded.
Which is probably more useful anyway given that if it really outputted ASCII encoded line drawing characters, you'd end up with gibberish on a system that assumed UTF-8 encoding.
that would be completely correct... sorry. the export options now read "ASCII Basic" and "ASCII Extended", and "Basic" generates plus signs for corners, as of now. I feel like the behavior might have changed. Extended option seem to use 0xE294xx range for lines.
Firefox on Linux: I just copied and pasted into emacs and did a M-x describe-char and got 0xE29480 which is definitely not ASCII: https://www.compart.com/en/unicode/U+2500
Also confirmed with hexl-mode (hex editor in emacs)
Disclaimer, I just pulled this quote from Google ai which probably took it from somewhere else, but I just wanted to provide a little context. ASCII encoded text is also valid utf8.
> The first 128 characters of Unicode, which are the same as the ASCII character set (characters 0-127), are encoded in UTF-8 using a single byte with the exact same binary value as their ASCII representation. This means that any file containing only ASCII characters is also a valid UTF-8 file
Yes, but the box drawing characters in "ASCII" are all above 127 so they don't encode the same way. So that last AI generated sentence is basically false (or really misleading): ASCII files that consist only of characters in the lower 127 will also be valid UTF-8. But ASCII files that use characters above 127 will not be valid UTF-8.
Now, technically, ASCII only concerns the lower 127 characters. There's no single standard definition as to what the upper half of the byte space represents in ASCII itself so technically it's true that all valid ASCII files are valid UTF-8. By the same logic however, the box drawing characters are not ASCII. They're actually part of something called code page 437, which maps those bit patterns to box drawing characters. With other code pages they map to something else, often non-Latin characters or ones with accents.
So, the name ASCII flow is misleading and the the output options are too. ;-)
Basically, if the high bit is set in UTF-8 it indicates that more than one byte is needed to represent the code point.
Granted, all of that is true, but GP specifically differentiated between ASCII and ASCII Extended, then GP went on to say that after choosing the ASCII option and pasting the text in a text editor on Mac it was reported as UTF-8, which I was pointing out would be true because if the ASCII option is chosen as opposed to the ASCII Extended option then what he ends up with (ASCII) is valid UTF-8 as reported by the text editor.
Indeed, UTF-8 "was designed for backward compatibility with ASCII: the first 128 characters of Unicode, which correspond one-to-one with ASCII, are encoded using a single byte with the same binary value as ASCII, so that a UTF-8-encoded file using only those characters is identical to an ASCII file."
There are lots of similar projects to this that made top HN the past week. Is there a list of it? I was not logged in and I lost history but the previous one I just saw earlier today was quite nice, too!
Edit: Oh apparently it was "Monodraw". There was yet another one besides that. I am all up for such tools. What was the name of the one that allowed you to specify the diagrams using some custom DSL which in turn would generate the diagrams themselves?
Are there no-mouse alternatives? I hate drawing lines and boxes using mouse and I wish there was a way to write the "structure" and have it generate the ASCII art for that.
Cool concept, but I couldn't get everything to work; namely the "Select & Move" on individual boxes or lines. The select area and move did work, though.
It works for me, but differently than I first thought. You don't select and move line shapes as a whole, but only segments in a perpendicular direction
While True, I believe the reason Monodraw doesn't expand is because the ASCII / TUI tooling economy is not rewarding. There are few users and even fewer customers who are willing to pay for ASCII/TUI tools.
We dive into the long tail quickly. I would be very surprised if Monodraw make more than 1M a year. At that revenue, it's going to be hard to expand into a multi-platform / web strategy (especially if your existing product is platform-locked).
Cool. One thing I found odd was that on export there are two listed formats. "ASCII" and "ASCII extended" but as far as I can tell, the ASCII version is actually outputting UTF-8. It's hard to tell for sure though because the output is just text that you can cut and paste and so it's difficult to know what conversions the browser or OS might be doing behind the scenes. But when I paste it into a text editor on my mac, it's definitely UTF-8, not ASCII encoded.
Which is probably more useful anyway given that if it really outputted ASCII encoded line drawing characters, you'd end up with gibberish on a system that assumed UTF-8 encoding.
20 20 78 78 78 ... Looks ASCII to me, Firefox on Windows. Could be OS.
" xxx"? That's the same in ASCII and UTF-8.
OP is asking what are the line-drawing characters encoded as e.g: "┌" and "┐".
Since the charset returned by the app is UTF-8, these will be interpreted and encoded as UTF-8 and not whatever "ASCII - Extended" means.
that would be completely correct... sorry. the export options now read "ASCII Basic" and "ASCII Extended", and "Basic" generates plus signs for corners, as of now. I feel like the behavior might have changed. Extended option seem to use 0xE294xx range for lines.
1: https://gist.github.com/numpad0/7880ad1e3ed32b91d1ccf9c3374f...
Firefox on Linux: I just copied and pasted into emacs and did a M-x describe-char and got 0xE29480 which is definitely not ASCII: https://www.compart.com/en/unicode/U+2500
Also confirmed with hexl-mode (hex editor in emacs)
Disclaimer, I just pulled this quote from Google ai which probably took it from somewhere else, but I just wanted to provide a little context. ASCII encoded text is also valid utf8.
> The first 128 characters of Unicode, which are the same as the ASCII character set (characters 0-127), are encoded in UTF-8 using a single byte with the exact same binary value as their ASCII representation. This means that any file containing only ASCII characters is also a valid UTF-8 file
Yes, but the box drawing characters in "ASCII" are all above 127 so they don't encode the same way. So that last AI generated sentence is basically false (or really misleading): ASCII files that consist only of characters in the lower 127 will also be valid UTF-8. But ASCII files that use characters above 127 will not be valid UTF-8.
Now, technically, ASCII only concerns the lower 127 characters. There's no single standard definition as to what the upper half of the byte space represents in ASCII itself so technically it's true that all valid ASCII files are valid UTF-8. By the same logic however, the box drawing characters are not ASCII. They're actually part of something called code page 437, which maps those bit patterns to box drawing characters. With other code pages they map to something else, often non-Latin characters or ones with accents.
So, the name ASCII flow is misleading and the the output options are too. ;-) Basically, if the high bit is set in UTF-8 it indicates that more than one byte is needed to represent the code point.
Granted, all of that is true, but GP specifically differentiated between ASCII and ASCII Extended, then GP went on to say that after choosing the ASCII option and pasting the text in a text editor on Mac it was reported as UTF-8, which I was pointing out would be true because if the ASCII option is chosen as opposed to the ASCII Extended option then what he ends up with (ASCII) is valid UTF-8 as reported by the text editor.
Indeed, UTF-8 "was designed for backward compatibility with ASCII: the first 128 characters of Unicode, which correspond one-to-one with ASCII, are encoded using a single byte with the same binary value as ASCII, so that a UTF-8-encoded file using only those characters is identical to an ASCII file."
https://en.wikipedia.org/wiki/UTF-8
There are lots of similar projects to this that made top HN the past week. Is there a list of it? I was not logged in and I lost history but the previous one I just saw earlier today was quite nice, too!
Edit: Oh apparently it was "Monodraw". There was yet another one besides that. I am all up for such tools. What was the name of the one that allowed you to specify the diagrams using some custom DSL which in turn would generate the diagrams themselves?
> What was the name of the one that allowed you to specify the diagrams using some custom DSL which in turn would generate the diagrams themselves?
I think the recent one on HN that meets that description was D2 (https://d2lang.com/), though that description fits a lot of tools.
Yes, it was D2! Thank you a lot!
Note to self: IIRC author said I can do it locally from browser now, should work without connectivity.
MermaidJS, Graphviz or PlantUML, perhaps?
It was https://d2lang.com/, but I am favoriting this thread.
Thanks, I did not know about this one. Reminiscent of https://diagrams.mingrammer.com
Nice! Another tool that may come in handy. :)
Are there no-mouse alternatives? I hate drawing lines and boxes using mouse and I wish there was a way to write the "structure" and have it generate the ASCII art for that.
It was on HN recently, the open source text-to-diagram tool d2 just launched an ascii output mode: https://d2lang.com/blog/ascii/
This is really close to what I wanted, thanks!
Mermaid is great for this, though the output will be an image, not ASCII.
https://mermaid.js.org
>I wish there was a way to write the "structure" and have it generate the ASCII art for that.
How would what it generates be any different than what you wrote?
He doesn't want to click and drag with his mouse. Instead he wants an input box that lets him say "make a box [30] columns wide and [4] rows tall".
Yes, exactly! Either in natural language or some DSL.
graph-easy? It doesn't give you a lot of control though
Cool concept, but I couldn't get everything to work; namely the "Select & Move" on individual boxes or lines. The select area and move did work, though.
It works for me, but differently than I first thought. You don't select and move line shapes as a whole, but only segments in a perpendicular direction
Reminds me of an old program I had on Mac: Monospace. Loved that program.
Why is it blurry? If there is one thing I'd expect to be fast and sharp it's an ascii editor.
Doesn’t open in some regions because of Cloudflare.
https://monodraw.helftone.com/
But now on web!
I think monodraw is way better and at a one time price of $10, it's really is a fantastic piece of software.
too bad it's only for a not fantastic piece of OS
While True, I believe the reason Monodraw doesn't expand is because the ASCII / TUI tooling economy is not rewarding. There are few users and even fewer customers who are willing to pay for ASCII/TUI tools.
If you look at tooling companies annual revenue
- Atlassian: 1.4B - Jetbrains: 400M - Vercel: 100M - Supabase: 16M - Prisma: 10M (maybe?)
We dive into the long tail quickly. I would be very surprised if Monodraw make more than 1M a year. At that revenue, it's going to be hard to expand into a multi-platform / web strategy (especially if your existing product is platform-locked).
Some previous discussions:
2022: https://news.ycombinator.com/item?id=30273299
2021: https://news.ycombinator.com/item?id=27536253
2018: https://news.ycombinator.com/item?id=16051428
2014: https://news.ycombinator.com/item?id=7085133