Hacker Newsnew | past | comments | ask | show | jobs | submit | jonpalmisc's commentslogin

For a native macOS app, there is also Monodraw [1], which is great.

[1] https://monodraw.helftone.com


Mono draw is in maintenance mode and non-free. Based on the name, pretty sure that Monosketch is an explicit replacement.

Monodraw got an update the other week. It isn't being changed, but it doesn't need to.

Great little app. And it's $10, once. Hardly breaking the bank.


But it's not open, and can't be edited by those who want to. We should always support FOSS.

Absolutely we should. But this one isn't FOSS.


Why have you sent me the licence page for Monosketch? I'm commenting on comment about Monodraw...

I would assume they sent that because they were suggesting to support FOSS over closed-source software.

> Based on the name

I think in this case the name alone is not enough to suspect a replacement; perhaps it’s just a similar product in the same domain (_mono_space visual editors).


Maybe it's just more or less feature-complete? Was curious, as someone who hadn't heard of it before, so I checked the blog. Last post is from April last year and concerns public testing of a new release. That's not particularly old, if you ask me?

There is a setting as of iOS 26 under "Privacy & Security > Wired Accessories" in which you can make data connections always prompt for access. Not that there haven't been bypasses for this before, but perhaps still of interest to you.


For me: pro & creative apps. GIMP/Inkscape will never replace Photoshop/Illustrator/Affinity. Ableton, Logic, Pro Tools, etc. are not available on Linux and with the exception of REAPER, the alternatives are awful. And even with a Linux-compatible DAW, very few plugins are available on Linux.

On macOS, I can work on hobby software & graphics/music.


As far as I know, current Photoshop works fine under Linux woth wine [0].

[0]: https://www.phoronix.com/news/Adobe-Photoshop-2025-Wine-Patc...


This is a bit like claiming that a flat head screwdriver can sort of work with a Philips head screw… until it strips the head, you can’t see it and you don’t know how to fix it.


How's Bitwig these days? I've not checked it for years.

https://www.bitwig.com/


Not bad, but different DAWs cater to different workflows. To me (and most), Bitwig feels much more optimized for creating electronic music than recording guitar or drums. It wouldn't be my first choice for the latter workflow, where I'd prefer REAPER or Logic. You also still have the issue with plugin compatibility and that 99% of commercial plugin vendors don't support Linux.


> 99% of commercial plugin vendors don't support Linux.

It's a bit softened by the fact that many of them can be replaced/recreated with stock bitwig devices (if you're into that). There's also yabridge, though for me personally it has been a bit hit and miss.


The times of browsers having weirdly different rendering behavior are mostly gone, in my experience. I'm sure ~98% of Electron apps that expect Chromium would render just fine/same under WebKit as well.


This guy has a GitHub account [1] full of AI slop fake bug reports—this can be ignored.

[1] https://github.com/JGoyd


> I also don't want to make the software network dependent in any way.

As a user of Monodraw in an airgapped environment: thank you!


Monodraw is great. If I could change one thing, I would make it more expensive. $10 feels like a steal, given the use I've gotten out of it.


Is it still not possible to use JUCE for free/open-source without the pesky "Made with JUCE" popup? Or did they remove that?


The splash screen is a condition for using JUCE for free under the AGPLv3 license, particularly when distributing open-source projects or plugins without purchasing a commercial license.


I don't think anyone is suggesting that the generated Rust is nicer than the original C.

It is auto-generated with the purpose of maintaining the exact same semantics as the C code, with no regard to safety, best practices, etc.—of course it is messier than actual, handwritten Rust.

As c2rust says in its documentation [1], it's meant to be the first step in an otherwise manual and incremental port of a codebase from C to Rust, and the author recognizes this in their closing remarks:

> The next goal is to convert the codebase to safe Rust.

[1] https://github.com/immunant/c2rust/raw/master/docs/c2rust-ov...


Stubborn complaint (and maybe a hot take): I dislike CLIs that try to be overly pretty. I don't receive any tangible benefit as the user from the "fancy" (their words) help output. I'd much rather simple plain text output that looks like all the other tools I already use.


Alignment (and maybe bold text for some things) is all you need in >95% of cases, IMHO.

One of the downsides of a lot of these tools is that's exactly what they don't do well: many things don't align or wrap nicely.

For example, here's a comparison of this fang library vs one where I just raw-dogged the usage text: https://imgur.com/a/QWh9TLD – the nice alignment does a lot more than colours. Especially for larger programs with a bunch of flags it can be such a pain. For example from an otherwise quite nice tool: https://imgur.com/a/RELL9Gk – you just completely lose any "overview".

