Been using Ubuntu since 2014 (RedHat at work for 6 years before that). Free, efficient and don’t have to upgrade hardware.
Apart from standard CLI tools, I use these for writing ebooks, blogs, image/video editing etc: git, pandoc, mdBook, zola, ImageMagick, oxipng, pngquant, svgcleaner, auto-editor, FFmpeg
I was privileged to be one of the technical reviewers for this book. There’s a fair bit of the original content (which is still great), but Kernighan’s done a great job with some good restructuring and some significant updates, too. The early chapters are very hands-on, with something of a focus on “exploratory data processing”, particularly with CSV files. Big data with AWK, you could say.
Gawk and awk will soon have a new “–csv” option that enables proper CSV input mode (parsing files with quoted and multiline fields per the CSV RFC). I’m really glad Arnold Robbins added a robust “–csv” implementation to Gawk, too, because that’s really the most-heavily used version of AWK nowadays. I’ve already got CSV support in my own GoAWK implementation, and I’ll be adding “–csv” to make it compatible.
I mean after it’s merged there will still be the One True AWK before that commit and the One True AWK after that commit, with different external interfaces. It’s just funny considering the name.
Cool experiment. I see s slow but steady trend over the last 5-10 years to bring more interactivity and user-friendlyness to the terminal. Point and click UIs have dominated and taken over everything because of their intuitiveness and because they are discovered. But once a user got into it, they were held hostage of horrible ergonomy and caped att the poor productivity of a mouse interaction.
Terminal UX has been getting better. One example is fish shell, which does much of what this project does, albeit with a more implicit/minimal interface.
This project closes the gap of discovering a cli tool with an UI as intuitive as a point and click one, while retaining the old rock solid standards or cli apps, and without needing to mode the hands from the keyboard.
Wel done.
Realistically, once one is familiar with a cli program, there is no reason anymore to use this as one can just enter the commands on the prompt. But this is great for exploring a new one.
I would love to hear from the author behind Textualize and from the folks behind Charm about how viable such efforts to re-vitalize the terminal are. It seems from the outside that a lot of these projects fall more into the camp of “we do it because we can/it’s cool”, which may be enough, but they seem to also convey some notion that it improves the state of affairs. How much though?
That may not be feasible, since usually you build the argparser in code and then execute it, whereas click works by decorating functions at the toplevel. There’s a moment to introspect with click that doesn’t exist with argparse.
I think you could still do it something like this:
import argparse
parser = argparse.ArgumentParser(
prog="ProgramName",
description="What the program does",
epilog="Text at the bottom of help"
)
parser.add_argument("filename")
parser.add_argument("-c", "--count")
parser.add_argument("-v", "--verbose", action="store_true")
argparse_tui(parser)
PowerShell is nice in this regard. All cmdlets advertise their arguments and types and if you run a cmdlet without arguments then it will give you an interactive prompt for each of them. Tab completion also works to show all of the arguments. The place PowerShell fails is that they went with a verb-noun convention that makes discovering cmdlets very hard.
Do a final sanity check and release new version of my grep ebook. Then start a reread of Cradle (by Will Wight) in preparation for 12th and final book coming early next month.
I attended one last December (BarCamp Bangalore, bar as in ‘foo bar baz’, ad hoc gathering to share and learn in an open environment). That’s happening again this May, will likely go.
PyCon India is in October, but not sure if I’ll go.
Working on updating my grep book - better examples/exercises/descriptions, new cover, etc. Also planning to create an interactive TUI app for exercises.
My impression many years ago was that Awk looked a little too much like C outside the application domain, but reading over the source code for translate-shell, it doesn’t look that bad actually. I appreciate the hot take about using it over other tools, because it is already there. Not sure I’m ready to enact it myself though.
I do use Awk as a power tool from the shell, a lot. I often wish that it could handle CSV files natively, since then I wouldn’t need to use like Python to do something simple, but CSV files often have embedded quotes and whatnot that require a stronger parser than just awk -F,. My sense has been that if you want to do this kind of record-based programming with Awk, but it can’t parse it with the field separator, you might as well go somewhere else. Perhaps someone here knows better?
Close to finishing interative TUI app for Python regex exercises. 100+ questions, covers both re and third-party regex module. Code is a huge mess, but I don’t think I’ll spend much time cleaning up. Need to do sanity checks, record a video demo, write a blog post, update the regex ebook, etc.
Hoping to finish a TUI app for Python regex exercises (most of the coding and question set is done, waiting for a few features like tabbed widgets and then need to do a sanity check before release).
Finished a slice-of-life progression fantasy book earlier today (On Lavender Tides), planning to read the second one in the series.
Perl is a language I wanted to try since I really like regexps and I liked AWK, but having learned Python first, it seems like a backward movement. On social media and forums, you constantly see lots of opinions warning about Perl and the lots of warts in a language that tries to be backward compatible and embraces TMTOWTDI. I was tempted to try Raku instead but Raku is more niche and not preinstalled on most Linux distros.
A Perl 7 with better defaults could be the right thing to make people like me start experimenting with the language.
Perl has a bad reputation as a result of people writing completely incomprehensible one liners but I’ve come across several Perl codebases that were very readable by someone who didn’t know the language. It also has some nice features like taint tracking built into the language.
Scrivener. Easily the best long form writing software around, and unfortunately good enough to keep me locked into macOS on my laptop (Asahi seems stable enough though these days, so I’ll probably set up a dual boot soon. It’s not urgent though, as I have a fairly powerful Linux desktop for gaming and development that I can easily remote into with Tailscale, another great piece of software).
It’s proprietary, but the file format is simple enough (metadata in easy to understand XML, and content as RTF), that you could write a converter tool pretty quickly. I’m not remotely afraid of my files becoming inaccessible to me.
Checkout novelWriter (https://novelwriter.io/) if you want to explore FOSS option. I don’t have experience with either tool to give a review/comparison.
I’ve tried it (and manuskript, another similar tool), but there’s really no comparison at the moment. Last time I used novelWriter, HiDPI support was lacking on macOS (Scrivener isn’t the only thing tying me to it unfortunately), and font-rendering was piss-poor (not a reflection on the authors of the novelWriter, it seemed to be related to HiDPI support and GTK+, which… yeah… there’s a reason I use KDE Plasma/QT on Linux).
It also didn’t have the same support for notes/supporting documents that scrivener does.
In Scrivener, I can drag and drop a web page or PDF into my project, and it’ll be archived there in full as something I can refer back to and annotate. To use an analogy: novelWriter is like Kate, usable and somewhat extendable, whereas Scrivener is like IntelliJ, batteries and even a UPS included.
Don’t get me wrong, I like more minimalist setups occasionally. I maintain a laptop from the late 90s that dual boots NetBSD/FreeDOS and often write in WordStar on it. But for something long form, like a novel, where I need to maintain notes and references, I haven’t encountered anything as good as scrivener.
Continue working on TUI apps (Python regex playground, exercises, etc).
Started reading “Murder at Spindle Manor”, a bit dark so far (in terms of description of events). Worldbuilding is good. Style and plot seems to be heavily inspired by Agatha Christie.
Mostly trying to figure out what I’m doing wrong on Twitter. I have much more engagement on Mastodon, while I cannot seem to find how to grow on Twitter. And even on Mastodon it is slow.
I feel a bit dirty about this kind of marketing approach, but I learned the hard way that without an audience, it is almost impossible to build/sell products, find contract work or meet potential associates. Ultimately I see this as a way to meet and engage with like-minded people.
Rest of the time I’m going to start playing Starsector. Took some time to get convinced to give it a try, but it seems to be the kind of complex sandbox I enjoy.
Is it worth the time?
The C-level of my company was all about social media, and we had to incorporate all those fancy social media buttons in our apps. With the advent of GDPR those had to be converted to opt-in, what a waste of resources.
FB and Twitter up and down.
Until an old school sales guy came along, looked at the numbers in the CRM and told them that the bigger part of our leads come from our satisfied customers’ recommendations.
Meanwhile the social media buttons are gone completely (me gusta mucho), and they do lots of webinars and such things.
I am not an established company with a client base. I’m trying to bootstrap a solo business, and I can assure you that finding contract work or potential clients is surprisingly hard when you do not have an established network or an audience.
I’ve lost count of the number of successful solo bootstraps which start with “I presented my idea to my thousands of Twitter followers and a lot of them preordered”.
And my last attempt with targeted cold mailing was quite underwhelming.
Obviously I’m doing something (multiple somethings really) wrong, but I’m trying to fix it.
This seems to match what I’ve read on the subject. I started to post several times a day, and I really need to start replying when I can add something to an existing discussion. Using TweetDeck with several search columns is already really helpful.
Taking notes about the whole graphics thing, I’m really not good with that.
Been using Ubuntu since 2014 (RedHat at work for 6 years before that). Free, efficient and don’t have to upgrade hardware.
Apart from standard CLI tools, I use these for writing ebooks, blogs, image/video editing etc: git, pandoc, mdBook, zola, ImageMagick, oxipng, pngquant, svgcleaner, auto-editor, FFmpeg
Learning to code web apps. I’ll get to it someday, really, any day now…
Instead, I’ve learned how to realize some of my ideas as TUI apps ;)
Interactive apps to practice CLI tools (grep, sed, awk, etc) and Python regex: https://github.com/learnbyexample/TUI-apps
Also includes Square Tic Tac Toe, a game played on a 4x4 board where the aim is to form a square.
Looks like this is a project of Arnold Robbins, one of the authors of the gawk manual, and almost thr only person contributing to the “one true” awk repo: https://www.gnu.org/software/gawk/manual/html_node/Acknowledgments.html
Looks like the whole awk ecosystem is being supported by a couple of people.
It is Brian Kernighan as per https://news.ycombinator.com/item?id=36518146
Hang on, they’re adding --csv to the One True AWK?
Yes, see: https://github.com/onetrueawk/awk/tree/csv
So there’s the original One True AWK, then the other One True AWK with CSV support!
Well, it’s a branch that hasn’t been merged yet… so, I guess, yes?
I mean after it’s merged there will still be the One True AWK before that commit and the One True AWK after that commit, with different external interfaces. It’s just funny considering the name.
Oh, I see :)
Yeah, the One True AWK repo has had 240 commits to
mastersince it was added to GitHub about a decade ago. The truth keeps evolving…Cool experiment. I see s slow but steady trend over the last 5-10 years to bring more interactivity and user-friendlyness to the terminal. Point and click UIs have dominated and taken over everything because of their intuitiveness and because they are discovered. But once a user got into it, they were held hostage of horrible ergonomy and caped att the poor productivity of a mouse interaction.
Terminal UX has been getting better. One example is fish shell, which does much of what this project does, albeit with a more implicit/minimal interface. This project closes the gap of discovering a cli tool with an UI as intuitive as a point and click one, while retaining the old rock solid standards or cli apps, and without needing to mode the hands from the keyboard. Wel done.
Realistically, once one is familiar with a cli program, there is no reason anymore to use this as one can just enter the commands on the prompt. But this is great for exploring a new one.
I would love to hear from the author behind Textualize and from the folks behind Charm about how viable such efforts to re-vitalize the terminal are. It seems from the outside that a lot of these projects fall more into the camp of “we do it because we can/it’s cool”, which may be enough, but they seem to also convey some notion that it improves the state of affairs. How much though?
Incorrectly assumed this worked by parsing manpages and help strings. I see it is compatible with python library click.
A couple of suggestions:
That may not be feasible, since usually you build the argparser in code and then execute it, whereas click works by decorating functions at the toplevel. There’s a moment to introspect with click that doesn’t exist with argparse.
I think you could still do it something like this:
https://github.com/chriskiehl/Gooey (CLI to GUI) works for the
argparsemoduleI wonder if the next step in UI is having an LLM that you chat to, and it writes a CLI-ish command to execute.
PowerShell is nice in this regard. All cmdlets advertise their arguments and types and if you run a cmdlet without arguments then it will give you an interactive prompt for each of them. Tab completion also works to show all of the arguments. The place PowerShell fails is that they went with a verb-noun convention that makes discovering cmdlets very hard.
Do a final sanity check and release new version of my grep ebook. Then start a reread of Cradle (by Will Wight) in preparation for 12th and final book coming early next month.
Adapting exercises from my grep ebook as an interactive TUI app.
Currently reading “The Steerswoman” series, recommended for those who enjoy logical reasoning and exploration fantasy.
Summer is here and feels hotter than last year. Planning to visit a hill resort (about couple of hours via public transport).
I attended one last December (BarCamp Bangalore, bar as in ‘foo bar baz’, ad hoc gathering to share and learn in an open environment). That’s happening again this May, will likely go.
PyCon India is in October, but not sure if I’ll go.
Working on updating my grep book - better examples/exercises/descriptions, new cover, etc. Also planning to create an interactive TUI app for exercises.
My impression many years ago was that Awk looked a little too much like C outside the application domain, but reading over the source code for translate-shell, it doesn’t look that bad actually. I appreciate the hot take about using it over other tools, because it is already there. Not sure I’m ready to enact it myself though.
I do use Awk as a power tool from the shell, a lot. I often wish that it could handle CSV files natively, since then I wouldn’t need to use like Python to do something simple, but CSV files often have embedded quotes and whatnot that require a stronger parser than just
awk -F,. My sense has been that if you want to do this kind of record-based programming with Awk, but it can’t parse it with the field separator, you might as well go somewhere else. Perhaps someone here knows better?Perhaps you might find Miller or rq (Record Query) useful?
Thank you! I have not heard of these!
GoAWK supports CSV: GoAWK’s CSV and TSV file support
This looks really interesting, thank you!
There’s an interview with Brian Kernighan that’s mostly about AWK here: https://www.youtube.com/watch?v=GNyQxXw_oMQ
At 8m25s he mentions that he’s added a “quick and dirty” hack to the original AWK to handle CSV. You can see that on Github here.
It hasn’t been merged into
masteryet though.Another tool recommendation: I very much like xsv for CSV-mongling.
https://github.com/ezrosent/frawk supports CSV as well
See also “Twenty-five years of curl”: https://daniel.haxx.se/blog/2023/03/20/twenty-five-years-of-curl/
Close to finishing interative TUI app for Python regex exercises. 100+ questions, covers both
reand third-partyregexmodule. Code is a huge mess, but I don’t think I’ll spend much time cleaning up. Need to do sanity checks, record a video demo, write a blog post, update the regex ebook, etc.Hoping to finish a TUI app for Python regex exercises (most of the coding and question set is done, waiting for a few features like tabbed widgets and then need to do a sanity check before release).
Finished a slice-of-life progression fantasy book earlier today (On Lavender Tides), planning to read the second one in the series.
I use Linux and I’m happy with most of the CLI/GUI tools I’m using.
Perl is a language I wanted to try since I really like regexps and I liked AWK, but having learned Python first, it seems like a backward movement. On social media and forums, you constantly see lots of opinions warning about Perl and the lots of warts in a language that tries to be backward compatible and embraces TMTOWTDI. I was tempted to try Raku instead but Raku is more niche and not preinstalled on most Linux distros.
A Perl 7 with better defaults could be the right thing to make people like me start experimenting with the language.
Perl has a bad reputation as a result of people writing completely incomprehensible one liners but I’ve come across several Perl codebases that were very readable by someone who didn’t know the language. It also has some nice features like taint tracking built into the language.
I use
perlfor one-liners (whenawkfalls short, for example regex features like lookarounds, builtin functions likegrep,join, etc).For longer scripts, I use Python.
Scrivener. Easily the best long form writing software around, and unfortunately good enough to keep me locked into macOS on my laptop (Asahi seems stable enough though these days, so I’ll probably set up a dual boot soon. It’s not urgent though, as I have a fairly powerful Linux desktop for gaming and development that I can easily remote into with Tailscale, another great piece of software).
It’s proprietary, but the file format is simple enough (metadata in easy to understand XML, and content as RTF), that you could write a converter tool pretty quickly. I’m not remotely afraid of my files becoming inaccessible to me.
Checkout novelWriter (https://novelwriter.io/) if you want to explore FOSS option. I don’t have experience with either tool to give a review/comparison.
I’ve tried it (and manuskript, another similar tool), but there’s really no comparison at the moment. Last time I used novelWriter, HiDPI support was lacking on macOS (Scrivener isn’t the only thing tying me to it unfortunately), and font-rendering was piss-poor (not a reflection on the authors of the novelWriter, it seemed to be related to HiDPI support and GTK+, which… yeah… there’s a reason I use KDE Plasma/QT on Linux).
It also didn’t have the same support for notes/supporting documents that scrivener does. In Scrivener, I can drag and drop a web page or PDF into my project, and it’ll be archived there in full as something I can refer back to and annotate. To use an analogy: novelWriter is like Kate, usable and somewhat extendable, whereas Scrivener is like IntelliJ, batteries and even a UPS included.
Don’t get me wrong, I like more minimalist setups occasionally. I maintain a laptop from the late 90s that dual boots NetBSD/FreeDOS and often write in WordStar on it. But for something long form, like a novel, where I need to maintain notes and references, I haven’t encountered anything as good as scrivener.
I love Scrivener. It’s like an IDE for novels. :)
Exactly how I’d describe it! It’s just damn good software and well worth the price.
Continue working on TUI apps (Python regex playground, exercises, etc).
Started reading “Murder at Spindle Manor”, a bit dark so far (in terms of description of events). Worldbuilding is good. Style and plot seems to be heavily inspired by Agatha Christie.
Mostly trying to figure out what I’m doing wrong on Twitter. I have much more engagement on Mastodon, while I cannot seem to find how to grow on Twitter. And even on Mastodon it is slow.
I feel a bit dirty about this kind of marketing approach, but I learned the hard way that without an audience, it is almost impossible to build/sell products, find contract work or meet potential associates. Ultimately I see this as a way to meet and engage with like-minded people.
Rest of the time I’m going to start playing Starsector. Took some time to get convinced to give it a try, but it seems to be the kind of complex sandbox I enjoy.
Is it worth the time? The C-level of my company was all about social media, and we had to incorporate all those fancy social media buttons in our apps. With the advent of GDPR those had to be converted to opt-in, what a waste of resources. FB and Twitter up and down.
Until an old school sales guy came along, looked at the numbers in the CRM and told them that the bigger part of our leads come from our satisfied customers’ recommendations. Meanwhile the social media buttons are gone completely (me gusta mucho), and they do lots of webinars and such things.
Worth the time? I really hope so.
I am not an established company with a client base. I’m trying to bootstrap a solo business, and I can assure you that finding contract work or potential clients is surprisingly hard when you do not have an established network or an audience.
I’ve lost count of the number of successful solo bootstraps which start with “I presented my idea to my thousands of Twitter followers and a lot of them preordered”.
And my last attempt with targeted cold mailing was quite underwhelming.
Obviously I’m doing something (multiple somethings really) wrong, but I’m trying to fix it.
I read a few articles about social media growth. Didn’t try out everything, but a few things helped:
and some more things I’m probably forgetting. It depends on your comfort level too.
This seems to match what I’ve read on the subject. I started to post several times a day, and I really need to start replying when I can add something to an existing discussion. Using TweetDeck with several search columns is already really helpful.
Taking notes about the whole graphics thing, I’m really not good with that.
Learn Python packaging and publish some of my TUI apps on PyPI.
Planning to complete a book review request pending from last year (“Murder at Spindle Manor”).
As a fellow Python dev: Please let the rest of us know when you figure it out. 😁
I went through https://packaging.python.org/en/latest/tutorials/packaging-projects/ and was able to publish a simple app (I even skipped the test pypi stuff). I had to fix couple of mistakes live ;)