7

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.

top 41 comments
sorted by: hot top controversial new old
[-] danhab99@programming.dev 4 points 1 year ago* (last edited 1 year ago)

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

[-] dawwwsh@lemmy.world 3 points 1 year ago

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

[-] vaalla@discuss.tchncs.de 2 points 1 year 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/<branch> and all info related to a task in ~/dev//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.

[-] the_crab_man@lemmy.world 2 points 1 year 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.

[-] StefanT@lemmy.world 1 points 1 year 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.works 1 points 1 year 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.

[-] why@lemmy.sdf.org 1 points 1 year 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.

[-] nitefox@lemmy.world 1 points 1 year ago

CLion for Rust/C++, VS Code for web dev stuff

[-] under2x@lemdit.com 1 points 1 year 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.

[-] happyhippo@feddit.it 1 points 1 year ago* (last edited 1 year 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

[-] suspectum@lemmy.ml 1 points 1 year ago* (last edited 1 year 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 :)

[-] MagneFire@feddit.nl 0 points 1 year ago

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

[-] Croquette@sh.itjust.works 0 points 1 year ago

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.

[-] happyhippo@feddit.it 2 points 1 year 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

[-] andruid@lemmy.ml 1 points 1 year ago

Have you checked out podman desktop or rancher desktop?

[-] happyhippo@feddit.it 2 points 1 year 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! :)

[-] andruid@lemmy.ml 2 points 1 year ago

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

[-] andruid@lemmy.ml 1 points 1 year ago

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

[-] happyhippo@feddit.it 2 points 1 year 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.

[-] Gnubyte@lemdit.com 0 points 1 year 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 2 points 1 year ago* (last edited 1 year 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...

[-] neytjs@lemmy.ml 1 points 1 year ago

Hobbyist programmer. When I switched to Linux, I started using the Atom editor for typing out my JavaScript projects (mostly Electron apps). Now I use Pulsar, because Atom development was cancelled.

https://github.com/pulsar-edit/pulsar

I also find nvm to be helpful for installing and using Node in the terminal.

https://github.com/nvm-sh/nvm

[-] mvirts@lemmy.world 0 points 1 year ago

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

[-] Croquette@sh.itjust.works 0 points 1 year ago

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.

[-] mvirts@lemmy.world 1 points 1 year ago

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.

[-] Croquette@sh.itjust.works 2 points 1 year ago

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.

[-] thepiguy@lemmy.ml 0 points 1 year ago

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.

[-] Croquette@sh.itjust.works 0 points 1 year ago

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.

[-] JoeyJoeJoeJr@lemmy.ml 0 points 1 year ago

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.

[-] PipedLinkBot@feddit.rocks 1 points 1 year ago

Here is an alternative Piped link(s): https://piped.video/5r6yzFEXajQ

Piped is a privacy-respecting open-source alternative frontend to YouTube.

I'm open-source, check me out at GitHub.

[-] selawdivad@lemm.ee 0 points 1 year ago

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?

[-] Croquette@sh.itjust.works 1 points 1 year ago

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.

[-] Marxine@lemmy.ml 0 points 1 year ago
  • 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.

[-] Croquette@sh.itjust.works 0 points 1 year ago

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.

[-] InFerNo@lemmy.ml 1 points 1 year ago

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

[-] Lucky@lemmy.ml 0 points 1 year ago

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

VSCodium compiles from the same source code but without the telemetry

[-] Croquette@sh.itjust.works 0 points 1 year ago

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

[-] ruination@discuss.tchncs.de 1 points 1 year ago

Copilot doesn't work on VSCodium from my experience.

[-] Marxine@lemmy.ml 1 points 1 year ago

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.

[-] z3rOR0ne@lemmy.ml -1 points 1 year 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.

load more comments
view more: next ›
this post was submitted on 21 Jul 2023
7 points (100.0% liked)

Linux

47362 readers
1200 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS