Anything Gibson, especially Sprawl Trilogy
Anything Stephenson, though I particularly liked Diamond Age, Cryptonomicon, and Snow Crash, In the beginning was the command line.. oh, I like everything by him.
Seriously though, In the beginning was the command line and Cryptonomicon are basically an ode to 90s hacker culture, the true neckbeard type of CS. Love that aesthetic, culture and ethics.
I don't really get why you'd ever want a Lisp-2. Is there an argument/explanation somewhere that I could read up on?
(I've used Clojure and JS, which also seems like a "Lisp"-1 in that you can just put fns into variables and call them like 1st class fns, I just don't get why the distinction is in any way positive rather than confusing, and in Lisp-2s you now need to dereference everything all the time, like in Ruby).
I wrote my own software, mostly scripts. Does that count?
I have a "todo" folder. It contains a subfolder "contexts", with one text file for each context. There are also "icebox", "inbox", and "projects" files.
I use vim to edit, and I've written a little command that lets me mark lines in my todo files with a "target context/file" and use the command to send them there.
I also have a command to let me add items to the inbox from the command line, they just get appended to the "inbox" file.
Say my inbox file looks like this:
buy milk
buy food
clean garage
send email to bob
I will then mark the lines in the file like so:
buy milk @buy
buy food @buy
clean garage :projects
send email to bob @laptop
Now I'll invoke my command, and it'll send all the lines ending in @x to contexts/x, and all the :y ones to y (i.e. icebox, inbox, projects).
I also have a little script that counts how many tasks are in my various contexts, so I can an overview. When invoked, it currently says this:
home:3 room:2 reflect:5 laptop:9 garage:3 (22)
Overall I'm pretty happy with it. I can add any functionality I want, and most of the time it just takes a few lines of shell or Ruby. It's extremely personalized because I'm the only user.
There are a few things that are missing because of the text file structure. For example, I can't easily reference back how many tasks belong to a given project, because I'd have to store references and introduce IDs, which would look terrible in a text file. At that point I should probably just switch to Sqlite. But that tradeoff isn't so bad - and working with text files is so much easier.
A few of the add-ons I've added with a few lines each include:
- Recurring tasks: recurring/wednesday or recurring/01 contains tasks that will be slurped in every Wednesday or every 1st day of the month, respectively. I just loop through all the files in the recurring folder and try to match them to weekdays or #s.
- integration with "calendar" file. I also wrote a clone of the UNIX calendar that takes my calendar file as an optional argument, highlighting days on which I have things scheduled and shows the appointments for today.
Calendar file has the following format:
Sunday, July 15th:
Do thing
Do other thing
3pm: Meet Bob
Monday, July 16th:
Call Alice
The whole system has evolved over ~5 years or so, starting with a single flat text file I edited in vim. There are various pieces I added over time that I ended up never using, for example I have a stateful command to "choose" a context and then pop the list one at a time, that also lets me complete them. But I find I rarely feel like actually finishing random tasks off a context, I like to scan and refactor/reorganize the context before choosing what to do.
It's interesting how similar refactoring my todo list is to refactoring code. Refactoring gives me a lot of clarity on my tasks, and I typically refactor almost every task, some multiple times.
Anything Gibson, especially Sprawl Trilogy Anything Stephenson, though I particularly liked Diamond Age, Cryptonomicon, and Snow Crash, In the beginning was the command line.. oh, I like everything by him.
Seriously though, In the beginning was the command line and Cryptonomicon are basically an ode to 90s hacker culture, the true neckbeard type of CS. Love that aesthetic, culture and ethics.