Embed Notice
HTML Code
Corresponding Notice
- Embed this noticeI think the key to "automating" is to figure out what works for you and to follow the KISS philosophy — minimalism tailored to your needs.
You may also need to think outside the box, and let bash do the work for you — there's no such thing as a self-contained program. You have a series of resources that can be used to manipulate output.
I use a few different tools, which are as follows:
> Sqlite3 (for time entry and keeping track of advanced costs. I have a script to enter time from cli, delete rows if there are errors, and to dump the database to stdout, so I can avoid typing entire commands with every entry, delete, dump).
> Typst (for typsetting documents to pdf).
> Hledger for accounting (I really use the KISS philosophy here. For example, I don't enter any time into the books, just invoice totals split by fee/cost type. If I need to review time, that's on the invoices and in the sqlite database. My clients also don't have accounts. I use the payee function, which can be used to print as if they had an account. I have a separate journal for each bank and credit account, payments and invoices, etc, that are included in a main journal. This makes it easier to find stuff if there's an error.).
> PDFtk (for manipulating pdfs, including dumping fields and filling documents).
> Standard *nix tools (grep, sed, awk are a must).
> SSVs (I prefer semicolon separated value files. They are highly useful. And the *nix tools can help convert dumped data into that format).
As for thinking out of the box, I regularly use the *nix tools to manipulate typst templates. This includes using sed to delete commented sections on certain conditions so it shows, or injecting variables produced from some data set into a template at compile time. I do this with invoices for example. All sections in the template are commented out, whether, for example, advanced costs show, depends on if the dumped database ssv shows that client had advanced costs. If they did, sed will remove the top and bottom block comment lines at compile.
Your business may be different, but if you can manipulate text, the world is yours.