My Linux Development Environment of 2018
Bruno Paz

Bruno Paz @brpaz

About: Web Engineer. Working mostly with PHP, Symfony and Golang. Entusiast about Engineering Best Practices, Continuous Delivery and DevOps. Sports and FC Porto fan!

Location:
Porto, Portugal
Joined:
Nov 28, 2017

My Linux Development Environment of 2018

Publish Date: Mar 24 '18
1491 67

In this blog post I will talk a bit about the setup and software of my personal laptop, powered by Linux. This is somewhat inspired by this post, but for a Linux based setup.

I wont list all the applications I have installed on the machine, but only the ones I consider relevant and more focused on Development.

Base system

Right now my machine is running Linux Mint 18.3 but I am thinking of moving back to Ubuntu 18.04 when its out. I dont really have any complains with Mint, but with with the replacement of Unity with Gnome 3 I want to give it a try.

Productivity Tools

  • Boostnote — My main note taking application. I use it mostly to store code snippets and reference material for my development activities. Its open source, cross platform and works completely offline. I wish to have an easier way to sync between multiple machines but since the notes are stored as CSON files, I am using a private Git repo to sync.

  • Simplenote — I use Simplenote as my “scratchpad”, for quick notes and thoughts. mostly when on my mobile.

  • Cerebro — Cerebro is an open source cross platform launcher similar to Spotlight and Alfred for Mac. The maintenance is kinda low atm and I felt the need to fork it, but it works pretty well. It doesnt have the same amount of plugins as Alfred does, but I have been developing some.

Internet

  • Google Chrome — My primary browser of choice.

  • Firefox — My secondary browser.

  • Min — Min is a minimalist webbrowser. Since Linux doesn't have anything like Fenetre for Mac, I use it when I want to browse documentation, follow a tutorial or watch a video side in a Picture in Picture / side by side mode.

  • Dropbox — For sharing files.

  • Mailspring — Email client.

  • Corebird — Twitter Desktop client

  • Ramme — Instagram desktop client

  • Caprine — Facebook messenger desktop client

  • Whatsapp Desktop — WhatsApp desktop client with built in notifications and system tray integration.

  • Slack — For chat and engage with communities.

  • Wireshark — For network sniffing. Useful when developing to see the communication between multiple applications.

Graphics and Multimedia

  • Pinta — Pinta is a free, open source program for drawing and image editing. Its my image editor of choice. While Gimp is the most popular image editor on Linux, I found Pinta to much more simpler to use and resembles more with Photostop.

  • XnConvert — a powerful and free cross-platform batch image processor, allowing you to combine over 80 actions.

  • Draw.io — Draw.io is my app of choice for designing all kinds of diagrams, from flowcharts, to sequence diagrams or even wireframes. Its 100% free to use and can be integrated with Google Drive.

  • Shutter — For taking screenshots and quickly annotate them with arrows, boxes etc. It also have some nice effects like blur sensible parts of an image.

  • ffmulticonverter — For converting images / videos between multiple formats.

  • Peek — Peek allows to record the screen and save as GIF format. very useful for creating demo gifs for put on project readme files for example.

  • pick — Color picker

  • Trimage — Image compression tool

Sound and Video

  • VLC — my favorite media player. Version 3 have chromecast support built in which is even better.

  • Kdenlive — for video editing

  • Kazam — To record screencasts

  • Spotify — For listening to my favorite music.

System utilities

  • Bleachbit — System cleaner utility.

  • Stacer — Linux System Optimizer and Monitoring

  • Caffeine — To keep my machine awake

  • Pullover — To receive Pushover notifications on my desktop

  • CopyQ — To manage my clipboard

Editors

  • Jetbrains (PHPstorm, WebStorm) — My IDE of choice,

  • Visual studio code — All in one text editor

  • vim (for editing files on command line)

Terminal setup

  • Tilix — My favorite terminal emulator.

  • Zsh shell — An feature rich alternative to bash

  • zplug — To manage zsh plugins.

  • zsh-completions — Additional completion definitions for Zsh.

