Blog

Setting Up Pi-hole on Xfinity: What Actually Happened - 4/22/2026

I set up Pi-hole on a Raspberry Pi because I wanted network-wide ad blocking and a better understanding of how DNS traffic actually moves through a home network. The plan sounded simple: give the Pi a stable address, point the network at it for DNS, and let every device use Pi-hole automatically.

I installed Pi-hole headlessly on the Raspberry Pi, reserved the static IP 10.0.0.50 through the router, and configured Cloudflare as the upstream DNS provider. Before touching the whole network, I tested the Pi directly with nslookup google.com 10.0.0.50. That worked, and the queries showed up in the Pi-hole dashboard, so I knew the Pi-hole service itself was not the problem.

The real issue was the Xfinity gateway. The router did not give me reliable control over custom DNS for the whole network, so devices kept using Comcast DNS instead. I saw traffic still going through cdns01.comcast.net, and IPv6 made it even trickier because Xfinity was handing out DNS like 2001:558:feed::1. That meant some devices could bypass Pi-hole without making it obvious from the normal IPv4 settings.

I also tested whether Pi-hole could take over DHCP, because that would let it tell devices which DNS server to use. That taught me the difference between DNS and DHCP in a way a textbook never really does. DNS decides where name lookups go. DHCP decides who gives devices their network identity and settings. When the router and Pi-hole both tried to be in charge of DHCP, the network became unstable, some devices stopped getting usable addresses, and I lost internet completely for a bit.

What I Debugged

  • Confirmed Pi-hole worked by querying 10.0.0.50 directly instead of assuming the router was sending traffic there.
  • Checked the Pi-hole dashboard to prove DNS queries were reaching the Raspberry Pi.
  • Compared what I configured against what devices actually used, which exposed the Comcast DNS fallback.
  • Separated DNS settings from DHCP control after realizing they solve different parts of the problem.
  • Tracked IPv6 as a bypass path instead of only looking at IPv4 DNS settings.
  • Worked around Pi-hole DHCP page glitches and reloads by focusing on the network behavior, not just what the UI seemed to say.

Instead of randomly changing settings, I started isolating each layer. I tested Pi-hole directly, checked whether queries appeared in the dashboard, looked at which DNS servers devices were actually using, and separated a working Pi-hole install from the router limitations around it. The temporary workaround was per-device configuration: manually point devices at 10.0.0.50 for DNS and disable IPv6 where needed so traffic could not silently bypass the Pi-hole.

The conclusion was pretty clear: full network-wide Pi-hole is not realistic on a stock Xfinity gateway unless I either put the gateway in bridge mode and use my own router, or configure devices one by one. That sounds like a failed setup, but it was honestly a better learning project because I had to understand the actual network instead of just following a guide.

The biggest thing I learned was that you should not start configuring a network until you understand who controls each part of it. I came away with a much better understanding of DNS resolution, DHCP, MAC-based device identity, IPv4 vs IPv6 behavior, router limitations, and how to test safely before making changes that affect every device in the house.

Next time, I would identify router limitations first, choose the architecture before touching global settings, and use either bridge mode with my own router or a deliberate per-device setup. The lesson was simple: understand the system before configuring the system.

Virtius scores main page

What I Learned Improving Virtius Scores - 4/03/2026

Virtius was a big step for me. I did not build the whole project from zero, but I did take on a lot of the engineering work for my branch, scores.virti.us.

I learned Next.js by working inside a real app, not by copying a tutorial. The stack was Next.js 15, React 19, TypeScript, and Tailwind. Every change had to fit the existing code and the actual product.

I also studied how the old virti.us site moved live scoring data. I watched the GraphQL requests, looked at the request flow, and used that to make better decisions instead of guessing.

Most of the work came down to speed, correctness, and trust. I worked on lazy loading, API data handling, score precision, 3-vs-4 decimal display, exhibition athlete handling, ranking edge cases, and Playwright tests.

The main lesson was ownership. I had to understand the code, communicate with a designer/project manager, and make choices that helped the product instead of just making the code look nice.

Learning Linux and Security Tools - 1/15/2026

