Laptop recommendations for dev work

Hey, I’ve never had a laptop but in my current job they gave out a macbook. I hate the damn thing, the keyboard is uncomfortable, the racking thing sucks (or maybe I’m just not used to it, but the “clicking” doesn’t feel comfortable at all, i have to put more strength into it than I’d want for long working hours).

So I’m doing some research on what to buy for a personal laptop, i work with web and systems development so i don’t need a dedicated GPU at all. Here’s what I’m looking for:

  • Comfortable to use (good tracking pad, keyboard that feels weighty instead of whatever goes on in macbooks)
  • At least 500GB ssd with relatively good speed, also at least 16GB ram (lots of docker builds, i don’t plan on storing anything else on it though).
  • At least 1080p resolution for webdev work.
  • Durable. I really don’t wanna have to buy another one in three years. I want a laptop that is a failsafe, let’s say my computer burns up or i have to travel, that’s when i plan to make heavy usage of it.

So far my research is pointing towards Thinkpads, not sure which, but they seem to fit the bill, but since i’ve never used one i can’t really say. What would you folks recommend?

There are only really three choices:

Thinkpad X1, Dell XPS, new MacBook Pro (the KB got fixed)

All have pros and cons

Edit:

Actually, Frameworks is a fair option. Not the best, but surprisingly good and the upgrade ability and repair ability of it make it really compelling for long term reasons.

But yeah, those would be my only real considerations for any work purpose laptop I want to actually be productive and mobile on

4 Likes

I’m not very excited about recent laptops. Most are kind of disposable; they do what they do, but are not terrifically great at anything. An alternative to your reliability goals is to just get something that works for you that is inexpensive, so that you do not mind so much when you replace it sooner rather than later.

Regarding keyboards, some laptop keyboards are better than others, but none are what I would call “good”. I carry a full-size keyboard with any laptop.

Laptop screens are always a compromise. No matter what the resolution, the size is always going to be tiny. Whenever possible, I plug into an external monitor.

As a result, I use a laptop for taking notes in meetings or when traveling by car, train, or air. All other times, a portable PC is a better device for me.

Somebody here spoke about using Raspberry Pi instead of a laptop (@ThatGuyB, maybe?). I’m curious about that idea… it sounds like a possible alternative.

A cheap tablet (with an external keyboard) might be an alternative secondary device. If you backup to cloud, then you can simply buy a new one in any emergency. You can restore to full function in an hour.

For the foreseeable future, I am far more interested in pocket-size tablets, like the Samsung Fold 3. It gives you a better-than-phone quality device that you can literally take and use anywhere. The Dex software is made for external keyboard, mouse, and display support. A single device that is both phone and laptop is far more enticing than any of the recent laptops.

2 Likes

Used a Toshiba Encore (8" Windows x86 tablet) with a BT KB and mouse in college. Wasn’t too bad. Everything was easy to fit in a bag and fast take in and out of it. But something like an older Asus Transformerbook (10") would have been better.

Yeah, that’s me. I got a USB wireless all-in-one media KB+touchpad combo on it. I also have a portable monitor. You can power both the Pi and the monitor using 1 or 2 USB power bricks. It can get the job done. The only issue I have with this setup is that, unlike a laptop, you can’t easily plug the Pi to a wall. If you plug the USB power bank to charge, 99% of them will instantly kill power to the Pi, so you have to shutdown the Pi and then plug the Pi and power bank to the wall. I haven’t tested this as a “on-the-go” setup yet, I’ll probably do once I grab a WiFi USB card (my Pi is in a metal full enclosure, can’t use WiFi).

I’ll probably keep looking for a power bank that has power passthrough (so when you plug it to the wall, it won’t stop powering the devices behind it - basically a USB battery that works as a 5V output UPS).

Never used Dex, can’t really comment on how it works. I have used before the Encore an Android tablet with miniHDMI as a “desktop” (with wired peripherals with long extensions). It worked ok for consuming media and playing some android games that don’t require a lot of touch input. But I really don’t think I could go back to use Android as much as I used to, because my computing needs have changed drastically since.

3 Likes

I’m trying to figure out whether I need a new dev laptop, or a new desktop.