Command line utilities

  • tldr — tldr is an alternative to man pages but only with the essential. Great way of quickly find any command syntax.

  • yadm — Dotfiles manager

  • fasd — Fasd is a command-line productivity booster. Fasd offers quick access to files and directories for POSIX shells. It is inspired by tools like autojump, z and v. Fasd keeps track of files and directories you have accessed, so that you can quickly reference them in the command line.

  • fzf — A command-line fuzzy finder

  • the silver searcher — A code-searching tool similar to ack, but faster

  • lf — A command line file manager.

  • pandoc — convert between multiple file types from the command line.

  • pwgen — Password generator

  • lnav — An advanced log file viewer for the small-scale

  • trash-cli — trash-cli trashes files recording the original path, deletion date, and permissions.

  • opn-cli — Opens stuff like websites, files, executables. Cross-platform.

  • ascicinema — Record and share your terminal sessions, the right way.

  • hostess — An idempotent command-line utility for managing your /etc/hosts file.

  • get-port-cli — Get an available port

  • public-ip-cli — Get your public IP address

  • internal-ip-cli — Get your internal IP address

  • speedtest-cli — Command line interface for testing internet bandwidth using speedtest.net

  • fkill-cli — Fabulously kill processes. Cross-platform.

  • doctoc — Generates table of contents for markdown files inside local git repository. Links are compatible with anchors generated by github or other sites.

Development Environment

I use Docker extensively in my development environment. I still have common runtimes like go, php, node (with nvm) and ruby (with rvm) installed in the host.

  • Docker

  • Docker-compose — Define and run multi-container applications with Docker

  • Minikube — Run Kubernetes locally

  • Telepresence — Local development against a remote Kubernetes or OpenShift cluster

  • ctop — Top-like interface for container metrics

  • Vagrant — Development Environments Made Easy. I dont Vagrant that much nowadays unless I want to work on infrastucture stuff. (Ex: testing spinning a new cluster or testing an Ansible playbook).

  • Dnsdock — For managing dns of Docker containers.

Development tools

  • how2 — Stack overflow from terminal

  • Pet — Simple command-line snippet manager. I use it to store the commands I use most.

  • caniuse-cmd — Caniuse command line tool

  • hub — hub is a command line tool that wraps git in order to extend it with extra features and commands that make working with GitHub easier.

  • conventional-changelog — Generate a changelog from git metadata

  • release-it — CLI release tool for Git repos and npm packages.

  • git-open — Type git open to open the GitHub page or website for a repository in your browser.

  • git-semver — Git plugin for Semantic Versioning

  • tig — Text-mode interface for git

  • jq — jq is a lightweight and flexible command-line JSON processor

  • python-gitlab — GitLab client

  • overcommit —a tool to manage and configure Git hooks.

  • tmux and tmuxp — Terminal multiplexer.

  • gitbook-cli — GitBook’s command line interface

  • pageres-cli — Capture website screenshots

  • httpie — Modern command line HTTP client — user-friendly curl alternative with intuitive UI, JSON support, syntax highlighting, wget-like downloads, extensions, etc

  • yeoman — Yeoman is a tool that allows to scaffold projects from a series of templates.

  • generator-editorconfig — Generates .editorconfig files.

  • license — Create licenses from the command-line.

  • gi — Create useful .gitignore files for your project

  • travis.rb — Travis CI Client (CLI and Ruby library)

  • http-server — http-server is a simple, zero-configuration command-line http server. It is powerful enough for production usage, but it's simple and hackable enough to be used for testing, local development, and learning.

  • codeclimate-cli — codeclimate is a command line interface for the Code Climate analysis platform. It allows you to run Code Climate engines on your local machine inside of Docker containers.

  • mycli — A Terminal Client for MySQL with AutoCompletion and Syntax Highlighting.

  • json-server — Get a full fake REST API with zero coding in less than 30 seconds.

  • localtunnel — localtunnel exposes your localhost to the world for easy testing and sharing! No need to mess with DNS or deploy just to have others test out your changes.

  • mailhog — Web and API based SMTP testing

  • artilery — Artillery is a modern, powerful & easy-to-use load testing toolkit. Use it to ship scalable applications that stay performant & resilient under high load.

  • Postman — Postman Makes API Development Simple.

  • Devdocs-DesktopDevDocs.io combines multiple API documentations in a fast, organized, and searchable interface. This is an unoffcial desktop app for it.

