Ask HN: What tool makes you most productitive?
I believe that learning certain tools can make a programmer much more productive. What knowledge about tools do you have that makes you more productive?
Aim your advice toward a competent *nix user who knows a little about everything, but doesn't know anything in any real depth.
102 comments
[ 194 ms ] story [ 375 ms ] thread- No simple way to keep a small IM status window open in the corner of a workspace
- Limited support for resolution-dependent windows, such as videos, games or remote desktops
- No notification bar for status apps to utilize, such as pidgin or network-manager
- No integration with modern desktop environment features or tools, such as media keys for rhythmbox, launchers like gnome-do, network-manager, automatic disk mounting, screen lock, etc
Gnome and compiz have solved a lot of problems that actually make a Linux desktop usable in modern contexts.
Apologies for the evangelism. :)
As a software developer on *nix I spend a lot of my time manipulating text: code, e-mail, news, forums, documentation, etc.
I can do all this from Emacs which is its greatest strength for me. It might not have the latest and greatest editor features but generally it'll quickly pick them up (within weeks, months or a year someone will have written an Emacs version and I've also written them myself).
So I don't have to suffer all kinds of different programs for doing the same activity: manipulating text. Usually all those programs (web browsers, text editors, word processors, news readers, e-mail clients, etc.) only contain a subset of Emacs' powerful editing features.
It is also available for a lot of different platforms.
Once you've gone the Way Of The Emacs, there is no reason to use vim... unless you have some internal application written in vimscript, of course.
Viper just gets you insert-mode and command-mode. It's still Emacs.
But hey, these two programs are great. I've tried other IDEs, but always end up coming back to one of those two for real work. Some things are easy in one and annoying in the other so they complement well.
It's amazing how much time you can save if you analyze the problem a bit more deeply. It's much easier to use the correct algorithm/implementation if you truly understand the problem.
A second note: Emacs is the one piece of software that makes me the most productive.
SLIME in Emacs is comparable (better in some ways, worse than others) if you're hacking in a Lisp. It is really nice to work with code at a higher semantic level than just ASCII text, sometimes.
(I also hear that VC++ has similar or even better refactoring features, but I haven't used it.)
grep, sed, awk, sort, uniq, shell scripts and pipes now do things in seconds that took me hours if not days to do with Windows GUI tools. Of course my experience plays a big part to that but I don't think that I would be were I am without those.
I find Kraftwerk is gold for this. Try "Computer Love" or "Radioactivity". There's more esoteric ambient stuff like Maeror Tri if you're curious enough to hunt around a bit. Also try Ildjarn's ambient music. (Ignore his heavy metal -- I like it, but it's certainly not for everyone.)
It helps me keep track of side projects. For a long time I had trouble remembering where to pick up a project and would get distracted by unimportant parts. JIRA helps keep that to a minimum and makes me feel more serious about them.
I even keep one project setup in it for personal stuff (renew passport, etc) just to keep all the TODOs in one spot, but whenever you tell people that they always make some wise-ass crack about using it to file a bug report about you personally...
That could be an interesting way to learn more about yourself and how others perceive you. Let people file bugs against you. How am I doing as a manager? As a husband and father? Are any of the tickets being closed?
It would take a pretty strong personality, though, to welcome that level of criticism.
Although I would think it would be more useful in terms of filing bugs about yourself. After all if we try to change ourselves to meet everyone else's expectations then were not much more than a shell after a while...
If you want to use C for your "type I virtual machines", great. But stop writing music players and web browsers in it.
* Learn a good text editor well. I use vim, but learn whatever you feel comfortable in. Just make sure it doesn't stand in your way.
* Learn the core unix commands and use them often (tail, sort, uniq, tee, pushd/popd, etc)
* Use a configuration management tool (I use puppet, some people like cfengine, there's also chef)
* The second you see yourself doing something for the third time, script it (It goes without saying: learn a decent scripting language well)! Keep typing same long command? Alias or macro it. I can't stress this enough.
* Automate builds, tests and all doc generation. Don't repeat yourself. Use your downtime to reduce repetition. See what can be scripted.
edit:
* Keep everything in source control. Have a 'misc' repo and if you're starting to work on a script just to do some basic maintenance, add it to repo and keep it up to date. You never know when it will grow beyond a toy and you never know if you might break its functionality by messing with it.
edit2:
What really keeps me productive is liking the work I'm doing. Nothing else comes close.
Also, after getting my laptop bricked by the Ubuntu 9.10 upgrade I recovered my entire project from it.
- Python [You can write quick programs on the command line or use it as a calculator]
- ToDo List/Notes App running on the background.
- Multiple Desktop Windows(workspaces)
- Dual Monitors.
Eulogy follows:
Emacs has helped me eliminate software clutter. Seriously. Computer and software maintenance is a major productivity killer for me. Install this upgrade, update this app... I really hate that process, and even Mac OS does not hide it behind the scenes.
Emacs and org-mode helped me get rid of my mess of "productivity" apps, which also means less thinking about which app to use for what. It helps that Emacs just helps me bend text files into my thought flow, and I don't have to adapt to Productivity-App-Of-The-Day's model of anything. To-do lists go into an org-mode file. Latest thoughts about work can go into a an org-mode file. I can slice and dice them and write them as free-form or as organized as I want. It's immensely liberating. It helps that I don't have to worry about a proprietary file format biting the dust.
And it's telling that there's even iPhone app for it http://mobileorg.ncogni.to/ . Wow. RIP OmniFocus.
http://www.ironicsoftware.com/fresh/index.html
Most of my activities concern the most recent things I've moved with or played with. Fresh lets me handle all of that without worrying about any other workflow. Downloads/screenshots/etc all go through it.
Most frequently used Gnome Shortcut : Ctrl + Alt + Arrow Keys to switch workspaces
Quicksilver like launcher for Linux with numerous plugins : Gnome-Do
Version Control : git
Text Editor : vim
Managing multiple remote ssh sessions : screen