If laptop, maybe 64G ram MacBook Pro… (should be enough to run a small k8s cluster, and cache all the stuff required for building things).

If desktop, then maybe a threadripper, because or ram.

Currently already have a pair of 32" 4k screens. Old M1 can’t connect to both, not really an option.


edit: roundabout way of me getting you to think about your development workflow… for me, lots of what I do is in containers and VMs, and I’m spoiled with big monitors being able to show lots of code and terminals and logs and docs at the same time… maybe you develop different kind of software?


edit2: framework maxes out at 64G as well, interesting… how much do those dimms cost,… around 250 for two 3200 cl 16 dimms… not bad

3 Likes

ThinkPads are great. If you need a mobile workstation, the T440s are heavy, semi upgradeable and pack a lot of hardware. If you need something more light and mobile, but not user serviceable, the X1 Carbon isn’t bad.

The only issue is Lenovo is becoming more similar to Apple.
As experienced by the repair tech with my screen repair.

And articles covered by Louis Rossmann

I have a ThinkPad E570 and a couple other forum members as well

If you want something closer to the X1, in terms of portability and specs, I’d suggest framework just because they support user and third party repair.

Trackpads on ThinkPads are pretty mixed people either really love the trackpad + trackpoint (Louis Rossmann) or dislike it a lot (Alex from LTT). I find the size to be perfectly fine, but a lot of laptop reviewers want swimming pool sized trackpads. I actually prefer the ThinkPad trackpad because they have dedicated left, middle, and right click buttons. The biggest turnoff on my work laptop is the lack of dedicated click buttons.

The ThinkPad keyboard is solid.

ThinkPads have a good history of durability

More thinkpad videos

3 Likes

I like trackpoints, I don’t mind smaller touchpads.

I hate when laptops have trackpoints, but no scroll middle button (looking at you, Elitebooks). Dell Latitudes and Lenovo Thinkpads are the best. I like Dell Latitudes for their repairability. And unlike the consumer customer service, Dell’s business customer support rocks. They even replaced the rubber seal around the screen when it started coming off. Actually, they replaced the whole bezel. Obviously, YMMV, but because of some of the Dell repair guys with 1-business-day service, I pretty much became a Dell fanboy (but only for Latitudes, XPS lineup is pretty crappy, not sure why people buy it, and the inspirons are cheap and kinda break fast).

I am guessing you already have a laptop. If you have to test software in K8s, I would suggest instead of getting a really balls-to-the-walls laptop or desktop, to make a decently spec’ed headless server. Make modifications that you want to test? Push it to Gitea or GitLab and have it auto-start building when modifications are made. Jenkins is a good place to start. Then through Jenkins you can auto-deploy stuff on a test K8s cluster environment.

I’m not a programmer, but I always wonder why programmers always “ought” to compile stuff on their own workstations, when they can push it on a device more capable of computation. There are reasons for high-end mobile workstations to exist, but development… I don’t know what to think of it.

A developer may fix, compile, test and repeat many times during a session. The goal is to do it as fast as possible. Nothing wrong with offloading to a different machine, as long as I can do it with a script (and doesn’t require a lot of extra keystrokes). But it is not like send-and-forget… I am still going to sit and wait for the result so that I can test it immediately.

A many-core desktop or workstation is a common tool but you’re right… similar work can be done from a phone or laptop (in a pinch).

2 Likes

This and also it’s super common to want to deploy a miniaturized version of your entire service stack locally in order to just smoke test and stuff.

Which still requires a crap ton of cores/threads and RAM to do so realistically.

Not to mention the sheer amount of stuff a dev will have running in parallel that may not even be directly related to him writing the code, yet important to his overall workflow, eg, browser, teams, note taking application, fiddler for capturing network traffic, postman for making queries to things, etc…

I routinely max out the 64Gb of RAM on my 2019 MacBook Pro

2 Likes

You never want to commit (at least not into public) a broken piece of code, so you want to edit, build, test. But also benchmark, and also spot check and try whether the thing works or behaves as it should… then you send it for review and you repeat the tests as you address feedback … or as you continue to work on something else while you wait for feedback.

