2015 Productivity, Linux-Style
2015 Productivity, Linux-Style
One programmer's favorites and survival strategies in the mix-and-match world of Linux
Join the DZone community and get the full member experience.Join For Free
Microservices. Streaming data. Event Sourcing and CQRS. Concurrency, routing, self-healing, persistence, clustering...learn how Akka enables Java developers to do all this out of the box! Brought to you in partnership with Lightbend.
This is the stack and the tools that keep me productive in my day to day programming experience on Linux. First of all, let me tell you, that this might not fit your needs: I’m a full time java programmer and so have OS choices.
Linux is my choice for some years already and while this post won’t detail the reasons, it will focus on tools and utilities that help me survive in it.
Well, let’s start from the ground. I don’t have a clear winner here. In fact, I run currently 3 different ones (excluding my router and phone):
- Fedora - On my work laptop
- Xubuntu - On my home laptop
- Raspbian (Debian) - On my Raspberry Pi server
(The info in this post won’t detail too much on the server; it just runs and needs ssh access and that’s pretty much it.)
The reasons for Fedora, and Ubuntu in my case are:
- Packages are available in repositories, and
- Updates to the software packages are not archaic.
Most common window managers are available across all the popular distros.
My choice here is Xfce:
- No need for visual effects,
- Speed favored, and
- Something that I do not fight with every day.
Keep your eye on: LXQt.
(0.8 was released recently, but I plan to give it a try with the next release.)
I have 2 candidates here:
- Bash and
I use bash for scripting. zsh is my default shell.
Shell Env Sync
As I have multiple machines I’m working on, there are two essential projects in the area for me:
- Nicely structured plugin approach,
- Autocompletition, and
To document my use case a bit here, these are the plugins I have present in my
plugins=(git mvn glassfish yum colored-man vagrant z common-aliases gradle homeshick vim-interaction powerline tmuxinator tmux)
Please note: Some are not available officially, and in the time of writing are just present as pull request from me to the project. Namely:
(Feel free to check them out and provide feedback on these if you find them useful.)
Lets me synchronize all my custom zsh plugins as well as
.bashrc files over a git repository.
The only requirements are:
- git and bash on all the clients
- and the git repo accessible from all my clients.
In my case, there are things I don’t want to expose to public, but have no problem to have it hosted in some private git repo. So bitbucket is my choice, as I have there private git repo for free.
Shell Sessions Bootstrapping
There are 2 important projects for me here:
Tmux and tmuxinator enable me to have just one yaml formatted file for bootstrapping my terminals.
I prefer it to having multiple tabs open in some GUI terminal, as it:
- Bootstraps all my shells daily in a sane way,
- Provides me with the nice way of organizing these, and
- Navigation between these works with keyboard only => switching between different tasks becomes after some time of usage just a routine.
So no more searching in countless cards/windows for particular task.
Some that I consider worth it:
- Ack - powerful grep replacement (I might document in the separate blog post),
I use it for all the app-server (in my case Glassfish) lifecycle management operations (start/stop/restart domain), as well as deployment stuff.
This is great, as I can work in parallel, and it gets my attention once the job is done.
Desktop App Launcher
I use Synapse.
My choice is Krusader. What I need is available, namely:
- File/folder manipulation,
- File folder comparison, and
- File/folder contents search.
The only thing that bothers me is the fact that development is stalled.
Still, viable alternative might be: Double commander, which seem to be even cross-platform and can use the total commander plugins (which used to be my choice on windows for the purpose).
As I like to play with Ruby these days, I tried to find something that would help more in that area.
After searching I came to the conclusion that (G)Vim is quite popular in the Linux world. The feelings of many about this editor are expressed in the Infinite Vim Monkey Theorem (cf. infinite monkey theorem).
Still, I’ve seen:
- Countless plugins for all sorts of stuff, and
- It’s incredibly powerful, as far as I’ve seen, and learning it might yield dividends.
Great source of information: vimcasts, which helped me a lot in this area.
File Sync Tool
Hope you find some inspiration here. And would be glad to hear from you guys about any I missed, but you could not live without.
Still, I can’t believe anyone read this far. As I guess I would not force myself to :).
Published at DZone with permission of Peter Butkovic , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.