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.

  • vaalla
    link
    fedilink
    42 years ago

    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.

  • @dawwwsh@lemmy.world
    link
    fedilink
    32 years ago

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

  • @the_crab_man@lemmy.world
    link
    fedilink
    22 years ago

    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.

  • @happyhippo@feddit.it
    link
    fedilink
    1
    edit-2
    2 years ago

    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

      • @happyhippo@feddit.it
        link
        fedilink
        22 years ago

        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.

      • @happyhippo@feddit.it
        link
        fedilink
        22 years ago

        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! :)

    • @suspectum@lemmy.ml
      link
      fedilink
      1
      edit-2
      2 years ago

      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 :)

          • @happyhippo@feddit.it
            link
            fedilink
            22 years ago

            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

    • @Gnubyte@lemdit.com
      link
      fedilink
      02 years ago

      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/

      • @happyhippo@feddit.it
        link
        fedilink
        2
        edit-2
        2 years ago

        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…

  • @StefanT@lemmy.world
    link
    fedilink
    12 years ago

    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.

    • @Croquette@sh.itjust.worksOP
      link
      fedilink
      12 years ago

      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.

  • @under2x@lemdit.com
    link
    fedilink
    12 years ago

    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.

  • @why@lemmy.sdf.org
    link
    fedilink
    12 years ago

    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’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.

  • z3rOR0ne
    link
    fedilink
    02 years ago

    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.

  • ffhein
    link
    fedilink
    02 years ago

    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.

    • @Croquette@sh.itjust.worksOP
      link
      fedilink
      02 years ago

      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.

      • ffhein
        link
        fedilink
        12 years ago

        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.

  • @garam@lemmy.my.id
    link
    fedilink
    English
    02 years ago

    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.