Building a Computer Lab for Blind Children in Vietnam

In April I'm flying to Vietnam to set up a computer lab at an orphanage for blind children. Nineteen laptops, each loaded with a screen reader that speaks Vietnamese, an offline encyclopedia, a typing tutor, audio games, and a full office suite. Everything a kid needs to learn how to use a computer, even if the internet goes out.

This post covers how I'm building the deployment kit: what hardware I picked and why, the software stack, how I'm automating setup for 19 machines, and how I plan to keep them running from 8,000 miles away after I leave.

Why This Project

There are a lot of blind children in Vietnamese orphanages who have never touched a computer. The barrier isn't intelligence or interest. It's access. A screen reader costs nothing, but someone has to set it up, configure the Vietnamese voice, install the right software, and then teach the staff how to maintain it. That "someone" part is the hard part.

I wanted to build something that would actually last after I left. Not just drop off laptops and hope for the best. So I spent a few months building a deployment kit that automates everything, along with remote management tools so I can troubleshoot from the US.

The Hardware

Dell Latitude 5420 ($308/unit)

I bought 19 refurbished Dell Latitude 5420 laptops from Dell's outlet store. Grade A refurbished, i5-1145G7, 8GB RAM, 256GB SSD. Here's why I picked them:

I got them at $308 each after a 33% promo code. One of the 19 was lost in transit and Dell is investigating, so I'm working with 18 confirmed units right now.

Audio-Technica ATH-M40x Headphones ($90/unit)

I bought 21 pairs (19 for stations, 2 spares) from Sweetwater. These are trusted by blind professionals and schools for accessibility work. Flat frequency response, comfortable for long sessions, detachable cables so a broken cable doesn't mean a broken headphone. Closed-back so students can focus without hearing each other's screen readers.

USB Drives and Braille Labels

100 EASTBULL 16GB USBs at $2.32 each. Swivel design, no cap to lose. Each one gets a unique identifier (STU-001, STU-002, etc.) with folders for Documents, Audio, and Schoolwork. I'm 3D printing braille identification tags that clip onto the keyring hole, so each student can find their own drive by touch.

Total Budget

Item Qty Unit Total
Dell Latitude 5420 19 $307.53 $5,843.07
ATH-M40x headphones 20 $90.00 $1,800.00
Replacement earpads 4 $26.99 $107.96
Sweetwater tax $147.87
16GB USB drives 100 $2.32 $231.88
Braille labeler + tape $45.94
Total $8,176.72

That's $404.51 per station (laptop + headphone). The tax on the laptops and USB drives was refunded under nonprofit exemption.

The Software Stack

Every laptop gets the exact same software image. Everything is free or covered by nonprofit licensing, and almost everything works offline. That last part is critical. Internet at these orphanages is unreliable.

NVDA 2025.3.3
Screen reader (Vietnamese UI)
Sao Mai VNVoice
Vietnamese text-to-speech
Sao Mai Typing Tutor
Vietnamese typing lessons
SM Readmate
E-book reader (sachtiepcan.vn)
Microsoft Office 365
Nonprofit license
Firefox 147
Accessible web browser
VLC
Media playback
Audacity
Audio recording/editing
Quorum Studio
IDE built for blind students
UniKey
Vietnamese Telex input
Kiwix
Offline Vietnamese Wikipedia
Thorium Reader
EPUB/DAISY ebook reader
GoldenDict
Offline VN-EN dictionary
LEAP Games
Audio games for blind kids
SumatraPDF
Lightweight PDF reader
Tailscale
VPN for remote management

