{ "config": { "base_url": "https://disconsented.com", "mode": "build", "title": null, "description": null, "languages": {}, "default_language": "en", "generate_feed": false, "feed_filename": "atom.xml", "taxonomies": [ { "name": "categories", "slug": "categories", "paginate_by": null, "paginate_path": null, "render": true, "feed": true }, { "name": "year", "slug": "year", "paginate_by": null, "paginate_path": null, "render": true, "feed": true } ], "author": null, "build_search_index": true, "extra": { "social_media": [ { "name": "GitHub", "url": "https://github.com/disconsented" } ], "navbar": [ { "text": "Blog", "url": "/" }, { "text": "Projects", "url": "/pages/projects" } ], "avatar": "avatar.png" }, "markdown": { "highlight_code": true, "highlight_theme": "base16-ocean-dark", "highlight_themes_css": [], "render_emoji": false, "external_links_target_blank": false, "external_links_no_follow": false, "external_links_no_referrer": false, "smart_punctuation": false, "extra_syntaxes_and_themes": [], "lazy_async_image": false }, "search": { "index_format": "elasticlunr_javascript" } }, "current_path": "/year/", "current_url": "https://disconsented.com/year/", "image": { "url": "https://disconsented.com/processed_images/avatar.2b7ee108609eb81a.png", "static_path": "static/processed_images/avatar.2b7ee108609eb81a.png", "width": 38, "height": 28, "orig_width": 1135, "orig_height": 822 }, "lang": "en", "taxonomy": { "name": "year", "slug": "year", "paginate_by": null, "paginate_path": null, "render": true, "feed": true }, "terms": [ { "name": "2015", "slug": "2015", "path": "/year/2015/", "permalink": "https://disconsented.com/year/2015/", "pages": [ { "relative_path": "blog/why-i-decided-to-stick-with-18-for-minecraft.md", "colocated_path": null, "content": "

This is a legacy article from the old version of this site, it is included for posterity.

\n

Some people had noticed that after working on ANSSRPG for over a year\nand five months (30/04/2014 was the creation date of the repository)\nthat I had finally released it however with one quirk; it was released\nfor 1.8 only and a few people have asked why/for a 1.7.10 version.

\n\n

I want to make it clear that I only wish to maintain and work on one\nversion myself (although I am open to someone else maintaining a 1.7.10\nversion) this was for a few reasons, the biggest being that I have\nbecome a professional software developer and modding is as much of a\nhobby as something of a passion (still being a full time student\ndoesn't help) so I don't have as much time as before to work on it.\nThere are other reasons, the most prominent being that a few mods that I\nhave had my eye on for compatibility issues like Tinkers Construct have\nbeen undergoing major changes to the code base and I do not wish to work\nagainst it until it is stable again.

\n

Lastly, the modding community stagnates around Minecraft versions and I\nloathe that. If I can push it along ever so slightly I am perfectly\nhappy to do so (even at the cost of people's perceptions and enjoyment).

\n

"I do not think there is any thrill that can go through the human heart\nlike that felt by the inventor as he sees some creation of the brain\nunfolding to success....Such emotions make a man forget food, sleep,\nfriends, love, everything." - Nikola Tesla

\n", "permalink": "https://disconsented.com/blog/why-i-decided-to-stick-with-18-for-minecraft/", "slug": "why-i-decided-to-stick-with-18-for-minecraft", "ancestors": [ "_index.md" ], "title": "M.2, NVMe, Optane and You", "description": null, "updated": "2015-10-08T22:50:56+12:00", "date": "2015-10-08T22:50:56+12:00", "year": 2015, "month": 10, "day": 8, "taxonomies": { "year": [ "2015" ] }, "authors": [], "extra": {}, "path": "/blog/why-i-decided-to-stick-with-18-for-minecraft/", "components": [ "blog", "why-i-decided-to-stick-with-18-for-minecraft" ], "summary": "

This is a legacy article from the old version of this site, it is included for posterity.

\n

Some people had noticed that after working on ANSSRPG for over a year\nand five months (30/04/2014 was the creation date of the repository)\nthat I had finally released it however with one quirk; it was released\nfor 1.8 only and a few people have asked why/for a 1.7.10 version.

\n", "toc": [], "word_count": 283, "reading_time": 2, "assets": [], "draft": false, "lang": "en", "lower": null, "higher": null, "translations": [], "backlinks": [] } ], "page_count": 1 }, { "name": "2017", "slug": "2017", "path": "/year/2017/", "permalink": "https://disconsented.com/year/2017/", "pages": [ { "relative_path": "blog/m2-nvme-optane-and-you.md", "colocated_path": null, "content": "

This is a legacy article from the old version of this site, it is included for posterity.

\n

There's a lot of confusion out in the wilds about SSD's and their\nvarious technologies so I am going to provide a reference of what\neverything is.

\n\n

To start with we have a handful of relevant terms:

\n\n

We will start with M.2 since it's the most misunderstood. People tend\nto think it means the interface or protocol (PCIe or NVMe respectively).\nIn reality, the important thing to understand is that it is simply a\nform factor and has little impact on the real world (boot times, load\ntimes) performance of the drive. This is best compared to the 2.5" and\nPCIe form factors (not to be confused with the PCIe interface).

\n

M.2 has the ability to use SATA, PCIe, or USB 3.0 interfaces, but for\nour purposes we're only concerned with PCIe and SATA.

\n

AHCI is the legacy (read: old) protocol developed by Intel for\ninterfacing mechanical hard drives(controllers) with the rest of the\nsystem.

\n

NVMe is the replacement for AHCI; the important thing here is that it\nhas been designed to be used specifically with SSD's and as a result can\nallow them to better utilize the bandwidth provided via the PCIe bus.

\n

SATA is the interface that most SSD's use to transfer information\nbetween the SSD and the rest of the computer. Although technically not\nlegacy, it has been superseded by PCIe.

\n

PCIe is another relatively old interface. The important distinction\nbetween this and SATA is that PCIe is not just for storage devices due\nto it having massively more bandwidth. A single PCIe 3.0 lane provides\n7.88Gb/s of bandwidth which scales up to 126Gb/s with 16 lanes. This is\nwhat enables modern SSD's raw bandwidth.

\n

This is great and all but what does it mean for the average user?

\n

Practically nothing, the problem is that the performance difference just\ndoesn't matter for consumers.

\n

As shown by Techreport's Samsung 960 EVO\nreview,\nthere is no noticeable difference in boot times or application\n(including game) load times when compared to the older SATA based SSDs.\nPCIe/NVMe SSD's are just not worth the price premium, so when\nshopping for an SSD look for what is the best value drive ($/GB).

\n

3D Xpoint (also known as\nOptane) is a collaborative\neffort between Intel and Micron to attempt to bridge the gap between\nDRAM and classic NAND storage. This provides many of the performance\nbenefits, to a lesser extent, of DRAM (specifically in low latencies and\nhigher bandwidth) but with the bonus of it being Non-Volatile. In\nEnglish, this means when the drive is unpowered it will keep what's\nstored on it. Ultimately besides this being a fledgling technology this\nhas the same practical problem as PCIe SSD's. It's not worth what it\ncosts and is only really a consideration for workstations and servers.

\n", "permalink": "https://disconsented.com/blog/m2-nvme-optane-and-you/", "slug": "m2-nvme-optane-and-you", "ancestors": [ "_index.md" ], "title": "M.2, NVMe, Optane and You", "description": null, "updated": "2017-05-19T10:50:56+12:00", "date": "2017-05-19T10:50:56+12:00", "year": 2017, "month": 5, "day": 19, "taxonomies": { "year": [ "2017" ] }, "authors": [], "extra": {}, "path": "/blog/m2-nvme-optane-and-you/", "components": [ "blog", "m2-nvme-optane-and-you" ], "summary": "

This is a legacy article from the old version of this site, it is included for posterity.

\n

There's a lot of confusion out in the wilds about SSD's and their\nvarious technologies so I am going to provide a reference of what\neverything is.

\n", "toc": [], "word_count": 549, "reading_time": 3, "assets": [], "draft": false, "lang": "en", "lower": null, "higher": null, "translations": [], "backlinks": [] }, { "relative_path": "blog/hot-to-use-pcpartpicker.md", "colocated_path": null, "content": "

This is a legacy article from the old version of this site, it is included for posterity.

\n\n

PcPartPicker is a wonderful site that allows\npeople to easily put together a build and get aggregated (collected)\ndata on parts pricing, however there are a few important features that\nare not explained. I hope to walk you through them here. Firstly we're\nat the index page, nothing particularly useful except for the 'VIEW\nYOUR System Build' button in the top left hand corner. This is how we\nstart a new build.

\n

::: thumbnail\n/images/posts/how-to-use-pcpartpickercom/pcpp01.png\n:::

\n

Your page should look something like that, if it doesn't press the big\nblue 'Start A New Part List' in the upper left hand corner of the\nscreen. (From top to bottom) there are two important things to point\nout: The 'Choose a X' buttons and 'Add Custom Part'. Custom parts\nare handy for when you want to include something outside of what\npcpartpicker contains (an old graphics card for example).

\n

::: thumbnail\n/images/posts/how-to-use-pcpartpickercom/pcpp02.png\n:::

\n

You should be met with a pop up box, pretty self explanatory. If you\nhave a URL to a part\n(https://www.amazon.com/Gigabyte-GC-WB867D-I-Bluetooth-Frequency-Compatible/dp/B019JH89YI\nfor example) you can add it in and press 'Create Part'.

\n

::: thumbnail\n/images/posts/how-to-use-pcpartpickercom/pcpp03.png\n:::

\n

Press 'Add To Part List'.

\n

::: thumbnail\n/images/posts/how-to-use-pcpartpickercom/pcpp04.png\n:::

\n

Now its been added in, easy. Pcpartpicker isn't perfect however,\nsometimes we need to specify the details ourselves. Press 'Add A Custom\nPart' again then press 'Add Custom Part'.

\n

::: thumbnail\n/images/posts/how-to-use-pcpartpickercom/pcpp05.png\n:::

\n

From here we can fill in the details we want as well as select a\ncategory.

\n

::: thumbnail\n/images/posts/how-to-use-pcpartpickercom/pcpp06.png\n:::

\n

Now we go back and add a motherboard. Notice on the left the filters and\non the right the 'Add From Filter' button, together these are\n'Parametric Filters'. Parametric Filters allows Pcpartpicker to semi\nintelligently choose parts based on what you select (as well as\nconsidering compatibility), then it will select the lowest priced part.\nThis is one of the sites most powerful features, you can also select\nindividual parts using the checkbox to the left of their name.

\n

::: thumbnail\n/images/posts/how-to-use-pcpartpickercom/pcpp07.png\n:::

\n

Here we select the 'LGA1151' socket, DDR4 RAM and 4 RAM Slots.

\n

::: thumbnail\n/images/posts/how-to-use-pcpartpickercom/pcpp08.png\n:::

\n

Rinse and repeat, pcpartpicker won't let you add in parts that are\nincompatible with each other normally. For the sake of time I have\nfilled out the parts. It's important to note the price at the bottom,\nbecause we were smart and used parametrics the list will update to\nreflect current pricing, combos and will even update to different\nregions!

\n

::: thumbnail\n/images/posts/how-to-use-pcpartpickercom/pcpp09.png\n:::

\n

There are a few features to note here (from left to right): The\nPermalink which is a direct link to your parts list so that you can\nshare it with other people (important if you want help!), the system\nwattage estimation and the 'Save As' button (for when you're using an\naccount).

\n

::: thumbnail\n/images/posts/how-to-use-pcpartpickercom/pcpp10.png\n:::

\n

That's about all there is too it, happy part picking!

\n", "permalink": "https://disconsented.com/blog/hot-to-use-pcpartpicker/", "slug": "hot-to-use-pcpartpicker", "ancestors": [ "_index.md" ], "title": "How To Use PcPartPicker.com", "description": null, "updated": "2017-01-04T19:58:56+13:00", "date": "2017-01-04T19:58:56+13:00", "year": 2017, "month": 1, "day": 4, "taxonomies": { "year": [ "2017" ] }, "authors": [], "extra": {}, "path": "/blog/hot-to-use-pcpartpicker/", "components": [ "blog", "hot-to-use-pcpartpicker" ], "summary": "

This is a legacy article from the old version of this site, it is included for posterity.

\n", "toc": [], "word_count": 564, "reading_time": 3, "assets": [], "draft": false, "lang": "en", "lower": null, "higher": null, "translations": [], "backlinks": [] } ], "page_count": 2 }, { "name": "2023", "slug": "2023", "path": "/year/2023/", "permalink": "https://disconsented.com/year/2023/", "pages": [ { "relative_path": "blog/basics-of-networking.md", "colocated_path": null, "content": "

Preface

\n

Frequently across varying game hosting communities I see folks trying to start hosting servers for their friends but typically running into the same sets of roadblocks, blindly following poorly written guides & videos.

\n

Instead of getting grumpy, trying to explain the process for the Nth time, I've decided to (shockingly) write out a guide to hopefully help folks, help themselves.

\n\n

Given my years of experience inside varying Minecraft Server communities (shout out to Syscraft), running my Infrastructure as a Service (PixelPond.io) & my experience in Residential Access Networks, I figured it was time to impart a bit of wisdom.

\n

The goal of this guide is to explain enough for folks to get started, with a focus on teaching a set of tools (both software and logical) to diagnose their home networks.

\n

What this guide, isn't, is a complete guide to port forwarding with X ISP or Y CPE (typically a router). Due diligence on the part of the reader is expected, this is fork feeding, not spoon-feeding.

\n

What is N.A.T?

\n

N.A.T. or Network Address Translation (like most acronyms) is quite a literally named. In a nutshell, it's the idea that a network device can take a request and then translate it to another address.

\n

The way it works is by modifying the Source I.P. and Destination I.P. segments of the packet and forwarding it along the network.

\n

Typically, the C.P.E. figure out how & where to translate the incoming address by looking at the Destination. It will then modify that to point towards another device and forward that along.

\n

Say you get a packet that looks like:

\n\n\n
Source AddressSource PortDestination AddressDestination Port
123.123.123.1232556510.0.0.125565
\n

Your CPE may then have a NAT table that looks like:

\n\n\n\n
Source AddressSource PortDestination AddressDestination Port
0.0.0.025565192.168.1.2025565
10.0.0.180192.168.1.208080
\n

In this case, it has two rules:

\n
    \n
  1. Will translate any traffic (more on this later) to a local (LAN) server.
  2. \n
  3. Will translate traffic from one source, to a local server with a different port.
  4. \n
\n

From there, it can modify the packet to:

\n\n\n
Source AddressSource PortDestination AddressDestination Port
10.10.10.1025565192.168.1.2025565
\n

So, it's rewritten the Destination Address and forwarded the packet on its mary way. It was able to do so because it had been told what to do via the NAT table.

\n

In practice, this is the mechanism that lets people access services behind a C.P.E. (Router) in IPv4 networks. IPv6 doesn't use the concept of NAT because each device has its own (public) address.

\n

However, this mechanism doesn't always work for varying reasons. We'll touch on the two most common ones here, “Hairpin N.A.T.” and C.G.N.A.T.

\n

Hairpin NAT, alternatively, why you don't test from your port forward from your LAN

\n

Hairpin NAT is the idea of communicating to a local host behind the same NAT device (CPE). E.g., connecting to a local server by using the WAN address of the CPE.

\n

Why did I include this? Well, I've noticed that folks who are new to dealing with home networks tend to think that using your CPE's WAN address is a good way to test your port forward.

\n

In reality, attempting to test this way achieves nothing beyond verifying that your Hairpin NAT works. It's convenient in some cases, but ultimately a red herring.

\n

CGNAT, the other big scary NAT

\n

CGNAT, or Carrier Grade NAT, is a way for ISPs to save money on paying for an IP address for each customer. It works much the same way as regular NAT, but instead of it operating on your CPE, it operates on a network appliance somewhere in your provider's network. Unfournatley, you have no direct influence over how it operates. Consequently, you cannot port forward when your ISP is using CGNAT.

\n

It is trivial to establish if you're stuck behind CGNAT, you'll see that your CPEs WAN address is different to what services will report your WAN address as.

\n

I.e., say your CPE has an WAN address of 10.0.0.25 & a service like icanhazip says your address is 123.123.123.123 you're stuck behind CGNAT.

\n

Fret not, you can work around this via “Tunneling” although, we won't dive into this topic here.

\n

What is Quad 0

\n

Remember that weird address from the NAT table before, 0.0.0.0? It's a special address in many special rules depending on the context, but here it has one relevant meaning. Anything, why do we care? Because it's the only address we should ever bind a server to.

\n

Address Binding

\n

Have you ever noticed how some servers let you specify an address?

\n
\n

E.g. server-ip=

\n
\n

When you specify a value, you're telling the application to only listen to that address. Typically, you'll want this when you have a machine with multiple addresses and several services with the same ports. For example: 10.0.0.2:25565 & 10.0.0.3:25565.

\n

Private/LAN Address

\n

Previously, we discussed how NAT works and its role in connecting your server to the internet. As every device on the network needs an address to be reachable, and there are not enough IP(v4) addresses for each machine to have a unique one. The IETF set aside various address spaces for private use.

\n

This overlap, combined with NAT is largely how the problem of IPv4 address exhaustion was tackled. It is important to understand how this works for understanding how your traffic is directed.

\n

Public/WAN Address

\n

Essentially, the globally unique address by which you can be reached. This will be the address of your CPE for IPv4 networks and how your network can be found on the internet.

\n

IPv4 & IPv6

\n

The Internet Protocol (IP) is essentially the layer that lets you route traffic between the interconnected networks of the internet, largely in v4 and v6 layers. A brief description, but it covers the broad strokes.

\n

Programmatically, IPv4 and IPv6 are made up of 32 bits and 128 bits, respectively. The adoption of IPv6 is largely driven by the IPv4 address exhaustion problem, consequently, this is why NAT has seen widespread adoption. Every bit you add, doubles the range of numbers that you can represent. IPv4 can represent roughly 4 million addresses (with special ranges not for general use), IPv6 can represent 340 undecillion addresses. These are enough addresses that practically every device on the internet can have its own unique address, in residential settings, instead of a single IPv4 address you'll typically have an IPv6 prefix.

\n

ISPs have been historically slow to adopt IPv6 through a lack of demand and the equipment cost behind it. However, support for IPv6 has grown to the point where it is not unusual to see it being offered to residential customers.

\n

Furthermore, because of the support for IPv6 in major services, ISPs are supporting it as a way of reducing load on their CGNAT equipment, consequently saving significant cost on equipment.

\n

MAC Binding (I.E. how does the router know where to direct traffic)

\n

Network interfaces don't have an IP address directly associated with them, instead, each interface has its own unique hardware address that needs to be mapped against an IP address to be routable. This is done with the Address Resolution Protocol, network equipment will keep a collection of these mappings to know how to route traffic to interfaces across the network.

\n

TCP Dump & Wireshark

\n

Just to raise awareness of these tools, TCP Dump & Wireshark are packet capture tools that can be used to capture, analyse network traffic, consequently they're excellent tools for diagnosing issues.

\n

However, these tools are complex enough that I won't be able to do them justice.

\n

Firewall Logs

\n

Not a specific tool but rather a concept, most firewall solutions (whether they're on a CPE or a server) have an option of logging events. This is a great step for sanity checking whether traffic is hitting a particular device, as an example.

\n

Addendum 1 — Fail to Bind (Address already in use)

\n
Typically, this is one of the following :\n\nAddress port pair is already in use, to resolve this, pick another unique combination or stop whatever is using that one.\nUsing a port from the reserved range, user space applications must use a port >1024.\nNo adapters with the specified address, for multiple routable addresses, assign them to the interface, otherwise bind to Quad0.
\n", "permalink": "https://disconsented.com/blog/basics-of-networking/", "slug": "basics-of-networking", "ancestors": [ "_index.md" ], "title": "All The Things They Don't Tell You About Port Forwarding.", "description": "A guide to understanding port forward for the diligent learner.", "updated": "2023-12-26T16:35:00+13:00", "date": "2023-12-26T16:35:00+13:00", "year": 2023, "month": 12, "day": 26, "taxonomies": { "categories": [ "Networking" ], "year": [ "2023" ] }, "authors": [], "extra": { "toc": true }, "path": "/blog/basics-of-networking/", "components": [ "blog", "basics-of-networking" ], "summary": "

Preface

\n

Frequently across varying game hosting communities I see folks trying to start hosting servers for their friends but typically running into the same sets of roadblocks, blindly following poorly written guides & videos.

\n

Instead of getting grumpy, trying to explain the process for the Nth time, I've decided to (shockingly) write out a guide to hopefully help folks, help themselves.

\n", "toc": [ { "level": 2, "id": "preface", "permalink": "https://disconsented.com/blog/basics-of-networking/#preface", "title": "Preface", "children": [] }, { "level": 2, "id": "what-is-n-a-t", "permalink": "https://disconsented.com/blog/basics-of-networking/#what-is-n-a-t", "title": "What is N.A.T?", "children": [] }, { "level": 2, "id": "hairpin-nat-alternatively-why-you-don-t-test-from-your-port-forward-from-your-lan", "permalink": "https://disconsented.com/blog/basics-of-networking/#hairpin-nat-alternatively-why-you-don-t-test-from-your-port-forward-from-your-lan", "title": "Hairpin NAT, alternatively, why you don't test from your port forward from your LAN", "children": [] }, { "level": 2, "id": "cgnat-the-other-big-scary-nat", "permalink": "https://disconsented.com/blog/basics-of-networking/#cgnat-the-other-big-scary-nat", "title": "CGNAT, the other big scary NAT", "children": [] }, { "level": 2, "id": "what-is-quad-0", "permalink": "https://disconsented.com/blog/basics-of-networking/#what-is-quad-0", "title": "What is Quad 0", "children": [] }, { "level": 2, "id": "address-binding", "permalink": "https://disconsented.com/blog/basics-of-networking/#address-binding", "title": "Address Binding", "children": [] }, { "level": 2, "id": "private-lan-address", "permalink": "https://disconsented.com/blog/basics-of-networking/#private-lan-address", "title": "Private/LAN Address", "children": [] }, { "level": 2, "id": "public-wan-address", "permalink": "https://disconsented.com/blog/basics-of-networking/#public-wan-address", "title": "Public/WAN Address", "children": [] }, { "level": 2, "id": "ipv4-ipv6", "permalink": "https://disconsented.com/blog/basics-of-networking/#ipv4-ipv6", "title": "IPv4 & IPv6", "children": [] }, { "level": 2, "id": "mac-binding-i-e-how-does-the-router-know-where-to-direct-traffic", "permalink": "https://disconsented.com/blog/basics-of-networking/#mac-binding-i-e-how-does-the-router-know-where-to-direct-traffic", "title": "MAC Binding (I.E. how does the router know where to direct traffic)", "children": [] }, { "level": 2, "id": "tcp-dump-wireshark", "permalink": "https://disconsented.com/blog/basics-of-networking/#tcp-dump-wireshark", "title": "TCP Dump & Wireshark", "children": [] }, { "level": 2, "id": "firewall-logs", "permalink": "https://disconsented.com/blog/basics-of-networking/#firewall-logs", "title": "Firewall Logs", "children": [ { "level": 3, "id": "addendum-1-fail-to-bind-address-already-in-use", "permalink": "https://disconsented.com/blog/basics-of-networking/#addendum-1-fail-to-bind-address-already-in-use", "title": "Addendum 1 — Fail to Bind (Address already in use)", "children": [] } ] } ], "word_count": 1389, "reading_time": 7, "assets": [], "draft": false, "lang": "en", "lower": null, "higher": null, "translations": [], "backlinks": [] } ], "page_count": 1 }, { "name": "2024", "slug": "2024", "path": "/year/2024/", "permalink": "https://disconsented.com/year/2024/", "pages": [ { "relative_path": "blog/desktop-2024.md", "colocated_path": null, "content": "

A fun article showing off my current desktop PC, as well as the justification of my choices.

\n

PCPartPicker Part List

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TypeItemPrice
CPUAMD Ryzen 9 7950X3D 4.2 GHz 16-Core ProcessorPurchased For $1309.00
CPU CoolerNoctua NH-D12L 60.09 CFM CPU CoolerPurchased For $158.25
MotherboardASRock B650 PRO RS ATX AM5 MotherboardPurchased For $468.99
MemoryG.Skill Trident Z5 Neo 64 GB (2 x 32 GB) DDR5-6000 CL30 MemoryPurchased For $605.25
Video CardSapphire NITRO+ Radeon RX 7900 XTX 24 GB Video CardPurchased For $2454.84
CaseSilverstone RM42-502 ATX Mid Tower CasePurchased For $404.06
Power SupplyCorsair RM1000x (2021) 1000 W 80+ Gold Certified Fully Modular ATX Power SupplyPurchased For $355.00
Case FanNoctua A8 PWM 32.66 CFM 80 mm FanPurchased For $33.21
Case FanNoctua A8 PWM 32.66 CFM 80 mm FanPurchased For $33.21
Case FanNoctua A12x25 PWM 60.1 CFM 120 mm FanPurchased For $67.00
Case FanNoctua A12x25 PWM 60.1 CFM 120 mm FanPurchased For $67.00
MonitorNixeus NX-EDG34S 34.0" 3440 x 1440 144 Hz Curved MonitorPurchased For $0.00
KeyboardGlorious GMMK RGB Wired Gaming KeyboardPurchased For $0.00
CustomXonar U7 MKII 7.1 USB DAC with Headphone AmplifierPurchased For $0.00
CustomIntel Optane SSD 905P Series (960GB 2.5" PCIe x 4 3D XPoint) (959527)Purchased For $797.44
CustomIntel Optane DC P5800X Series 400GB, 2.5" x 15mm, U.2, PCIe 4.0 x4, 3D XPoint Solid State Drive (SSD) SSDPF21Q400GB01Purchased For $1272.43
CustomGlorious Model D Wireless Gaming Mouse - RGB 69g Lightweight Ergonomic Wireless Gaming Mouse (Matte Black)Purchased For $0.00
CustomConnectx-5$500.00
Prices include shipping, taxes, rebates, and discounts
Total$8525.68
Generated by PCPartPicker 2024-10-11 10:24 NZDT+1300
\n

CPU

\n

Nothing particularly special here, the 7950X3D isn't technically as fast as the 7800X3D for gaming, but, I appreciate the extra 8 cores for development work.

\n

CPU Cooler

\n

An unusual choice given what is otherwise typically chosen, but, my list of wants/requirements here is unconventional:

\n
    \n
  • Needed to fit in a 4u chassis.
  • \n
\n

At the time of specing, my APC 18U Netshelter was sitting right next to my desk, and I wanted to have it mounted in there to keep everything out of the way. If they were smaller, I'd have likely gone with either the Peerless Assassin or Phantom Spirit coolers.

\n
    \n
  • Air/Tower Cooler.
  • \n
\n

Folks who know me, know I do not like liquid coolers. Custom loops are incredibly expensive, and, I tend to not have any particular interest in "flashy" systems. Cosed Loop Coolers (not "AIO") typically cost more than comparable tower options as well.

\n

Both of these options have failure characteristics I'd rather avoid, a broken pump is known to cook systems, there is also the concern of having to replace the cooling liquid or deal with leakage.

\n\n

Motherboard

\n

My guiding philosophy behind motherboards is "they're just a set of features, get the cheapest that fits". Consequently, that meant that the cheaper B650 boards made the most sense for me.

\n

This board, however, also has a pretty interesting block diagram. This exposed just enough PCIe lanes to do what I wanted long term.

\n
    \n
  • 2x U.2 PCIe/NVMe SSDs
  • \n
  • 1x GPU
  • \n
  • 1x Mellanox Connect X-6
  • \n
  • Thunderbolt AIC
  • \n
\n

RAM

\n

I advise folks to buy higher density DIMMs rather than more DIMMs, to give you more options in the future. Furthermore, memory scaling for Zen4 tapered off heavily beyond AMDs recommendation.\nConsequently, I went with the cheapest 6000MT/s CL30 2x32GB DDR5 UDIMM kit I could find at the time.

\n

Video Card

\n

It was a toss up between the 7900 XTX and the RTX 4080, obviously, I chose the former. I'd wanted to be more forward-thinking with DP2.0 support, AMD's better driver story on linux & really to support them.

\n

I largely didn't and still don't care about the AI features, I do sorta care about Ray Tracing, however, the overhead is too great for me to consider it at this time.

\n

Why Nitro+? Reviewed well, and, I've also literally only owned Sapphire GPUs.

\n

Case

\n

A basic rack-mount case, can also be converted to a desktop as a bonus.

\n

Power Supply

\n

This is a slightly older design at this point, but, it was hard to find many options that are reviewed, available and would supply enough power for me needs.

\n

The 2021 1KW Corsair RMx ended up being the best option available to me.

\n

Fans

\n

Arctic P3's were not available at the time, and, I wanted to fill out all the fans for airflow concerns. Noctua's accessory package is also nice to have.

\n

Monitor

\n

I've had this for a few years, one of the few components I've imported but, monitors are another part where I have unusual opinions.

\n

Essentially, I'll assert that contrast is an undervalued part of monitors. This is vindicated by the recent explosion of OLED displays.

\n

The NX-EDG34 also reviewed reasonably well, it was reasonably fast for a VA panel with typical static contrast, Variable Refresh Rate w/ Low Framerate Compensation, VESA mount support and variable voltage input (to support 240v NZ power, when sourcing products from 110V USA).

\n

I was also upgrading from a pair of 1080p, 60Hz basic IPS & TN displays.

\n

Keyboard

\n

My first "custom" mechanical keyboard, Kalih Box Royal switches (cheap and very tactile) w/ pudding keycaps to show off the now off RGB.

\n

Sound Card

\n

Another hold over, from when I broke the 3.5mm front panel jack on my old NZXT Phantom chassis.

\n

Storage

\n

Another instance of putting my money where my mouth is.

\n

When it comes to SSDs I posit the following. Latency, rather than throughput is what matters for SSDs.

\n

The reasoning behind this, beyond a lack of any real scaling in real world benchmarks with consumer SSDs. Is that, when SSDs first started to gain steam, their throughput was/is comparable to HDDs but with much stronger random performance.

\n

Mouse

\n

My last Steel Series mouse broke, I got this on a recommendation.

\n

Add In Cards

\n

I don't have either of these yet but, the reasoning behind both of these is silly but simple.

\n

Thunderbolt AIC, I want to have my desktop racked in another room, and, leverage optical cables.

\n

Connect-X 5, fast networking, with ZTR support. Which is RDMA, without the switches needing to support it. So, I can leverage the Mikrotik 100G/25G line.

\n", "permalink": "https://disconsented.com/blog/desktop-2024/", "slug": "desktop-2024", "ancestors": [ "_index.md" ], "title": "My Personal Desktop 2024 Edition", "description": null, "updated": "2024-10-10T21:25:04+12:00", "date": "2024-10-10T21:25:04+12:00", "year": 2024, "month": 10, "day": 10, "taxonomies": { "year": [ "2024" ] }, "authors": [], "extra": {}, "path": "/blog/desktop-2024/", "components": [ "blog", "desktop-2024" ], "summary": "

A fun article showing off my current desktop PC, as well as the justification of my choices.

\n

PCPartPicker Part List

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TypeItemPrice
CPUAMD Ryzen 9 7950X3D 4.2 GHz 16-Core ProcessorPurchased For $1309.00
CPU CoolerNoctua NH-D12L 60.09 CFM CPU CoolerPurchased For $158.25
MotherboardASRock B650 PRO RS ATX AM5 MotherboardPurchased For $468.99
MemoryG.Skill Trident Z5 Neo 64 GB (2 x 32 GB) DDR5-6000 CL30 MemoryPurchased For $605.25
Video CardSapphire NITRO+ Radeon RX 7900 XTX 24 GB Video CardPurchased For $2454.84
CaseSilverstone RM42-502 ATX Mid Tower CasePurchased For $404.06
Power SupplyCorsair RM1000x (2021) 1000 W 80+ Gold Certified Fully Modular ATX Power SupplyPurchased For $355.00
Case FanNoctua A8 PWM 32.66 CFM 80 mm FanPurchased For $33.21
Case FanNoctua A8 PWM 32.66 CFM 80 mm FanPurchased For $33.21
Case FanNoctua A12x25 PWM 60.1 CFM 120 mm FanPurchased For $67.00
Case FanNoctua A12x25 PWM 60.1 CFM 120 mm FanPurchased For $67.00
MonitorNixeus NX-EDG34S 34.0" 3440 x 1440 144 Hz Curved MonitorPurchased For $0.00
KeyboardGlorious GMMK RGB Wired Gaming KeyboardPurchased For $0.00
CustomXonar U7 MKII 7.1 USB DAC with Headphone AmplifierPurchased For $0.00
CustomIntel Optane SSD 905P Series (960GB 2.5" PCIe x 4 3D XPoint) (959527)Purchased For $797.44
CustomIntel Optane DC P5800X Series 400GB, 2.5" x 15mm, U.2, PCIe 4.0 x4, 3D XPoint Solid State Drive (SSD) SSDPF21Q400GB01Purchased For $1272.43
CustomGlorious Model D Wireless Gaming Mouse - RGB 69g Lightweight Ergonomic Wireless Gaming Mouse (Matte Black)Purchased For $0.00
CustomConnectx-5$500.00
Prices include shipping, taxes, rebates, and discounts
Total$8525.68
Generated by PCPartPicker 2024-10-11 10:24 NZDT+1300
\n", "toc": [ { "level": 2, "id": "cpu", "permalink": "https://disconsented.com/blog/desktop-2024/#cpu", "title": "CPU", "children": [] }, { "level": 2, "id": "cpu-cooler", "permalink": "https://disconsented.com/blog/desktop-2024/#cpu-cooler", "title": "CPU Cooler", "children": [] }, { "level": 2, "id": "motherboard", "permalink": "https://disconsented.com/blog/desktop-2024/#motherboard", "title": "Motherboard", "children": [] }, { "level": 2, "id": "ram", "permalink": "https://disconsented.com/blog/desktop-2024/#ram", "title": "RAM", "children": [] }, { "level": 2, "id": "video-card", "permalink": "https://disconsented.com/blog/desktop-2024/#video-card", "title": "Video Card", "children": [] }, { "level": 2, "id": "case", "permalink": "https://disconsented.com/blog/desktop-2024/#case", "title": "Case", "children": [] }, { "level": 2, "id": "power-supply", "permalink": "https://disconsented.com/blog/desktop-2024/#power-supply", "title": "Power Supply", "children": [] }, { "level": 2, "id": "fans", "permalink": "https://disconsented.com/blog/desktop-2024/#fans", "title": "Fans", "children": [] }, { "level": 2, "id": "monitor", "permalink": "https://disconsented.com/blog/desktop-2024/#monitor", "title": "Monitor", "children": [] }, { "level": 2, "id": "keyboard", "permalink": "https://disconsented.com/blog/desktop-2024/#keyboard", "title": "Keyboard", "children": [] }, { "level": 2, "id": "sound-card", "permalink": "https://disconsented.com/blog/desktop-2024/#sound-card", "title": "Sound Card", "children": [] }, { "level": 2, "id": "storage", "permalink": "https://disconsented.com/blog/desktop-2024/#storage", "title": "Storage", "children": [] }, { "level": 2, "id": "mouse", "permalink": "https://disconsented.com/blog/desktop-2024/#mouse", "title": "Mouse", "children": [] }, { "level": 2, "id": "add-in-cards", "permalink": "https://disconsented.com/blog/desktop-2024/#add-in-cards", "title": "Add In Cards", "children": [] } ], "word_count": 1338, "reading_time": 7, "assets": [], "draft": false, "lang": "en", "lower": null, "higher": null, "translations": [], "backlinks": [] } ], "page_count": 1 }, { "name": "2025", "slug": "2025", "path": "/year/2025/", "permalink": "https://disconsented.com/year/2025/", "pages": [ { "relative_path": "blog/pcpartpicker/index.md", "colocated_path": "blog/pcpartpicker/", "content": "

Often, I need to explain to folks what's expected when I ask for a "pcpartpicker list". I've also gotten tired of playing\n20 questions trying to wrangle out the information that I care about. So, here's a quick and dirty guide to PcPartPicker\nlists™.

\n

Why use PCPartPicker?

\n

PCPartPicker is a free pc part selection, pricing and compatibility checking. It has become the de-facto tool for\nreliably putting together the right parts list for your upgrade or fresh pc build.

\n

Yes this is an exercise in reading comprehension!

\n

\"\"

\n

1. Choose the closest country.

\n

The country tells us parts availability and prices, these do very regularly. For this, reason, It's important to pick\nthe country you're purchasing from.

\n

2. Select either highlighted button to go to https://[REGION.]pcpartpicker.com/list/

\n

\"\"

\n

3. Check your purchasing country.

\n

4. Add everything.

\n

Cherry-picking parts leaves out possibly important context, it only takes a moment on your part to populate these.

\n

5. Add your monitor.

\n

This helps us suggest an appropriate GPU, as, there's little point in purchasing a top-end GPU for a 10-year-old\ndisplay, when it'll spend its life sitting idle and not putting your dollars to good use.

\n

6. Add your case fans.

\n

Every watt matters, consequently for the power estimate to be accurate, we need to account for everything that can draw\npower.

\n

7. Missing part?

\n

Sometimes parts don't appear as expected, you may be able to find this using the search utility in the top right of the\nUI.

\n

Alternatively, you may wish to add a custom part.

\n

7a. Create part by URL.

\n

Add a URL and PCPartPicker tries to work out what the part is for you. These parts typically appear in the "Custom Part"\ntype.

\n

\"\"

\n

7b. Manually Create Part.

\n

Broadly preferable to the first option, this lets us choose the name and type for a given part.\n\"\"

\n

8. Mark parts as purchased.

\n

Always mark purchased parts as purchased, even if everything is purchased. This makes it clear what parts will be\nreplaced/need to be filled out and those that don't.

\n

\"\"\\### 9. Check compatibility warnings.

\n

Most of these are straightforward, when in doubt, ask for help.

\n

10. Power estimates.

\n

Not a comprehensive estimation but, it provides a good minimum wattage to work from. Ensure that whatever you pick can\nhandle the peak power of the system to avoid tripping power supply protections and give you some headroom for\ndegradation, upgrades, etc.

\n

11. Provide the correct link.

\n

Do not provide pcpartpicker.com/list/, the parts here are stored in your web browser, and we will not see what you do.

\n

Instead, provide the pcpartpicker.com/list/###### link, in the green box.

\n", "permalink": "https://disconsented.com/blog/pcpartpicker/", "slug": "pcpartpicker", "ancestors": [ "_index.md" ], "title": "How To PcPartPicker", "description": null, "updated": "2025-01-02T21:23:05.469", "date": "2025-01-02T21:23:05.469", "year": 2025, "month": 1, "day": 2, "taxonomies": { "year": [ "2025" ] }, "authors": [], "extra": {}, "path": "/blog/pcpartpicker/", "components": [ "blog", "pcpartpicker" ], "summary": "

Often, I need to explain to folks what's expected when I ask for a "pcpartpicker list". I've also gotten tired of playing\n20 questions trying to wrangle out the information that I care about. So, here's a quick and dirty guide to PcPartPicker\nlists™.

\n", "toc": [ { "level": 2, "id": "why-use-pcpartpicker", "permalink": "https://disconsented.com/blog/pcpartpicker/#why-use-pcpartpicker", "title": "Why use PCPartPicker?", "children": [] }, { "level": 2, "id": "yes-this-is-an-exercise-in-reading-comprehension", "permalink": "https://disconsented.com/blog/pcpartpicker/#yes-this-is-an-exercise-in-reading-comprehension", "title": "Yes this is an exercise in reading comprehension!", "children": [ { "level": 3, "id": "1-choose-the-closest-country", "permalink": "https://disconsented.com/blog/pcpartpicker/#1-choose-the-closest-country", "title": "1. Choose the closest country.", "children": [] }, { "level": 3, "id": "2-select-either-highlighted-button-to-go-to-https-region-pcpartpicker-com-list", "permalink": "https://disconsented.com/blog/pcpartpicker/#2-select-either-highlighted-button-to-go-to-https-region-pcpartpicker-com-list", "title": "2. Select either highlighted button to go to https://[REGION.]pcpartpicker.com/list/", "children": [] }, { "level": 3, "id": "3-check-your-purchasing-country", "permalink": "https://disconsented.com/blog/pcpartpicker/#3-check-your-purchasing-country", "title": "3. Check your purchasing country.", "children": [] }, { "level": 3, "id": "4-add-everything", "permalink": "https://disconsented.com/blog/pcpartpicker/#4-add-everything", "title": "4. Add everything.", "children": [] }, { "level": 3, "id": "5-add-your-monitor", "permalink": "https://disconsented.com/blog/pcpartpicker/#5-add-your-monitor", "title": "5. Add your monitor.", "children": [] }, { "level": 3, "id": "6-add-your-case-fans", "permalink": "https://disconsented.com/blog/pcpartpicker/#6-add-your-case-fans", "title": "6. Add your case fans.", "children": [] }, { "level": 3, "id": "7-missing-part", "permalink": "https://disconsented.com/blog/pcpartpicker/#7-missing-part", "title": "7. Missing part?", "children": [] }, { "level": 3, "id": "7a-create-part-by-url", "permalink": "https://disconsented.com/blog/pcpartpicker/#7a-create-part-by-url", "title": "7a. Create part by URL.", "children": [] }, { "level": 3, "id": "7b-manually-create-part", "permalink": "https://disconsented.com/blog/pcpartpicker/#7b-manually-create-part", "title": "7b. Manually Create Part.", "children": [] }, { "level": 3, "id": "8-mark-parts-as-purchased", "permalink": "https://disconsented.com/blog/pcpartpicker/#8-mark-parts-as-purchased", "title": "8. Mark parts as purchased.", "children": [] }, { "level": 3, "id": "10-power-estimates", "permalink": "https://disconsented.com/blog/pcpartpicker/#10-power-estimates", "title": "10. Power estimates.", "children": [] }, { "level": 3, "id": "11-provide-the-correct-link", "permalink": "https://disconsented.com/blog/pcpartpicker/#11-provide-the-correct-link", "title": "11. Provide the correct link.", "children": [] } ] } ], "word_count": 458, "reading_time": 3, "assets": [ "/blog/pcpartpicker/custom-part-1.png", "/blog/pcpartpicker/custom-part-2.png", "/blog/pcpartpicker/pcpartpicker-1.png", "/blog/pcpartpicker/pcpartpicker-2.png", "/blog/pcpartpicker/purchased.png" ], "draft": false, "lang": "en", "lower": null, "higher": null, "translations": [], "backlinks": [] } ], "page_count": 1 } ] }