Coders, what is your workflow on Linux

Croquette@sh.itjust.works to Linux@lemmy.ml – 139 points –

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.

135

  • Code in VSCodium
  • Code in Kate to keep thing fresh
  • Code in Nvim because I still need to learn it
  • Cry while debbuging a React app because the error messages aren't very good
  • Wish I were working with Svelte or had enough backend experience to switch to being a backend dev
  • Play with terminal configs and shell scripting to distract myself from my woes
  • Rinse and repeat.

Aside from the (not so much) jokes, give VSCodium a try, it's to VSCode what Chromium is to Chrome, and works just as well.

Ooh. I did not know about vscodium! I've removed vscode and installed it on my Mac. Thanks.

I will look into VSCodium. I've heard a little about it, but I couldn't tell you what is the difference between the two.

Microsoft develops vscode as open source, but compiles it with proprietary telemetry tooling.

VSCodium compiles from the same source code but without the telemetry

Then i will definitely switch. Are the VsCode addon compatible with VsCodium?

They are, but some might not be available from the extension store. Usually copying from vscode extensions folder works with no issues in my experience, but search the Codium store first just in case.

Alright, I'm going to install VsChromium next monday and switch over. I don't use a lot of addons, but I'd like to have my most used addons

There is, or was, also code-oss. Can't remember all the differences though

BUT, it is not made by the same people who made VSCode. Completely different team.

Am I the weird one that just uses jetbrains for everything?

Isn't JetBrains a paid suite? I've heard a lot of good things about it, but since my workflow is basic, VsCode was always the choice wherever I worked.

There is a "community edition" which is free.

It's also open source but only for java.

It's not just Java. It supports a few other languages as well. I am pretty sure it supports Rust, HTML, JavaScript and maybe a couple others. It doesn't support Python, Go, PHP, C/C++, or Ruby (as they have separate products for those).

I do too. Nvim for text editing, vs code for the occasional one/two file script, jetbrains for anything more extensive

I use it too. It's very good if you prefer an IDE and one stop shop for it all.

JetBrains, the refactoring tools are much better than any alternative, and that is a great productivity booster. Also, it has excellent remote support. Mainly at the moment, I'm using pycharm and clion.

  1. Code in Emacs
  2. Create a Nix Flake for building my Environment
  3. Build with whatever buildsystem the language requires, often Stack or Cargo
  4. Package for nixpkgs

I'm an old school emacs guy, I prefer that for c++/python/etc and run KDE Neon because I like KDE and I'm used to ubuntu (and Kubuntu has some issues). For c++ I use CMake, google test. Not really a fan of docker etc. but I have used Kubernetes and docker in the past. Those types of containers just create new and more complicated problems than just testing on the target platform, but in some niche cases it can be useful.

I can't stress enough how awesome emacs is, but it takes a serious investment to get efficient with it.

emacs with magit and meow are just amazing efficiency add-ons to my workflow. when your tools just get out of your way and keep you in the flow, it's much easier to stay productive.

How long did it take you to get comfortable with emacs? I have it installed on my work laptop, but it was daunting to use when everything was new to me.

I can't use containers with my target platform since I only have 64Mb of qspi flash and 512Mb of Ram. So it's baremetal for me, but i'm used to that.

Tmux + nvim for editing code and bspwm for a fully keyboard only workflow. I have some keybinds in tmux to open a new pane and run cargo or whatever command is necessary to run the code.

How long have you been using nvim/vim in general?

I have to use vi/vim from time to time for basic editing (like on petalinux for example), but it is quite intimidating to get into. I'm already over my head right now, so adding a new learning curve might not be the best timing.

I had to use vi for work (only editor installed on the servers), and it snowballed and now I can barely type in anything that doesn't have vim bindings.

The first few days were pretty rough, but I learned the absolute minimal basics, and then just organically learned features as I needed them/whenever I felt like what I was doing was tedious, and there had to be a better way. It's been about 10 years, and I'm still learning!

One small suggestion, check YouTube for videos of people showing off vim features, e.g. https://youtu.be/5r6yzFEXajQ. You won't remember everything from one watch, but it'll help you see what is possible/how powerful vim is, which can guide your "this is so painful how do I make this better" searches down the line.

