To start, my Operating System of choice is Ubuntu. Right now I'm on 16.04 but plan to move to 18.04 by the end of the year. The only thing lacking are Adobe programs, but that's not a huge issue for me, as I mostly deal with backend work.
I've used Windows for years, and it was ok but not great for development. At one point I got myself a Macbook Air, and used that for a while, enjoying the terminal, especially iTerm, but really disliking how closed the entire Mac system felt. I ended up frying the thing accidentaly with coffee, and the fact that I couldn't just open it up myself really ticked me off, so I swore off Macs after that. I'm just too used to messing with my rigs: something that I had with Windows machines, and have again with my Lenovo Thinkpad. I've happily openned it and added an SSD and extra RAM to help it everything smoothly.
For the most part I really like Ubuntu, but there are some things that get to me. The one ongoing issue is driver trouble, as my WiFi randomly disconnects for a second, and god forbid I put the laptop in sleep mode. Waking it up leaves me without WiFi or sometimes a functioning audio jack.
That aside, I love what I can get done and set up on Ubuntu, and I'm still growing into it. Bonus points for it basically being a great way to practice my DevOps skills, which are part of my daily work.
My first few years of dev work I used Notepad++. I liked it compared to the bigger tools at the time and felt that I'd learn code faster than if I was using something with autocomplete. That worked out great, but only because I was mostly doing PHP, and not something in dire need of an IDE, like Java or .NET. A few years into my career I switched from Windows to Mac. As Notepad++ wasn't available, I started looking around fo something similar. I found Sublime Text 2(at the time) and immediately fell lin love.
It had everything I loved about Notepad++ with extra bells and whistles. The most important things were speed and customizability. The only thing that beats Sublime in terms of speed is VIM, and I haven't found the time to learn it - although I'm looking to try at some point. Also I have massive respect for the creator of Sublime for making it free to use(nagware) and for the inovations he brought to the table, which others later copied.
The plugins I probably notice the most:
- Todo.txt Syntax - I use that in my "todo" file
- Markdown Extended and Markdown Preview - our documentation is in Markdown
- VCS Gutter - basic Git and Mercurial indicators for new/removed/changed lines
- FileDiffs - easily compare files or snippets for differences
- SQL Beautifier - indents SQL
- JSON Reindent - reindents JSON
- HTML Tidy - reindents HTML (we work with a lot of HTML emails)
- PHP Beautifier - cleans up PHP (indentation, brackets, etc)
PHP Array Syntax converter - convert
- DocBlockr - generates Doc Blocks
And a few more minor ones. I end up doing "plugin purges" from time to time, to keep Sublime snappy.
Since leaving Macs, there is only one thing I miss: iTerm. I have yet to find a tool that's so powerful, yet so easy to set up. I've tried everything available on Linux and no one tool does it for me. What I loved about it:
- great keyboard shortcuts for managing sessions
- saved and predefined sessions you can re-use
- new sessions are super easy to set up and use
- You can start specific server connections, with specific commands, with keyboard shortcuts
Now, I know tools like terminator can probably do most of this, but I don't want to have to be a 1337 hacker to get my tools to do what I want them to do. I'm willing to spend some time on it, but if I can't figure it out in a few hours, I move on to the next one. I ended up finding a good balance with Konsole. It gives me a nice customizable starting session, with a few nice shortcuts. It's not good enough for managing servers so I use PAC manager which feels a bit clunky at times but is actually great if you want a lot of ready commands to send to servers. Both of these take longer to set up than iTerm, but together they do a great job.
With PAC manager it's easy for me to open a dozen SSH tabs, some for viewing logs, others for monitoring performance on the server, and some for running commands. The only problem with PAC (that I didn't notice until writing this post) is that it hasn't been updated in 2 years. I've been using it for the past 4 years or so, and I don't see a particular update need, it runs great on every Ubuntu version I've used so far.
Also, my Konsole looks like this on boot-up:
The matrix looking numbers are from the command
cmatrix I use it as a screensaver. Once I start typing they go away. I use OhMyZsh for my shell, it just makes shell usage easier and overall nicer.
I use the default 4 workspaces in Ubuntu, and keep my windows organized in 4 groups:
- Editor (Sublime)
- Terminal (Konsole)
- Server terminal (PAC)
Miscellaneous apps get opened wherever makes the most sense at the time.
Once I have some time I'd love to set up i3wm and learn how to use it. I've seen some great setups over on Reddit. I tend to take a few hours per month to tweak one or two things about my setup. It's easy to get lost in it, so I limit myself, otherwise I'd be tweaking for days!
There's a whole slew of minor tweaks I did to make my system feel like my system, but this is the birds eye view. I urge you to share your setup with us as well, as one can always pick up some pointers from posts like those.