DevOps tools

  • doctl — A command line tool for DigitalOcean services.

  • gcloud-sdk — The official sdk to interact with Google Cloud infrastucture.

  • aws-cli — This package provides a unified command line interface to Amazon Web Services.

  • ansible — Automate infrasctucture

  • terraform — Write, Plan, and Create Infrastructure as Code

  • kubectl — kubectl is a command line interface for running commands against Kubernetes clusters

  • kubectx — Fast way to switch between clusters and namespaces in kubectl!

  • kubeval — Validate your Kubernetes configuration files, supports multiple Kubernetes versions

  • helm — The Kubernetes Package Manager

  • heroku-cli — The Heroku Command Line Interface (CLI) makes it easy to create and manage your Heroku apps directly from the terminal. It’s an essential part of using Heroku.

  • forge.sh — Define and deploy multi-container apps in Kubernetes, from source

  • Firebase tools — The Firebase Command Line Tools

  • dpl — Dpl (dee-pee-ell) is a deploy tool made for continuous deployment.

Conclusion

This is current Development machine. Hope you have find this useful.

I am always looking for ways to improve my workflow, so if you use any tool that you find useful and its not listed here, feel free to comment this post.

Linux can be a very powerful development environment. Its a pity that amazing Mac applications like Alfred or Fenetre doesn't have a viable Linux alternative. Thats what I miss the most. And I never used a Mac but I feel the power of these applications!

