This looks awesome. I’ve known for a while that I will eventually have to support organizations and teams for https://canopycharts.com and have been dreading writing all that code myself.
It's always fun to hear the workarounds people do to avoid adding orgs/teams - my personal favorite is the single account everyone share a password case :)
Yep. I use a dedicated paper notebook for journaling. Once or twice a month I spend like 30 minutes or an hour writing down what’s been going on, what’s on my mind, what I’m working towards. Usually I do this while watching some low effort tv show.
Oh wow this is great. I’ve been wanting an org mode integration with GitHub for a while, and this tool might make it easy enough for me to hack together this weekend.
Basically I want to be able to pull up a buffer with a list of issues assigned to me and copy them into my org mode todo list
I've been using Emacs for a decade and still have never had to write a single package of my own. Every time I have a good idea, someone else has already implemented it.
I donate little bits here and there when I can, but I'm unfortunately not in financial position to give what I think the maintainers deserve. Instead I try to submit documentation patches to projects whenever I find myself digging through the source code trying to answer a question the docs didn't make clear.
I've written a few specialisms that couldn't really be open-sourced. e.g. wiring up inf-ruby and internal dev tools to open up a rails console in dev, or generate a jwt from the auth server in the cluster.
The only package I've been ultimately responsible for is the Gruvbox theme[^1], but that was very quickly handed over to other emacsers :)
I still find it a joy to write and it's one of my more preferred rabbit holes to dive into. Maybe one day there'll be something more to share :)
Oh wow, I used to use that theme. Thanks for making it. Yeah, most of the elisp I write is mostly just glue code, not something that makes sense to package and distribute.
In what way do you find it too chatty? That hasn't been my experience, but I do use a pretty small subset of it. Are you using it on its own, or with helm/ivy?
It could have been hel or ivy I was seeing. I don’t like the mode line moving (growing the minibuffer) as I typically keep my eyes on part of the buffer and don’t want anything moving (or worse, obscuring where I’m looking)
This is awesome, but with all due respect I also wish git itself was also improved.
Goddamn merge commits, and always have to go googling "oh shit how do I erase the last commit" when I accidentally commit to master. It should at least spit out a warning if you created a branch and then try to commit to master. Git lfs and git-crypt should be a feature of the main product and not plugins. Files over a certain size should be transparently LFSed without some need to "track" them or install a plugin to fetch them. It's too hard to accidentally forget to encrypt something or LFS something. Gitignore is easy to screw up and accidentally commit a sensitive credentials file. And "git rm" also removes the file locally with no recourse -- that should not be the default behavior.
Also, the whole UX around submodules REALLY sucks ... is it git submodule update --recursive --init? git submodule init --update --recursive? git init submodule --recursive? I can't remember for the life of me. Why can't it auto-clone all submodules when you clone the parent repo, seeing as you kind of need them to do anything? The UX is so bad that I often just copy the contents of the repo instead of using submodules.
There are "hooks" in git that can be used to modify its behavior, to e.g. "spit out a warning if you created a branch and then try to commit to master"
> "spit out a warning if you created a branch and then try to commit to master"
How this one may be done? It sounds wonderful but I have no idea how to implement such thing (and if not included in git already, I hope that I can reuse code rather than reimplement it)
#!/bin/sh
BRANCHES_POINTING_TO_HEAD=$(git branch --contains HEAD |wc -l)
CURRENT_BRANCH=$(git branch --show-current)
if [ "$BRANCHES_POINTING_TO_HEAD" -gt 1 ]; then
if [ "$CURRENT_BRANCH" = "master" ]; then
echo "You're committing to master even though other branches exist."
echo "override with git commit --no-verify"
exit 1
fi
fi
You'll need git 2.22 for the --show-current git option.
$ git checkout <new_branch>
<new_brach> doesn't exist. Would you like to create it (Y/n):
The real problem with "git" is just way too many options. For automated tools there can be a "-n" non-interactive option that fails with an error code and doesn't ask questions.
I'm responding to the prompt in the OP, not the title.
> What's a piece of software you find essential that you wish you could replace or rewrite?
Emacs is the most essential piece of software in my workflow. It's probably not the worst, but it's the one where I see the most room for improvement. I lean heavily on org-mode for tracking what I'm working on, it's like my command center. I keep two emacs frames open at all times, one dedicated to org-mode.
Supported by an assortment of magical packages like helm, projectile and magit, I write code and anything else more efficiently than any other editor I've used. I was a vim user for ~5 years, and now use evil mode for modal editing in emacs.
So yeah, my opinion is that emacs is the best editor out there. But honestly it takes too much time to configure and maintain. I spend that time, because I don't feel like taking the productivity hit that I would by switching to another editor, but I wish I didn't have to.
I have a vision for a SaaS app that hosts my emacs config and provides me a nice graphical, discoverable interface for managing my configuration. It would have simple, intuitive flows for setting up the essential packages. Like maybe I could scroll through a list of the most popular packages (helm, projectile, hydra, magit, etc), and click to install.
The current state of the art in managing emacs config is googling the name of the package you are trying to configure, and trying to find someone's blog or github from which to copy/paste code from. There has to be a better way.
I think I’d say that the state of the art is reading the README, then the comments at the top of the source code for the package, then looking through the defvars. And, maybe that’s OK. I think Emacs should give up on the idea that it’s suitable for mass usage and embrace its identity as an editor for hackers who are at least slightly interested in lisp.
I don't think Emacs is suitable for mass usage. I think it's suitable for power users who are willing to invest time into learning to use a powerful tool. And I also think more people are becoming power users. With a well-crafted tool, you don't have to be a hacker to be a power user. I think the Superhuman email company is an interesting bet on this trend.
My guess is there are really good abstractions that can be built on top of elisp that let people configure emacs to be a powerful tool that fits their workflow like a glove, and doesn't require them to learn elisp or package internals.
> My guess is there are really good abstractions that can be built on top of elisp that let people configure emacs to be a powerful tool that fits their workflow like a glove
Yes, when think about this I get a bit hung up on the UI. Maybe those abstractions are going to have to ship a new one.
I think the only reason why I disagree with the comments here calling Git horrible and unintuitive is because Magit (Git interface for Emacs) makes it so easy to use and discoverable.
- Encourages you to lock your personal configuration into the Spacemacs ecosystem, rather than writing it in generic Elisp so you can easily extract it (why I still use it).
- Introduces ridiculous abstractions that aren't necessary, just so they can put "spacemacs" in front of the variable name.
- Hasn't released to the master branch in 2 or 3 years (!)
- Consequenty breaks regularly when you use the rolling release (which you pretty much have to do)
- Has an unresponsive owner who doesn't want to hand the project off to someone else (or hasn't found someone)
- Sets up weird default behaviour that's very difficult to disable
- Has awful defaults for most languages anyway. Their Python layer is terrible, the features are extremely limited and it often doesn't work.
Hah, yeah. I used spacemacs for 2 years from summer 2018 until about two weeks ago. And you're right! It does incredible things for discoverability with the built in hydra integration.
I switched to Doom Emacs about two weeks ago because it's built to be more performant and the configuration is meant to be a thinner layer.
Even with spacemacs layers, one has to go hunting on the googles and spend a bunch of time tweaking things if the layer doesn't set things up perfectly out of the box. And it rarely does.
Overall, I think spacemacs and doom emacs are amazing. Huge steps up from the base install. I just think there is a long way to go still.
Is checklist software something people pay for? I recently wrote https://checkfox.app as a toy, inspired by Atul Gawandes “Checklist Manifesto”. I’d love to know if there’s a market for this sort of thing.
Yes, I had written something similar for the Big 4 many years ago it was an auditing solution, web-based and work well. Back then it was good business but then my father got ill so decided to halt the company. The continuous hassle of getting the invoices paid by the Big 4 was one problem. Waiting up to 180 days to get bills paid...
The first book is actually called “The World of Null-A”. I picked it up at a local used book store last year and enjoyed it. Haven’t read any more of the trilogy yet.
Even actuallier, the first book was titled "The World of Ā" but "to reduce printing costs, the 1953 and 1964 Ace Books paperback editions were entitled The World of Null-A, and the symbol Ā was replaced with "null-A" throughout the text." [1]
Ah, thanks for mentioning that. If you get the chance, the other two are pretty great as well. As an aside, one of my favorite authors, Neil Asher, recently blogged about A.E. van Vogt:
if you haven't found it already, the tclers wiki is a font of wisdom about the language and so many other cool topics. https://wiki.tcl-lang.org/