Skip Navigation

Coders, what is your workflow on Linux

Hello,

I installed Ubuntu a few months ago on my work laptop and I've been running and loving it since.

However, I am used to VsCode, so this is what I am using in Ubuntu as well.

So I am curious, what kind of coding so you do? And what is your workflow.

I am an embedded firware developper and mainly use C. I am cross compiling my code in VsCode for a FPGA from Xilinx (dual core arm + PL)

Never dove into make files and cmake more than what I needed in the past, but I had an opportunity to learn CMake and build a project from it.

So my workflow is :

  1. Code in VsCode
  2. Build in CMake
  3. Transfer the app through scp on the target with a custom script (target is running petalinux, which is yocto + Xilinx recipes)
  4. Use gdb server to debug the code.

It's a pretty simple workflow, but I'd like to know what you guys are running so that I can maybe upgrade my workflow.

137 comments
  • I'm also running Ubuntu as my main machine at home. (I have a Mac and do Android development for my day job).

    But at home, I do a lot of website and backend dev.

    1. Code in VSCode
    2. Build using docker buildx
    3. Test using a local container on my machine
    4. Upload the tested code to a feature brach on git (self hosted server)
    5. Download that same feature branch on a RaspberryPi for QA testing.
    6. Merge that same code to develop 6a. That kicks off a CI build that deploys a set of docker images to DockerHub.
    7. Merge that to main/master.
    8. That kicks off another CI build.
    9. SSH into my prod machine and run docker compose up -d
  • I'm the only Sublime Text guy here, I guess. Mostly with extensions for formatting, linting, and detecting compilation/type errors. I work with all kinds of languages, mostly interpreted. Python, Rust, Bash, JS/Typescript, Solidity, and a smidge of others so it's hard to pin down one workflow.

    EDIT: Just wanted to add that it's really cool to see the diversity in the replies. This here is the power of Linux.

  • I'm running Docker in Windows and have a mounted drive. I code in VSC using that mounted folder / volume, and the page shows up on localhost. Just a few simple apps to convert fixed width to csv's and back and gives analytics on the data using jStat and tables with dataTables. Nothing fancy, but I like it.

    Edit: httpd 2.4 as the Docker container.

  • I mostly write rust now, but this workflow was finetuned over years. Use 2 terminals each on a diferent monitor, one runs neovim and the other is for building/running. If the project is a bit more complex, I will run it in a docker container( maybe mount the /etc/shadow and frieds so all artefacts are created using the same user as in the outside) . Developed a bunch of tools over the years to optimise this:

    • a 'package manager' in bash so I have a folder for each project/context. One for work, one common, one for the server stuff like this. All are in PATH.
    • parterm - remote control for the terminal so i can start a build from neovim in a different terminal.
    • 'ndock' - at work I use a bunch of branches, this script will set up a few envs and then start a docker in a folder coresponding to that branch.

    At my old job had to work on a remote vm so I setup sshfs for a while, but was slow and just moved all my tools there.

    I have a pattern where i put all my projects in ~/dev/

    <project>

    branch> and all info related to a task in ~/dev/

    <project>

    /bugs/

    <issue_nr>

    . This is usefull because I can have scripts the work similar for different projects with small changes. For example to run my binary with the config for a issue i just do

     
        
    ndock <branch>
    nr <issue nr>
    
    
      

    This will start docker or connect to an existing one for that branch if available, compile the code, run my binary with the config present in the bug folder. In the last few month started running it with rr to be sure i can debug any random issue.

  • Neovim. I work in devops so it's terraform, ansible and aws cli right now... No need to compile anything or build anything. It's quite nice and simple. :)

    The ability to do everything with shortcuts and no mouse means i get into a certain flow feeling that is really nice. When I need to web search, I use the mouse however. I don't like the vim like plugins for the browser. The mouse is way faster there.

    1. Code in Emacs or Jetbrains (depends on language and laptop cpu)
    2. Run make to build, run, debug, or clean (I like makefiles for documenting basic tasks)
    3. Commit with git when chunk of work is done

    I tend to do everything locally on bare metal. I never liked putting stuff in containers or running a vm.

    VS Code is a great editor, though. It actually feels a bit like Emacs.

  • Code in VSCode

    UI in QT Creator

    Build with qmake

    Commit with git

    Push to GitLab

    Run jobs with gitlab-runner

    Deploy AppImage, deb, rpm builds with Docker

  • I use vis to write code, ^Z and make/mk to build the project. Most of the debugging is done with valgrind and eventually gdb though my use is very limited.

    When I work on manpages, I use wendy to automatically preview manpages everytime the source file changes.

  • I'm currently running Fedora Kinoite, via the Universal Blue kinoite-nvidia image.

    A lot of the stuff I personally develop is done in Java/Kotlin, so for those projects I use IntelliJ (via the JetBrains "All Products Pack") to work. For everything else such as Rust which I've been slowly trying to get into, or PHP which I sometimes write for work I tend to use Neovim because its simple enough. I suspect as I start to build bigger projects in Rust I'll start using it through IntelliJ or CLion to have access to a nice debugging environment, but so far the little bit of debugging that I've needed can be done through rust-gdb.

    Its a nice simple workflow, and Fedora already has podman installed for when I'm utilizing Docker as well which is nice.

  • I use GVim for coding and text editing in general.

    Programming wise, CLI tools (grep, sed, awk, sort, head, etc) are enough for most of my tasks. I've written a few Python TUI projects (uses Textual framework) but these are around 300-400 lines, so Vim is more than enough for my purposes. Don't even need any plugins.

  • Bspwm/sxhkd on Artix Linux with runit init.

    Neovim, lots of plugins and custom shortcuts and commands. Espanso text expander for even more functionality.

    St terminal with zsh. Lots of aliases and shell scripts add lots more functionality.

    JavaScript Developer with some docker integration.

137 comments