This site is best experienced on a laptop or desktop.

Uses

The hardware, software and tools I use day to day. Updated when my setup changes. Inspired by uses.tech.

Hardware

  • Gaming PC (ZACCESS-GPC)

    Custom Windows desktop with an NVIDIA GeForce RTX 4060 and Intel CPU. My main machine for development, gaming and compute-heavy work. It runs a background Python daemon that detects the active game via five tiers: a known-games map, Steam Web API, Epic and EA App manifests, then psutil process scanning with IGDB fuzzy name matching. All streamed live to the now page.

  • MacBook (ZACCESS-MBK)

    My portable development machine. Runs a launchd-managed Python daemon (mac-daemon.py) that writes battery level, charging state, timezone and weather to Redis every 30 seconds, powering the live status widget on the now page.

  • Lenovo Laptop (ZACCESS-LNV)

    Windows laptop used as a secondary machine. Runs its own NSSM-managed Python daemon that feeds live battery and charging state data to the site alongside the GPC and MacBook.

  • The microcontroller at the heart of the avr-zac project. I use it to practise bare metal AVR C: GPIO, interrupts, PWM, ADC, UART and a nine-mode state machine, all written directly against the datasheet with no RTOS or HAL.

  • ESP32 and STM32

    Both used in Phaemos, my predictive maintenance platform. The ESP32 handles WiFi, MQTT and sensor polling using the Arduino framework. The STM32 runs lower-level firmware for data acquisition. Two very different programming models on one project.

  • PlayStation 5 (ZACCESS-PS5)

    My PS5. Online status, current game and last-seen time are polled every 2 minutes by a Cloudflare Worker using a custom OAuth v2 implementation against the PSN presence API - no third-party libraries. The NPSSO session cookie is exchanged for an access and refresh token on first run; the refresh token is stored in Cloudflare Workers KV and rotated automatically. Cover art is fetched from IGDB on every cron run. Status is displayed live on /now.

Development

  • My primary editor across nearly every project. Key extensions: Claude Code for AI-assisted development, GitLens for blame and history, Prettier for formatting and the C/C++ extension for embedded work. Most of this site was built inside VS Code.

  • IntelliJ IDEA for Java coursework, PyCharm for Python projects including the Phaemos FastAPI backend and system daemons and CLion for C/C++ embedded development. I switch between VS Code and JetBrains based on what the project needs.

  • The framework this entire site is built on. App Router, React Server Components, API routes and middleware. I use strict TypeScript throughout. Every blog post, project and skill is typed data, not markdown. The result is fast, type-safe and easy to extend.

  • Utility-first CSS combined with unstyled, accessible shadcn components. The design system for this site is built entirely on these two. I rarely write custom CSS. When I do it is usually for animations like the theme crossfade or skill grid layout.

  • Used across several distinct contexts: FastAPI for the Phaemos backend REST API, scikit-learn and pandas for the Isolation Forest anomaly detection pipeline and psutil plus pynvml for the three device daemons (Mac, Lenovo, GPC) that power the live status widget.

  • Bare metal microcontroller programming. No Arduino, no HAL. Direct register manipulation and datasheet-driven development. Everything in the avr-zac project is written this way: interrupts, timers, PWM, ADC and UART all configured from scratch.

  • Used where development speed matters more than low-level control. The ESP32 in Phaemos runs the Arduino framework for WiFi connectivity and MQTT communication with the FastAPI backend. Good tool for the right job.

  • Version control for everything I build. Branch protection on main, pull requests with CI checks before any merge, Dependabot for dependency updates with auto-merge on green and Gitleaks in CI to prevent secrets ever reaching the repo.

Terminal and shell

  • Default shell on both the GPC and Lenovo. I use it for NSSM service management, setting up Python virtual environments, running builds and general scripting. Most of the daemon setup and service registration was done in PowerShell.

  • Bash / zsh

    Shell of choice on the MacBook and any Linux environment. zsh with a minimal setup. I do not use heavy frameworks, just a clean prompt and a few aliases.

  • Non-Sucking Service Manager. I use it to register Python daemon scripts as proper Windows services on the GPC and Lenovo so they start on boot, restart on crash and run in the background without a terminal window.

