6 ms·
Hey everyone, I'm in the main engineer on this project if anyone has questions. Facebook has a large codebase, so naturally we have a lot of long filenames and
by xxbondsxx 11y ago
Hey everyone, I'm in the main engineer on this project if anyone has questions.
Facebook has a large codebase, so naturally we have a lot of long filenames and paths. It's a pain to type these out by hand, so I'd see a lot of (new) engineers select the text with their mouse before pasting it into the command line.
This is pretty inefficient and I knew there had to be a better way, so a few of us started hacking on a set of python regexes and a curses UI. Before long we had a pretty simple / easy command line utility that sped up everyones' day.
After a while we realized this would probably be helpful to all, so we open sourced it today!
- kbd 11y ago> so I'd see a lot of (new) engineers select the text with their mouse What did the more experienced engineers do differently?
- xxbondsxx 11y agoA lot of the more experienced engineers had cooked up their own regexes / bash aliases / crazy combination of vim macros to handle the above, but everyone had their own one-off solution that was either hard to learn or hard to generalize. The demand was definitely there though which was part of what got us motivated to build something anyone could use and learn.
- CGamesPlay 11y agoWhen I was there, I would literally just never close files related to what I was working on. I had editor sessions lasting months so I didn't have to reopen all of my files.
- Splendor 11y agoThis looks very useful. Thanks for sharing it.
- aristus 11y agoGood work! when I was at FB I rolled my own, called "gitsh": https://gist.github.com/aristus/2304335 https://gist.github.com/aristus/2304335 One of the most useful features is range selection syntax, eg, run git rm on items 4-16.
- xxbondsxx 11y agoAh yes I remember this! I was always bad at typing out the numbers though. We support range selection as well, but it does require a keypress for each (which is less than ideal if you have a ton of entries). Maybe we'll integrate some kind of line-number-selection-mode one day!
- staz 11y agoLook pretty nice. Have you considered integrating fuzzy finding in it? Or making it cooperate with fzf?
- itsbits 11y agodo we need to open any specific mode in terminal for FPP?
- JohnBooty 11y agoOh wow, thanks! I was just thinking about this today - how I'm always cut-and-pasting file paths from ag (silver surfer) results at the console. One thing I noticed: FPP gets confused by filenames with multiple dots. If a file is named for example "dev_backup.ldif.gz", FPP thinks that "ldif.gz" is the entire file name.
- xxbondsxx 11y agoYep, this is where our regexes start to fall short. Mind opening a github issue for this? We can likely add another option in our "fallback" regex, but it's a fine line to draw between overmatching and undermatching. For instance, we currently match on "add/remove" output from git status which is less than fortunate. For performance reasons we don't actually go check if each of those files exists (since sometimes you want to pipe hundreds of results into fpp [EDIT: and are using an expandrive or network mount])
- ploxiln 11y ago[pierce@plo-pro team15]$ time (find . -print0 | xargs -0 stat -f '%N' | wc -l) 4901 real 0m0.079s user 0m0.043s sys 0m0.060s
- xxbondsxx 11y ago@ploxiln -- edited my comment explaining a lot of devs here use network mounts (in which case checking for existence takes a lot longer). I'd love to explore this though, either behind a config setting or eventually as the default behavior! What do you think?
- sandyarmstrong 11y agoI think to have usable matching you're going to have to go that way, unless you want to write custom parsing code for each command's output.
- ploxiln 11y ago
- umanwizard 11y agoDude, this is awesome. I've often thought about making a tool that does exactly this, but put it on the back burner of my mind. Really cool to see someone else had the same idea, but went a step further to actually execute it :)
- deleted 11y ago[deleted]
- BonoboBoner 11y agoThank you for making the mouse a thing in a keyboard driven world. As someone who grew up with gaming and learned IT as a result I never was able to fully give up on the mouse during my daily workflows. I admire people who can use VIM etc only by keyboard, but my muscle memory just says: mouse. Thanks for establishing something that embraces this.
- ossreality 11y agolol, what are you talking about, this isn't mouse-enabled?
- Kiro 11y agoJust want to echo the dead comment: ossreality 6 minutes ago [dead] lol, what are you talking about, this isn't mouse-enabled?
- gilini 11y agolol, someone's gonna be disappointed trying fpp for the first time
- stephengillie 11y agoYou sound like a Windows admin living in a Linux/BSD world. I struggle to do everything with Powershell, but almost everything I do has a mouse input. I use a gaming mouse for system administration - a Razer Naga Epic with the 12 thumb buttons. They're a 3x4 array; I bind them to: Row One 1. F5 2. Up arrow 3. F2 Row Two 4. Left arrow 5. Down arrow 6. Right arrow Row Three 7. Tab 8. Delete 9. Backspace Row Four 10. Enter 11. Spacebar 12. ESC I can do the work of 2-3 admins, and I'm faster than poorly-written scripts.
- brazzledazzle 11y agoYou should use whatever works for you but this strikes me as very bizarre I have to admit. I started out with a mouse as well and I can see this being something I would have attempted if I hadn't just put my head down and forced myself to get used to keeping my hands on the keyboard.
- UUMMUU 11y agoVery cool tool. Just curious as to why directories are not selectable. I did "ls | fpp" and everything got listed (directories and files) but only the files were selectable.
- xxbondsxx 11y agoYeah, we don't match on directories since the regex would overmatch other results (we would basically have to match anything that is words with a slash). However if we added support for checking for file / directory existence we could definitely add support for that
- atarian 11y agoI think if you added the ability to traverse directories, that would take this tool to the next level. I kind of expected the tool to be similar to NERD Tree or Vim's explorer, which would be incredibly useful.
- ugh123 11y agoDon't forget about mc (midnight commander). Which is still hella useful http://en.wikipedia.org/wiki/Midnight_Commander http://en.wikipedia.org/wiki/Midnight_Commander
- UUMMUU 11y agoSounds like something I should give a try myself in a pull request.
- Zolomon 11y agoI have been thinking about a more general tool that allows you to select text in different ways from some input, and either copy the selection into your paste ring or as fpp does. I am still thinking about different selection modes and how the UI would work. Usually I see a need to either copy several full lines, or columns from a table like structure (rectangle selection) or from a regex. Looks good so far!
- fragmede 11y agourxvt supports URL highlighting, so I can just click on URLs in my terminal and they open in my web browser. It's extendable too, so pdf filenames can be made into links that open in your chosen pdf viewer. I see no reason why this couldn't be extended to arbitrary filenames in your chosen text editor.
- fredkelly 11y agoThis looks very cool - thank you. I've been using Pick by Thoughtbot [1] for the same purpose, but if I understand correctly fpp will automatically extract file paths from any command without me needing to chain in awk/grep ? [1] https://robots.thoughtbot.com/announcing-pick https://robots.thoughtbot.com/announcing-pick
- nightpool 11y agoYeah, that seems to be the idea. It has a bunch of regexes for parsing different kinds of outputs, and some fallback ones.
- encoderer 11y agoDo you work on developer tools at FB or was this extra-curricular?
- akshayaurora 11y agoNot sure, how much I'm going to use this. But I just hate the name (or command) `fpp`. Why put Facebook in the name?
- goatslacker 11y agoHey - I was the person who used this tool the most while I was at FB. Thanks a bunch for open sourcing this I've been missing it.
- GutenYe 11y agoHow to install it in Linux?
- pliny 11y agohttps://github.com/facebook/PathPicker/blob/master/README.md#installing-pathpicker https://github.com/facebook/PathPicker/blob/master/README.md...