For example, my latest toy project if I were to change/rewrite the home assistant backup encryption decryption and compression decompression code to make it faster by utilizing multiple threads and adding some buffers, I’d need to try it out.

on how I'm testing this

The home assistant test setup is actually pretty good - relative to most opensource software out there.
There are basic flake8 and mypy static analysis tests, there are unit tests to ensure one can decrypt what was encrypted, I’ve already added another test and a small “golden file” that ensures the format is stable across versions and not just self-consistent… but that’s where things end.
There’s no benchmarking code checked in… could I make some?.. sure. Would it make the project better yes, is it the best use of everyone’s time to have that - maybe, but probably not.
This is because I need to test performance on real hardware anyway. So for that… I need a sacrificial raspberry pi, or a pi like scriptable qemu setup, and I need to build a supervisor container image, push it to some registry somewhere, and point a qemu VM or a raspberry pi running home assistant os to update from there… then play a little with some large backups I have, and assuming things work, I can read some timestamps from logs.

It’s not preferred, it’s just simpler than fixing the world - most open source software in particular isn’t setup to work in any kind of distributed caching build system… causing builds to take minutes and tests make take tens of minutes if not hours. Most developers don’t have access to hardware to make ci/cd setups work for everyone who might use them. In corporate environments this gets a lot easier to justify.

Also, often times it’s useful to be able to run end-to-end manual tests while developing, because it’s both hard and laborious to write automated integration tests that aren’t going to be fragile or expensive to maintain.

another example

For example, instead of running things in k8s, for this one other toy project I have a shell script that initializes mariadb, and etcd, and runs my frontend and two backend servers on the host, as well as two thing-a-ma-bobs that would normally run on separate machines, they mostly talk grpc to each other on localhost.
Is it perfect, no. Does these couple of hundred lines of angry bash save development time, hell yes. Should this be some automated smoke test, … eventually yes


Maybe, I don’t know if it be any cheaper… but same as a desktop that I wouldn’t turn off - it’d always use more space around the house which is suboptimal.

3 Likes

I know devs have to compile stuff over and over again. Which is why I was thinking a server could save them time, not waste it.

Now that’s something. But obviously, it depends on each programmer’s workflow.

The ranting of a sysadmin that was doing every IT thing in the company, from servers, to network, to infrastructure, to helpdesk and workstations maintenance, upgrade and purchases, to updating IT policies and procedures to be on par with current standards, mostly ISO 27001

At my old workplace, devs had only 16 GB of RAM and I noticed people complained about their RAM getting filled whenever I helped them with other stuff (like shell scripting), but never pushed it either up to the managers or on the side to the IT for an upgrade. I was the one who had to “do the studies” – i.e. just go to a few programmers and ask them to screenshot their RAM usage, which was always between 13.8 and 15.3 GB, with a lot of swap usage, even though I already saw that, because I had interacted with all the devs before – and convince the management that they needed RAM upgrades (we had a set of somewhat “set in stone” specs for each type of employee, but these had to be updated and it didn’t help with prices rising on hardware once Intel started doing 4 and 6 cores on mid-range laptops around 8th gen). While I was at it, I asked them to do one in “idle” (i.e. when browsing stuff, talking and programming, with all their programs and IDE open) and one when compiling. The CPU usage never went above 60% on dual cores with HT, which was odd. In any case, I was the one who upgraded our devs to 32 GB of RAM and 4core CPUs when they got newer laptops and obviously the management wanted feedback. Every dev said the workflow improved and everything was faster (obviously), but I had to do screenshots again. Usage was between 24 and 28 GB of RAM with no swap. To this day, I don’t think anyone hit 32GB and swap, but give them some time. CPU utilization did improve somewhat, still 60% but out of 4 cores, so before probably the CPU was idling waiting for RAM.

I mentioned a test k8s cluster environment, but I was also thinking of either a test git server, or just a separate test branch where you work on stuff, that you obviously don’t push to master and use it for quick compiling of your code.


I guess one of my next side projects should be doing a programmer’s infrastructure on a budget laptop. God, I don’t have the time or the hardware for that yet, but I want to do it. This sounds like it would be an awesome devember project, using a cloud server to compile your stuff and then push built projects around in k8s or LXDs for testing. Obviously, not for every programmer, but could do a favor to most.

