From 6b7c5a983f3bbdf4896a0324a2494646c2cc1f6e Mon Sep 17 00:00:00 2001 From: hoelee Date: Fri, 16 Oct 2026 22:07:25 +0800 Subject: [PATCH] feat(identity): real author photo across the site + About page rewrite MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The photo is the identity evidence the external review flagged as the biggest gap. One source image (Pictures/Professional Portrait with Blue Gradient Background.png, 1254x1254), two sizes, WebP first with a JPEG fallback — continuous tone is the case where WebP/JPEG beat PNG: 640x640 42 KB JPG / 26 KB WebP About page (190 CSS px) 128x128 3 KB JPG / 2 KB WebP author card + home hero avatar It now appears in the About hero, the author card at the end of every post, the home hero (both languages), and JSON-LD Person.image — the node search engines read to associate the name with a face. About went from 1,024 characters to five sections: identity with photo, "By the numbers" (162 containers / 3 hosts / 71 essays / 0 hosting companies between me and the servers), the real tech stack in four columns, the Hoelee Enterprise block (website design and development is the main business, email hosting secondary), and a contact split between hiring and business. Also: the headshot's dark-blue background sits close to the page background, so the photo, hero avatar and card avatar get a faint brand ring plus shadow. Pictures/ keeps the converted JPG master next to the untouched PNG. --- public/images/lee-teong-hoe-128.jpg | Bin 0 -> 3344 bytes public/images/lee-teong-hoe-128.webp | Bin 0 -> 2090 bytes public/images/lee-teong-hoe-640.jpg | Bin 0 -> 42253 bytes public/images/lee-teong-hoe-640.webp | Bin 0 -> 26096 bytes src/components/AuthorCard.astro | 51 +++++++++- src/config.ts | 10 ++ src/layouts/BaseLayout.astro | 1 + src/pages/about.astro | 144 ++++++++++++++++++++++----- src/pages/index.astro | 15 ++- src/pages/zh/about.astro | 136 ++++++++++++++++++++----- src/pages/zh/index.astro | 15 ++- src/styles/global.css | 103 +++++++++++++++++-- 12 files changed, 410 insertions(+), 65 deletions(-) create mode 100644 public/images/lee-teong-hoe-128.jpg create mode 100644 public/images/lee-teong-hoe-128.webp create mode 100644 public/images/lee-teong-hoe-640.jpg create mode 100644 public/images/lee-teong-hoe-640.webp diff --git a/public/images/lee-teong-hoe-128.jpg b/public/images/lee-teong-hoe-128.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ba899927d47b744ef3059d81b9b12e7aae0cf716 GIT binary patch literal 3344 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 literal 0 HcmV?d00001 diff --git a/public/images/lee-teong-hoe-128.webp b/public/images/lee-teong-hoe-128.webp new file mode 100644 index 0000000000000000000000000000000000000000..36beb31472124fce00c40e9eb640ff788b751176 GIT binary patch literal 2090 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 z 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

