multiplex is the result of me wanting a tool that allowed me to view output of several processes running in parallel
similar to tmux but with the main goal of being view only, being able to view many streams
of data in an ergonomic fashion, which tmux doesn't deliver as nicely.
I wanted to navigate the content by with the same ease `less` gives when viewing a single data source.
It keeps a terminal emulator for each input stream using pyte (pure python terminal emulator). Then draws everything using ANSI escape codes to put the cursor in different places :)
I've recently finished a book on the J programming language (Learning J) and summarised what I read in what turned out to be a rather useful (at least to me) cheat sheet.
Other similar content I found was not very "ctrl+f"-able, this one is.
Something that has not been mentioned (because it is such a small feature) is that you can now disable the vibration on a per alarm clock basis.
I've been waiting for this for several versions now. You could argue that 3rd party alarm clock applications provide that, but they don't get the special treatment the built-in app gets, mainly that alarms set are still activated even if the app is closed. Maybe it is also the case for 3rd party but I couldn't get it to work.
Yes, it's important. I've had to disable all vibration on my phone, which increases chances of me missing things, because the lady downstairs doesn't like vibration noise in the morning, haha.
I also really like argh, though it seems the provided link documents an api the mandates decorators and in fact what I like about argh is that functions can remain clean. http://argh.readthedocs.org/en/latest/
You're never forced to use decorators, they're just syntactic sugar.
Their example:
@click.command()
@click.option('--count', default=1, help='number of greetings')
@click.option('--name', prompt='Your name',
help='the person to greet', required=True)
def hello(count, name):
for x in range(count):
print('Hello %s!' % name)
Could be written as:
def hello(count, name):
for x in range(count):
print('Hello %s!' % name
hello = click.option('--name', prompt='Your name',
help='the person to greet', required=True)(hello)
hello = click.option('--count', default=1, help='number of greetings')(hello)
hello = click.command(hello)
The command decorator is nice, but the group decorator feels wrong, why create a function that does nothing just to decorate it? I'd rather use `cli = click.Group()`.