Someone suggested vim adventures to learn vim so I will look into that for sure. I really like the proposition of the Vim.l workflow, but I need to set time aside right now that I don't have. But once my project is started properly, I will definitely dive into Vim

Transfer the app through scp [...]

I use an ad-hoc while loop in a shell with inotifywait to wait for changes in the watched directory and then scp it.

That's clever. I'm not used to shell scripting yet, but I really like that it is easy to automate things in Linux. If you can run it in terminal, you can script it.

Neovim for me. There are so many plugins to make the editor behave exactly as you want.

I really want to get more into neovim, being able to host the backend service and just point to it from other servers seems super useful for me!

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 mainly use Python, so my workflow is the same on every OS: Neovim and a shell, usually one of each in a vertical split. This transfers nicely to remote SSH sessions too, and even works in Termux on my phone!

Have you investigated whether it's possible to test your cross-compiled builds in Qemu, rather than copying them to the host?

It's possible to use QEMU, but since my primary goal is to use the hardware (GPIO, ADCs, SPI, etc.), it isn't as useful for me in that case since I want to physically interact with the board. There is certainly a point where I will use QEMU more, but for the moment, it's not practical.

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.

  1. Setup my vimrc.
  2. Clone the project, and realize that whatever repo managing system they started using 3 years ago requires setup steps not in the README and breaks everything at the slightest touch.
  3. Build the currently relevant project in whatever build system they started using 3 years ago (CMake is quite nice).
  4. Fix my vimrc to be compliant with whatever tabbing they use.
  5. Realize that for some reason, someone made a commit in the file I'm reading that uses 3 space tabs. And worse, someone approved that PR.
  6. Make changes via vim.
  7. Debug via print because setting up gdb or JTAG on embedded systems is usually more effort than its worth.
  8. Realize it's a timing issue and reluctantly go find the JTAG debugger.

It's funny how the JTAG debugger should be the first thing that we use, but just like you, I don't want to use it until really necessary.

But the moment I setup everything, then I wonder why I've waited so long to do the setup haha.

I work with backend web development, so running code could not be any easier, normally there's a docker image setup watch for changes, recompile and execute.

My text editor is Kakoune, after learning the keybindings I just cannot go back to vim or vscode, selection based editing just makes so much sense to me.

I use NixOS, which comes in handy for keeping my home and office computers in-sync. I also use nix shells to declare the tools necessary to develop each project.

As for window management I use sway, one big window for kakoune to the left, other terminals for docker/tests/git to the right.

I tried to get into window management but it was a bit much at the time. I will retry soon.

I have one big 48 inch 4k screen, so a window manager will definitely be a big plus.

