Programming Setup what Tools do you use daily?

Don’t know if the community is biased which always sounds kind of ideological…

Imo its just a better experience developing on Linux. As mentioned its faster, more flexible offers more dev tools etc. And I think window manager and stuff like that add to this experience.

The tiling-scrolling wm, for example, I use lets me work faster than with every mouse-driven clicki DE Ive tried so far (be it Linux or Windows).

But all this stuff ist very subjective. In the end its imprtant thay it feels right for yourself. And that has never been the case for me, personally, with Windows.

There are some interesting tools mentioned, that I have to give a try! Here are some of mine:

  • At work, I am a bit restricted there because I have to develop on/for several systems which I have varying levels of rights on

    • windows and Pi OS
    • alacritty, but wezterm looks interesting
    • PowerShell
    • helix
    • a wild mix of geany, nano, notepad, notepad++, VSC, and STM32CubeIDE
    • git, ssh
    • a bit OT but KiCAD :slight_smile:
  • At home, I use

    • Manjaro with KDE on PC and Ubuntu on laptop (I dont care much about distributions and desktop environments)
    • ghostty
    • zsh
    • helix (coming from sublime and later neovim)
    • openocd, gdb (I would love to have a graphical debugger for embedded. Let me know if you know something!)
    • git, ranger, fzf, …
    • and KiCAD as well

Im not experienced in using gdb, but there is a TUI version I once stumbeld over: GitHub - wcampbell0x2a/heretek: GDB TUI Dashboard for the understanding of vast knowledge · GitHub

1 Like

Thank you! I will have a look.

Flow should work fine with zls on windows. All you need to do is add zls to your path and run flow.

What issue did you have?

Tools gaining traction in community shares often lean towards a certain visual or technical aesthetic.

As a boring’ developer, I’ve settled into a workflow of Windows + VS Code + Remote-SSH for developing on WSL and remote servers (skipping even the WSL extension), alongside some unrefined workarounds to interface with NixOS. To avoid potential bugs in server scripts, I rely strictly on Bash and tmux, with no real need for a Linux GUI. There are likely other developers who are boring like me, and I’ve simply never felt much of a drive to share a such setup.

1 Like

Looks like I expressed myself poorly. I didn’t mean boot time, but general performance on Linux vs Windows. To get that performance win you’ll naturally have to boot into Linux first :wink:

But on the command line, it’s fast enough.

Not in my experience. Everything that requires file system access seems slow on Windows (also with Defender exceptions).

3 Likes

I’m on a Mac laptop most of the time, for what it’s worth. Debian homeserver.

I think what you’re seeing is that Linux users get disproportionately enthusiastic about “what is your setup” threads, as much as anything. Although Linux does punch way above its weight in development generally.

May as well officially join the party: macOS, Ghostty, Neovim (btw), and Codex. That’s most of it. VSCode sometimes, when I want to click through files in a directory, or to use the debugger. But if I leave it running long enough, the fan turns on. So, special occasions only.

5 Likes

I completely agree with this sentiment. If someone is invested in programming/”software tinkering” if you will, they will also be interested in the tinkering that goes along with Linux which necessarily gives more control and availability in that regard than closed software like Windows. Particularly evident by discussions like these where the number of options for all these small different things like shells and text editors is massive. And as you say, we’re all excited by what we choose and why since there are so many, so it’s bound to be that these discussions will become rather lengthy. I can only imagine this exact sentiment has been talked about and repeated millions of times well before I ever knew what Linux was (see vim vs emacs for example, both of nearly which predate my birth by a decade lol)

1 Like

OS: Fedora Kinoite
following from that DE: KDE Plasma 6 (Wayland)
Terminal: Konsole
Editor: normally Kate, for small experiments flow (and sometimes micro out of habit)
Shell: bash
VCS: git
other tools:

  • distrobox (either a language specific or project specific box for each) but I work on my own too
  • jq (mostly for formatting)
  • cmake (for C++) with ninja
  • nushell for adhoc data analysis (I think that for doing things adhoc it’s more ergonomic than Python with the downside of not being able to graph things, at least afaik)
  • KWrite (as a scratch pad)
  • gdb

That’s a solid point.

Thinking back to my Windows days, I think the ecosystem also leans more towards monolithic tools that do everything (i.e. install Visual Studio and you are done), whereas UNIX-like systems naturally lean more into that philosophy and piecing together your own workflow from more tools that each have a more narrow scope. Although, Windows does seem to have moved/moving away from that with the proliferation of VScode, WSL, etc.

2 Likes

I think the origin is the DOTADIW(Do one thing and do it well) approach of UNIX. This, I think, basically enables modularity with the notion that everything is a file.

The enables one to build (sometimes quite complex) pipelines with in and of itself simple programs like sort, uniq, join or grep, or more complex ones like sed and awk. This makes the final workflow more than the sum of its parts.

Today this is for me more expressed by editors building on (rip)grep or fzf instead of building their own search tools.

You should try yazi for that.

1 Like