Services and infrastructure

  • Deployment platform for this site. Every pull request gets an automatic preview deployment. Production deploys on merge to main. Zero config for Next.js. It just works.

  • Serverless Redis that powers several live features on this site: device status from the three daemons, Spotify now-playing with progress bar, blog post reactions, Beehiiv newsletter cache and contact form rate limiting. All in one Redis instance.

  • DNS and CDN in front of Vercel for isaacadjei.me. Handles DDoS protection, caching and the canonical host redirect that ensures all traffic goes to the www subdomain.

  • Powers the currently-playing card on the now page: track title, artist, album art and a real-time progress bar. OAuth token refresh is handled server-side via a Next.js API route so the client never touches credentials.

  • Used to pull contribution heatmap data, commit counts, pull request counts, top languages and last push timestamp for the GitHub stats card on the lab page. GraphQL means I fetch exactly what I need in one request.

  • Serverless edge workers. One worker (workers/ps5-presence) polls the PSN API every 2 minutes and writes presence data to Upstash Redis, replacing the need for a daemon running on a local machine.

  • Newsletter platform for the isaacadjei.me newsletter. Subscription is handled via the Beehiiv API from a server action. Past issues are fetched and cached in Redis so the newsletter page loads instantly.

  • Bot protection on the contact form. A privacy-friendly alternative to reCAPTCHA. It validates the request server-side before the form submission is processed.

Hardware lab

  • Oscilloscope

    Essential for embedded work. I use it to verify signal timing, debug UART and SPI communication, check PWM duty cycles and measure ADC input waveforms on the ATmega644P and ESP32 projects.

  • Function generator and bench power supply

    Standard bench setup for electronics prototyping. The function generator is useful for feeding known signals into ADC inputs during avr-zac testing. The power supply gives clean, stable voltage rails.

  • Soldering station

    Used for through-hole and SMD work. Most of the custom boards and sensor connections for Phaemos were hand-soldered.

  • My PCB design tool of choice. I use it for schematic capture, PCB layout and Gerber export for fabrication. Open source and more than capable for the complexity of boards I work with.

  • Circuit simulation and microcontroller firmware simulation. Useful for validating circuit behaviour and testing firmware logic before committing to hardware, especially helpful for timing-critical embedded code.

  • Logic analyser

    A cheap USB logic analyser with PulseView. Invaluable for capturing and decoding SPI, I2C and UART protocol traces when the oscilloscope alone is not enough.

Creative and productivity

  • Personal workspace for notes, project planning and research. Anything that does not belong in a codebase or a blog post lives in Notion: meeting notes, research threads, project briefs and learning logs.

  • My second brain for long-form notes and personal knowledge management. I use it for deep technical research, learning logs for new topics and anything I want to keep in plain Markdown files I actually own. The local vault and bidirectional linking between notes makes it easy to build context over time.

  • UI design and wireframing before I write a line of frontend code. I used it to sketch the layout of this site before building it. Not a full design system workflow, just enough to think visually before committing.

  • Photoshop for photo editing, Illustrator for vector work and Premiere Pro plus After Effects for video production. I do not reach for these daily but they are the right tools when design or video output quality matters.

  • Quick design tool for social assets, presentations and visual content. Faster than Photoshop when the output does not need precision. Good for event flyers, mockups and branded graphics.

  • My main video editing and colour grading tool. Used for cutting and grading footage on the GPC. The free version is extraordinarily capable. I use it for personal projects and any video content that needs proper colour work.

  • API testing and development. I use it when building and debugging REST endpoints for Phaemos and this site, especially useful for testing the FastAPI backend and verifying API route behaviour before wiring up the frontend.

  • Used on this site to generate the downloadable CV PDF server-side. A headless browser renders the CV page and exports it to PDF via a Next.js API route. No manual PDF export needed.

  • Used for signal processing, Fourier analysis and control systems work at university. Most of the lab reports and coursework involving DSP were done in MATLAB.

  • Reference manager for academic research. I use it to collect, organise and cite sources for lab reports, project writeups and literature research at university. The browser plugin captures papers from journals automatically.

Games

  • Ultimate Team is the main mode. The GPC handles it well at high settings. The RTX 4060 does not break a sweat.

  • Chapter by chapter. The GPU monitoring daemon on the GPC was partly motivated by wanting to see actual utilisation numbers while playing this.

  • Warzone and multiplayer depending on the mood. High frame rate, low latency. The GPC is built for it.