I usually hack stuff together with vim and tmux (I know, it's redundant but Ctrl b is just a reflex at this point) when on a remote machine, but I use vscode at work and recently discovered the remote mode for Linux development... It's pretty awesome, like not anything you can't set up with vim or emacs, but it's seamless remote development if you already like to use vscode

I would like to do remote dev directly on the target, but it only has64Mb qspi Flash and 512Mb of RAM, so I can't install any modern development tools without exploding my 64Mb.

I cross compile with arm-linux-gnueabihf-gcc so I at least don't need to use the awful Xilinx IDE.

Since we're not sure yet if we will keep our current hardware for 1.0, but not tying my project to a vendor tools, I can easily switch my custom scripts for the new hardware.

Hmm are you compiling code? Sounds like the kind of platform that shouldn't host its own build tools. For that kind of setup I would consider building a remote dev box that can push to / debug the target platform? Maybe even control power to reset the dev board.

I cross compile then push the program through a scp and start gdb-server with a script.

The remote dev box is a good idea because I can use any computer to access it and still be able to push code. I will look into it.

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 program in Rust and my main editor is VSCodium with the NeoVim extension but lately I've been experimenting with Alacritty + Tmux + Helix and I'm starting to like it quite a bit.

Rust and C development mainly with a bit of assembly language sometimes:

  • Debian Stable with Xfce
  • distrobox with podman for containers
  • xfce4-terminal with tmux
  • vim with plugins (coc.nvim, delimitMate, NERDTree etc)

when you start xfce, it start with tmux?

when you start xfce, it start with tmux?

No. I use tmux only inside the distrobox / podman dev container (which is also Debian 12 Stable). I like a more conventional DE for non-dev related usage of the computer. If I wanted a totally tmux-like or terminal-based environment I would go with i3, but that is not something I prefer for my desktop usage for non-coding activities.

I vehemently dislike coding directly on my workstation and do all of my development in remote VMs via SSH, when possible. My work MBP is a glorified SSH terminal with a web browser. I got my start in the industry with remote SysAdmin stuff so, it feels pretty natural.

For an IDE, I use Neovim, currently with a plugin distribution - Neovim because I got used to the vim syntax as a SysAdmin and the distribution because I can't justify sinking more time into tuning my env for a bit but am intending to scrap it all around the holidays or so.

Most of my work is in Go or Python. At home, it's a mix of CircuitPython, C, and I'm picking up some Rust (mainly embedded for C and Rust). Will be starting to learn Verilog this weekend.

For Go and Python, I tend to lean towards a TDD approach, even if it gets a bit derided by coding streamers.

My workflow tends to be:

  1. Prototype desired functionality to get at least individual parts working.
  2. Start from scratch and rough out any classes/structs and test suite boilerplate.
  3. Start the red->green->refactor loop, giving extra granularity to parts of code that I am less confident in.
  4. Once all intended functionality is implemented, run manual tests (I generally develop tools).
  5. Fix bugs that unit tests failed to prevent or I failed to anticipate.
  6. Repeat 4 and 5 until acceptable.
  7. Prepare commit.
  8. Push commit and receive failure because I haven't fully configured my formatters to clean trailing whitespace and VT100-compatible line lengths.
  9. Push commit again and send for code review.

Currently, my build automation is kinda in CMake. Really, the Makefile is just calling a build in a docker container.

For C, Rust, and Verilog, I'm not yet familiar enough to have yet established workflows.

ETA: I think I just got the same FPGA as you! Xilinx Zync-7020 (Digilent Arty Z7-20).

Almost the same FPGA, we use the Mars ZX2 from Enclustra which uses the zynq7010.

The TDD approach is a hard sell to companies because it's hard to quantify what time is saved in the end and the MBAs of this world have a hard time with that.

I think that some companies and devs also have a bad taste in their mouth due to overzealous adopters and policies, along with using mocks that are not necessarily going to maintain parity with their production counterparts. Some things are a bit silly to test and mocks like that are going to introduce future technical debt.

I use helix on NixOS. I have the most basic setup for c(++):

  • edit with helix
  • write custom makefiles with a script I made
  • test the program with the makefile
  • debug with cout or printf

While I do like custom text editors, I feel like bad debugging is a no go.

$mod+enter vim enter Ctrl+p [type a part of the name of the file I want] O [write code]

Java dev, running opensuse Tumbleweed with KDE.

IntelliJ IDEA, maven, git, postman

Kate for quick edits and note taking works very well

Konsole is my terminal of choice

Teams for Linux because I have to

docker on the command line because there's no docker desktop for Linux. There is for windows and MacOS tho, although Linux is literally the thing where it runs on the kernel and whose concepts the whole thing is based upon. Fuck them.

Kind of sad to see still lack (for Linux in general) of apps that are often used in companies. E.g. Teams and docker desktop

Teams for Linux sucks and is not maintained anymore. Devs recommend using the web app and this is what I'm using in Chrome, works really well. Otherwise I'm also on Tumbleweed KDE :)

There's an unofficial cliënt that I've used in the past. Works well even on Wayland (where screen sharing can be an issue sometimes): https://github.com/IsmaelMartinez/teams-for-linux

If I'm not mistaken, this app is just a wrapper for the web app.

I had a lot of issues with wayland and that app.

Indeed this is the description I find on Discover:

Unofficial Microsoft Teams client for Linux using Electron. It uses the Web App and wraps it as a standalone application using Electron.

The advantage compared to teams.microsoft.com (at least when I load it in Firefox), is that it has many more features, since I guess it's using an "Edge" user agent, which unlocks stuff that is not enabled for FF. For example, I can have 1:1 calls (yeah, I know...) and blur my background or even set a background pic, all things I can't really do on FF.

On the other hand, screen sharing works unreliably (at least in a Wayland session, X11 is fine). I've reported a bug to KDE since I assumed it's a kwin issue, but I should test it with a gnome wayland live medium as well...