I did spend some time on some better tooling to improve all of this, because manually writing these isn't super-fun either, but not so straight-forward to do well (or at least: not in a way that I like).


> One of the downsides of a lot of these tools is that's exactly what they don't do well: many things don't align or wrap nicely.

Bling is easy. Unsexy usability details are hard.

    Z$ time ./example/run
    You ran the root command. Now try --help.
    ./example/run  0.13s user 0.27s system 177% cpu 0.228 total
Why would an example program take 228ms?

    Z$ ./example/run --name='abc def'
    
      Unknown command "def" for "example".                                                            

      Try --help for usage.

Huh? 'abc def' is one shell word. --name=abc works fine.

     Z$ ./example/run --name ''
          
       ERROR  
         
       Flag needs an argument: --name.                                                                 

       Try --help for usage.
But I did give it an argument: the empty string.

And why is the output indented two columns from the left margin anyway?

    Z$ ./example/run ''
    You ran the root command. Now try --help.

    Z$ ./example/run 'x'
          
      ERROR  
          
      Unknown command "x" for "example".                                                              

      Try --help for usage.
Should have produced an error using '' for the subcommand name.

    Z$ ./example/run sub "multi-word quoted string" --flag "another quoted string"
    Ran the sub command!

    Z$ ./example/run --help

      A little example program!                                                                         
                                                                                                        
      It doesn’t really do anything, but that’s the point.™                                             

      USAGE  


        example [command] [args] [--flags]                                     


      EXAMPLES  


        # Run it:                                                              
        example                                                                
                                                                               
        # Run it with some arguments:                                          
        example --name=Carlos -a -s Becker -a                                  
                                                                               
        # Run a subcommand with an argument:                                   
        example sub --async --foo=xyz --async arguments                        
                                                                               
        # Run with a quoted string:                                            
        example sub "quoted string"                                            
                                                                               
        # Mix and match:                                                       
        example sub "multi-word quoted string" --flag "another quoted string"  


      COMMANDS  

        help [command]                  Help about any command
        sub [command] [args] [--flags]  An example subcommand
        throw                           Throws an error

      FLAGS  

         -a --async                     Run async
         -h --help                      Help for example
         --name                         Your name (jane)
         -s --surname                   Your surname (doe)
         -v --version                   Version for example


    Z$ ./example/run sub "multi-word quoted string" --flag "another quoted string"
    zsh: command not found: example sub multi-word quoted string --flag another quoted string
Huh? Why did the command work when I typed it myself but not when I pasted from the help output?

Oh. Because the help output is using nbsp, not regular spaces.

Anyway, command line interfaces have a surprising number of hairy corner cases. I'd rather have boring monochrome that gets them right than an all-colorful theme auto-shell-completion-generating system that doesn't.


Here is one of your empty argument being thrown away instead of respected bugs:

* https://github.com/spf13/cobra/blob/6dec1ae26659a130bdb4c985...

I could explain the single-quote argument quoting error if you were running it on Windows. The Go runtime library does not provide single-quoting on Windows. At all. (This is historically the behaviour of C runtime libraries on Windows, too.) It should be using a proper argument vector and not doing its own command-line parsing on other platforms, though.

* https://cs.opensource.google/go/go/+/master:src/os/exec_wind...

* https://cs.opensource.google/go/go/+/master:src/os/proc.go;l...


I like colour in a tool like 'bat' or 'jless' where it helps me visually scan, but other than that I'd agree with you


As a counter argument, not putting color in help usage text leaves a large amount on the table for readability. The reasonable compromise for those that disagree with this is to set the NO_COLOR environment variable. This should be respected by most things which do use color (and if it's not, that's a bug).


> overly pretty

"bling" is the word you're looking for. It's just a fashion. Fashion is famously cyclic, and we're just in a high-ornamentation part of the cycle. Eventually, restraint will become fashionable again.


And they often don't check the terminal so if you pipe them or run on a serial terminal they break horribly.


agreed, plain text is more scriptable too. Let me pipe it into awk!


If you do it right, you can output plain text when stdout is not a tty - which is something fang does, fwiw :)


It still tries to put the terminal in raw mode or something. "cmd | less" doesn't work and requires "stty sane". I didn't investigate, but FYI.


A lot of the fancy CLIs I use have a `--json` option that gives the user the chance to pipe output to eg jq and process it there. I find that a good alternative to running stuff through cut, sed or awk before processing.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: