I’m planning to build a computer primarily for programming and want to ensure it’s upgradeable for the future. and Hardware with opensource drivers support.
It depends highly on what you will be programming.
Low level programming C, rust and Machine Learning programming with Python. No need of huge graphics card.
well even a raspberry pi would be enough, except for ML
depending on what exactly in ML, and what our the sizes of datasets involved?, like i did some work, but for me 8 GiB RAM was enough, but if you want to do larger databases, you would need somewhat good GPU (essentially large matrix multipliers) with plenty of VRAM
Low level programming C
Could be pretty much any computer
rust
Need a lot of memory (8-16 GB) if you are planning on dissecting any existing projects
Machine Learning programming with Python
Start with colab / huggingface and get a feel for what level of hardware you need for the stuff you’re doing before you start buying stuff
If you want just a general high quality system with upgradability etc, frame.work or System76 are supposed to be good high end providers.
I used to think a lot about up-gradability before but often find that when a cpu is too slow then it is also so old that I have to change the motherboard and ram too for compatibility reasons.
Same thing with the motherboard, if it fails I’ve never had it be new enough that I can bring my cpu and ram with me to my next motherboard (unless buying an older motherboard second hand).
And many of my disks will be old enough that I want to replace them too, at least if they have anything important on them.
Only things I’ve brought with me when upgrading desktops have been my case (including fans), psu, gpu and (some) disks.
Having a quiet and dust proof case that is easy to build in and a good psu that https://cultists.network/140/psu-tier-list/ endorses has become higher priority to me since then, as I know they might last me more than one build.
I tend to recommend a 3 year cycle. Year 1 upgrade peripherals (speakers, monitors, maybe chair, keyboard, mouse etc) year 2. Upgrade video card and hard drives. year 3. Upgrade motherboard, ram and cpu. Year 4 repeat year 1
With this you can you can do 95% of the latest stuff with “good” stuff (think XX70 cards rather then 80 or 90 series) since you are never that outdated on any portion.
You upgrade your chair, keyboard, mouse, and speakers every 3-4 years? You might as well be flushing your money down the toilet. You’re giving pretty terrible advice imo.
Replacing peripherals that often is nuts. Buy proper gear instead of wasting your money. My speakers are 20 years old and still look and sound like new, my proper office chair finally needs replacing or repairing but I got it used 24 years ago (do yourself a favor and never buy a “gaming chair”, buy a proper ergonomic office chair meant to sit in 8+ hrs/day). Monitor is 12 years old and works great for anything that doesn’t require >60Hz. Buy quality keyb+mouse and replace them when they break if you can’t repair them.
And depending on what you do, your computer could last longer than you think. I’m still running a first gen Threadripper from 2017 and it still handles everything I’m throwing at it without hesitation, granted I’m not throwing very heavy things at it these days.
I mean you can program on a potato, so what would be your programming need? Something specific you want to get into?
Yes Hardware Firewalls exist, but those are primarily infrastructure and not part of a computer.
If all you want to do is program on that rig, then maybe consider an integrated GPU solution so you don’t have to invest in a overpriced Graphics card.
When you care about security and privacy you probably want to run a Linux distribution/BSD instead of Windows? Or do you want Apple (as then this discussion would be superfluous anyway)
I currently have a HP laptop with decent hardware with void linux. The problem is i cannot repair or upgrade that laptop apart of ram and HDD. I want to upgrade or repair on my own.
I have a question, what are you exactly seeking to repair?, like if you have a good working laptop, and if it gives good performance, then there may not be much need of repairing. One of the reasons for getting repairable hardware is that they last long, like I have laptops which are 13 and 7 years old, and they both “work”, batteries are dead, and replacements are not good, but other than that fine machines. If your laptop is not very flimsy, you may not even need an upgrade for a long time.
as a senior developer my advice is: buy parts and learn to assemble, the exchangeable parts are (at least for me):
- CPU/Mainboard/RAM : always bought as a bundle (RAM at least 32GB), because dependencies are too high, I prefer AMD, but ymmv
- GPU : Easy to switch, easy to spend a fortune, i always prefer mid range cards or older ones like the AMD RX 6600
- Storage: Always the fastest possible, if you need to go cheap, then make it smaller, linux does need no significant space, and i run my system on a 240GB M.2
- Case/PSU: Buy it only once, i still use a case from the 90`s, the PSU will only be upgraded if connectors change, 750W are enough for most of the work
- HID: Dont go cheap on Monitors and Mouse/Keyboard, IPS displays are a must, if you have multiple screens (angular view is distorted otherwise), Most gaming input devices work very good for programmers, i prefer logitech (with ratbag), but corsair has very goot support under linux too (ckb-next)
As a rule of thumb i buy high-end to last me for ages.
I prefer Asus motherboards, the last one lasted 10 years and i only replaced it 'cos of bad diagnostics on my end.
I prefer AMD CPUs because, so far, AMD has stuck to socket upgradeability - that board came with an AM+ Athlon which i replaced with a Phenom. Current one’s Ryzen 5 and i can upgrade to Ruzen 9 if so desired. I’d say Threadripper is overkill, stay on Ryzen.
32 GiB RAM is nice, more is nicer, especially if you play with virtualization. You may want to remount your /tmp as an in RAM tmpfs (otherwise you won’t be able to compile firefox on gentoo).
I don’t care about graphics cards (beware some CPUs don’t support your mobo’s on-board graphics) but you mentioned LLMs… so… go gamer on that, can’t help you there.
Storage… really depends on your projects… 1TB HDD is more than enough for most stuff, find good brands within your budget/needs. I prefer SSDs because they’re quiet and curently have 3 Crucial MX500s on a ZRAID6 2 TB pool.
Same for fans: Noctua or be Quiet.
PSU’s probably… 400W? Dunno, always buy more than you need and you’re gonna need to feed that external GPU…