https://bugs.kde.org/show_bug.cgi?id=472471

Hey how are you liking Opensuse? I've always observed that OS from a far but never had a good opportunity to sit down and tinker with it.

I've been in the Debian or mint/pop os camp squarely for awhile now so the cost of time to learn it is somewhat high since all my stuff just works.

You mentioned lack of packages, I feel like I have an abundance in my ecosystem. The store on pop os has so much stuff.

Maybe this is worth looking at? https://docs.docker.com/desktop/install/linux-install/

For a personal PC I love it, never had any issues, package selection is great and bleeding edge.

You may raise your eyebrow since this is in contrast with my previous comment, but I've rephrased the final sentence since then (I was rather annoyed by the lack of some official apps on Linux, rather than packages for my specific distro. And that's 100 on Microsoft/Docker).

To be honest I'm not sure TW is the best choice for a workstation because of its rolling nature, but I just recently turned my personal PC into my (also) work PC, therefore I sticked with what I already had.

An LTS kernel would probably be the safest option, but with snapshots out of the box (if you use btrfs), I still feel quite safe right now. If an update should break something crucial for my work, I'd just roll it back.

Transitioning from debian based shouldn't be hard, zypper is quite intuitive and fast. You also get OBS which is kinda like pacman user packages.

If you need some obscure app which was packaged years ago in binary for Linux, you'll probably have much more luck with Debian based since apparently .deb is the first package you wanna target.

But it hasn't happened in a while now that I needed to download such obscure binaries, typically I could find a repackaged version or an alternative app all together, so...

Have you checked out podman desktop or rancher desktop?

If any of those can be used with docker, I'm sold!

I cannot move to podman because our projects are shared and the rest of me team is on Windows or MacOs and they all use docker desktop. We also use docker compose files.

I have now and I'm loving podman desktop! All I wanted was a quick and easy way to stop/start/delete running compose clusters, and podman desktop detected all my running docker compose containers and displayed them with the familiar tree-like UI with individual or global controls to play/stop or delete.

Thanks! :)

Sweet, I'm glad the recommendation is working for you!

Sweet, I'm glad the recommendation is working for you!

1 more...

i3wm/sway - lets me navigate windows with vim-like keyboard motions Neovim - best power editor, hands down. But it takes a bit of tweaking. Tmux - lets me have multiple terminals up in one window. Make/CMake/whatever the project uses. I also write scripts for anything that causes friction which can be automated. Vimium/VimiumFF in the browser - lets me navigate most webpages with just the keyboard.

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.

I mainly write C. I really like Intellij Clion because it uses CMake as project files. It also makes tools like valgrind, perf and gdb available without having to go to the terminal.

I use Geany, so that's basically my whole workflow.

Do Data Scientists count? I run Bedrock Linux with Hyprland WM and Alacritty as my terminal manager.

I use Jupyter Labs for almost everything. Then Emacs for anything else. I don't like the default config at all, and I'm not that well versed in elisp, so I use Doom Emacs.

Yes it counts. It's far from what I do so my understanding of what you do is limited (read: I know nothing about data science).

I need to look into Hyprland WM. I tried i3, but it had a lot of errors and wasn't working well for a reason unknown to me.

  • kitty terminal emulator
  • Vim for editing
  • CMake for builds
  • A shell script based around entr for automatically running the build/test cycle when I modify files
  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.

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.

Helix + sway + nix-shell + git + sourcehut is a pretty tasty combo not gonna lie.

Mainly C++ with a sprinkling of Python and Rust for fun.

Used to code KDevelop, now VSCode. Build in a regular terminal (I prefer Meson over Cmake, both end up producing Ninja files.) Debug with valgrind, gdb and ddd. Push to Gitlab for my personal projects.

I use Docker for my test environments as it's easy to bring them up and restore them to mint condition, and it ensures that the longer running tests with side effects don't interfere with one another.

I tend to prefer Jetbrains editors (CLion, Rider, WebStorm) for projects, and just nano/micro for config editing and such...

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.

  1. Code in Nvim
  2. At work we build using shell scripts, for personal stuff it's usually Make
  3. At work, deploy with Jenkins to Kubernetes or through Puppet to real/vm hosts. a. At home, I use Ansible 99% of the time
  4. Debugging?

