Monodraw
monodraw.helftone.com
monodraw.helftone.com
However, it still has enough functionality that you can achieve a lot of things. One of my favorites are the anchors. I have even created a small demo/tutorial: https://tamasruss.com/articles/monodraw-anchors
https://github.com/ivank/potygen/blob/main/packages/potygen/...
ASCII is just so versatile and allows you to put nice graphics in places where one does not expect, making things more easily understandable.
I don't agree or disagree with it, so don't argue with me, just trying to explain how people use it today.
However, ASCII is not a random ancient word, it’s a ratified standard. Would be like calling any datetime format “ISO8601”.
The concept of an extended ASCII encoding goes way back: https://en.wikipedia.org/wiki/Extended_ASCII, and UTF-8 is just another extended ASCII encoding, albeit a very clever one, with a lot of codepoints.
But when you combine units of language the result is not just the sum of the parts. word1 means X and word2 means Y but established phrase "word1 word2" rarely means X + Y. The result relates to X and Y but it has a life of its own that depends on how it's used.
Think of these and how they are more than sum of their parts. Demo scene. Serverless. Skyscraper. Information security. Artificial intelligence. Drawing board.
Even so, ask around and you'll find debates about which ASCII standard is the "right" and "true" one. Some argue only the initial standard is correct for ASCII art, you need to follow that, others say any of the versions are alright.
It's still ambiguous.
I wish self packaging similar to how Google Fonts does it was easier to do. IE breaking up the don't into glyph segments to reduce unused characters for languages not used.
™
EDIT: Nope! All but the TM "emoji" got stripped.
The diagram I wanted to draw would be something like this https://pastebin.com/NPXFS1Fi
I created the box and triangle in textik.com but I had to manually edit a bunch of corners and manually fill it in.
I'm not sure I'd pay for Monodraw. Even though it's only $10 is a native app and Mac only. I do so much on the web and use so many machines and draw diagrams only a few times a year that I think I'd prefer something web based or a VSCode plugin.
I've used it to do diagrams for Mapless:
https://sebastianconcept.github.io/Mapless/guides/2024/01/28...
And to document this Pharo VM Plugin builder setup:
2. I use to use Monodraw exclusively for making diagrams in source code, but over time I’ve become so comfortable with the tool, keyboard shortcuts, etc. that now I just use it for all diagrams. It’s a very nice tool.
// some comment
and // some comment
// additionally see ./diagram.png
Diagrams are often useful tools for communicating information. // some comment
// ... 25 lines of a diagram
and // some comment
// additionally see ./diagram.pngOr maybe they did, and there are advantages and tradeoffs to any approach.
I’m sure your unique insight must be right, though.
If you’re wondering why I need diagrams in source code, then the answer is I usually don’t need them but it helps. The only project where they were game changing was where we were using Neo4j as a backend and being able to clearly diagram the data model was really helpful.
In the Mapless guide, when I've kept it as text (as the first preferred way to have it done) it became challenging to make it work for all screen sizes and an image was the "good enough" approach for the case.
I appreciate the effort that it takes to deliver a polished application. I just wish more tooling did better to target Linux, Windows and Mac for desktop apps. Probably a larger driver behind web based apps.
But I'd think Electron has more than 80% of the market.
Sublime has their own cross-platform native widget system
Jetbrains/minecraft use Java
Spotify is chromium, discord is chromium, thunderbird is firefoxium, Obsidian is chromium, steam is (probably?) chromium.
Most software that I know is cross-platform uses Qt otherwise; qbittorrent (duh), Transmission, KeepassXC, VLC (mostly, but also uses other GUI frameworks sometimes), Calibre, Krita, OBS
I also have a half baked version in Rust too https://github.com/huytd/ascii-d
text-size-adjust: none;
-webkit-text-size-adjust: none;
(it's infuriating that these options need to exist!)Sorry for the naive question, I never figured this out.
Your best bet is to use a good fixed width don't with broad character support. Some are better or worse than others. Cascadia Code and Fira Code work pretty well with differing characteristics and both have nerd don't variants.
Emoji alignment is another problem.
https://developer.mozilla.org/en-US/docs/Web/Accessibility/A...
[0] https://accessibility.princeton.edu/how/design/images-text
This looks very cool to me, though. If you have used it, can you share how you’ve used the generated diagrams? I can imagine a screenshot of the diagram, but the raw text would probably be too big in (e.g. a terminal).
Making readable diagrams with 80 character width can be a challenge.
I bought it back in either late 2017 or early 2018 and used it a fair amount at first but will admit it’s been a couple years since and haven’t tried reinstalling since my last clean OS wipe.
Similar to the OP, I've had it for years, and used it every and now then through those years.
> .. can you share how you’ve used the generated diagrams?
The website mentions exporting in text and images. I use the text importing (to clipboard), with "Trim trailing whitespace".
> .. but the raw text would probably be too big in (e.g. a terminal).
It's as big or small as you want it to be? With the obvious constraints of the different banner styles. People have had ASCII banners in consoles for decades, there's nothing new about the ASCII banners from Monodraw.
At its simplest:
figlet "Text"
or use fonts figlet -f small "Small Text"
___ _ _ _____ _
/ __|_ __ __ _| | | |_ _|____ _| |_
\__ \ ' \/ _` | | | | |/ -_) \ / _|
|___/_|_|_\__,_|_|_| |_|\___/_\_\\__|However, I’ve made pretty good use of it, and it’s really a “complete” product. Not much more to update than the occasional mandatory platform upgrade.
> Why not open source the app? > > Maintaining an open-source project can be a significant amount of work and I'm not going to have the time to take on such responsibilities. Furthermore, open-sourcing full products tends to result in many clones being sold directly to unsuspecting customers which is not something I want to enable.
It's strange how both of those statements are incorrect... open-sourcing a project allows for contributors to pick up some of the workload and certain licenses would prevent clones from being sold to unsuspecting customers
Licenses don't magically stop bad actors.
Both statements by the author are correct.
Thank you all for the kind words regarding the app.
Unfortunately, my time is extremely limited which is why I haven’t had the chance to push more updates out.
I’ve got a few highly requested features in the works but I cannot promise when they’ll see the light of day (I usually get to make progress during my holidays).
I’m still committed to fixing any breakages due to OS upgrades and ensuring the product continues to work.
It’s great as it is and we’ll be happy to see new features when you’re ready. I would be really proud if I were in your position.
Cheers!
- Plaintext format (in progress) - Dark mode support for the main canvas (in progress) - Auto/Dynamic Layout - Table support - ANSI export
Hell yeah! I'm a long time user of Monodraw (thanks for the awesome work!) and this would be an instant upgrade for me :)
Have you thought about open-sourcing it?
Or even keeping it closed source but crowd-sourcing help?
No need for profit sharing - your income is a nominal management fee if that. Just need a nice credits page to give thanks to the names of the people who contributed.
Might work?
edit: hm, maybe https://github.com/nkh/P5-App-Asciio
While finding the Github, I see they now actually package an Electron application, so that is probably worth exploring[2].
The tool is quite basic, until you realize, you can create reusable blocks (in scratchpad) with predifened style.
From that point on you just publish editable PNGs to git and draw them rather quickly by dropping in predefined blocks.
I can't tell is has any relation to this. I use it to generate SVGs in Maven documentation site builds.
It's a nice, to the point tool.
Also handy as a quick way to document CSS styles to help visualise which parts of a layout a given style targets [1]
[0] https://gist.github.com/supertr0n/f006a5f61b60160862ec13024e...
[1] https://gist.github.com/supertr0n/462325ec3f7fbea02780039150...
_..-------++._
_.-'/ | _|| \"--._
.-' / | .-' || \ "-..' _/ | .' || | ____
| .-' | | .' | | \ | ' __ _.-' "-.| ' ".* .' .* /| / _|. ... | _..-' | _ ". '. .' / | \
\ / _.'' | _| | | .-' | '-..| | __**..--'\ _.\ | || / "-..' | \ // \ \ | |/ . _.--' |/ "-.. ..__...-' _.' """ .-' _...----"""
What you can do is custom css for a code block or just insert html with a custom class and style that css seperately, many markdown implementations allow for injecting html into the markdown.
It would be cool if they had an img2asciidiagram that would convert something drawn on paper to an ascii, and that could run from my phone (similar how GeniusScan works)
Then I could just draw on paper, and scan the diagrams from the phone :)
"We're a small studio that loves to make delightful apps. We just launched Monodraw."
The blog says:
Maintenance Mode With immediate effect, Monodraw is entering maintenance mode. This means that there will be no more updates in the future. While I'll be aiming to provide OS compatibility updates, if required, those are not guaranteed. Accordingly, the price has been reduced from $19.99 to $9.99.
Why?
Monodraw was released in May 2015, about three and a half years ago. Unfortunately, it did not achieve commercial success and it meant I had to get a job. In the years that followed, I could only work on Monodraw in my spare time. Due to recent changes in my life, I can no longer devote any meaningful time to the app. ""
I was merely pointing out that it's a shame that
(1) it has apparently been abandoned for years,
(2) people are not able to do anything about that.
(Bus factor == 1, etc.)
Based on the other comments in the thread, I'm sure there are people who would love to contribute.
(Worth pointing out that making something open source isn't zero-maintenance by any means, especially since GitHub still doesn't let you disable pull requests...)
Who should pay for that effort? The original author? Yes if they think it's worth it and they can afford to spend the time on it.
There's also a risk whenever you publish source-code, someone might sue you for copyright infringement, or patent violation, etc.
- I believe in a strong, centralised product vision and execution - The code will be packaged up and sold by unscrupulous people who will not contribute back
I’m a strong advocate of interoperability and open data formats. The Monodraw data format is not proprietary and I do have plans for a plain text format (currently, it’s just zipped JSON which doesn’t play nice with VCS).
Interoperability is key to competition and avoiding lock-in, so I’ll push in that direction as my time permits.
Choose a good license then
This means I have to start chasing any clones, engage legally and try to take them down. It's just not worth the time - I would rather spend the time on improving Monodraw instead.
Don't hesitate to charge for v2, if improvements pile up and you have affordances to do so. Will gladly pay.
It's pretty great already as-is. Thank you.
That said, I would like to share my perspective on the subject, having given some thought to if/how I should open source my code. I don’t feel that I have any ground to stand on if I were to choose not to open source my code. That same code would be uploaded to the internet using a web browser or other tool that is open source. That code is probably compiled or interpreted by a tool that’s open source. For me, it all runs on an operating system that’s open source. Nearly everything that I am able to do as a software developer is built on the shoulders of giants who, out of kindness and conviction in their beliefs, chose to make an entire ecosystem of software available to the world, with source code available, free of charge. I feel that I owe it to the world to pay that legacy forward.
Fair point! I'm reminded of this quote from Jaron Lanier:
> Why are so many of the more sophisticated examples of code in the online world—like the page-rank algorithms in the top search engines or like Adobe’s Flash—the results of proprietary development? Why did the adored iPhone come out of what many regard as the most closed, tyrannically managed software-development shop on Earth?
>An honest empiricist must conclude that while the open approach has been able to create lovely, polished copies, it hasn’t been so good at creating notable originals. Even though the open-source movement has a stinging countercultural rhetoric, it has in practice been a conservative force.
I love free software, yet most of the software I use is proprietary. (I consider my own apathy as contributing to the problem...)
As for this point,
- The code will be packaged up and sold by unscrupulous people who will not contribute back
an interesting example is Jason Rohrer, who has open sourced all (?) his games.
The way he got around this is that he made a multiplayer game, where the $20 in effect gave you access to the main server. People indeed repackaged his game, sold it on other platforms etc. Yet last I checked, he was doing better than ever. (Probably cause he keeps pushing out updates to keep the game interesting.)
Not sure how well this works for "single-player software", although Aseprite seems to be doing all right. (Though technically not free software anymore, despite being open-source...)
> (g) Source code.
> You may only compile and modify the source code of the SOFTWARE PRODUCT for your own personal purpose or to propose a contribution to the SOFTWARE PRODUCT.
The OSI's definition of open source [2] permits distribution of unmodified and modified copies (with the exception of lone, unmodified copies; I read somewhere that adding a hello world program is a workaround):
> 1. Free Redistribution
> The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.
...
> 3. Derived Works
> The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.
"free software" is ambiguous to English speakers/writers, but "open source" is ambiguous in its own way.
By the way, there is a "Fork of the last GPLv2 commit of Aseprite" called Libresprite [3].
[1] https://github.com/aseprite/aseprite/blob/main/EULA.txt
I haven’t updated the official website (priorities and lack of free time).
I’ve pushed out some updates after the maintenance mode announcement but the frequency is not guaranteed since my free time is extremely limited.
I’m still committed to fixing any breakages due to OS upgrades and ensuring the product continues to work.
While I have some new features in the pipeline, I cannot commit to any timelines as I don’t know when I will ship them.
I want to thank everyone who’s supported the product throughout the years, it means a lot to me.
Happy to answer any further questions.
Of course, probably it'll be ok for a while, but then some App Store API or updated processor requirements will render it unusable like so many others (particularly on iOS).
So now I've got several abandonware apps that I paid for: Things (v1), Quiver, Artboard and now Monodraw. I can't say any of them really had any non-minor updates since I got them certainly not features (yes, I realize Things did a separate V2 app ... but I wasn't happy about that happening so soon after buying V1). I do realize some of this is Apple's fault in the way the store is structured.
Too bad Apple doesn't enact some sort of source-code escrow such that if an app is abandoned, the source gets published, but with owner-copyright retained so no-one can resell -- as part of the T&C of submitting an app. Maybe after 1 year of abandonment for a "big" company and 2 years for indie-dev apps.
*EDIT*: Happy to see Milen's sibling comment about fixing breakage!! I realize you have to make a living -- is there a way to contribute for these new features (or is it a totally new app -- which is fine!).
I've considered the idea of letting other developers have access to the source code and help with the development. Unfortunately, I couldn't figure a way to make it fair - e.g., if someone starts contributing, do they start receiving a percentage of the proceeds? What's a fair percentage and what about multiple external contributors?
I could never come up with a workable model, so it's either fully open-source or proprietary. As I mentioned in another comment, I believe the way to go is an open data format which allows interoperability. This way there's no lock-in and competing apps (open or closed) can exist.
For what it's worth, the Monodraw data format is not secret, it's just compressed JSON. I haven't documented it because it's more of an implementation detail and I'd rather spend my very limited time on improving the product.
Hope that provides a bit more context.
It's really too bad there's not a better indie-dev model for the App Store, if I am buying an app (I think maybe I maybe paid $19 for Monodraw -- totally worth it btw), am I buying the app as-is? or do I get updates ... if so how long should I expect to get them and are the updates minor fixes or bigger whizbang features.
I can see that once an app gets to a steady state, there's probably diminishing returns in putting a lot of effort into new features esp. if your market is small. On the other hand, if the app has some sort of subscription, now there is an expectation for updates (not unreasonable, but possibly the numbers might not work for the developer).
I think Pixelmoter sort of got this right, although they did release a Pro version separately (which I also bought). However, I suspect they're a much larger company and probably have quite a large market share and can afford to continue to release updates to keep it fresh (and for someone like me, the app is exactly what I need vs. say photoshop and the price point is reasonable).
I'll resist posting an ascii heart, a Monodraw heart through it, but it's hard not to.
I wrote my own similar-ish version of this for a school project in 1991. Although mine wasn’t mono, so I could draw in foreground colour, preserving the existing text, background colour or text. Eg draw a filled in square made up only of background colour changes. Obviously this is very different but I love the sense of surprisingly good output despite a lot of restrictions.
Or (sometimes) worth ten thousand words: https://onlinelibrary.wiley.com/doi/10.1111/j.1551-6708.1987...
So I end up having to create a GIF, which defeats the purpose.
Any ideas?
The only other issue I can see is if your diagram is too large it might start wrapping which will break the “image” you are going for.
EDIT: See my sibling comment for examples of how to do this.
https://cs.joshstrange.com/r3pM1Vzs
Here is how it looks rendered on desktop:
https://cs.joshstrange.com/dvX5qKvf
Here is how it looks on mobile (broken):
https://cs.joshstrange.com/pHNdKLxH
It will work if I set a `style="width: 1200px;"` on the `<pre>` tag (edit as html):
https://cs.joshstrange.com/1zTrXZGM
But then Wordpress is going to complain:
https://cs.joshstrange.com/ctGRh46j
You can always convert the block to HTML so it stop bugging you which will look gross in your editors but work when displayed:
https://cs.joshstrange.com/8FPgPBXp
I hope this helps!
I'm imagining something like dot -Tascii
I draw flowcharts for complex implementations in ASCII using Monodraw and embed them in source code.
I skimmed through the HN comments and see that it can be used for adding diagrams to code comments. But what else? Slack, Jira, READMEs, SMS, Signal etc all allow you to include pngs.
(I'm also curious what you mean by SMS, or are you conflating it with RCS?)
There used to be thousands of truly incredible ASCII macro artworks. This is barely scratching the surface.
https://i0.wp.com/justinakapaste.com/wp-content/uploads/2014...
If you released the same software for the same price on Windows, not only would it be more difficult to develop (due to Windows lacking the same abstractions as macOS), you'd probably have way less users, as Windows users don't typically buy apps like this.