<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Tuan Giang — Builder</title><description>Writeups on networks, automation, code, and life in Hawaii.</description><link>https://www.tuangiang.com/</link><item><title>Why I rebuilt my site</title><link>https://www.tuangiang.com/articles/welcome/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/welcome/</guid><description>I loved my old Obsidian Digital Garden — but I outgrew it. Here&apos;s why I rebuilt on my own stack with Claude, what I kept, and what I gained.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><category>personal</category><category>intro</category><category>hawaii</category><category>meta</category><category>claude</category></item><item><title>The Moshin Media Rebuild: From Generic WordPress to a Premium Real Estate Media Site</title><link>https://www.tuangiang.com/articles/moshin-media-rebuild/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/moshin-media-rebuild/</guid><description>A project story about speed, trust, and what it takes to modernize a visual brand without losing the business behind it.</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><category>dev</category><category>web-development</category><category>client-work</category><category>performance</category><category>design</category></item><item><title>Do AI Agents Dream of Pickleball Rallies</title><link>https://www.tuangiang.com/articles/do-ai-agents-dream-of-pickleball-rallies/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/do-ai-agents-dream-of-pickleball-rallies/</guid><description>How I reverse-engineered an undocumented court-booking platform with an AI coding agent to automatically reserve prime-time pickleball courts, working around Cloudflare, misleading availability endpoints, and a form-based booking flow.</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate><category>automation</category><category>ai-agents</category><category>reverse-engineering</category><category>web-automation</category><category>openclaw</category></item><item><title>From Blank Canvas to Brand - How KBAY Apparel Found Its Voice Online</title><link>https://www.tuangiang.com/articles/from-blank-canvas-to-brand-how-kbay-apparel-found-its-voice-online/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/from-blank-canvas-to-brand-how-kbay-apparel-found-its-voice-online/</guid><description>A story about redesigning the KBAY Apparel website by leading with discovery conversations instead of code. Aligning on purpose, navigation, and a simple Google Forms order flow turned a placeholder page into a professional presence.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>dev</category><category>web-design</category><category>branding</category><category>ux</category><category>google-forms</category><category>small-business</category></item><item><title>Managing Paper Documents with Paperless NGX and hp-scan-to-node Integration</title><link>https://www.tuangiang.com/articles/managing-paper-documents-with-paperless-ngx-and-hp-scan-to-node-integration/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/managing-paper-documents-with-paperless-ngx-and-hp-scan-to-node-integration/</guid><description>Replacing Hawaiian Paradise Coffee&apos;s manual after-hours document scanning with an automated pipeline using Paperless NGX and hp-scan-to-node. Documents fed into the printer are auto-scanned, OCR&apos;d, and made searchable with granular per-user access.</description><pubDate>Sat, 19 Apr 2025 00:00:00 GMT</pubDate><category>dev</category><category>paperless-ngx</category><category>ocr</category><category>document-management</category><category>automation</category><category>self-hosted</category></item><item><title>NetSuite Invoice Automation for a Single Customer</title><link>https://www.tuangiang.com/articles/net-suite-invoice-automation-for-a-single-customer/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/net-suite-invoice-automation-for-a-single-customer/</guid><description>Using NetSuite&apos;s Workflow feature to automatically email an invoice PDF with UPS tracking details to a specific customer the moment their order ships, eliminating a manual Order Desk step.</description><pubDate>Fri, 18 Apr 2025 00:00:00 GMT</pubDate><category>automation</category><category>netsuite</category><category>workflow</category><category>invoice</category><category>automation</category><category>ups</category></item><item><title>PROTOTYPE - Barcode Scanning and NetSuite</title><link>https://www.tuangiang.com/articles/prototype-barcode-scanning-and-net-suite/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/prototype-barcode-scanning-and-net-suite/</guid><description>A warehouse management system prototype for Hawaiian Paradise Coffee pairing a third-party barcode scanner with a Django web app integrated with NetSuite. It digitizes picking operations, supports FIFO pulling, and aims to eliminate paper picking tickets.</description><pubDate>Thu, 17 Apr 2025 00:00:00 GMT</pubDate><category>dev</category><category>netsuite</category><category>django</category><category>barcode</category><category>wms</category><category>warehouse</category></item><item><title>NetSuite PDF eSignature</title><link>https://www.tuangiang.com/articles/net-suite-pdf-e-signature/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/net-suite-pdf-e-signature/</guid><description>Digitizing Hawaiian Paradise Coffee&apos;s field service workflow by moving technicians from paper worksheets to a customized NetSuite Invoice form with on-site PDF eSignature. The change eliminates redundant data entry and builds a dataset for future preventative maintenance analysis.</description><pubDate>Wed, 16 Apr 2025 00:00:00 GMT</pubDate><category>dev</category><category>netsuite</category><category>esignature</category><category>automation</category><category>digitization</category><category>field-service</category></item><item><title>Automating Reports in NetSuite - Production and Sales</title><link>https://www.tuangiang.com/articles/automating-reports-in-net-suite-production-and-sales/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/automating-reports-in-net-suite-production-and-sales/</guid><description>How I built and automated NetSuite Saved Searches that deliver daily stock-shortage reports to the Production Manager and date-of-last-sale reports to the Sales team at Hawaiian Paradise Coffee.</description><pubDate>Sun, 06 Apr 2025 00:00:00 GMT</pubDate><category>automation</category><category>netsuite</category><category>reporting</category><category>erp</category><category>saved-search</category></item><item><title>Starlink as Last-Resort Gateway</title><link>https://www.tuangiang.com/articles/starlink-as-last-resort-gateway/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/starlink-as-last-resort-gateway/</guid><description>Implementing Starlink as a last-resort internet gateway for disaster recovery when all primary WAN links are compromised. Describes the L2/L3 topology and traffic flows designed to support command-center users during a crisis.</description><pubDate>Fri, 14 Mar 2025 00:00:00 GMT</pubDate><category>network</category><category>starlink</category><category>disaster-recovery</category><category>wan</category><category>topology</category></item><item><title>Coffee Project Part II - Components in BOMs</title><link>https://www.tuangiang.com/articles/coffee-project-part-ii-components-in-bo-ms/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/coffee-project-part-ii-components-in-bo-ms/</guid><description>Mass-importing the components that make up each BOM revision in NetSuite using linked primary and component CSV files. Part two builds on the revision work from Part I to capture full material cost.</description><pubDate>Wed, 12 Mar 2025 00:00:00 GMT</pubDate><category>dev</category><category>netsuite</category><category>manufacturing</category><category>bom</category><category>csv-import</category></item><item><title>Coffee Project Part III - Component Utilization via Assembly Build</title><link>https://www.tuangiang.com/articles/coffee-project-part-iii-component-utilization-via-assembly-build/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/coffee-project-part-iii-component-utilization-via-assembly-build/</guid><description>Walking through a NetSuite Assembly Build that consumes raw component lots and replenishes finished-good inventory, including roasting yield loss and lot tracking. Part three turns the BOM definitions from earlier parts into real production transactions.</description><pubDate>Wed, 12 Mar 2025 00:00:00 GMT</pubDate><category>dev</category><category>netsuite</category><category>manufacturing</category><category>assembly-build</category><category>inventory</category></item><item><title>Coffee Project Part IV - Django Roast App</title><link>https://www.tuangiang.com/articles/coffee-project-part-iv-django-roast-app/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/coffee-project-part-iv-django-roast-app/</guid><description>Building a Django web app (the Roast App) that lets production workers log roasting and assembly data, pushing it into NetSuite via RESTlet to replace paper logs and manual inventory adjustments. Part four closes the loop between Production, Accounting, and Sales for accurate COGs.</description><pubDate>Wed, 12 Mar 2025 00:00:00 GMT</pubDate><category>dev</category><category>django</category><category>netsuite</category><category>restlet</category><category>automation</category><category>integration</category></item><item><title>Modernizing Telephony System - Toshiba Strata CTX28 to Servpac Yealink</title><link>https://www.tuangiang.com/articles/modernizing-telephony-system-toshiba-strata-ctx-28-to-servpac-yealink/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/modernizing-telephony-system-toshiba-strata-ctx-28-to-servpac-yealink/</guid><description>Replacing an end-of-life Toshiba Strata CTX28 phone system with Servpac-managed VoIP and Yealink IP phones. Covers the autoattendant call-flow, integrating the phones with Ubiquiti voice VLANs, and the operational benefits gained.</description><pubDate>Wed, 12 Mar 2025 00:00:00 GMT</pubDate><category>network</category><category>voip</category><category>yealink</category><category>telephony</category><category>ubiquiti</category><category>modernization</category></item><item><title>Coffee Project Part I - Bill of Materials and Revisions</title><link>https://www.tuangiang.com/articles/coffee-project-part-i-bill-of-materials-and-revisions/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/coffee-project-part-i-bill-of-materials-and-revisions/</guid><description>How a local coffee company migrated from Great Plains to NetSuite and how I mass-attached BOM revisions via Saved CSV Imports. Part one of a series on costing coffee manufacturing in NetSuite.</description><pubDate>Tue, 11 Mar 2025 00:00:00 GMT</pubDate><category>dev</category><category>netsuite</category><category>manufacturing</category><category>bom</category><category>erp</category></item><item><title>How to Upgrade UAP LR from 3.2 to 3.9</title><link>https://www.tuangiang.com/articles/how-to-upgrade-uap-lr-from-3-2-to-3-9/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/how-to-upgrade-uap-lr-from-3-2-to-3-9/</guid><description>A step-by-step guide to manually upgrading a stuck Ubiquiti UAP LR access point from firmware 3.2 to 3.9.27 over SSH and WinSCP so the controller can finally adopt it. Covers resetting the device, transferring the bin file, and running the upgrade command.</description><pubDate>Thu, 06 Mar 2025 00:00:00 GMT</pubDate><category>dev</category><category>ubiquiti</category><category>networking</category><category>firmware</category><category>ssh</category><category>access-point</category></item><item><title>UPS Proof of Delivery (POD)</title><link>https://www.tuangiang.com/articles/ups-proof-of-delivery-pod/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/ups-proof-of-delivery-pod/</guid><description>An automation that uses the UPS Tracking API and Simplegmail to read UPS delivery notification emails, extract tracking numbers, download the Proof of Delivery as a PDF, and file it automatically via cron.</description><pubDate>Tue, 31 Dec 2024 00:00:00 GMT</pubDate><category>automation</category><category>ups-api</category><category>python</category><category>simplegmail</category><category>automation</category><category>cron</category></item><item><title>Check Vlan404 Occurrences</title><link>https://www.tuangiang.com/articles/check-vlan404-occurrences/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/check-vlan404-occurrences/</guid><description>A cron-scheduled Python script using Netmiko that scans a list of DMVPN sites each morning for Vlan404 flapping log entries and emails the network team the results.</description><pubDate>Thu, 19 Dec 2024 00:00:00 GMT</pubDate><category>automation</category><category>netmiko</category><category>cisco</category><category>dmvpn</category><category>cron</category><category>python</category><category>monitoring</category></item><item><title>Configure &quot;No Autostate&quot; on Vlan404</title><link>https://www.tuangiang.com/articles/configure-no-autostate-on-vlan404/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/configure-no-autostate-on-vlan404/</guid><description>A Netmiko Python script that connects to a list of Cisco IOS field sites and applies the &apos;no autostate&apos; command to Vlan6 interfaces to address Vlan404 flapping in a DMVPN topology.</description><pubDate>Thu, 19 Dec 2024 00:00:00 GMT</pubDate><category>automation</category><category>netmiko</category><category>cisco</category><category>ios</category><category>vlan</category><category>python</category></item><item><title>Check Auth Open and Open Ports in Field Routers</title><link>https://www.tuangiang.com/articles/check-auth-open-and-open-ports-in-field-routers/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/check-auth-open-and-open-ports-in-field-routers/</guid><description>Netmiko-based Python scripts that audit hundreds of Cisco IOS field routers and campus switches for ISE &apos;authentication open&apos; configurations and shut down unused open Layer 2 ports.</description><pubDate>Thu, 19 Dec 2024 00:00:00 GMT</pubDate><category>automation</category><category>netmiko</category><category>cisco</category><category>ios</category><category>network-security</category><category>python</category></item><item><title>Employee Training Tracking Application (E.T.T.A)</title><link>https://www.tuangiang.com/articles/employee-training-tracking-application-e-t-t-a/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/employee-training-tracking-application-e-t-t-a/</guid><description>A full-stack web application built from prototype to deployment to track EPIC &apos;Ohana employees&apos; training attendance, covering the frontend, backend, and database. The author&apos;s first full-scale project and a lesson in working with stakeholders.</description><pubDate>Tue, 28 May 2024 00:00:00 GMT</pubDate><category>dev</category><category>full-stack</category><category>php</category><category>mysql</category><category>bootstrap</category><category>web-app</category></item><item><title>Paalaa Kai Treatment Plant Design</title><link>https://www.tuangiang.com/articles/paalaa-kai-treatment-plant-design/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/paalaa-kai-treatment-plant-design/</guid><description>Designing and deploying a complete local SCADA system at the Paalaa Kai Treatment Plant for the City and County of Honolulu, modernizing manual button-driven operations with Mitsubishi HMI and PLCs. A capstone PLC programming project built around operator feedback and ladder logic.</description><pubDate>Mon, 27 May 2024 00:00:00 GMT</pubDate><category>dev</category><category>scada</category><category>plc</category><category>hmi</category><category>mitsubishi</category><category>ladder-logic</category></item><item><title>Unable to Access MS Office Forms</title><link>https://www.tuangiang.com/articles/unable-to-access-ms-office-forms/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/unable-to-access-ms-office-forms/</guid><description>Wired users in one building could not reach forms.office.com despite passing L1, L2, and firewall checks. Comparing distribution stacks against a working building pointed to the switch itself, and an upgrade and reboot of the affected distribution stack restored connectivity.</description><pubDate>Tue, 07 May 2024 00:00:00 GMT</pubDate><category>network</category><category>troubleshooting</category><category>office365</category><category>distribution-switch</category><category>connectivity</category></item><item><title>C2960X DACL Limits Breaking Authorization</title><link>https://www.tuangiang.com/articles/c2960-x-dacl-limits-breaking-authorization/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/c2960-x-dacl-limits-breaking-authorization/</guid><description>Wired users in a specific ISE-profiled group failed dot1x authorization only on Catalyst 2960X switches. The root cause was the 2960X&apos;s downloadable ACL line limit, fixed with a location-specific, trimmed DACL.</description><pubDate>Mon, 06 May 2024 00:00:00 GMT</pubDate><category>network</category><category>cisco</category><category>ise</category><category>dot1x</category><category>dacl</category><category>c2960x</category></item><item><title>Improving Real-Time Display of Multiple Datasets with User Interactions</title><link>https://www.tuangiang.com/articles/improving-real-time-display-of-multiple-datasets-with-user-interactions/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/improving-real-time-display-of-multiple-datasets-with-user-interactions/</guid><description>An internship project at Academia Sinica building real-time graphing software with PyQtGraph to display 21 radio-telescope datasets on independent subplots. The new tool added panning, zooming, and interactive inspection features that greatly improved data quality assessment.</description><pubDate>Tue, 30 Apr 2024 00:00:00 GMT</pubDate><category>dev</category><category>pyqtgraph</category><category>python</category><category>data-visualization</category><category>real-time</category><category>astronomy</category></item><item><title>The Fault in Our Systems</title><link>https://www.tuangiang.com/articles/the-fault-in-our-systems/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/the-fault-in-our-systems/</guid><description>An internship project at Gemini Observatory building a three-way Web app, server, and log-watcher system to extract and act on important telescope log messages via user-defined regular expressions. A formative first technical role that introduced the author to Linux, Python, and regex.</description><pubDate>Tue, 30 Apr 2024 00:00:00 GMT</pubDate><category>dev</category><category>logging</category><category>regex</category><category>python</category><category>linux</category><category>web-app</category></item><item><title>DMVPN Tunnel Goes Down at Midnight</title><link>https://www.tuangiang.com/articles/dmvpn-tunnel-goes-down-at-midnight/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/dmvpn-tunnel-goes-down-at-midnight/</guid><description>A DMVPN hub-spoke network dropped every night around midnight. Correlating logs revealed a single spoke&apos;s interface flapping, flooding EIGRP advertisements over the low-throughput tunnel, and the fix was disabling the port and applying no autostate to the offending SVI.</description><pubDate>Thu, 25 Apr 2024 00:00:00 GMT</pubDate><category>network</category><category>dmvpn</category><category>eigrp</category><category>cisco</category><category>troubleshooting</category><category>automation</category></item><item><title>Implementation of Automated Vanilla Pollination Robotic Crane Prototype</title><link>https://www.tuangiang.com/articles/implementation-of-automated-vanilla-pollination-robotic-crane-prototype/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/implementation-of-automated-vanilla-pollination-robotic-crane-prototype/</guid><description>An undergraduate project that developed a physical prototype of a robotic crane system for automated vanilla pollination, building on a simulation proposed by Shaneyfelt et al. in 2013, with a published IEEE article.</description><pubDate>Tue, 16 Apr 2024 00:00:00 GMT</pubDate><category>automation</category><category>robotics</category><category>automation</category><category>ieee</category><category>prototype</category></item><item><title>Integrating Rockwell PLC and Mitsubishi HMI</title><link>https://www.tuangiang.com/articles/integrating-rockwell-plc-and-mitsubishi-hmi/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/integrating-rockwell-plc-and-mitsubishi-hmi/</guid><description>Testing cross-platform integration between Rockwell PLCs and Mitsubishi HMIs for the City and County of Honolulu&apos;s Wastewater Treatment Disposal division. The work surfaced vendor limitations around string data attributes and alarming GUI features critical to operators.</description><pubDate>Tue, 16 Apr 2024 00:00:00 GMT</pubDate><category>dev</category><category>plc</category><category>hmi</category><category>scada</category><category>rockwell</category><category>mitsubishi</category></item><item><title>EPIC `Ohana Project - Location Finder</title><link>https://www.tuangiang.com/articles/location-finder/</link><guid isPermaLink="true">https://www.tuangiang.com/articles/location-finder/</guid><description>A web application for EPIC &apos;Ohana that uses the Google Maps API and their on-premise SQL database to find the nearest meeting space to a client&apos;s address. It approximates an origin address and calculates proximity to stored locations across the Hawaiian islands.</description><pubDate>Tue, 16 Apr 2024 00:00:00 GMT</pubDate><category>dev</category><category>google-maps-api</category><category>web-app</category><category>sql</category><category>geolocation</category></item></channel></rss>