What does your (private) computing setup look like?

Hi folks,

due to the current suboptimal state of the universe I am spending a lot of time in front of my computer(s) at home and looking for ways to streamline my setup. Since I am also struggling with severe analysis paralysis, I would like to hear what everybody else is using for their Julia work!

Disclaimer: I do not want to start a flame war and I am aware that I am most certainly having a “first world problem”. I am mostly asking these questions because I want to have a low-stakes discussion to distract myself from a global pandemic.

Background

I have been a heavy Mac user for almost 10 years now. For me it has been a great compromise because of macOS’ Unix foundations for coding and the possibility to run commercial software for my other creative hobbies (music production and photography) at the same time. I have also gotten very used to some tiny details that macOS does better than the rest (e.g. consistent keyboard shortcuts CMD+C vs. CTRL+C). The very limited hardware choices and high cost are a distinct disadvantage though.
At my last job I had a nicely specced 13" Macbook Pro and since it was at a dysfunctional start-up nobody cared if I used it for all my private computing needs. (Un)fortunately I was fired from that job and had to give it back :laughing:
Right now I am back to using my 2016 12" Macbook with a Core m7. I still really like this machine because it is super light and fanless and therefore absolutely silent but to be honest it was already a bit underpowered when I bought it. I also have a self-built desktop PC with a first gen Ryzen (1700X) which is running Windows 10 and Ubuntu and is criminally underutilised (it used to be primarily for gaming but that is not as much fun for me as it used to be).
In the end, I am mostly working on my underpowered Macbook because of the convenience and only boot the desktop when I need to test something on Windows/Linux, use BinaryBuilder, or want to run a parallel workload. Keeping three operating systems and working environments in good shape is a chore though.
As of now, I am mostly limited by single-threaded performance, i.e. my tests run too slow, e.g. Pkg.test("AstroBase") finishes in ~150 seconds on the Macbook vs. ~110 seconds on the desktop. But I want to do more parallel stuff soon™ (for some defintion of “soon”).

My Questions

  • What are you using and how happy are you? :smile:
  • To the :apple: crowd: If you were in the market right now, what would you get? What do you think about the ARM Mac rumours?
  • To the :windows: crowd: Have you tried WSL2? How do you get HiDPI to work properly? :grimacing:
  • To the :penguin: crowd: What distro are you using? How do you stop to tinker endlessly with your system and start to get actual work done (asking for a friend)?

What is your primary device for Julia development?

  • Laptop
  • Desktop
  • Server + SSH client (laptop, tablet, etc.)

0 voters

What is your primary OS for Julia development?

  • Linux
  • Windows
  • macOS

0 voters

1 Like

I’m missing the “It’s complicated” option for the OS :stuck_out_tongue:

I’m mainly using julia through WSL, sometimes through WSL2, but for plotting and graphics I still use a native install because of the rendering and hardware limitations of WSL.

2 Likes

Hi, there are other operating systems in use besides the gnu/Linux, win10, and OSX :wink:

I’m thinking in particular the BSD’s. I myself use FreeBSD both on workstation and on laptop. Pretty solid (Arch Linux before).

Cheers.

2 Likes

For Linux distro,I would highly recommend Ubuntu mate. The 20.04 release came out yesterday and it looks like it has fixed my few remaining annoyances. It has 4 default arrangements that let you more the looks of windows, Mac, unity, and lxde, and let’s you fine tune by changing the layout, size, shape and color of everything.

1 Like

Yup, there should have been an “Other” option at least.

I have zero experience with FreeBSD. Can you elaborate a bit? Why did you choose it?

I generally need fast single core performance and lots of memory, so I use a high frequency, low core count dedicated server from Hetzner with mosh for 95% of my work.

When I want to run a large simulation in large batch runs, I’ll rent 10-20 Hetzner cloud instances by the hour.

1 Like

There were 2 main reasons. I was in fact very happy with Arch Linux, but since I needed specific kernel modules to communicate with our institutes infrastructure and Arch updates it’s kernel (even the so-called long term support kernel) very frequently I found myself waisting time too often during updates. I started timing how much I lost per week, and that was definitely way too much. The other main gripe was a corruption in LVM that once bit me severely, whereas I thought that it should have protected me.

So I started looking for a stable alternative, and carefully minimizing the software I really need following the Keep It Simple thinking.

Turned out that FreeBSD on a ZFS filesystem fits the bill (although there’s a steep learning curve).

Nothing is perfect, and with the knowledge gained by using FreeBSD, if needed I would without hesitation go back to Arch Linux, or it’s slightly more user-friendly Manjaro Linux variant. Manjaro would be my preferred recommendation for new users.

1 Like

I mostly use a SFF desktop with Pop!_OS, which is a really clean and polished Ubuntu-derivative. Would highly recommend. Basically no tinkering needed – it just works out of the box! Upgrade path is smooth as well, unlike many other Linux distros.

My other machine is an XPS13 with Win10. I don’t like it as much mostly because the terminal sucks. There are obviously new developments along that front (eg the new Windows terminal) but I haven’t had luck with it yet. Maybe some day it will be better.

2 Likes

I ssh into a linux workstation in my office from a macbook. HiDPI works without effort on macOS, and both VS Code and Juno offer pretty nice remote development features. I try to avoid actually running code on macOS due to the annoying clang / random Xcode updates causing breakages / Catalina stuff.