NVDA add-ons are installed too: VLC access, Speech History (lets you review what was spoken), NVDA Remote (so I can connect to a student's screen reader session from the US), Focus Highlight, Audacity access enhancements, and MathCAT for math notation.

The Sao Mai Stack

The Sao Mai Center for the Blind in Ho Chi Minh City builds Vietnamese accessibility tools. Their VNVoice gives NVDA a proper Vietnamese text-to-speech voice (you get a choice of "Minh Du" or "Mai Dung"). Their Typing Tutor has audio-guided Vietnamese typing lessons. Their Readmate connects to sachtiepcan.vn, a Vietnamese accessible ebook library. These tools don't have a big international profile, but they're essential. Without Sao Mai, there's no Vietnamese screen reader experience worth using.

Offline-First Design

The Kiwix installation includes the full Vietnamese Wikipedia (about 550MB as a ZIM file), Vietnamese Wiktionary, and Vietnamese Wikisource. GoldenDict ships with StarDict Vietnamese-English and Vietnamese-Vietnamese dictionaries. All of this works without any internet connection. A student can look up a word, read an encyclopedia article, or study literature even when the Wi-Fi is down.

Automating the Setup

Setting up 19 laptops by hand would take days and I'd make mistakes. So I wrote PowerShell scripts that automate the entire process. The whole thing is a single command:

.\Scripts\Bootstrap-Laptop.ps1

It prompts for a PC number (1 through 19), then handles everything:

Before Bootstrap runs, a download script fetches all the installers (~800MB) from vendor URLs, GitHub Releases, and Kiwix's download server. Every file gets a SHA256 checksum on download, and a verification script checks them all before deployment.

I test on one laptop first, verify with the audit script, then batch the remaining 18. The audit script (7-Audit.ps1) checks every installed application against manifest.json and reports pass/warn/fail for each component. If something is wrong, I know exactly what before I move to the next machine.

What Actually Went Wrong

A lot of things, honestly. The commit history tells the story. Some highlights:

57 commits and counting. Every one of them fixing something I didn't anticipate.

Remote Fleet Management

This is the part I'm most worried about. Once I fly home, I need to be able to monitor 19 laptops from the US and push fixes without anyone on-site doing anything.

Tailscale VPN

Every laptop gets Tailscale installed with a tagged pre-auth key (tag:vietnam-lab). The tag disables node key expiry, so these devices stay connected to my tailnet permanently. As long as a laptop has internet, I can reach it.

From my machine I can ping the entire fleet:

.\Scripts\Check-Fleet.ps1 -UseTailscale

Or run a command across all 19 machines in parallel batches:

.\Scripts\Deploy-All.ps1 -UseTailscale -Phase HealthCheck

The deploy script uses WinRM over Tailscale to run PowerShell remotely. It batches 5 at a time, logs everything, and gives a pass/fail summary at the end.

Pull-Based Auto-Updates

Each laptop runs an update agent as a scheduled task (daily, 2-4 AM, never during school hours). The agent checks a JSON manifest on GitHub:

{
  "schema_version": 1,
  "update_version": "2026.02.19",
  "release_base": "https://github.com/.../releases/download/installers-v1",
  "packages": []
}

When I need to push a software update, I upload the new installer to a GitHub Release, add it to the manifest with a SHA256 hash, and push. Within 24 hours, every online laptop downloads, verifies, installs, and reports the result. If a critical install fails, it rolls back automatically.

The agent is careful. It checks for internet before trying anything. It acquires a lock file to prevent concurrent runs. It verifies SHA256 on every download. It skips school hours. It cleans up after itself. I don't want an update process that makes things worse.

Health Reporting via Google Drive

Each laptop also runs a health reporter on schedule. It runs the audit script, collects the results into a JSON heartbeat, and uploads it to Google Drive via rclone:

gdrive:VietnamLabFleet/heartbeats/PC-01.json

From my machine I run Get-FleetStatus.ps1, which syncs the heartbeat folder from Google Drive and displays a dashboard: last seen time, manifest version, Tailscale IP, audit pass/warn/fail counts, uptime, and update status for all 19 machines. Any PC that hasn't reported in 7+ days shows up as STALE.

I chose Google Drive over a custom server because it's free, reliable, and doesn't require me to maintain infrastructure. rclone handles the OAuth and sync. The laptops write, my machine reads.

Student Data Backup

When a student USB drive is plugged in, a background script syncs their Documents, Audio, and Schoolwork folders to Google Drive under VietnamLabBackups/STU-001/. It identifies drives by volume label or hidden .student-id file. So even if a USB drive gets lost or corrupted, the student's work is backed up.

Accessibility Details That Matter

A few things I learned from research and the blind accessibility community:

The Deployment Plan

I have 1-3 days on-site in April. The plan:

  1. Set up all 19 laptops from the deployment USB (Bootstrap script handles each one)
  2. Verify every machine passes the audit
  3. Connect everything to the orphanage Wi-Fi and confirm Tailscale connects
  4. Hand out USB drives, show students the basics (NVDA+1 for Input Help, typing tutor, LEAP games)
  5. Walk the staff through the handoff document: how to restart NVDA, how to restore settings, who to contact

The handoff document has both a Markdown version and a plain text version. I also made Vietnamese-language student guides. These aren't just README files for me. They're the documentation that stays behind.

What Comes Next

Once I'm back in the US, it's all remote. I'll be watching the fleet dashboard, pushing updates when software releases new versions, and using NVDA Remote to connect directly to a student's screen reader session if someone needs help.

The honest truth is that I don't know how well the remote management will work in practice. Vietnamese internet is inconsistent. Power outages happen. Laptops might sit unused for weeks. The update agent and health reporter are designed to be resilient to all of this, but real-world conditions have a way of finding the edge cases.

Everything is open source. The full deployment kit, including all the scripts, manifests, and documentation, is on GitHub. If you're doing something similar, take whatever is useful.