So, my workplace has this. It’s a fairly sophisticated thing and we use it with JX to automate testing integration tests between systems by spinning up ephemeral environment and unit tests and publishing nuget packages.

We also use that system to be able to spin up interactive ephemeral environments that we routinely use for smoke testing new features and stuff.

And I can tell you from experience that when you have an entire dept of hundreds of devs and project managers hammering those servers, it just becomes non viable to use for everything, so you have to prioritize when to use it and why.

The cost of scaling that up to something that would give the same kind of instant feedback a dev wants in his local env is just not worth it from a business value, especially when you have to account for varying levels of internet access for a dev.

Oh, and it basically requires a dedicated dev ops team to constantly work on supporting, maintaining, and updating those systems.

1 Like

Yes. A personal server can work, but maybe not a shared server. In fact, that is exactly what I have done in the past. I was doing server development work and I needed a test server, which also was a sufficiently powerful computer to code on. It was not really server hardware; it was just a high-end PC with a lot of memory and disk; running a server operating system. All of it was in a portable case so that I could lug it around.

I used both a laptop client and direct keyboard+monitor on the dev-server-thingie. It was a good setup, and the entire system fit onto an airport luggage cart.

Really, though, it is splitting hairs whether we call this thing a “development workstation” or a “personal server” or just a powerful development computer. Today’s version fits into an ITX case. Could also be set up with a cloud server.

Any way you slice it, though, a laptop by itself is insufficient for the amount of stuff that I need to crunch quickly.

2 Likes

Might try the new MacBook Pros; I kinda want one to see how it handles my everyday workflow/load; seems like it would potentially handle it better than even a true workstation

If it could beat a workstation then there would be no more workstations. Macbook M1s are impressive, for laptops, but you cannot entirely beat physics. Power budget, cooling, and expandability all matter.

Depends on the workload. The video rendering engine gives it a super leg up on comparable desktop workstations for instance. DSM (YT guy for audio stuff) was doing a comparison between his M1 and his threadripper workstation for video editing, and the M1 was actually faster be a decent bit apparently.

A true server would trump it of course and a truly monstrous workstation would be out of reach, but I’m curious if it could match or a beat a more modest configuration for some development workflows

I bought a laptop from System76 and I love it. Have had it for almost a year now and I am never looking back. I went with the Gazelle since it is pretty much just a portable desktop. I use it with some USB-C docks so I can just carry it into work, plug it into USB-C, and start working with 4 monitors (and have the same setup at home).

I wanted a laptop that ran linux by default, has a removable battery, fast storage, plenty of ram, ability to do a little bit of gaming or graphical intense applications, and had support for USB-C docks. This laptop has pretty much ticked all the boxes for me. They even have entire sections for how to take apart the laptop if you ever need to do an upgrade or replace anything. It also has a USB 2.0 port which has actually come in handy plenty of times (flashing ESP devices sometimes doesn’t work on USB 3.0). The ethernet port has also come in handy multiple times. I really hate adapters and being a tech guy I deal with networking quite a bit at work.

I also love how all of their docs are on github and available to be modified by anyone. I have actually contributed some information about what docks work with the laptop I purchased.

System76 are the guys that make the PopOS. So far I love their OS. It’s nice to be supporting a company I actually believe in rather then throwing my money away on Apple or Windows machines.

I’m never buying a laptop with a non-removable battery ever. Batteries always fail within 3-5 years and I plan to run this laptop into the ground (my last laptop lasted 10 years). Also the option of carrying a spare is just too nice.

Oh and the BIOS is completely open source. No hidden box running on your machine.

I used an XPS-15 that work gave me for a while and really didn’t like it. Getting it to work with linux was a huge pain and several things just never worked despite pouring hours into finding a fix (such as the HDMI port would never put out a signal but worked fine in windows). Not all XPS machines are awful on Linux though. I just don’t know why the one I got was such a pain.

2 Likes

If you can find one, there was recently an ‘anniversary edition’ thinkpad. It was 16:10 and had all the features you want. It’ll last, but it might be pricey.

This topic was automatically closed 273 days after the last reply. New replies are no longer allowed.