My workflow is: my neovim config is - at last - nearly perfect, quickly configurable for many languages on the go, nevertheless I don't code because when I get home from work I have barely the energy to play for half an hour.

Yeah I get that, I have a job now where I can pretty do whatever I want, so I at least get the feeling of creating something while at work and doing fun code.

But I don't feel like coding when I'm done with my day

Like many others I also use NeoVim, but it was quite a bit of learning curve before you get comfortable with it. And you really have to go all in and learn at least the basics, if you try to use it like a normal text editor thinking you'll learn commands as you go along then you're going to hate it.

In addition to having to learn how to use vim, you also need a good configuration and probably some plugins if you want to use it as an IDE. Personally I use fzf, coc, vim-dirvish, lightline, lightline-bufferline and papercolor-theme.

How long did it take you to get comfortable with NeoVim? I like the proposition of the vi/vim approach of no mouse. But it is really intimidating to get into.

I guess a few hours until I had memorised basic stuff like moving around, copy-paste, etc. Then maybe a week or two before I really felt comfortable with it. There's some point where you actually understand vim and start using it more like a programming language and less like a traditional text editor. For example I love the "repeat last command" (default bound to . key), but to use it effectively you need to create a command that will be usable everywhere you want it to, and there are many different commands that do the same thing.

Here's a random example:

Let's say you have the following text in a document you're editing with vim, and you want to delete the word "dance". Vim is currently in normal mode, and with the cursor placed on the highlighted "c":

Monkey dance party

If your brain is still in Notepad.exe mode, you might achieve this by pressing "i" to go into insert mode and using a combination of backspace and delete to edit the line.

A vim beginner might know that "x" and "X" in normal mode works like delete and backspace, without going to insert mode, so "XXXxx" does the same.

Someone who has learned basic movement could instead solve this by combining two commands, first "b" to move the cursor back to the beginning of the word, followed by "dw" (delete to next word).

But there's also a single command that deletes the current word, regardless of where the cursor is in it, which is "daw". And since this is a single command, you can repeat it with the "." key to delete a different word.

Now here comes the vim magic: If you instead want to replace the word "dance" with "pool" you just modify the above commands by replacing "d" (delete) with "c" (change). So in our example you could type "caw" in normal mode, which deletes the word under the cursor and places you in insert mode. There you write "pool" and press Escape to go back to normal mode. Now you have a single command that replaces any word under the cursor with the word pool, which you can repeat anywhere you like.

And if it's not just the current word you want to change, then replace the "w" in the command with something else, for example "ca)" will change a pair of parenthesis and everything inside them, which is very useful when programming C/C++/etc.. And if you have nested parentheses and want do something with two levels at the same time, the command becomes "c2a)" which might look complicated, but it's basically just simple rules that you string together.

https://vim-adventures.com/ might be a fun way to get started, then look up some nice vim cheat sheet and keep that nearby. I would also recommend looking up some example vim configs, because the editor is very bare bones with the defaults. I like relative line numbers for easy jumping between lines, so give that a try.

When you've mastered (?) vim you'll also see less (the program) keyboard shortcuts make a lot more sense. You can also change your shell to vi mode for faster editing of commands.

I will look into vim adventures. Trying to learn Vim at the same time as learning everything else is hard. So hopefully, a Vim game will be more palatable.

Neovim (with NvChad or the like) + tmux is great, once you figure out the keybinds. Probably not so great for debugging, though. VSCode is a good all-rounder.

VSCode is the same on Linux, so it was easy to have at least some familiarity in Linux. So it was an easy choice when I switched to linux.

In that case, you might wanna check out VSCodium, a malware-free version of VSCode.

I do game dev, and I've been loving VSCode. I used to use a mishmash of stuff, but VSCode can do kinda everything. Working on retro-dev C/asm for NES or Genesis? Lua projects? Shaders? Debugging a native Linux/SDL game? Doing some math in a Julia notebook? Unity3D development? Working on Windows/Mac? The answer is VSCode to all! I still use vim for some light stuff or working on remote machines, but meh... VSCode has nice defaults for me without having to fiddle.