I started using Linux freshman year of high school. At first it was mostly live boots, then full installs, then distro hopping because I wanted to understand how different systems felt when I actually had to use them.

I have used Kali, Arch, and Linux Mint. Mint was the one I daily drove for a while because it was stable enough to actually get work done. Kali was useful for learning security tools, and Arch taught me more about how Linux is put together because it makes you touch more of the system yourself.

The biggest value was getting comfortable when something broke. Boot issues, packages, drivers, permissions, network settings, desktop environments, and weird config problems all forced me to troubleshoot instead of panic. That matters because a lot of technical work is just staying calm long enough to find the real problem.

I also spent a lot of hours learning tools like Nmap and Metasploit in lab and authorized environments. Nmap helped me understand hosts, ports, services, and why exposed services matter. Metasploit helped me understand how security testing is structured: modules, payloads, targets, and the difference between a vulnerability existing in theory and actually verifying behavior in a controlled setup.

I do not think the tools are the impressive part by themselves. Anyone can run commands. The useful skill is understanding what the output means, what question you are trying to answer, and what risk you might create if you touch the wrong system.

This experience gave me a stronger base for networking and cybersecurity. It made DNS, ports, services, permissions, shells, and misconfiguration feel real instead of abstract. It also taught me to respect boundaries: test in labs, document what changed, and do not run security tools against systems you do not own or have permission to test.

Welcome to My Website Blog - 2/27/2025

I built this website so I had one place to show my projects and write about what I am learning. I bought the domain and published it after working on it for a few months.

The first version was bigger than what I could reasonably host. I wanted a video background and an interactive console, but server costs were not worth it. I also thought about hosting it from an old computer, then decided against it because exposing a home machine to the internet is a bad idea unless you really know what you are doing. GitHub Pages was limited, but it was simple and safer.

Disneyland livestream dashboard screenshot

Disneyland Livestream App - 2/27/2025

I wanted to make a Linux app for my Raspberry Pi 3, and the 24-hour Disneyland livestream gave me a clear idea. I built a dashboard that showed the livestream and ride wait times.

The annoying part was the webcam link. The Howard Johnson stream changed links during the day, so hardcoding one URL did not work. I fixed that by pulling the current link from their site instead.

Update 4/11/2025

The Raspberry Pi did not have enough RAM for the app to run well, so I moved the project toward Windows.

Club Automation enrollment tool screenshot

Almaden Valley Athletic Club Web Scheduler 3/30/2025

I work as a tennis scheduler at Almaden Valley Athletic Club. Each month, staff had to repeat the same enrollment steps over and over. I built a web automation tool to pull class names and help enroll students for the next month.

Running the Program 7/25/2025

After I got approval to use it, I added a review step. If a student's name appears in the Tennis Inquiries CSV, the tool flags it before enrollment and asks a staff member what to do. I wanted the program to save time without making blind decisions.

Jake Gipson website screenshot

Real Estate Internship 2022-2024

I interned with Jake Gipson, a Silicon Valley realtor with 25+ years of experience. I learned quickly because the work changed a lot, and I had to handle different kinds of tasks without much hand-holding.
I started with cold calls to generate leads, as most salespeople do. I made calls daily, doing my best to mirror the buyer's energy and keep them engaged. It taught me a lot about communication, confidence, and how to read people in real-time.
Eventually, I transitioned into the role of social media manager and content producer. I created and managed accounts on Instagram, Facebook, TikTok, YouTube, and LinkedIn under the Jake Gipson Team and Jake Gipson Estates brands. I also implemented Buffer to streamline our posting process, allowing us to schedule and automate content delivery across platforms.
During this time, I organized studio sessions and helped make content for social media. I learned that creative work still needs data: what people click, what they ignore, and what is actually worth posting again.
Through content creation, I picked up practical photography and real estate staging skills. I also designed and built Jake Gipson's website using Elementor and Kubio, which taught me more about UI, layout, and clear online branding.
This internship taught me how business, marketing, and technical tools connect. It also made me better at learning fast and figuring things out without waiting for perfect instructions.