I have an LG Gram running Linux Mint 19.3 and I love it. Hardware-wise, it’s specced like a Macbook Air, but bigger (15.6" screen), lighter (<1kg), and with more ports. My main complaint is that the screen could be better.

I’ve actually been pretty good at not tinkering too much since I got everything up and running, unless you count adding Firefox extensions or stuff in .zshrc. It did take a little bit of work when I first installed Mint, but nothing too time-consuming - I had to apply a kernel patch (from Github) and replace the default Bluetooth utility with Blueman. In fact, I feel like it took far less time than it would have to make Windows 10 (which it shipped with) usable, especially if you include WSL.

I run all of my Julia code locally at the moment, but I’d just spin up an EC2 instance or something if I needed more horsepower. In your case, Docker might also help alleviate some of the pain of frequently moving between OSes.

I’ve never been able to stop. What I’ve been able to do is to reduce the tinkering. These days, a month can go by without tinkering with anything, but I still spend entire afternoons tweaking obscure settings sometimes. I don’t know if it’s because I’m older and busier, or because my setup is approaching its theoretical optimum. At this point, I’m sure I’m the only person who can sit at this computer and operate it. It’s taken a couple of decades, but it works almost exactly how I want it to.

1 Like

I’m single, no kids, and a programmer with no expensive hobbies (other than computers) so my setup kind of reflects that. Also I work from home. So this is my current setup:

  1. Work laptop running Windows 10 that I only use when traveling.
  2. Custom built Linux Manjaro with 3 monitors and 64GB of ram used for development. I really like having more screens when programming. I also tend to run multiple VM instances for work hence the RAM.
  3. Custom build Linux Manjaro server with 96GB of ram and 16TB of (mirrored) disk space. Used mostly for storage.
  4. Custom build Windows 10 machine with thread ripper cpu and high end graphics card for playing games (mostly).

I’ve liked Manjaro, it gives you the cutting edge of Arch without all the setup/configuration. It’s (and Arch’s) Julia installation has been having issues for the last couple of updates so I’m running the official binaries for the time being. Other than that I’ve had very few install issues.

I’ve “installed” Ubuntu on Windows 10 so I have a bash prompt when I’m on the windows machine. I’ve also setup openssh-server inside the Ubuntu. This allows me (and Julia) to ssh onto my gaming machine when I want to distribute processing between all 3 machines.

Truthfully this setup was built over years and I only upgrade one machine at a time, and parts “trickle down” to the other machines. So building it all together would probably be a huge expense. In fact this setup was mostly created because when I built a new machine I tended to have enough working parts from the old machine that with a little more money I could create a second (reasonable) machine. Like the server was built because of all the spare harddrives I had floating around…and just sort of grew.

6 Likes

This is probably my way forward as well. Combine and use the stuff I already have and don’t try to throw money at imaginary problems.

That sounds like a worthy goal! The downside is that sitting down at a another person’s computer can be jarring. I am used to typing gibberish in all caps when I do that because I am expecting CAPS LOCK to be CTRL :rofl:

For a variety of reasons, main of those perhaps being the need to use voice recognition in my work, I need to use Windows for my software development.

All my Windows computers are multi-core, but Windows doesn’t use those cores very effectively. For instance I wrote a multi-threaded program. On Windows I was able to get parallel efficiency of 0.42 using 16 threads. On Linux I got parallel efficiency of 0.91 for the same number of threads!

Hence, I do my parallel calculations on Linux, logging in through SSH from a Windows machine.

I have a linux server at home that hosts a few virtual machines using KVM, and my primary personal development machine is a 6-core VM on this server. I use an iPad Pro with keyboard to mosh/ssh into it to do my work.

Highly recommend this setup. The iPad is ultra portable; the remote aspect means that, with tmux, I always have my environment available to me.

5 Likes

I have tried an iPad setup this week but failed for a silly reason. My Vim color scheme was not working in tmux and I could not read anything :see_no_evil: Might have to try again…

The great thing about Julia it that it works (almost) seamlessly on all the major platforms. I’ve been an avid Mac user for the last 10+ years until this winter. While my 15" MacBook Pro’s keyboard was being serviced yet again, I bought a Huawei MateBook 13" laptop as a backup. The 2016 MBP is still a fantastic machine but I fell in love with the little Huawei - I love the screen and the screen ratio, the keyboard, the newer CPU, and how light and portable it is.

I ran Pop_OS on it for a few months but Linux still doesn’t work that well on laptops. Issues with the resolution, drivers, power management, fingerprint reader, etc, etc, etc.

Reading about WSL I ended up installing Windows, after 10 years of macOS and thinking I’ll never get close to Windows ever again. I’ve now been using Win 10 for over a month and I love how configurable, ergonomic, and developer friendly it has become. I have setup WSL2 using Pengwin (which is a Ubuntu flavour specialised for WSL) but don’t really use it. I’ve setup everything in Windows (Julia, Git, terminals, DB servers, Docker, etc) and that’s where I spend my dev time. Drivers work great and it’s nice to have all software working perfectly (including proper Excel, which was limited on mac). I’m impressed with the amount and quality of work put into Windows, as opposed to the almost abandon-ware status of macOS (oh wow, celebrate, Apple added Dark UI!)

Using VSCode for editing on all platforms. Julia works great on all. There are some very good terminal options on Win (MobaXTerm, the new Windows Terminal, etc), Fork or Tower for the visual Git client, etc, etc.

Sometimes I switch between mac and win. I have my projects on Dropbox or Git and use a VSCode extension which syncs my VSCode setup (themes, extensions, config, etc). That’s really all I need.

So I guess what I’m trying to say is: I’ve used Julia on the 3 main platforms in the last 6 months. It works great on all and you don’t really need fancy hardware. Use what you like/enjoy most and start building some awesome software, that’s what brings the most joy!

5 Likes

200 USD open box laptop from a year ago or so running Fedora :). I’d take a picture but I think you all have seen these types of machines keeping doors ajar, being used as coasters, etc…

This is common if you don’t have your terminal type set up just so. I am using a truecolor version of tmux and mosh, and therefore I get beautiful displays like this:

Do you have a static IP address?