For my native Linux gamedev, I've just been using the MS Cmake and Cpp-tools extensions. They work great, and you can script up the rest with actions. The debugger isn't great, but it's convenient and good enough for simple crashes. I switch to GDB when things get interesting though. I suppose I have an extension for shaders too, but it's just syntax highlighting.

You should look into VSCodium, it's the same without microshit's telemetry.

I have, but it doesn't show the MS extensions like the C or CMake tools which is kind of a dealbreaker. None of the alternatives really work well enough in my experience. I'm fine with opting out of the telemetry.

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 code in C/C++. Work laptop is windows, but the products run on various Linux and Unix flavors, as well as in Windows. So I use Clion on win, that syncs the code changes to a Linux VM for building and testing. The toolchain is in a docker image, so I can change the build and test environments without affecting each other. Since I need to test on different OSs, I have multiple VMs in a server at the office.

Xfce spin Fedora using VS Code with CSharp dotnet omnisharp, sometime vim with coc nvim and omnisharp vim.

PHP intelephense, podman, kvm/qemu, some el clone or rhel cloud image, and windows server 2019 vhd to qcow2.

Other than that, firefox for frontend web debug.. For desktop dev, avalonia UI. Other than that, none.

I'm learning C# on my gnome Fedora and I can't use IlSpy to decompile code on VSCode. How do you do this?

Also, my debug time takes so long, I think microshit intentionally makes it so on linux

I never use IlSpy, sorry

Have you look into their cli? https://github.com/icsharpcode/ILSpy/tree/master/ICSharpCode.ILSpyCmd

Also there is AvaloniaUI ILSpy https://github.com/icsharpcode/AvaloniaILSpy https://github.com/icsharpcode/ILSpy/discussions/2926

Also seems not all dll can be opened using ilspy https://github.com/icsharpcode/ILSpy/issues/2689

Debug times shouldn't be long tbh hmm.. How big is your project?-

Thanks for the links. I'll look into the cli, I couldn't configure the Avalonia no matter how much I try.

I can't even call it a project, i'm just doing basic readline, writeline and loops stuff.

You can try to download the exe, and run it, but you need to have dotnet 6.0.2 LTS SDK in your machine... It should work as it's.

Anyway using CLI can dump the dll, I tried it yesterday to any csharp dll, it works, and create a project for it. I think with CLI, it's enough to see the whole .dll csharp files included.

Using VSCode with NeoVim plugin (allows Vim commands in VSC). Code JavaScript locally, deploy using GitHub and Docker/k8s.

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.

Hi! web dev here. It's time to change your setup ever so slightly with VSCodium, and electerm too optionally: https://vscodium.com/ https://github.com/electerm/electerm

I usually install all my setups in PopOS or a server I'm developing on: https://github.com/gnubyte/debian-setup/blob/master/setup.sh

Then install Insomnia.rest, VSCodium, and finally electerm.

Basically I'll program in nodeJS, BunJS, or python.

Then I'll ask chatGPT via Rubberduck (link below) to generate a docker and docker compose live mount for my dependencies of my frontend and backends. Then I begin to iterate over my work.

https://github.com/rubberduck-ai/rubberduck-vscode

My latest flow is basically to start with chatGPT, write a four paragraph description of what I want, have it save me about five hours of boiler plate nonsense, and then disconnect from chatGPT to do the advance stuff like handle security, data structure relationships, etc. Sometimes I go back to chatGPT for how an algorithm should be implemented for efficiency inside a short snippet, then apply it again to my code. There was some great bloom filter work it was able to help me with.

Other stuff I've been trying is like podman and I'm interested lately in Jenkins to do builds since I realized I have too many projects that build and work a particular way, I can't Shepard them all by hand. With that will likely come unit testing, both hopefully assisted by AI to cut down on time. I'd like to reinvest that time on hankerrank and frontend masters to start transitioning to something like rust.

Yakuake with oh my zsh some plugins and themes and vscode (trying to switch to lapce) in Rust with cargo on Fedora

I do DevSecOps/SysAdmin type stuff mostly so vscode with devcontainers being pushed into gitlab-ci for checks and deployments (Ansible, terraform, k8s manifests, helm charts, docker files and occasionally back to my roots with sh and python scripts as needed).

Sometimes though I just toolbox my devcontainers and work client out of there and vim, when I'm just trying stuff out.

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.