FromthinkFRANK JIANG · WEB DEVELOPER
DEVELOPMENT · SYSTEMS · AUTOMATION

Practical
by design.

I build for the real world.
Websites that work. Systems that last.

I'm Frank Jiang, an experienced web developer with a hands-on approach to building, deploying, and maintaining useful digital tools.

Explore my expertise ↗
An abstract copper ribbon bridging stone forms in a sunlit gallery
From an idea
to something useful.
01 / CONNECTIONS, MADE TANGIBLE AI-GENERATED ARTWORK
PHP / LARAVEL LINUX / DEPLOYMENT MAINTENANCE / RELIABILITY AUTOMATION / INTEGRATION
01 — ABOUT

A developer's curiosity.
A craftsperson's care.

My work connects application development with the systems that keep it running.

I have worked in website development for many years. My technical practice includes PHP applications, Linux environments, service configuration, and the everyday problem-solving that keeps software useful over time.

I enjoy understanding how the pieces fit together, tracing problems to their cause, and making practical improvements that are easy to maintain. A useful feature needs more than working code: it needs a sensible place in the workflow, a dependable environment, and a clear path for future changes.

That is why I like working across the whole lifecycle of a website, from shaping a feature and its data model to configuring services and looking after the application once it is in use. I value clear communication, careful investigation, and solutions that the next person can understand.

Curious by nature Careful in execution Practical in approach
02 — EXPERTISE

From the application
to the infrastructure.

01 /
</>

Web development

PHP and Laravel applications built around useful workflows: administration tools, structured records, and features that help people get everyday work done.

  • Application logic and database design
  • Forms, validation, and access control
  • Maintenance and compatibility upgrades
PHP · Laravel · SQL
02 /
⌘

Systems & deployment

The environment matters as much as the application. I work with the services, configuration, and background processes that make websites accessible and manageable.

  • Web servers and reverse proxies
  • Background workers and service management
  • Configuration and deployment troubleshooting
Linux · Nginx · Caddy · Supervisor
03 /
↗

Practical automation

Small, thoughtful integrations can remove a surprising amount of friction. I explore ways to connect services and devices and make recurring tasks easier to repeat.

  • Scripts for recurring operational tasks
  • Connected devices and event-driven workflows
  • Service and home automation integrations
Shell · Home Assistant · ESPHome
03 — TECHNICAL PRACTICE

The work behind
work that works.

A closer look at the problems I like working through, the questions I ask, and the practical considerations behind a useful solution.

01Keeping web applications current−

Existing applications carry history: established workflows, older dependencies, and decisions that still matter. I start by understanding the current behavior, reviewing compatibility, and narrowing down the source of an issue before making changes.

My focus: preserve useful behavior, make changes in manageable steps, and verify the affected workflows. Maintenance should leave an application easier to work with next time.

02Making self-hosted services usable+

A service is only useful when its moving parts work together. I look at how requests reach the application, how background jobs run, and where configuration or process failures can interrupt the experience.

My focus: clear service boundaries, understandable configuration, and practical ways to check what is running. Good operational work makes the next diagnosis less of a guessing game.

03Connecting software with everyday tools+

Home Assistant, ESPHome, and MQTT offer interesting ways to connect software with physical devices. I explore how triggers, device states, and service integrations can turn a recurring action into a useful workflow.

My focus: start with one real need, keep the behavior understandable, and consider what happens when a device or connection is unavailable. The best automation is easy to live with.

04Investigating problems across the stack+

A symptom in the browser can begin in application logic, a database query, a proxy, or a background worker. I follow the request through those layers, use logs and reproducible examples, and test assumptions against the actual behavior.

My focus: identify the cause before choosing a fix, verify the result in context, and leave a clear explanation of what changed and why.

04 — THE TOOLKIT

Tools with a purpose.

A practical set of technologies for building applications, running services, and connecting the pieces. The choice starts with the problem.

Application development
PHP Laravel SQL HTML & CSS JavaScript
Business logic, structured data, and interfaces that make workflows easier to use.
Infrastructure & operations
Linux Nginx Caddy Supervisor Shell
Service configuration, request routing, process management, and repeatable operational tasks.
Automation & integration
Home Assistant ESPHome MQTT
Connecting device states, events, and services to useful everyday actions.
05 — HOW I WORK

Clarity at every step.

01

Understand

Start with the people and the task. Understand the existing workflow, ask what is getting in the way, and agree on what a useful result looks like.

02

Build

Choose tools that fit the environment. Work in small, reviewable steps, keep the structure understandable, and make tradeoffs explicit.

03

Refine

Verify the result in the workflow where it will be used. Listen to feedback, cover the awkward edges, and document what helps with future maintenance.

06 — WORKING PRINCIPLES

Useful today.
Understandable tomorrow.

I care about the person using the software, and the person who will maintain it next.

Make the next step obvious.

Clear interfaces, helpful feedback, and sensible defaults make a tool easier to trust. The same care belongs in configuration and documentation.

Leave room for change.

Requirements evolve. Straightforward code and well-defined responsibilities make it easier to adapt without having to rethink everything at once.

Keep learning through practice.

I stay curious about new tools by putting them in context: what problem do they solve, how do they behave, and what will they take to maintain?

A CONCISE PROFESSIONAL INTRODUCTION

Built on experience.
Still exploring.

I bring application development, systems thinking, and a practical approach to the same table. My aim is simple: useful software, thoughtfully built and carefully maintained.