I develop on both Windows and Linux. I try to have consistent environments across platforms. I find Syncthing works well to sync directories across machines. The dev setup is pretty vanilla.

On Windows:

OS: Windows, plus WSL OpenSuse Tumbleweed
Shell: Windows cmd
Editor: Emacs
Command line tools: MSys2, language specific tools
SCM: git

On Linux:

OS: OpenSuse Tumbleweed (got sick of upgrading OS versions and just want a rolling OS).
Shell: Bash
Editor: Emacs
Command line tools: Unix tools, language specific tools
SCM: git

Again I use Syncthing to sync the code directories among machines, including the .git directories. I can go to a different machine and pick up where I left off without much issues.

I would offer that developers tend to be folks who enjoy tinkering with their computers. Using Linux offers you direct access to the deepest parts of your computer. If you have root, your whole operating system is one command in the terminal away from being changed. You can also build up your environment piece by piece, you can swap out literally everything. Want to use a different init system, go ahead. Want to change your display manager, there are infinite options. X11 or Wayland, up to you.

I love to write code, scripts, and config files. I like to watch my computer reflect my personality and decisions. As someone who grew up learning to code on windows, using editors like Eclipse, Atom, and Netbeans, I often found myelf wanting to change things that Microsoft worked very hard to make it nearly impossible to change.

Being in an environment that lets me play with it, and break it, lets me learn how it works. Learning how computers work is why I fell in love with programming. Linux is a fantastic environment to do that.

5 Likes

MangoWM looks very cool and seems to be what I wanted from sway! I’m playing around with it now and I think I’m in love. :mango:

I agree whole-heartedly, and Linux has always been a more popular choice among developers compared to that of the general population. My observation was that even with that factor, the skew towards Linux seemed stronger than I what I would have expected, relative to some other programming language communities that I have engaged with.

My experience is completely anecdotal, and as someone pointed out, us Linux users have a tendency to brag about our setups moreso than other platforms. Even if I played it off more casually into a conversation, I am definitely guilty of an “I use Arch btw” (this is an example of me doing it :grinning_face:).

1 Like

I agree whole-heartedly, and Linux has always been a more popular choice among developers compared to that of the general population.

That really depends on how far you go back in history…

Traditionally, Windows has ruled supreme for at least UI application and game development.

With the rise of the web in the 2000s and the resulting shift of development work to webpages and backends, the development platform didn’t matter anymore, and I think this is when Linux and macOS became popular developer choices (I would put the “before/after” point in time somewhere between 2010 and 2015 - that’s at least when I started noticing that young people getting into programming started on Linux instead of Windows, or when they’re rich kids, on macOS :wink:

Game development is still very much Windows-land. A lot of game-dev tools and game console SDKs are only available/supported on Windows.

PS: Linux users bragging about their setup goes back to the very beginning of desktop-Linux though :wink:

5 Likes

(For me personally that just means that those tools disqualify themselves from my available choices. I would rather go bare bones and limited platforms than having to fully go into windows, deploying/testing for windows is the max of what I will do, I won’t use it as a development platform.)

Maybe, but linux is gaining importance, partly because windows is pushing users to alternatives through their incompetence / greed and pushing things on their users they don’t want and haven’t asked for, while at the same time removing or destroying older functionality that users liked and used.

I think a big part of the reason that windows could remain so relevant for gaming for such a long time, was that many games couldn’t run well on linux and users had other things that effectively vendor locked them in towards having to use windows anyway (for example having to use windows only tools for work). Basically MS did a lot of things to become peoples only choice, nowadays there is more people working on things that allow people to choose differently. (From laptops that come without a windows license/key, over cross platform applications, to apis / engines that work on multiple platforms and tools like wine/proton)

A growing amount of people don’t want to go back to a world where some application that doesn’t work cross platform dictates what MS prison of bullshit they have to accept into their life. (Linux Passes 5% on Steam Hardware Survey, RTX 5070 Resets | GAMES.GG)
Personally I was done with MS around 2006 (I was double booting for a while, but eventually switched to 100% linux (only running windows in a vm if I need it for testing)) and I live a happier life since then.

When you compare the amount of games you can play today on linux vs back then, the difference is huge, back then only a select few games were playable, maybe a few more if you manually tinker around with wine for hours. Today you just click to use proton and install and run a whole lot of games and there are other tools that I haven’t even tried beyond what steam offers.

I am sure MS will try new crap to force people to run their os to be able to play games, but personally I want the choice of os to become irrelevant and games to run everywhere and I think there are enough people that think similarly.


I use:
Linux, Manjaro, xfce
nvim, lazyvim (used emacs with spacemacs in the past)
cli: lazygit, rg, fzf, fasd (fuzzy search jump to directories)
alacritty and (xfce-terminal, only for basic usage)
zen browser

6 Likes

Do you have any recommendations/helpful sites that helped you with that conversion? As an early mercurial adopter, I have survived until this day by using hg-git for the longest time with little direct git usage.

I have also been looking like something like the mercurial-git (no longer rendered legible by github %-) ).