{"@attributes":{"version":"2.0"},"channel":{"title":"nullsum.net","link":"https:\/\/nullsum.net\/","description":"Recent content on nullsum.net","generator":"Hugo","language":"en-us","lastBuildDate":"Sun, 09 Jan 2022 18:10:48 -0500","item":[{"title":"Digitizing VHS Home Movies","link":"https:\/\/nullsum.net\/posts\/digitizing-vhs-home-movies\/","pubDate":"Sun, 26 Sep 2021 17:32:53 -0400","guid":"https:\/\/nullsum.net\/posts\/digitizing-vhs-home-movies\/","description":"<p>One of the projects I did during lockdown was digitizing a number of home movies my family had on VHS.\nI initially checked the prices of professional services,\nbut discovered that I would save a good chunk of money by buying the equipment and doing this myself.<\/p>\n<figure><img src=\"https:\/\/nullsum.net\/posts\/digitizing-vhs-home-movies\/workstation.jpg\"\n alt=\"Workstation photo\">\n<\/figure>\n\n<h2 id=\"hardware\">Hardware<\/h2>\n<hr>\n<p>This hardware was recommended on various sites.\nIt&rsquo;s not going to give me the absolute best results, but it should be more than adequate for the relatively low-quality source material.\nTotal cost for all the hardware was a little under $300 USD - with both the JVC and Panasonic being bought used on eBay.<\/p>"},{"title":"GPD Win 2: Ten Hardware Failures in Under Three Years","link":"https:\/\/nullsum.net\/posts\/gpd-win-2-failures\/","pubDate":"Sat, 13 Mar 2021 22:20:14 -0500","guid":"https:\/\/nullsum.net\/posts\/gpd-win-2-failures\/","description":"<p>This is a timeline of all the hardware failures and defects I&rsquo;ve had with my GPD Win 2\nsince I purchased in 2018.<\/p>\n<table>\n <thead>\n <tr>\n <th>Year<\/th>\n <th>Problem<\/th>\n <\/tr>\n <\/thead>\n <tbody>\n <tr>\n <td>2018<\/td>\n <td>MicroSD reader failure <a href=\"#note-1\">*<\/a><\/td>\n <\/tr>\n <tr>\n <td>2018<\/td>\n <td>multiple clusters of stuck pixels <a href=\"#note-1\">*<\/a><\/td>\n <\/tr>\n <tr>\n <td>2018<\/td>\n <td>speakers out-of-phase <a href=\"#note-1\">*<\/a><\/td>\n <\/tr>\n <tr>\n <td>2019<\/td>\n <td>display cable failure #1<\/td>\n <\/tr>\n <tr>\n <td>2019<\/td>\n <td>left analog stick failure<\/td>\n <\/tr>\n <tr>\n <td>2019<\/td>\n <td>right analog stick failure<\/td>\n <\/tr>\n <tr>\n <td>2020<\/td>\n <td>ABXY membrane failure<\/td>\n <\/tr>\n <tr>\n <td>2020<\/td>\n <td>CPU fan failure<\/td>\n <\/tr>\n <tr>\n <td>2020<\/td>\n <td>display cable failure #2<\/td>\n <\/tr>\n <tr>\n <td>2021<\/td>\n <td>battery failure<\/td>\n <\/tr>\n <\/tbody>\n<\/table>\n<p><a href=\"#note-1\">*<\/a>Present from start. Would not ship back as I would have to cover shipping to China.\nSeller refused to send replacement parts for me to install.<\/p>"},{"title":"LG 34GK950F defect analysis","link":"https:\/\/nullsum.net\/posts\/lg34gk950f-defect-analysis\/","pubDate":"Fri, 12 Mar 2021 14:44:57 -0500","guid":"https:\/\/nullsum.net\/posts\/lg34gk950f-defect-analysis\/","description":"<p>The <a href=\"https:\/\/www.lg.com\/us\/monitors\/lg-34GK950F-B-gaming-monitor\">LG 34GK950F-B<\/a>\nmonitor I purchased in May 2019 has died. Its fate is the &ldquo;horizontal lines&rdquo; issue that many others have reported <a href=\"https:\/\/www.amazon.com\/LG-34GK950F-B-34-21-Ultragear\/product-reviews\/B0798Q8KG4\/ref=cm_cr_arp_d_viewopt_kywd?ie=UTF8&amp;reviewerType=all_reviews&amp;pageNumber=1&amp;filterByKeyword=lines\">[1]<\/a>.<\/p>\n<p>This is not what a $799 display should look like, but here we are.<\/p>\n<p><img src=\"lines.jpg\" alt=\"lines\"><\/p>\n<h2 id=\"onset\">Onset<\/h2>\n<p>While using the display, it randomly made a buzzing sound as horizontal lines appears on the display - still usable albeit\nin a degraded state. A few seconds later, the entire display turned into the picture above - completely unusable.\nThere was a loud buzzing sound from the lower right of the display throughout all of this.<\/p>"},{"title":"How DRM Negatively Impacted Me","link":"https:\/\/nullsum.net\/posts\/how_drm_negatively_impacted_me\/","pubDate":"Wed, 24 Feb 2021 18:15:24 -0500","guid":"https:\/\/nullsum.net\/posts\/how_drm_negatively_impacted_me\/","description":"<p>Some history of how DRM negatively impacted my experience as a legitmate customer or user.<\/p>\n<h2 id=\"unable-to-activate-windows-xp\">Unable to activate Windows XP<\/h2>\n<p>When I was younger, I often reinstalled Windows XP after somehow borking\nthe system. This initially was not a problem as my legal copy of Windows XP\nHome Edition upgrade would activate online without issue. However, it eventually\nstopped activating due to exceeding the number of activations for my CD key.\nIt was possible to work around this by activating over the phone.<\/p>"},{"title":"Intel and Dell broke undervolting on my XPS 13","link":"https:\/\/nullsum.net\/posts\/undervolting-blocked-xps13-9360\/","pubDate":"Tue, 23 Feb 2021 12:51:12 -0500","guid":"https:\/\/nullsum.net\/posts\/undervolting-blocked-xps13-9360\/","description":"<p>Ugh, my aging XPS 13 (9360 motherboard, Intel i7-8550U) becomes perceptually slower\nwith each security vulnerability mitigation. One of these mitigations also noticeably\nincreased both heat output and power consumption by breaking my ability\nto manage the system&rsquo;s power usage more effectively than\nIntel and Dell&rsquo;s defaults.<\/p>\n<p>Dubbed <a href=\"https:\/\/plundervolt.com\/\">Plundervolt<\/a>, the vulnerability in topic relates exclusively to corrupting\nthe integrity of Intel SGX - a mechanism used to prevent\neven the kernel access to specific regions of memory.\nFor the XPS 13 9360, the vulnerability was patched in <a href=\"https:\/\/www.dell.com\/support\/home\/en-us\/drivers\/driversdetails?driverid=0cy6w&amp;oscode=biosa&amp;productcode=xps-13-9360-laptop\">BIOS update 2.14.2<\/a>.\nThough this had the side effect of <strong>completely blocking the ability to undervolt<\/strong> - even for people like me with\nSGX disabled in UEFI settings.<\/p>"},{"title":"USB-C mod for New 2DS XL","link":"https:\/\/nullsum.net\/posts\/usbc-mod-new-2ds-xl\/","pubDate":"Mon, 28 Sep 2020 23:53:42 -0400","guid":"https:\/\/nullsum.net\/posts\/usbc-mod-new-2ds-xl\/","description":"<p>Replaced the proprietary charging port on my New 2DS XL with a USB-C\nport (<a href=\"https:\/\/www.adafruit.com\/product\/4090\">Adafruit USB-C breakout board<\/a>).\nThe exterior of the port was sealed with\n<a href=\"https:\/\/www.amazon.com\/Sugru-Moldable-Glue-Original-Formula\/dp\/B007VXJM58\">Sugru<\/a>.<\/p>\n<p><a href=\"final.jpg\"><img src=\"final.jpg\" alt=\"final\"><\/a><\/p>\n<p>The breakout board was trimmed and reinforced with epoxy and hot glue.<\/p>\n<p><a href=\"exposed.jpg\"><img src=\"exposed.jpg\" alt=\"exposed\"><\/a><\/p>\n<p>Was it worth the effort just to have one less charging cable? Absolutely.<\/p>"},{"title":"mpd-art-box: Minimalist MPD cover art display","link":"https:\/\/nullsum.net\/posts\/mpd_art_box\/","pubDate":"Sun, 26 Jul 2020 22:21:23 -0400","guid":"https:\/\/nullsum.net\/posts\/mpd_art_box\/","description":"<p>I love using <a href=\"https:\/\/github.com\/ncmpcpp\/ncmpcpp\">ncmpcpp<\/a> to control MPD music playback.\nIt&rsquo;s lightweight, simple, and does everything I need with one exception - displaying\ncover art. After recently starting to learn <a href=\"https:\/\/pygobject.readthedocs.io\/en\/latest\/\">PyGObject<\/a>\nfor PinePhone app development, it became clear that I could also use PyGObject to fill this need.<\/p>\n<p>Thus, <a href=\"https:\/\/github.com\/andrewrabert\/mpd-art-box\">mpd-art-box<\/a> was created. Nothing fancy - just 127 lines of Python\nwhich creates a window showing local cover art for the currently playing song in MPD.<\/p>"},{"title":"GPD Win 2 Antenna Mod","link":"https:\/\/nullsum.net\/posts\/gpd_win2_antenna_mod\/","pubDate":"Sat, 16 May 2020 17:34:07 -0400","guid":"https:\/\/nullsum.net\/posts\/gpd_win2_antenna_mod\/","description":"<p>The WiFi antennas in the GPD Win 2 are poorly placed - located roughly under\nwhere one would grip the device with their palms. This results in noticeably\ndegraded performance when holding the&hellip; handheld device.<\/p>\n<p>I replaced the stock antennas with\n<a href=\"https:\/\/www.amazon.com\/gp\/product\/B07DB6ZG3B\/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&amp;psc=1\">a pair of MHF4 antennas<\/a>\nand installed them in <em>saner<\/em> locations.<\/p>\n<p><img src=\"antenna_locations.jpg\" alt=\"antenna_locations\"><\/p>\n<p>Red lines mark roughly the location of the original antennas while pink and cyan\nmark the location of the main and aux antennas respectively.<\/p>"},{"title":"Bypassing GPD Win 2 Firmware Downgrade Protection","link":"https:\/\/nullsum.net\/posts\/downgrading_gpd_win2_gamepad_firmware\/","pubDate":"Sun, 19 Apr 2020 12:28:50 -0400","guid":"https:\/\/nullsum.net\/posts\/downgrading_gpd_win2_gamepad_firmware\/","description":"<p>There are three different firmwares for the GPD Win 2 gamepad - each having\ndifferent &ldquo;opinions&rdquo; in terms of bindings and joystick behaviors. It is\nnot possible to downgrade the firmware after updating - leaving one stuck\nwith whatever opinions the latest firmware has.<\/p>\n<p>Some of the various differences in gamepad behavior are listed below.<\/p>\n<ul>\n<li>v1.11\n<ul>\n<li>D-pad as WASD keys<\/li>\n<li>Left joystick as scroll wheel<\/li>\n<\/ul>\n<\/li>\n<li>v1.18\n<ul>\n<li>D-pad as scroll wheel<\/li>\n<li>Left joystick as WASD keys<\/li>\n<\/ul>\n<\/li>\n<li>v1.19\n<ul>\n<li>Joystick diagonal behavior altered<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2 id=\"patching-the-installers\">Patching the installers<\/h2>\n<p>I&rsquo;ve previously had luck with <a href=\"http:\/\/p7zip.sourceforge.net\/\">p7zip<\/a> extracting executables\nso that&rsquo;s where I started. All three of the extracted executables contained the same files.\nPruning duplicates left me with the following files - all the exact same size.<\/p>"},{"title":"Custom Mechanical Keyboards","link":"https:\/\/nullsum.net\/posts\/custom-mechanical-keyboards\/","pubDate":"Tue, 03 Jul 2018 14:49:00 -0400","guid":"https:\/\/nullsum.net\/posts\/custom-mechanical-keyboards\/","description":"<p>This is the 10th year I&rsquo;ve been using mechanical keyboards - specifically with Cherry MX Blue switches and blank keycaps.\nNumerous keyboards and a few jobs later, the majestic clack is still <em>euphoric<\/em>.<\/p>\n<p><img src=\"keyboards.jpg\" alt=\"top-down: travel, work, home\"><\/p>\n<p>From the top down are my current travel, work, and home setups. The top keyboard is the first I built and was\ndone so from a kit.\nThe other two are built as this article describes. All keyboards are running the same firmware with the\nsame layout. I value consistency <strong>a lot<\/strong> as it&rsquo;s one less think about or adjust to.<\/p>"},{"title":"Simplified Python Parallelization","link":"https:\/\/nullsum.net\/posts\/simplified-python-parallelization\/","pubDate":"Sat, 31 Mar 2018 19:13:37 -0400","guid":"https:\/\/nullsum.net\/posts\/simplified-python-parallelization\/","description":"<h3 id=\"update\">Update:<\/h3>\n<p>I&rsquo;ve since moved onto the standard library&rsquo;s <a href=\"https:\/\/docs.python.org\/3\/library\/concurrent.futures.html\">concurrent.futures<\/a>\nmodule for when I need a pool of processes.\nIt&rsquo;s <em>good enough<\/em> and doesn&rsquo;t require external dependencies.<\/p>\n<hr>\n<p><em>Using Python 3.6<\/em><\/p>\n<p>I fell in love when I first discovered Python&rsquo;s <a href=\"https:\/\/docs.python.org\/3\/library\/multiprocessing.html#multiprocessing.pool.Pool\"><code>multiprocessing.Pool<\/code><\/a>.\nIt provided a simple API for consuming an iterable over multiple\nchild processes. It fit perfectly with my immediate needs \u2014\nisolated, atomic operations.<\/p>\n<p>However, a flaw, or rather\u2014<em>an oddity<\/em>\u2014soon revealed itself when using this\nmodule for tasks requiring state persistence. This frustration, among others,\nresulted in the birth of the <a href=\"https:\/\/github.com\/andrewrabert\/consumers\">consumers<\/a> package.<\/p>"},{"title":"PC Part Inventory","link":"https:\/\/nullsum.net\/pc_part_inventory\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/nullsum.net\/pc_part_inventory\/","description":"<hr>\n<h2 id=\"motherboard\">Motherboard<\/h2>\n<h3 id=\"socket-478\">Socket 478<\/h3>\n<ul>\n<li>ASUS P4P800-E Deluxe (w\/ I\/O shield) (w\/ Intel Pentium 4 HT 3.4E (SL7PP))<\/li>\n<\/ul>\n<h3 id=\"socket-754\">Socket 754<\/h3>\n<ul>\n<li>ABIT NF8 (w\/o I\/O shield) (boxed)<\/li>\n<\/ul>\n<h3 id=\"socket-775\">Socket 775<\/h3>\n<ul>\n<li>ABIT GD8 (w\/o I\/O shield)<\/li>\n<li>ASRock 4CoreDual-SATA2 Rev. G\/A 2.00 (w\/o I\/O shield)<\/li>\n<li>ASRock 775Dual-880 Pro Rev. G\/A 1.06 (w\/o I\/O shield)<\/li>\n<li>ASUS P5PE-VM (w\/ I\/O shield) with Intel E5800<\/li>\n<\/ul>\n<h3 id=\"socket-939\">Socket 939<\/h3>\n<ul>\n<li>ASRock 939Dual-VSTA (REV. G\/A 1.02) (w\/o I\/O shield)<\/li>\n<li>ASUS A8V Deluxe (w\/ I\/O shield)<\/li>\n<li>MSI K8N Neo2 Platinum (w\/ I\/O shield) (missing 1x SATA header)<\/li>\n<li>MSI K8T Neo 2 (MS-6702E VER:1) (w\/ I\/O shield)<\/li>\n<li>MSI K8T Neo2-FIR (w\/ I\/O shield) (boxed - Japanese) (replaced capacitors)<\/li>\n<\/ul>\n<h3 id=\"socket-am2\">Socket AM2<\/h3>\n<ul>\n<li>ASRock ALiveSATA2-GLAN (w\/ I\/O shield) (w\/ AMD Athlon II X2 280 (ADX280OCK23GM))<\/li>\n<li>ASRock AM2NF3-VSTA Rev. G\/A 1.03 (w\/o I\/O shield) (w\/ AMD Athlon 64 X2 5000+ (ADO5000IAA5DD))<\/li>\n<li>Biostar K8M800 Micro (w\/ I\/O shield)<\/li>\n<li>ECS K8M890M-M (w\/ I\/O shield) (boxed)<\/li>\n<li>MSI K9MM-V (w\/ I\/O shield) (boxed)<\/li>\n<li>MSI K9MM-V (w\/ I\/O shield) (boxed) (replaced capacitors)<\/li>\n<\/ul>\n<h3 id=\"socket-am3\">Socket AM3<\/h3>\n<ul>\n<li>MSI 870S-G46 (w\/o I\/O shield) (w\/ AMD Phenom II X4 980 BE (HDZ980FBK4DGM))<\/li>\n<\/ul>\n<hr>\n<h2 id=\"cpu\">CPU<\/h2>\n<h3 id=\"socket-775-1\">Socket 775<\/h3>\n<ul>\n<li>Intel Core 2 Duo E4500 (SLA95)<\/li>\n<li>Intel Core 2 Duo E6700 (SL9S7)<\/li>\n<li>Intel Pentium 4 630 (SL7Z9)<\/li>\n<li>Intel Pentium 4 630 (SL7Z9) (missing capacitor on botttom)<\/li>\n<li>Intel Pentium 4 660 (SL7Z5)<\/li>\n<li>Intel Pentium Dual-Core E5800 (SLGTG)<\/li>\n<\/ul>\n<h3 id=\"socket-939-1\">Socket 939<\/h3>\n<ul>\n<li>AMD Athlon 64 3000+ (ADA3000DIK4BI)<\/li>\n<li>AMD Athlon 64 3500+ (ADA3500DEP4AW)<\/li>\n<li>AMD Athlon 64 X2 4200+ (ADA4200DAA5CD)<\/li>\n<li>AMD Athlon 64 X2 4400+ (ADA4400DAA6CD)<\/li>\n<\/ul>\n<h3 id=\"socket-am2-1\">Socket AM2<\/h3>\n<ul>\n<li>AMD Athlon 64 LE-1640 (ADH1640IAA4DP)<\/li>\n<li>AMD Sempron 3200+ (SDA3200IAA2CW)<\/li>\n<li>AMD Athlon 64 X2 5200+ (ADO5200IAA5DO)<\/li>\n<li>AMD Athlon 64 X2 5600+ (ADO5600IAA5DO)<\/li>\n<li>AMD Athlon 64 X2 6000+ (ADV6000IAA5DO)<\/li>\n<li>AMD Athlon 64 X2 6400+ BE (ADX6400IAA6CZ)<\/li>\n<li>AMD Athlon 64 X2 6400+ BE (ADX6400IAA6CZ) (another one)<\/li>\n<\/ul>\n<hr>\n<h2 id=\"video\">Video<\/h2>\n<h3 id=\"pcie\">PCIe<\/h3>\n<ul>\n<li>AMD Redeon R7 250 2GB (low profile)<\/li>\n<li>ASUS GeForce GTX 580 1536M<\/li>\n<li>ATI Radeon HD 4890 1G (A4890PE51GXOC)<\/li>\n<li>HP NVIDIA QuadroFX 1300 128MB<\/li>\n<li>XFX NVIDIA GeForce 7950 GT 256MB (passively cooled)<\/li>\n<\/ul>\n<h3 id=\"agp\">AGP<\/h3>\n<ul>\n<li>ATI Radeon X700 PRO AGP 128MB<\/li>\n<li>BFG GeForce 7800 GS OC 256MB (BFGR78256GSOC) (boxed)<\/li>\n<li>BFG GeForce FX 5600 256MB<\/li>\n<li>BFG Tech GeForce 6800 Ultra 256MB (BFGR68256UOC)<\/li>\n<li>PNY NVIDIA Quadro4 380XGL 64MB (VCQ4380XGL) PNY NVIDIA QuadroFX 3000 256MB (VCQFX3000)<\/li>\n<li>Sapphire HD 3850 512MB<\/li>\n<li>VisionTek HD 3650 1GB<\/li>\n<\/ul>\n<h3 id=\"cooler\">Cooler<\/h3>\n<ul>\n<li>Thermalright HR-03 Rev.A (w\/ box)<\/li>\n<li>Thermalright HR-03 Rev.A (w\/o box)<\/li>\n<\/ul>\n<hr>\n<h2 id=\"sound\">Sound<\/h2>\n<h3 id=\"pci\">PCI<\/h3>\n<ul>\n<li>IBM 37L4457 (ES1938S Solo-1 K400)<\/li>\n<li>Aztech PCI 338-A3D (AU8820B2)<\/li>\n<li>Aureal Vortex SQ1500 (AU8810A1)<\/li>\n<\/ul>\n<h3 id=\"accessories\">Accessories<\/h3>\n<ul>\n<li>Audigy 2 ZS Platinum 5.25&quot; I\/O bay (SB0250)<\/li>\n<\/ul>\n<h2 id=\"storage\">Storage<\/h2>\n<h3 id=\"pci-sata-controller\">PCI SATA Controller<\/h3>\n<ul>\n<li>FastTrak S150 TX4<\/li>\n<\/ul>\n<hr>\n<h2 id=\"broken\">Broken<\/h2>\n<ul>\n<li>NVIDIA FX 5900 Ultra AGP (w\/ cooler)\n<ul>\n<li>Intermittent vertical line artifacts. Likely bad memory.<\/li>\n<\/ul>\n<\/li>\n<li>NVIDIA FX 5900 Ultra AGP (w\/o cooler)\n<ul>\n<li>Vertical line artifacts at POST. Likely bad memory.<\/li>\n<\/ul>\n<\/li>\n<li>NVIDIA Quadro4 980XGL (875-A02)\n<ul>\n<li>No video at POST.<\/li>\n<\/ul>\n<\/li>\n<li>NVIDIA Quadro4 980XGL (877-A02)\n<ul>\n<li>No video at POST.<\/li>\n<\/ul>\n<\/li>\n<\/ul>"},{"title":"Terms of Service","link":"https:\/\/nullsum.net\/terms\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/nullsum.net\/terms\/","description":"<p><em>Effective Date: Upon initiation of communication<\/em><\/p>\n<p>Welcome to the Terms of Service for engaging in conversation with Andrew Rabert. By continuing to communicate with Andrew Rabert, you agree to comply with the following terms and conditions. If you do not agree, you must cease all communication immediately.<\/p>\n<p><strong>1. Acceptance of Terms<\/strong><\/p>\n<ul>\n<li>By continuing to interact with Andrew Rabert, you acknowledge that you have read, understood, and agree to be bound by these Terms of Service.<\/li>\n<\/ul>\n<p><strong>2. Mandatory Arbitration<\/strong><\/p>"}]}}