Comments 67 total

  • Evaldas Buinauskas
    Evaldas BuinauskasMar 24, 2018

    This is useful af!

  • Carles Mata
    Carles MataMar 24, 2018

    Great amount of new stuff to take a look :) Thanks for sharing!

  • Thang X. Vu
    Thang X. VuMar 24, 2018

    Awesome! Thank you very much for sharing!

  • Itachi Uchiha
    Itachi UchihaMar 24, 2018

    Thanks a lot :)

    I can't install boostnote for my Ubuntu 17.10 Gnome :/ But I used it at my work place.

    • Bruno Paz
      Bruno PazMar 27, 2018

      Thats a pity. may be you should open an issue on Boostnote Github repo. I plan to switch to Ubuntu 18.04 so Boostnote has to work fine :)

  • minhtrungaa
    minhtrungaaMar 24, 2018

    Love these kind of article

  • Dídac
    DídacMar 24, 2018

    Really nice article!

    For me I'll add to the list:

    Terminator
    Redshift

    • Bruno Paz
      Bruno PazMar 26, 2018

      Yes I have used Terminator before, but I have replaced it with Tilix. It has the some functionalities like split panes, but with a more modern look.

      Didn't know about Redshift. Will check. Thanks!

  • Róbert Matkulčík
    Róbert MatkulčíkMar 24, 2018

    HI, you can use this:
    extensions.gnome.org/extension/122...
    as a Fenetre alternative. If you have Mint with Gnome :)
    Also try Albert as a Alfred alternative. And THX for useful stuff

    • Bruno Paz
      Bruno PazMar 26, 2018

      Hi. Didn't know about that Extension. Thanks.

      Yes, I have seen Albert before. Its not there arent tools like Alfred in Linux world. The issue is the lack of extensions, at least compared with Alfred which has an huuuge amount of workflows for literally everything.

      This also looks cool .

  • Yoann Moinet
    Yoann MoinetMar 24, 2018

    Hi, I'm the creator of Fenêtre !
    Really appreciate the reference mate, that's awesome.

    I'm chiming in just to say that I'm working on the cross plateform of the app.
    Currently just Windows, but if there's interest for Linux as well, it might be cool to do too.

    Anyway, great listing !
    Cheers.

    • Ben Sinclair
      Ben SinclairMar 25, 2018

      That looks useful actually. I've always missed the basic things like always-on-top on the Mac.

    • Dídac
      DídacMar 25, 2018

      +1 for the Linux version

    • Dhruvdutt Jadhav
      Dhruvdutt JadhavMar 26, 2018

      +1 Linux <3

    • Bruno Paz
      Bruno PazMar 26, 2018

      Hi. Yes, Would love to have something like Fenetre for Linux!

    • Flash
      FlashMar 27, 2018

      I use Windows for the video side of things, Linux for JS dev, but after looking into Fenêtre and the video editor Bruno mentioned (Kdenlive) I can honestly say I am just as eager for Fenêtre on Linux!

      So, for what it is worth, +1 for Linux Fenêtre!

    • hammashamzah
      hammashamzahMar 28, 2018

      +1 for Linux <3

    • Xavi
      XaviMay 2, 2018

      Another +1 for Linux :)

    • モハメド
      モハメドJun 4, 2018

      Linux version+=1

  • John Costanzo
    John CostanzoMar 25, 2018

    Thank you for putting in the time to create this. Love to see what apps I am missing. Gave me some good ideas

  • Joel Murphy
    Joel MurphyMar 25, 2018

    Love this post, great job.

    What technologies do you work with the most?

    • Bruno Paz
      Bruno PazMar 30, 2018

      Thank you.

      I am a Web Developer, mostly working with PHP, Java and Go in my daily work.
      I am also interested in NodeJS, VueJS and DevOps stuff like Kubernetes.

  • Dell  Ward
    Dell WardMar 25, 2018

    Dope! Very useful 👌🏾

  • Adrian B.G.
    Adrian B.G.Mar 25, 2018

    Nice, I made a setup last week for with a simpler setup still for web devs, but I wrote almost all the commands in a gist for further use (docker, bash-it, basic tools and CLIs)

  • Alex George
    Alex GeorgeMar 25, 2018

    thank you!

  • PNS11
    PNS11Mar 26, 2018

    Asciinema looks good, I'll try it out.

  • Christian Baer
    Christian BaerMar 26, 2018

    The how2 link is broken. :-( I was really interested.

  • Adriano Skroch
    Adriano SkrochMar 27, 2018

    OMG, a lot of cool apps you use, gonna test some of them, but I got one question. How long to setup a environment like this in a new computer? there are too many tools, can you remember the commands to use all that?

    • Bruno Paz
      Bruno PazMar 27, 2018

      Great question! Right now I have just a list of all the software I have installed so I would need to install everything by hand on a new machine which would take many time. I am working in a way to automate all this using Ansible. Something like this: blog.josephkahn.io/articles/ansible/

      About the commands,tldr and pet can help a lot with that.
      Shell autocompletion is also very useful. Many of the commands have ways to enable autocomplete for bash or zsh shells. Make sure you enable it.

      I dont use all these tools on a daily basic tough, so many times I still need to read the documentation. I need to improve at this ;)

      You could have a Github Gist or something with your personal cheat sheet where you can quickly reference.

      One piece of advice, build your own cheat sheet and not rely on some random cheat sheet you found online. That way you can identify which commands you use more and build a cheat sheet according to your needs.

  • Ben Klein
    Ben KleinMar 27, 2018

    You definitively should try rambox.pro/ in order to reduce the amount of dedicated chat apps :)

    • Ashley Maria
      Ashley MariaApr 30, 2018

      I use Rambox. I just wish it didn't bog down my computer when I have many things open.

  • JeffD
    JeffDMar 27, 2018

    Awesome list :D
    Boostnote seems to be the tools I'm looking for to replace CherryTree so Thank you.

    NOTE: Mycli exists as Pgcli for Postgresql
    ADD: github.com/nicolargo/glances for one-system monitoring
    ADD: github.com/audreyr/cookiecutter an Yeoman alternative

  • Dionny Prensa
    Dionny PrensaMar 27, 2018

    Some colleague who uses Mac and make a post like this.

  • Is0tope
    Is0topeMar 28, 2018

    Great article. Had one question though. I am an avid user of docker compose in both my dev and production environments. I want to move to Kubernetes (to take advantage of Container Engine, and autoscaling, etc). How do you find developing using eg. Mini Kube vs docker compose? And can you recommend and resources for learning?

    • Bruno Paz
      Bruno PazMar 30, 2018

      Hello. I am in a similar situation than you. I still use Docker Compose for development and for now I found it simpler to use. I am using Minikube more of a platform to experiment and to learn Kubernetes.

      But I plan to dig deeper in Minikube soon.

  • Alessandro Ronchi
    Alessandro RonchiMar 28, 2018

    Great list, thank you for sharing! I would just add Guake, a popup terminal I can't live without anymore.
    Cheers!

    • Bruno Paz
      Bruno PazMar 30, 2018

      Thank you.
      Guake is nice, but Tilix also allows you to eanble a "Guake mode" ;)

    • Albert Clo
      Albert CloJul 8, 2018

      Yakuake is like Quake, but allows plane splitting.

  • Christian Baer
    Christian BaerMar 29, 2018

    Thanks. The more important task was to make the author aware ;-)

  • Drew H
    Drew HApr 5, 2018

    Noticed your link for how2 was broke :D
    github.com/santinic/how2

  • aQaTL
    aQaTLApr 6, 2018

    Really nice list. I discovered some cool apps I haven't seen before!

  • Priyansh Jain
    Priyansh JainApr 13, 2018

    Can you make a shell script to set all of this up? Would be damn helpful. Nice article!

  • Patricio Barletta
    Patricio BarlettaMay 15, 2018

    how2 has a placeholder instead of a link

    github.com/santinic/how2

  • Leslie
    LeslieMay 15, 2018

    Linux Ubuntu 18.04 is the best in looks with Gnome and live patching

  • smeeklai
    smeeklaiMay 16, 2018

    A gold article for today ❤

  • yago batista da siva
    yago batista da sivaJul 7, 2018

    mycli is so awesome!

  • Matthieu Cneude
    Matthieu CneudeJul 28, 2018

    That's an interesting list! I see we use some of the same software, like mycli.

    I wrote as well an article which explains my setup (relatively minimal, terminal oriented) if somebody is interested:

    web-techno.net/efficient-developme...

    Thanks for the list, I will look at it more in details see if I can enrich my set of tools!

  • Bit Wombat
    Bit WombatAug 20, 2018

    Annoyingly/wonderfully, there's another 'ctop' that has other cool things like 'entering' the container (getting a shell prompt) and tree view.

    github.com/yadutaf/ctop

  • Amar Ala'a
    Amar Ala'aAug 27, 2018

    thanks for sharing I will try some of these tools
    Add Ulauncher application launcher for linux
    ulauncher.io

  • Ankur Loriya
    Ankur LoriyaAug 28, 2018

    Thanks man. its very helpful commands.

  • Ben Klein
    Ben KleinAug 28, 2018

    I had some issues with Franz and then I found Rambox and switched.

    So the circle closes :D

  • Igor Ferreira
    Igor FerreiraAug 30, 2018

    Great Job!!
    Thanks

  • Thu Nguyen
    Thu NguyenSep 29, 2018

    Really nice :thumbsup:

  • Bruno Paz
    Bruno PazOct 21, 2018

    Hello. I have created a GitHub repository with my setup.

    I will try to keep it updated as I discover new tools.

  • Pak Public News
    Pak Public NewsOct 31, 2018

    i like your must Thanks,
    Pak Public News

  • Maier Erik
    Maier ErikMar 22, 2019

    There is no decent mysql gui client for linux like Heidi SQL on Win or Sequelpro on Mac. Can somebody recommend one?

  • Eslam Abdo
    Eslam AbdoMar 29, 2019

    Thanks.
    This is very helpful ,
    I have just installed linux and have used this a reference to setup my environment.

  • Fazle Arefin
    Fazle ArefinJun 28, 2019

    Awesome list. You might want to add insomnia for API development. I prefer it over postman since insomnia does not come with lots of bells and whistles which I don't use and looks cleaner.

    Also, check out the ansible playbook I wrote for configuring a fresh Ubuntu system: github.com/fazlearefin/ubuntu-dev-...

  • Augustas Verbickas
    Augustas VerbickasSep 27, 2019

    Good list! Recommend Flameshot instead of Shutter - less hungry on resources, do the same, working faster.

  • Masiha Ahmadi
    Masiha AhmadiApr 18, 2020

    great listing

  • AlphCode
    AlphCodeSep 9, 2020

    on the part of Productivity Tools, I would love to see some CLI productivity apps. Anyway, nice comprehensive list of tools I would definitely wanna dig.

  • Iftikhar Zahid
    Iftikhar Zahid Dec 7, 2020

    Thanks a lot, useful sharing, keep it up.

Add comment