This might be worth it, if all I did was cd’ing between directories, and I really had to do it fast and often, but generally saying that using the universally accepted way of moving around the file system, which works on Linux, Mac OS, BSD, Plan9 and even Windows (if I am not mistaken), is a “waste of ones time” seems to be a bit of an exaggeration, especially if most shells have “tricks” like:
cd ~/Development/project/
mkdir ../new_project
cd $_
cd -
to do the same as the example mention in the article.
one could also have a shell function chat creates and changes the working directory at once.
So before one starts worrying about the number of characters one types, and starts installing, non standard, external tools (especially if it starts python every time it’s executed), I think it would be wiser to learn how to use one’s shells properly, or at the very least to type more efficiently, if one is in fact convinced that changing directories is the bottleneck in ones workflow.
Important point: shells already have a lot of optimization for ‘cd’. (Not to mention pushd & friends, even!)
I worry about tools like the one mentioned in OP, which have fuzzy optimizations based on use, & therefore optimize specifically for well-worn paths. Our entire nervous system already optimizes our responses for well-worn paths; I feel like we ought to compensate for it, and avoid tools that try to keep us in a rut.
Since having two directories with similar names that are accessed almost equivalently often will produce far more typing with this tool (vs tab completion, which – at least in many shells – will only complete up to a divergence point on groups of files with shared prefixes, and therefore eliminates only unambiguously-wasted keystrokes, while working with every command), the rut-grade here is higher: not only do we use the same directories, but it becomes too much effort to have similarly named directories even when they are descriptive, and we must keep a mental tally of how often we visit particular directories with particular prefixes in order to estimate how many letters we should be using to cd! Every time we go into the wrong directory accidentally, we compound the error, and if we switch from one project (with associated directory) to another (with a similarly-named associated directory) we must spend time avoiding using this tool in order to re-train it.
No it’s not an exaggeration, because that’s not what I said. If you somehow miraculously move into a completely different set of directories every day while you work, I’m honestly impressed. You must do a lot of greenfield work.
I spend a lot of time in similar directories and sub-directories for the same projects. So this in fact, without exaggeration, saving me a lot of time. And cd'ing into these same directories and sub-directories is in fact a gigantic waste of my time.
It’s kind of amazing how you and some other commenters are focusing so hard on the number of characters I’ve used to demonstrate how much more efficient AutoJump is.
Did you use the tool? You spent about three times the amount of time it would take to install it to opine on the potential slowness it may have because it’s written in Python. It has a Bash version.
But yeah, we could count beans and figure out all the other potential bottlenecks in your workflow before we address this one. The thing is, this is my blog post about my workflow, and a bottleneck I’ve encountered a lot through the last ten years. I’m sure (from the reception) that it’s going to help a lot of people with similar problems.
But thank you for suggesting I’m not using my shell properly, that’s really helpful. :-)
First off, I missed that this was an authored article, so I was a bit more critical than I would have been otherwise. I want to apologize if you were insulted or offended by my article.
But to be fair, you did say that cd is a “Wasting Your Time”, it’s the first thing I read… And I have to admit that this isn’t quite my use case, since I tend to work within emacs more than a classical shell environment, and my servers don’t necessary have python or bash installed. But I did miss the bash version, I’ll try it out, but I took your article to give a good overview, all I wanted to say was that I really didn’t belive that “cd” was the real bottleneck – for most people – which is implied by the way you address the reader.
It’s kind of amazing how you and some other commenters are focusing so hard on the number of characters I’ve used to demonstrate how much more efficient AutoJump is.
It seemed that this was your argument, that AutoJump saves characters, and that for that reason, it’s worth using. My reaction was just that it seemed like a wierd metric to measure “efficiency”.
But thank you for suggesting I’m not using my shell properly, that’s really helpful. :-)
Ok, instead of “properly”, one could also say to it’s fullest given potential. I know what one can already do with what one has, or as some people say “comes out of the box”, instead of installing addition software. But it doesn’t have to mean anything, since I only have an experience of just over 5 years with all these things.
I tend to agree. I spend much of my time switching between different systems that I don’t own, and every few months I get handed a brand new system with none of my previous customizations. Because of this I’ve taken the time to get comfortable with the defaults. I don’t have a bashrc, I don’t have a vimrc, I use screen instead of tmux because my machines don’t have tmux. And as it turns out, you can get a lot done with the defaults.
Then again these days I’m the kind of person who prefers default settings anyway… I had an Android phone that I would heavily customize and as soon as I got it how I wanted it, the developer would stop supporting a plugin for my launcher and now I have to do it all over again. I’d customize my Linux shell and then there’d be some new best thing (stop using screen, switch to tmux, stop using bash, switch to zsh) that I just had to install and switch my workflow to. I even switched to dvorak instead of qwerty because it’s better. But then I found I couldn’t use someone else’s machine, and they couldn’t use mine. And when I got a new one, it would take ages to get it set up again unless I learned even more tooling to save my configurations. Instead of doing work, I was fiddling with the tooling. All the time saved by the better tools cost even more time in configuration and learning a new workflow.
Over the years I’ve decided that it’s not worth it to me, and now I feel a zen-like calm knowing that I can log into any machine and all of my favorite tools will already be there.
That being said, I love the idea of this project, and past-me would have been all over it. Though the headline is a little hyperbolic I think there’s a target audience for it, even if I’m not part of that audience.
This is interesting but Bundler has supported conservative updates (what this screencast depicts) since version 1.14 with bundle update --conservative <gemname>.
Trying to share this piece with as many people as possible as I think the discussion is a really healthy one.
I particularly enjoyed Mike Perham’s take on the issue.
I’ll be there with a bunch of Envy Labs and Code School folks. Hopefully we’ll have a moment to chat. Sadly we all get in with a late flight on Sunday.
I think this boils down to a simple problem: it’s relatively easy to give someone an answer, it’s much harder to help someone build the critical thinking skills to come up with their own answer.
There is a short feedback loop involved with giving someone an answer. They ask, you answer, they say “Ahhh”, you say “Yeah!”, they’re happy you have a solution, you’re glad you could provide one and you feel good about yourself.
Helping someone build lasting knowledge and research techniques is a tedious process, it has a long feedback look at it can help generate the kind of knowledge growth you describe Ryan… after a while.
You’re correct that IRC (or IM in general) is not the best place for that kind of learning. This is the realm of mentorships, where meatspace usually dominates, but where some recent attempts have been made to find online solutions:
This is the kind of data I wish Facebook had created when they started talking about their “Graph”. Maybe I’m naive and overestimating the value of personal analytics for the majority of Facebook users.
Ever since Facebook stopped asking me where and when I had met a new “friend”, I realized they decided to dump years of valuable data down the drain because they couldn’t be bothered to figure out a way to do something interesting with it.
Sure, this is a bit gimmicky, but aren’t personal analytics bound to be?
This is being discussed on github already.
I can see this project becoming a bit of a time & resource hog for jcs if readership keeps increasing steadily. I really wouldn’t mind contributing to the hosting cost of a project that provides me with quality tech news and discussions.
I’m not convinced by a pay-to-join model, but I’ve never been a user of either Metafilter or Pinboard.
One other not-so-serious idea I had is a notion of “hats”, so when posting a comment, one could post it while wearing one of his “hats” that were setup for his account.
For instance, “moderator of this site” would be one of my hats, or “employee of XYZ company”. If I were posting a comment about my company and wanted to indicate that I am actually an employee, I could select my “employee of XYZ company” hat while posting and that would be shown above the comment.
The process for obtaining a hat would be something like responding to an email at a company’s domain name or some other verifiable source. Just a thought…
I’ve exactly used this idea of wearing an official hat on a site I built. I’ve used it infrequently (low-traffic site), but I’m very glad to have it. It’s hard to remember that every comment I write somewhere will be the first, totally context-free thing someone has ever seen me say.
I quite like this idea. It reminds me of one of Quora’s best features, lending a level of credibility to the source without requiring some overblown bio.
Interesting idea yeah. As a lurker/member my votes reflect my personal opinion. When I respond to questions/comments/criticism of my work or company, it could be interesting to stand out as a credible source.
Great job, that bolsters my trust in this site quite a bit.
It’s good to know that a news source can be trusted to at least be transparent about its rules and how they’re enforced.
At first glance, you’re correct, I don’t think this is news. Unless I misunderstood the focus of this site.
I guess it would be news if you were watching the Twitter staff fluctuation to extract a meaningful analysis, or if you wanted to point out that someone was either available for work or starting a new venture.
That said, I would be curious if Mike Matas were to leave Facebook, or if Doug Bowman left Twitter. I agree that it wouldn’t be full-fledged “news” if the story didn’t include details on what those people were now up to, but I think it’s a relatively fine line between the two.
And ultimately, in a vote-based system, what’s considered news will rise to the top, whether it fits with top-down preferences or not.
I think my point is that if I cared about whether those people had left their jobs or started new ones, I’d be following them on Twitter (or elsewhere) to see that level of update on an individual.
As far as things rising to the top in a vote based system; that’s somewhat true. However, we can start to set the tone of how these things are perceived by the community as a whole early on.
Whenever I read tech articles about reducing keystrokes I tend to roll my eyes.
cd‘ing directories already takes up a very small portion of my time—optimization will never be worth it. Now if you can tell me how to make roadmap estimations that don’t put my team in peril, now that’s going to help me to not waste my time!Edit: It’s a cool tool, just maybe the article is touting it as more of a life saver than it actually is.
I mean, I do too, but people do actually take this kind of thing seriously. I’ve had several people say they wouldn’t use
ripgrepbecause the command was too long to type, but upon hearing that the actual command wasrg, were much more satisfied. Maybe I missed their facetiousness, but they didn’t appear to be joking…Could they not have just alias’d the command if it was “too long”?
The people in question don’t sound clever enough for that.
Are you asking me? Or them? ;-)
I wonder if these are different people than the ones who complain about short unix command names and C function names…
For those of us with RSI, these little savings add up, and can make for a pretty big difference in comfort while typing.
Oh please. If you’re really worried about a couple of words and keystroke saving, you’d setup directories and make aliases that will take you specifically where you want to go. Assuming it was even a GUI you were using with a mouse, you’d still have to click through all the folders.
Overall, paying close attention to your workspace setting and ergonomics can go a long way in helping improve your RSI situation than this little jumper will ever do
My thoughts exactly. I have often wasted time trying to optimize something which took so little time to begin with, even if I reduced the time to nothing it would have no significant impact on overall performance. And the less-obvious trap is optimizations like this add additional complexity which leads to more time spent down the road.
All right, buddy. Cool.
Did I say it a “life saver”? Nope. Did I say it could save you a lot time? Yup. If
cd'inginto directories doesn’t waste your time, cool. Move along, read the next blog post on the list.I’m sorry about your roadmap estimations. Sounds like you’ve got a lot on your chest there.
Let me just take a step back and apologize—nobody likes negative comments on their work and I chose my words poorly and was insensitive. I’m rather burnt out and, in turn, that makes me appear more gruff online. I’m positive that someone will find this useful, especially if they’re managing multiple projects or similar use cases.
I really appreciate you saying that. The whole point of this piece was to share something that literally makes me whistle to myself with joy every time I use it. I hope you find some time to take care of your burn out. It’s no joke and I’ve suffered from it quite a bit in the past three years myself. <3
I know it’s easy to look at everything as “this is just like X but not quite the way I like it” and I don’t blame you for having that reaction (like many here). AutoJump is to me the epitome of simple, delightful software that does something very simple in a humble way. I wish I had spent more time extolling the virtues of the simple weighted list of directories AutoJump stores in a text file and that ridiculously simple Bash implementation.
The focus on characters saved was a last minute addition to quantity the claim in the title. Which I still think will be beneficial to anyone who remotely has frustrations about using
cdoften and may suspect there is a better way.If only there was a way to optimize crank posting. So many keystrokes to complain!
the parent tool is probably overkill but a simple zsh function to jump to marked projects with tab completion is pretty awesome to have.
I’ve tried this, but I keep end up making shortcuts and forgetting about them because I never train myself well enough to use them until they’re muscle memory.
I think I’ll just stick to ‘cd’ and also extensive use of ctrl-r (preferably with fzf)
And then you go to a work mates computer, or su/sudo/SSH and it’s unusable :)
well this is one of the most useful shortcuts in my arsenal. type
j <tab>orjump <tab>and it completes all the marked directories. If you get over the initial forget to use it curve it’s amazing and simple (just a folder in your home dir with a bunch of symlinks. and a few helpers to create those.)