>LT^TkK5)&YaLs<^j!q85@uI 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 Hjc5P>{6xbV literal 0 HcmV?d00001 diff --git a/src/components/AuthorCard.astro b/src/components/AuthorCard.astro index 43665b0..95d3917 100644 --- a/src/components/AuthorCard.astro +++ b/src/components/AuthorCard.astro @@ -3,21 +3,62 @@ import { SITE } from '../config'; interface Props { bio?: string; + lang?: 'en' | 'zh'; } -const { bio = 'Full-stack developer & DevOps engineer. I build web apps, self-host infrastructure, and automate things — this blog is my living portfolio.' } = Astro.props; +const { + bio = 'Full-stack developer & DevOps engineer based in Malaysia. I run my own production infrastructure and build web systems for small businesses — this blog is the living record.', + lang = 'en', +} = Astro.props; +const isZh = lang === 'zh'; + +const t = isZh + ? { + hiring: '招聘方:技术栈与履历', + hiringHref: '/zh/about/', + sme: '马来西亚中小企业:网站设计与开发', + smeHref: SITE.website, + stack: '全部技术文章', + stackHref: '/zh/posts/', + } + : { + hiring: 'Hiring? Profile & stack', + hiringHref: '/about/', + sme: 'Malaysian SME? Website design & development', + smeHref: SITE.website, + stack: 'All posts', + stackHref: '/posts/', + }; ---

- -
-

{SITE.author}

+ + + {SITE.author} + +
+

{SITE.author} · {SITE.handle}

{bio}

+

+ {t.hiring} + · + {t.sme} ↗ + · + {t.stack} +

diff --git a/src/config.ts b/src/config.ts index 73a46ec..9dcd841 100644 --- a/src/config.ts +++ b/src/config.ts @@ -17,4 +17,14 @@ export const SITE = { gitea: 'https://git.hoelee.com/hoelee', website: 'https://www.hoelee.com', twitter: '', // add if you have one + // Author photo (B4, 2026-10-16). One real headshot, two sizes, WebP first with the + // JPEG as fallback — continuous-tone images are the case where JPEG/WebP beat PNG. + // Used by: the About page, the author card on every post, the home hero, and the + // JSON-LD `Person.image` (the identity signal search engines read). + photo: { + large: '/images/lee-teong-hoe-640.jpg', // 640x640 — About page (320 CSS px @2x) + largeWebp: '/images/lee-teong-hoe-640.webp', + small: '/images/lee-teong-hoe-128.jpg', // 128x128 — author card avatar (64 CSS px @2x) + smallWebp: '/images/lee-teong-hoe-128.webp', + }, } as const; diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro index cee842a..e8ecffe 100644 --- a/src/layouts/BaseLayout.astro +++ b/src/layouts/BaseLayout.astro @@ -130,6 +130,7 @@ const nav = isZh alternateName: SITE.handle, url: SITE.url, email: SITE.email, + image: new URL(SITE.photo.large, SITE.url).href, sameAs: [SITE.linkedin, SITE.github, SITE.gitea, SITE.website].filter(Boolean), jobTitle: 'Full-stack Developer & DevOps Engineer', // The consultancy that does the client work — ties the blog's author node to diff --git a/src/pages/about.astro b/src/pages/about.astro index 08b1bd8..eafbeab 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -6,36 +6,130 @@ import { SITE } from '../config'; -

About

+
+ + + {`${SITE.author} + +
+

{SITE.author} ({SITE.handle})

+

+ Full-stack developer and DevOps engineer in Malaysia. I run the production + infrastructure behind my own and my clients' systems — + 162 containers across three self-managed hosts — and I build + web systems for Malaysian small businesses. +

+ +

Open to remote / hybrid engineering roles.

+
+
+ +

By the numbers

+
+
162containers in production
+
3self-managed hosts (78 compose stacks)
+
71write-ups, each in English and 中文
+
0hosting companies between me and the servers
+

- I'm {SITE.author} ({SITE.handle}), a full-stack developer and DevOps engineer - based in Malaysia. I build web applications — PHP/CodeIgniter, Java/Spring, - JavaScript/TypeScript/React — and self-host a ~140-container homelab - (Docker, Traefik, nginx, Cloudflare tunnels). I run Hoelee Enterprise, a - website design & development business for Malaysian SMEs (email hosting is - a side offering, not the focus). -

-

- This blog is my living portfolio: I document what I build, from self-hosted - CI/CD and Docker orchestration to Web3 experiments and AI automation. If - you're a recruiter, a client, or a fellow builder, the posts here are the - most honest picture of what I can do. + That footprint is client websites, a mail platform, CI/CD, workflow automation, + analytics and this blog — held together by hand. It is also why the posts here + are specific: when something breaks in production, I am the one who finds out, + and the write-up is the record of what the evidence actually said.

- +

What I actually work with

+
+
+

Infrastructure & DevOps

+
    +
  • Docker & Compose, Traefik, nginx, Cloudflare tunnels
  • +
  • Gitea Actions (self-hosted CI/CD), act_runner
  • +
  • Prometheus, Grafana, cAdvisor, Uptime Kuma
  • +
  • Unraid, Synology DSM, Linux (Debian/Ubuntu/Alpine)
  • +
+
+
+

Backend & automation

+
    +
  • PHP / CodeIgniter, Java / Spring
  • +
  • Node.js / TypeScript, Python
  • +
  • n8n, NocoDB, PostgreSQL / MySQL
  • +
  • REST APIs, webhooks, browser automation (CDP/Playwright)
  • +
+
+
+

Frontend & web

+
    +
  • Astro, JavaScript / TypeScript, React
  • +
  • WordPress (Kadence, Elementor, custom plugins)
  • +
  • Core Web Vitals, accessibility, responsive layout
  • +
+
+
+

Self-hosted services I run

+
    +
  • Authentik SSO, Mailcow, AList, Mem0
  • +
  • Umami analytics, Tor onion services
  • +
  • Whisper/TTS inference on a local GPU
  • +
+
+
-

Contact

-

- {SITE.email} - · - LinkedIn - · - git.hoelee.com - · - www.hoelee.com -

+

For Malaysian SMEs — Hoelee Enterprise

+
+

+ Website design and development is my main business — fast, + maintainable sites for Malaysian small and medium businesses, from the design + through to the hosting, DNS, backups and monitoring underneath it. + Email hosting is a secondary offering, not the focus. +

+

+ Because I run the infrastructure myself, you get one person who can answer for + the whole stack instead of a developer who cannot see the server and a hosting + company that cannot read the code. +

+

+ www.hoelee.com + · + WhatsApp +60 12-797 2969 +

+
+ +

Get in touch

+
+
+

For hiring & engineering roles

+

{SITE.email}

+

LinkedIn · GitHub

+

Remote or hybrid; available for a technical conversation any time.

+
+
+

For business & web projects

+

WhatsApp +60 12-797 2969

+

www.hoelee.com

+

Malaysian SMEs: website design & development, hosting and maintenance.

+
+
+ +
diff --git a/src/pages/index.astro b/src/pages/index.astro index 2e2db06..3c44190 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -25,7 +25,20 @@ const featuredPosts = featured.length === 4 ? featured : posts.slice(0, 4);
-

{SITE.author} — full-stack developer & DevOps engineer

+
+ + + {`${SITE.author} + +

{SITE.author} — full-stack developer & DevOps engineer

+

I run 162 containers across three self-managed hosts — client sites, a mail platform, CI/CD, workflow automation and this blog — and I build web systems for diff --git a/src/pages/zh/about.astro b/src/pages/zh/about.astro index e65fc0f..9d6643e 100644 --- a/src/pages/zh/about.astro +++ b/src/pages/zh/about.astro @@ -6,35 +6,125 @@ import { SITE } from '../../config'; -

关于

+
+ + + {`${SITE.author}(${SITE.handle})`} + +
+

{SITE.author} ({SITE.handle})

+

+ 在马来西亚的全栈开发者兼 DevOps 工程师。我亲手运维自己和客户系统背后的生产环境—— + 三台自管服务器上的 162 个容器——并为马来西亚中小企业构建 Web 系统。 +

+ +

接受 远程 / 混合 工程岗位机会。

+
+
+ +

几个数字

+
+
162个生产环境容器
+
3台自管服务器(78 个 compose 栈)
+
71篇长文,每篇中英双版
+
0夹在我和服务器之间的托管商
+

- 我是 {SITE.author}({SITE.handle}),一名base在马来西亚的全栈开发者兼 DevOps - 工程师。我做 Web 应用——PHP/CodeIgniter、Java/Spring、JavaScript/TypeScript/React—— - 并自托管一个约 140 个容器的 homelab(Docker、Traefik、nginx、Cloudflare tunnel)。 - 我运营 Hoelee Enterprise,一家面向马来西亚中小企业的网站设计开发公司 - (邮箱托管只是副业,并非主业)。 -

-

- 这个博客就是我的动态作品集:我把自己构建的东西记录下来,从自托管 CI/CD、 - Docker 编排,到 Web3 实验与 AI 自动化。无论你是招聘方、客户,还是同路的 - 开发者,这里的文章都是我能做什么最诚实的呈现。 + 这套环境里有客户网站、邮件平台、CI/CD、流程自动化、统计和这个博客,全靠手工拴在一起。 + 这也是为什么这里的文章都很具体:生产环境出问题时,第一个知道的人是我, + 文章就是「证据到底说了什么」的记录。

- +

我实际在用的东西

+
+
+

基建与 DevOps

+
    +
  • Docker 与 Compose、Traefik、nginx、Cloudflare tunnel
  • +
  • Gitea Actions(自托管 CI/CD)、act_runner
  • +
  • Prometheus、Grafana、cAdvisor、Uptime Kuma
  • +
  • Unraid、Synology DSM、Linux(Debian/Ubuntu/Alpine)
  • +
+
+
+

后端与自动化

+
    +
  • PHP / CodeIgniter、Java / Spring
  • +
  • Node.js / TypeScript、Python
  • +
  • n8n、NocoDB、PostgreSQL / MySQL
  • +
  • REST API、webhook、浏览器自动化(CDP/Playwright)
  • +
+
+
+

前端与 Web

+
    +
  • Astro、JavaScript / TypeScript、React
  • +
  • WordPress(Kadence、Elementor、自写插件)
  • +
  • Core Web Vitals、可访问性、响应式布局
  • +
+
+
+

我自托管的服务

+
    +
  • Authentik SSO、Mailcow、AList、Mem0
  • +
  • Umami 统计、Tor onion service
  • +
  • 本地 GPU 上的 Whisper / TTS 推理
  • +
+
+
-

联系方式

-

- {SITE.email} - · - LinkedIn - · - git.hoelee.com - · - www.hoelee.com -

+

面向马来西亚中小企业 —— Hoelee Enterprise

+
+

+ 网站设计与开发是我的主业——为马来西亚中小企业做快速、好维护的网站, + 从设计一直到它底下的托管、DNS、备份与监控。邮箱托管是次要副业,并非主业。 +

+

+ 因为基建是我自己运维的,你面对的是一个人而不是两方——不会出现「写代码的人看不到服务器、 + 托管商读不懂代码」的情况。 +

+

+ www.hoelee.com + · + WhatsApp +60 12-797 2969 +

+
+ +

联系

+
+
+

招聘 / 工程岗位

+

{SITE.email}

+

LinkedIn · GitHub

+

远程或混合;随时可以聊技术。

+
+
+

商业项目 / 网站

+

WhatsApp +60 12-797 2969

+

www.hoelee.com

+

马来西亚中小企业:网站设计开发、托管与维护。

+
+
+ + diff --git a/src/pages/zh/index.astro b/src/pages/zh/index.astro index 41f5817..a211c6d 100644 --- a/src/pages/zh/index.astro +++ b/src/pages/zh/index.astro @@ -29,7 +29,20 @@ const featuredPosts = featured.length === 4 ? featured : posts.slice(0, 4); altLocaleUrl={`${SITE.url}/`} >
-

{SITE.author} —— 全栈开发者兼 DevOps 工程师

+
+ + + {`${SITE.author}(${SITE.handle})`} + +

{SITE.author} —— 全栈开发者兼 DevOps 工程师

+

我独自运维 三台自管服务器上的 162 个容器(客户站点、邮件平台、 CI/CD、流程自动化与这个博客),并为马来西亚中小企业构建 Web 系统。这里写的是 diff --git a/src/styles/global.css b/src/styles/global.css index d655078..ac5ac93 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -284,20 +284,88 @@ pre code { border-radius: var(--radius); } .author-card .avatar { - width: 56px; - height: 56px; + width: 64px; + height: 64px; border-radius: 50%; - background: var(--brand); - color: #fff; - display: grid; - place-items: center; - font-weight: 700; - font-size: 1.3rem; + object-fit: cover; + border: 1px solid var(--border); + box-shadow: 0 0 0 1px color-mix(in srgb, var(--brand) 25%, transparent); flex-shrink: 0; + display: block; } +.author-card .author-body { min-width: 0; } .author-card .who { font-weight: 600; margin: 0; } .author-card .bio { color: var(--muted); font-size: 0.9rem; margin: 0.25rem 0 0.5rem; } -.author-card .links { display: flex; gap: 0.75rem; font-size: 0.85rem; } +.author-card .links { display: flex; gap: 0.75rem; font-size: 0.85rem; flex-wrap: wrap; } +.author-card .author-split { font-size: 0.82rem; color: var(--muted); margin: 0.6rem 0 0; } +.author-card .author-split a { color: var(--muted); } +.author-card .author-split a:hover { color: var(--brand); } + +/* ---------- About ---------- */ +.about-hero { + display: flex; + gap: 1.75rem; + align-items: flex-start; + margin: 0.5rem 0 2.25rem; + padding-bottom: 1.75rem; + border-bottom: 1px solid var(--border); +} +.about-photo { + width: 190px; + height: 190px; + border-radius: var(--radius); + border: 1px solid var(--border); + /* The headshot's own dark-blue background sits close to the page background, so a + faint brand ring + shadow is what actually separates it from the UI. */ + box-shadow: 0 0 0 1px color-mix(in srgb, var(--brand) 30%, transparent), + 0 10px 28px rgba(0, 0, 0, 0.35); + object-fit: cover; + flex-shrink: 0; + display: block; +} +.about-hero h1 { margin-bottom: 0.6rem; } +.about-hero h1 .handle { color: var(--muted); font-weight: 500; } +.about-lede { font-size: 1.02rem; color: var(--muted); margin-bottom: 0.75rem; } +.about-links { font-size: 0.9rem; margin-bottom: 0.5rem; } +.about-open { font-size: 0.9rem; color: var(--muted); margin: 0; } + +.proof-grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 0.85rem; + margin: 1rem 0 1.25rem; +} +.proof-card { + background: var(--surface); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 0.85rem 0.9rem; +} +.proof-card .n { display: block; font-size: 1.45rem; font-weight: 700; line-height: 1.15; } +.proof-card .l { display: block; font-size: 0.78rem; color: var(--muted); margin-top: 0.25rem; } + +.stack-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1rem; + margin: 1rem 0 1.5rem; +} +.stack-grid h3 { font-size: 0.95rem; margin: 0 0 0.4rem; } +.stack-grid ul { margin: 0; padding-left: 1.1rem; } +.stack-grid li { font-size: 0.88rem; color: var(--muted); margin: 0.15rem 0; } + +.sme-block { + background: var(--surface); + border: 1px solid var(--border); + border-left: 3px solid var(--brand); + border-radius: var(--radius); + padding: 1rem 1.1rem; + margin: 1rem 0 1.5rem; +} +.sme-block p { margin: 0.4rem 0; } +.contact-split { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.25rem; margin-top: 1rem; } +.contact-split h3 { font-size: 0.95rem; margin: 0 0 0.35rem; } +.contact-split p { margin: 0.2rem 0; font-size: 0.9rem; color: var(--muted); } /* ---------- Related posts ---------- */ .related { margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid var(--border); } @@ -346,7 +414,18 @@ pre code { padding-bottom: 1.5rem; border-bottom: 1px solid var(--border); } -.hero h1 { margin-bottom: 0.75rem; } +.hero-id { display: flex; align-items: center; gap: 1rem; margin-bottom: 0.75rem; } +.hero-photo { + width: 72px; + height: 72px; + border-radius: 50%; + border: 1px solid var(--border); + box-shadow: 0 0 0 1px color-mix(in srgb, var(--brand) 30%, transparent); + object-fit: cover; + flex-shrink: 0; + display: block; +} +.hero h1 { margin: 0; } .hero-sub { font-size: 1.05rem; color: var(--muted); max-width: 62ch; } .hero-cta { display: flex; @@ -642,6 +721,10 @@ a.category-card:hover { border-color: var(--brand); } h2 { font-size: 1.25rem; } .related-grid { grid-template-columns: 1fr; } .featured-grid { grid-template-columns: 1fr; } + .proof-grid { grid-template-columns: repeat(2, 1fr); } + .stack-grid, .contact-split { grid-template-columns: 1fr; } + .about-hero { flex-direction: column; gap: 1rem; } + .about-photo { width: 140px; height: 140px; } .search-hint, .search-key { display: none; } .author-card { flex-direction: column; align-items: flex-start; } }