chore: add gitignore and remove tracked build artifacts
Some checks are pending
Deploy Hugo site to Pages / build (push) Waiting to run
Deploy Hugo site to Pages / deploy (push) Blocked by required conditions

This commit is contained in:
Divyam Ahuja 2026-05-09 02:11:22 +05:30
parent 9b79e8e60d
commit 05b4d4cad8
36 changed files with 70 additions and 4043 deletions

12
.gitignore vendored Normal file
View file

@ -0,0 +1,12 @@
# Hugo build output
public/
resources/
.hugo_build.lock
# Typst output (optional, but since we compile it in GitHub Actions, you can ignore the local PDF if you want.
# Actually, wait. You might want to track static/resume.pdf if you want it served directly without GH Actions.
# We will NOT ignore static/resume.pdf so it stays in the repo).
# OS generated files
.DS_Store
Thumbs.db

View file

@ -901,3 +901,55 @@ th {
main { main {
animation: fadeIn 0.4s ease-out; animation: fadeIn 0.4s ease-out;
} }
/* --- Table of Contents --- */
.post-toc {
background-color: var(--bg-alt);
border: 1px solid var(--border);
border-radius: 4px;
padding: 1rem;
margin-bottom: 2rem;
font-size: 0.9em;
}
.toc-title {
font-weight: 700;
color: var(--fg-bright);
cursor: pointer;
user-select: none;
margin-bottom: 0.5rem;
}
.post-toc summary::marker {
color: var(--accent);
}
.post-toc nav#TableOfContents {
margin-top: 0.5rem;
padding-left: 0.5rem;
}
.post-toc nav#TableOfContents ul {
list-style-type: none;
padding-left: 1rem;
margin: 0;
}
.post-toc nav#TableOfContents > ul {
padding-left: 0;
}
.post-toc nav#TableOfContents li {
margin-bottom: 0.25rem;
}
.post-toc nav#TableOfContents a {
color: var(--fg-dim);
text-decoration: none;
transition: color 0.2s ease;
}
.post-toc nav#TableOfContents a:hover {
color: var(--accent);
text-decoration: underline;
}

View file

@ -17,6 +17,12 @@
</div> </div>
</div> </div>
<div class="post-content"> <div class="post-content">
{{- if and (ne .Params.toc false) (gt (len .TableOfContents) 32) }}
<details class="post-toc" open>
<summary class="toc-title">Table of Contents</summary>
{{ .TableOfContents }}
</details>
{{- end }}
{{ .Content }} {{ .Content }}
</div> </div>
<hr> <hr>

View file

@ -1,73 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="About Divyam Ahuja">
<meta name="author" content="Divyam Ahuja">
<meta property="og:title" content="About">
<meta property="og:description" content="About Divyam Ahuja">
<meta property="og:type" content="article">
<meta property="og:url" content="http://localhost:1313/about/">
<meta property="og:site_name" content="Divyam Ahuja">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="About">
<meta name="twitter:description" content="About Divyam Ahuja">
<title>About · Divyam Ahuja</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="http://localhost:1313/css/style.min.86de29e37fd55fb8581ee5569d0e766097f2718b8f8029e4e11c87973d24a5b1.css">
</head>
<body>
<div class="site-wrapper"><header class="site-header">
<div class="site-header-inner">
<a href="/" class="site-title">Divyam Ahuja</a>
<nav class="site-nav"><a href="/">Home</a><span class="nav-separator">|</span><a href="/posts/">Blog</a><span class="nav-separator">|</span><a href="/projects/">Projects</a><span class="nav-separator">|</span><a href="/resume/">Resume</a></nav>
</div>
</header>
<main>
<article>
<div class="post-header">
<h1>About</h1>
<div class="post-meta">
<span>DIVYAM AHUJA</span>
<span class="separator">·</span>
<time datetime="0001-01-01">01 Jan 0001</time>
</div>
</div>
<div class="post-content">
<p>Hi, I&rsquo;m a full-stack developer who loves building things. I enjoy hacking on side projects, exploring new technologies, and deep-diving into the technical details of how things work.</p>
<p>I work across the stack — from crafting interactive frontends to designing robust backend systems. When I&rsquo;m not writing code, I&rsquo;m probably reading about distributed systems, tinkering with new tools, or working on one of my many side projects.</p>
<p>I enjoy hacking on things and deep diving into the technical details of protocols, performance optimization, and algorithms.</p>
<p>If you want to see what I&rsquo;ve been working on, check out my <a href="https://github.com/ryoutsu">GitHub</a>. Feel free to reach out by <a href="mailto:hello@divyam.dev">email</a> if you want to talk about something I&rsquo;m doing.</p>
</div>
<hr>
<a href="/" class="back-link">← back to home</a>
</article>
</main>
</div><footer class="site-footer">
<div class="site-wrapper">
<div class="site-footer-inner">
<div class="footer-copyright">
&copy; 2026 Divyam Ahuja
</div>
<div class="social-icons"><a href="https://github.com/ahujadivyam" target="_blank" rel="noopener noreferrer" title="GitHub"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg></a><a href="https://linkedin.com/in/ahujadivyam" target="_blank" rel="noopener noreferrer" title="LinkedIn"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a><a href="https://git.divyam.dev" target="_blank" rel="noopener noreferrer" title="Git"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM3 6a3 3 0 0 1 5.83-.75h4.34A3.001 3.001 0 0 1 18 6a3 3 0 0 1-4.83.75H8.83A3.001 3.001 0 0 1 3 6zm3 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 3a3 3 0 0 1 0-6 3 3 0 0 1 0 6zm12-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6z" fill="none"/><path d="M6 2a4 4 0 0 0-1 7.874V14.126A4.002 4.002 0 0 0 6 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 6 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm12-12a4 4 0 0 0-1 7.874v2.252A4.002 4.002 0 0 0 18 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 18 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/></svg></a><a href="mailto:ahujadivyam@gmail.com" target="_blank" rel="noopener noreferrer" title="Email"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"/><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"/></svg></a><a href="/index.xml" title="RSS Feed">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.295 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

View file

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
<circle cx="100" cy="100" r="100" fill="#282a2e"/>
<text x="100" y="115" font-family="monospace" font-size="72" font-weight="700" fill="#2bbc8a" text-anchor="middle">DA</text>
</svg>

Before

Width:  |  Height:  |  Size: 250 B

View file

@ -1,60 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Software Engineer">
<meta name="author" content="Divyam Ahuja">
<meta property="og:title" content="Categories">
<meta property="og:description" content="Software Engineer">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:1313/categories/">
<meta property="og:site_name" content="Divyam Ahuja">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Categories">
<meta name="twitter:description" content="Software Engineer">
<title>Categories · Divyam Ahuja</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="http://localhost:1313/css/style.min.86de29e37fd55fb8581ee5569d0e766097f2718b8f8029e4e11c87973d24a5b1.css">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/categories/index.xml" title="Divyam Ahuja">
</head>
<body>
<div class="site-wrapper"><header class="site-header">
<div class="site-header-inner">
<a href="/" class="site-title">Divyam Ahuja</a>
<nav class="site-nav"><a href="/">Home</a><span class="nav-separator">|</span><a href="/posts/">Blog</a><span class="nav-separator">|</span><a href="/projects/">Projects</a><span class="nav-separator">|</span><a href="/resume/">Resume</a></nav>
</div>
</header>
<main>
<h1 class="page-title">Categories</h1>
<div class="post-content">
</div>
</main>
</div><footer class="site-footer">
<div class="site-wrapper">
<div class="site-footer-inner">
<div class="footer-copyright">
&copy; 2026 Divyam Ahuja
</div>
<div class="social-icons"><a href="https://github.com/ahujadivyam" target="_blank" rel="noopener noreferrer" title="GitHub"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg></a><a href="https://linkedin.com/in/ahujadivyam" target="_blank" rel="noopener noreferrer" title="LinkedIn"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a><a href="https://git.divyam.dev" target="_blank" rel="noopener noreferrer" title="Git"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM3 6a3 3 0 0 1 5.83-.75h4.34A3.001 3.001 0 0 1 18 6a3 3 0 0 1-4.83.75H8.83A3.001 3.001 0 0 1 3 6zm3 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 3a3 3 0 0 1 0-6 3 3 0 0 1 0 6zm12-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6z" fill="none"/><path d="M6 2a4 4 0 0 0-1 7.874V14.126A4.002 4.002 0 0 0 6 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 6 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm12-12a4 4 0 0 0-1 7.874v2.252A4.002 4.002 0 0 0 18 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 18 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/></svg></a><a href="mailto:ahujadivyam@gmail.com" target="_blank" rel="noopener noreferrer" title="Email"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"/><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"/></svg></a><a href="/index.xml" title="RSS Feed">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.295 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

View file

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Categories on Divyam Ahuja</title>
<link>http://localhost:1313/categories/</link>
<description>Recent content in Categories on Divyam Ahuja</description>
<generator>Hugo</generator>
<language>en-us</language>
<atom:link href="http://localhost:1313/categories/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

View file

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<rect width="100" height="100" rx="12" fill="#1d1f21"/>
<text x="50" y="68" font-family="monospace" font-size="52" font-weight="700" fill="#2bbc8a" text-anchor="middle">D</text>
</svg>

Before

Width:  |  Height:  |  Size: 252 B

View file

@ -1,145 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta name="generator" content="Hugo 0.161.1"><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Software Engineer">
<meta name="author" content="Divyam Ahuja">
<meta property="og:title" content="Divyam Ahuja">
<meta property="og:description" content="Software Engineer">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:1313/">
<meta property="og:site_name" content="Divyam Ahuja">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Divyam Ahuja">
<meta name="twitter:description" content="Software Engineer">
<title>Divyam Ahuja</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="http://localhost:1313/css/style.min.dde322c2f5eb486cde5fa722b8e6fe1eb33a8ad467a9549f2627b4df7a3807b4.css">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/index.xml" title="Divyam Ahuja">
</head>
<body>
<div class="site-wrapper"><header class="site-header">
<div class="site-header-inner">
<a href="/" class="site-title">Divyam Ahuja</a>
<nav class="site-nav"><a href="/">Home</a><span class="nav-separator">|</span><a href="/posts/">Blog</a><span class="nav-separator">|</span><a href="/projects/">Projects</a><span class="nav-separator">|</span><a href="/resume/">Resume</a></nav>
</div>
</header>
<main>
<section class="home-bio">
<p>Software Engineer at Microsoft, working on the Excel Copilot team. I enjoy building side projects, tinkering with infrastructure, and deep-diving into performance optimization.</p>
<p class="social-line">
Find me on
<a href="https://github.com/ahujadivyam" target="_blank" rel="noopener noreferrer">GitHub</a>,
<a href="https://linkedin.com/in/ahujadivyam" target="_blank" rel="noopener noreferrer">LinkedIn</a>,
<a href="https://git.divyam.dev" target="_blank" rel="noopener noreferrer">Git</a>,
<a href="mailto:ahujadivyam@gmail.com" target="_blank" rel="noopener noreferrer">Email</a>.
</p>
</section>
<section>
<h2 class="section-heading">Blog</h2>
<div class="archive-year">
<h3 class="year-heading">2026</h3>
<ul class="post-list">
<li class="post-list-item">
<time class="post-date" datetime="2026-05-08">
08 May
</time>
<a href="http://localhost:1313/posts/hello-world/" class="post-title-link">Hello World</a>
</li>
<li class="post-list-item">
<time class="post-date" datetime="2026-02-11">
11 Feb
</time>
<a href="http://localhost:1313/posts/pdf-translation-pipeline/" class="post-title-link">Building a PDF Translation Pipeline</a>
</li>
</ul>
</div>
</section>
<section>
<h2 class="section-heading">Projects</h2>
<div class="projects-grid">
<a href="https://git.divyam.dev/divyam/fastbin" class="project-card" target="_blank" rel="noopener noreferrer">
<div class="project-card-inner">
<h3 class="project-card-name">fastbin</h3>
<p class="project-card-desc">A high-performance code sharing webapp with real-time updates</p>
<div class="project-card-tags">
<span class="project-card-tag">Go</span>
<span class="project-card-tag">HTMX</span>
<span class="project-card-tag">gRPC</span>
<span class="project-card-tag">PostgreSQL</span>
<span class="project-card-tag">Docker</span>
<span class="project-card-tag">Kubernetes</span>
</div>
</div>
<span class="project-card-arrow"></span>
</a>
<a href="https://github.com/ahujadivyam/gsoc-chromium-freequeue" class="project-card" target="_blank" rel="noopener noreferrer">
<div class="project-card-inner">
<h3 class="project-card-name">gsoc-chromium-freequeue</h3>
<p class="project-card-desc">Lock-free ring buffer library built during Google Summer of Code for Chromium&#39;s audio processing</p>
<div class="project-card-tags">
<span class="project-card-tag">C&#43;&#43;</span>
<span class="project-card-tag">WebAudio</span>
<span class="project-card-tag">WebAssembly</span>
<span class="project-card-tag">WebWorkers</span>
</div>
</div>
<span class="project-card-arrow"></span>
</a>
<div class="project-card">
<div class="project-card-inner">
<h3 class="project-card-name">Homelab</h3>
<p class="project-card-desc">Self-hosted high-availability infrastructure on Raspberry Pi 5</p>
<div class="project-card-tags">
<span class="project-card-tag">Kubernetes</span>
<span class="project-card-tag">WireGuard</span>
<span class="project-card-tag">Rancher</span>
<span class="project-card-tag">MetalLB</span>
</div>
</div>
</div>
<a href="https://git.divyam.dev/divyam/divyam.dev" class="project-card" target="_blank" rel="noopener noreferrer">
<div class="project-card-inner">
<h3 class="project-card-name">divyam.dev</h3>
<p class="project-card-desc">This minimal, high-performance portfolio and blog</p>
<div class="project-card-tags">
<span class="project-card-tag">Hugo</span>
<span class="project-card-tag">CSS</span>
</div>
</div>
<span class="project-card-arrow"></span>
</a>
</div>
<div style="margin-top: 1rem; text-align: right;">
<a href="/projects/" class="post-title-link">View all projects →</a>
</div>
</section>
</main>
</div><footer class="site-footer">
<div class="site-wrapper">
<div class="site-footer-inner">
<div class="footer-copyright">
&copy; 2026 Divyam Ahuja
</div>
<div class="social-icons"><a href="https://github.com/ahujadivyam" target="_blank" rel="noopener noreferrer" title="GitHub"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg></a><a href="https://linkedin.com/in/ahujadivyam" target="_blank" rel="noopener noreferrer" title="LinkedIn"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a><a href="https://git.divyam.dev" target="_blank" rel="noopener noreferrer" title="Git"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM3 6a3 3 0 0 1 5.83-.75h4.34A3.001 3.001 0 0 1 18 6a3 3 0 0 1-4.83.75H8.83A3.001 3.001 0 0 1 3 6zm3 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 3a3 3 0 0 1 0-6 3 3 0 0 1 0 6zm12-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6z" fill="none"/><path d="M6 2a4 4 0 0 0-1 7.874V14.126A4.002 4.002 0 0 0 6 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 6 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm12-12a4 4 0 0 0-1 7.874v2.252A4.002 4.002 0 0 0 18 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 18 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/></svg></a><a href="mailto:ahujadivyam@gmail.com" target="_blank" rel="noopener noreferrer" title="Email"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"/><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"/></svg></a><a href="/index.xml" title="RSS Feed">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.295 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

View file

@ -1,47 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Divyam Ahuja</title>
<link>http://localhost:1313/</link>
<description>Recent content on Divyam Ahuja</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Fri, 08 May 2026 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Hello World</title>
<link>http://localhost:1313/posts/hello-world/</link>
<pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/posts/hello-world/</guid>
<description>&lt;p&gt;Welcome to my new blog! I&amp;rsquo;ve rebuilt my personal website from scratch using &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;, a fast static site generator written in Go.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-hugo&#34;&gt;Why Hugo?&lt;/h2&gt;&#xA;&lt;p&gt;I wanted something minimal, fast, and that gets out of the way. Hugo checks all the boxes:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Blazing fast builds&lt;/strong&gt; — the entire site builds in under 100ms&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Markdown-first&lt;/strong&gt; — I write posts in plain markdown files&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Zero JavaScript&lt;/strong&gt; — the site ships pure HTML and CSS&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Built-in features&lt;/strong&gt; — syntax highlighting, RSS feeds, sitemaps, all out of the box&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;the-design&#34;&gt;The Design&lt;/h2&gt;&#xA;&lt;p&gt;The design is inspired by the &lt;a href=&#34;https://probberechts.github.io/hexo-theme-cactus/&#34;&gt;Cactus Dark&lt;/a&gt; theme — a minimalist, terminal-inspired aesthetic with monospace typography and a dark color scheme. I built the theme from scratch for full control.&lt;/p&gt;</description>
</item>
<item>
<title>Building a PDF Translation Pipeline</title>
<link>http://localhost:1313/posts/pdf-translation-pipeline/</link>
<pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/posts/pdf-translation-pipeline/</guid>
<description>&lt;p&gt;Recently, I needed to translate a PDF document from Hindi to English. Sounds simple enough, right? Turns out, it&amp;rsquo;s a surprisingly deep rabbit hole.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-pipeline&#34;&gt;The Pipeline&lt;/h2&gt;&#xA;&lt;p&gt;The approach I settled on follows this flow:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PDF → Images → OCR → Translation → Rendered Images → PDF&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Each step has its own set of challenges:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;PDF to Images&lt;/strong&gt;: Convert each page to a high-DPI image for better OCR accuracy&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;OCR&lt;/strong&gt;: Extract text with position data using PaddleOCR&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Translation&lt;/strong&gt;: Run extracted text through NLLB (No Language Left Behind)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Rendering&lt;/strong&gt;: Paint translated text back onto the original image&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Assembly&lt;/strong&gt;: Combine rendered images back into a PDF&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;lessons-learned&#34;&gt;Lessons Learned&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;DPI matters a lot&lt;/strong&gt; — bumping from 150 to 300 DPI dramatically improved OCR accuracy for Hindi text&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Font rendering is hard&lt;/strong&gt; — getting translated text to fit in the same bounding boxes required careful font size calculation&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Fallback strategies&lt;/strong&gt; — TrOCR as a fallback when PaddleOCR fails on certain text regions&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The code is messy but it works. Sometimes that&amp;rsquo;s enough.&lt;/p&gt;</description>
</item>
<item>
<title>About</title>
<link>http://localhost:1313/about/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/about/</guid>
<description>&lt;p&gt;Hi, I&amp;rsquo;m a full-stack developer who loves building things. I enjoy hacking on side projects, exploring new technologies, and deep-diving into the technical details of how things work.&lt;/p&gt;&#xA;&lt;p&gt;I work across the stack — from crafting interactive frontends to designing robust backend systems. When I&amp;rsquo;m not writing code, I&amp;rsquo;m probably reading about distributed systems, tinkering with new tools, or working on one of my many side projects.&lt;/p&gt;&#xA;&lt;p&gt;I enjoy hacking on things and deep diving into the technical details of protocols, performance optimization, and algorithms.&lt;/p&gt;</description>
</item>
<item>
<title>Projects</title>
<link>http://localhost:1313/projects/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/projects/</guid>
<description></description>
</item>
<item>
<title>Resume</title>
<link>http://localhost:1313/resume/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/resume/</guid>
<description></description>
</item>
</channel>
</rss>

View file

@ -1,107 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="First post on my new blog, built with Hugo.">
<meta name="author" content="Divyam Ahuja">
<meta property="og:title" content="Hello World">
<meta property="og:description" content="First post on my new blog, built with Hugo.">
<meta property="og:type" content="article">
<meta property="og:url" content="http://localhost:1313/posts/hello-world/">
<meta property="og:site_name" content="Divyam Ahuja">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Hello World">
<meta name="twitter:description" content="First post on my new blog, built with Hugo.">
<title>Hello World · Divyam Ahuja</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="http://localhost:1313/css/style.min.86de29e37fd55fb8581ee5569d0e766097f2718b8f8029e4e11c87973d24a5b1.css">
</head>
<body>
<div class="site-wrapper"><header class="site-header">
<div class="site-header-inner">
<a href="/" class="site-title">Divyam Ahuja</a>
<nav class="site-nav"><a href="/">Home</a><span class="nav-separator">|</span><a href="/posts/">Blog</a><span class="nav-separator">|</span><a href="/projects/">Projects</a><span class="nav-separator">|</span><a href="/resume/">Resume</a></nav>
</div>
</header>
<main>
<article>
<div class="post-header">
<h1>Hello World</h1>
<div class="post-meta">
<span>DIVYAM AHUJA</span>
<span class="separator">·</span>
<time datetime="2026-05-08">08 May 2026</time>
<span class="separator">|</span>
<span class="post-tags">
<a href="http://localhost:1313/tags/meta/" class="post-tag">#meta</a>
<a href="http://localhost:1313/tags/hugo/" class="post-tag">#hugo</a>
</span>
</div>
</div>
<div class="post-content">
<p>Welcome to my new blog! I&rsquo;ve rebuilt my personal website from scratch using <a href="https://gohugo.io/">Hugo</a>, a fast static site generator written in Go.</p>
<h2 id="why-hugo">Why Hugo?</h2>
<p>I wanted something minimal, fast, and that gets out of the way. Hugo checks all the boxes:</p>
<ul>
<li><strong>Blazing fast builds</strong> — the entire site builds in under 100ms</li>
<li><strong>Markdown-first</strong> — I write posts in plain markdown files</li>
<li><strong>Zero JavaScript</strong> — the site ships pure HTML and CSS</li>
<li><strong>Built-in features</strong> — syntax highlighting, RSS feeds, sitemaps, all out of the box</li>
</ul>
<h2 id="the-design">The Design</h2>
<p>The design is inspired by the <a href="https://probberechts.github.io/hexo-theme-cactus/">Cactus Dark</a> theme — a minimalist, terminal-inspired aesthetic with monospace typography and a dark color scheme. I built the theme from scratch for full control.</p>
<p>Here&rsquo;s a quick code example to make sure syntax highlighting works:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">greet</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34;Return a greeting message.&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="sa">f</span><span class="s2">&#34;Hello, </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">! Welcome to divyam.dev&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&#34;__main__&#34;</span><span class="p">:</span>
</span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="n">greet</span><span class="p">(</span><span class="s2">&#34;World&#34;</span><span class="p">))</span>
</span></span></code></pre></div><p>And some JavaScript too:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">fetchPosts</span> <span class="o">=</span> <span class="kr">async</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">response</span> <span class="o">=</span> <span class="kr">await</span> <span class="nx">fetch</span><span class="p">(</span><span class="s1">&#39;/api/posts&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">posts</span> <span class="o">=</span> <span class="kr">await</span> <span class="nx">response</span><span class="p">.</span><span class="nx">json</span><span class="p">();</span>
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">posts</span><span class="p">.</span><span class="nx">filter</span><span class="p">(</span><span class="nx">post</span> <span class="p">=&gt;</span> <span class="nx">post</span><span class="p">.</span><span class="nx">published</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><h2 id="whats-next">What&rsquo;s Next?</h2>
<p>I plan to write about:</p>
<ul>
<li>Full-stack development patterns and best practices</li>
<li>Side projects and what I learn building them</li>
<li>Deep dives into interesting technical problems</li>
<li>Tools and workflows that make development better</li>
</ul>
<p>Stay tuned — there&rsquo;s more coming soon.</p>
</div>
<hr>
<a href="/" class="back-link">← back to home</a>
</article>
</main>
</div><footer class="site-footer">
<div class="site-wrapper">
<div class="site-footer-inner">
<div class="footer-copyright">
&copy; 2026 Divyam Ahuja
</div>
<div class="social-icons"><a href="https://github.com/ahujadivyam" target="_blank" rel="noopener noreferrer" title="GitHub"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg></a><a href="https://linkedin.com/in/ahujadivyam" target="_blank" rel="noopener noreferrer" title="LinkedIn"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a><a href="https://git.divyam.dev" target="_blank" rel="noopener noreferrer" title="Git"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM3 6a3 3 0 0 1 5.83-.75h4.34A3.001 3.001 0 0 1 18 6a3 3 0 0 1-4.83.75H8.83A3.001 3.001 0 0 1 3 6zm3 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 3a3 3 0 0 1 0-6 3 3 0 0 1 0 6zm12-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6z" fill="none"/><path d="M6 2a4 4 0 0 0-1 7.874V14.126A4.002 4.002 0 0 0 6 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 6 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm12-12a4 4 0 0 0-1 7.874v2.252A4.002 4.002 0 0 0 18 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 18 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/></svg></a><a href="mailto:ahujadivyam@gmail.com" target="_blank" rel="noopener noreferrer" title="Email"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"/><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"/></svg></a><a href="/index.xml" title="RSS Feed">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.295 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

View file

@ -1,74 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Software Engineer">
<meta name="author" content="Divyam Ahuja">
<meta property="og:title" content="Writing">
<meta property="og:description" content="Software Engineer">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:1313/posts/">
<meta property="og:site_name" content="Divyam Ahuja">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Writing">
<meta name="twitter:description" content="Software Engineer">
<title>Writing · Divyam Ahuja</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="http://localhost:1313/css/style.min.86de29e37fd55fb8581ee5569d0e766097f2718b8f8029e4e11c87973d24a5b1.css">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/posts/index.xml" title="Divyam Ahuja">
</head>
<body>
<div class="site-wrapper"><header class="site-header">
<div class="site-header-inner">
<a href="/" class="site-title">Divyam Ahuja</a>
<nav class="site-nav"><a href="/">Home</a><span class="nav-separator">|</span><a href="/posts/">Blog</a><span class="nav-separator">|</span><a href="/projects/">Projects</a><span class="nav-separator">|</span><a href="/resume/">Resume</a></nav>
</div>
</header>
<main>
<h1 class="page-title">Writing</h1>
<div class="archive-year">
<h3 class="year-heading">2026</h3>
<ul class="post-list">
<li class="post-list-item">
<time class="post-date" datetime="2026-05-08">
08 May
</time>
<a href="http://localhost:1313/posts/hello-world/" class="post-title-link">Hello World</a>
</li>
<li class="post-list-item">
<time class="post-date" datetime="2026-02-11">
11 Feb
</time>
<a href="http://localhost:1313/posts/pdf-translation-pipeline/" class="post-title-link">Building a PDF Translation Pipeline</a>
</li>
</ul>
</div>
</main>
</div><footer class="site-footer">
<div class="site-wrapper">
<div class="site-footer-inner">
<div class="footer-copyright">
&copy; 2026 Divyam Ahuja
</div>
<div class="social-icons"><a href="https://github.com/ahujadivyam" target="_blank" rel="noopener noreferrer" title="GitHub"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg></a><a href="https://linkedin.com/in/ahujadivyam" target="_blank" rel="noopener noreferrer" title="LinkedIn"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a><a href="https://git.divyam.dev" target="_blank" rel="noopener noreferrer" title="Git"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM3 6a3 3 0 0 1 5.83-.75h4.34A3.001 3.001 0 0 1 18 6a3 3 0 0 1-4.83.75H8.83A3.001 3.001 0 0 1 3 6zm3 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 3a3 3 0 0 1 0-6 3 3 0 0 1 0 6zm12-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6z" fill="none"/><path d="M6 2a4 4 0 0 0-1 7.874V14.126A4.002 4.002 0 0 0 6 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 6 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm12-12a4 4 0 0 0-1 7.874v2.252A4.002 4.002 0 0 0 18 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 18 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/></svg></a><a href="mailto:ahujadivyam@gmail.com" target="_blank" rel="noopener noreferrer" title="Email"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"/><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"/></svg></a><a href="/index.xml" title="RSS Feed">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.295 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

View file

@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Writing on Divyam Ahuja</title>
<link>http://localhost:1313/posts/</link>
<description>Recent content in Writing on Divyam Ahuja</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Fri, 08 May 2026 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/posts/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Hello World</title>
<link>http://localhost:1313/posts/hello-world/</link>
<pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/posts/hello-world/</guid>
<description>&lt;p&gt;Welcome to my new blog! I&amp;rsquo;ve rebuilt my personal website from scratch using &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;, a fast static site generator written in Go.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-hugo&#34;&gt;Why Hugo?&lt;/h2&gt;&#xA;&lt;p&gt;I wanted something minimal, fast, and that gets out of the way. Hugo checks all the boxes:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Blazing fast builds&lt;/strong&gt; — the entire site builds in under 100ms&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Markdown-first&lt;/strong&gt; — I write posts in plain markdown files&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Zero JavaScript&lt;/strong&gt; — the site ships pure HTML and CSS&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Built-in features&lt;/strong&gt; — syntax highlighting, RSS feeds, sitemaps, all out of the box&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;the-design&#34;&gt;The Design&lt;/h2&gt;&#xA;&lt;p&gt;The design is inspired by the &lt;a href=&#34;https://probberechts.github.io/hexo-theme-cactus/&#34;&gt;Cactus Dark&lt;/a&gt; theme — a minimalist, terminal-inspired aesthetic with monospace typography and a dark color scheme. I built the theme from scratch for full control.&lt;/p&gt;</description>
</item>
<item>
<title>Building a PDF Translation Pipeline</title>
<link>http://localhost:1313/posts/pdf-translation-pipeline/</link>
<pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/posts/pdf-translation-pipeline/</guid>
<description>&lt;p&gt;Recently, I needed to translate a PDF document from Hindi to English. Sounds simple enough, right? Turns out, it&amp;rsquo;s a surprisingly deep rabbit hole.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-pipeline&#34;&gt;The Pipeline&lt;/h2&gt;&#xA;&lt;p&gt;The approach I settled on follows this flow:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PDF → Images → OCR → Translation → Rendered Images → PDF&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Each step has its own set of challenges:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;PDF to Images&lt;/strong&gt;: Convert each page to a high-DPI image for better OCR accuracy&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;OCR&lt;/strong&gt;: Extract text with position data using PaddleOCR&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Translation&lt;/strong&gt;: Run extracted text through NLLB (No Language Left Behind)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Rendering&lt;/strong&gt;: Paint translated text back onto the original image&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Assembly&lt;/strong&gt;: Combine rendered images back into a PDF&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;lessons-learned&#34;&gt;Lessons Learned&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;DPI matters a lot&lt;/strong&gt; — bumping from 150 to 300 DPI dramatically improved OCR accuracy for Hindi text&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Font rendering is hard&lt;/strong&gt; — getting translated text to fit in the same bounding boxes required careful font size calculation&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Fallback strategies&lt;/strong&gt; — TrOCR as a fallback when PaddleOCR fails on certain text regions&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The code is messy but it works. Sometimes that&amp;rsquo;s enough.&lt;/p&gt;</description>
</item>
</channel>
</rss>

View file

@ -1,94 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="How I built a pipeline to translate Hindi PDFs to English using OCR and neural machine translation.">
<meta name="author" content="Divyam Ahuja">
<meta property="og:title" content="Building a PDF Translation Pipeline">
<meta property="og:description" content="How I built a pipeline to translate Hindi PDFs to English using OCR and neural machine translation.">
<meta property="og:type" content="article">
<meta property="og:url" content="http://localhost:1313/posts/pdf-translation-pipeline/">
<meta property="og:site_name" content="Divyam Ahuja">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Building a PDF Translation Pipeline">
<meta name="twitter:description" content="How I built a pipeline to translate Hindi PDFs to English using OCR and neural machine translation.">
<title>Building a PDF Translation Pipeline · Divyam Ahuja</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="http://localhost:1313/css/style.min.86de29e37fd55fb8581ee5569d0e766097f2718b8f8029e4e11c87973d24a5b1.css">
</head>
<body>
<div class="site-wrapper"><header class="site-header">
<div class="site-header-inner">
<a href="/" class="site-title">Divyam Ahuja</a>
<nav class="site-nav"><a href="/">Home</a><span class="nav-separator">|</span><a href="/posts/">Blog</a><span class="nav-separator">|</span><a href="/projects/">Projects</a><span class="nav-separator">|</span><a href="/resume/">Resume</a></nav>
</div>
</header>
<main>
<article>
<div class="post-header">
<h1>Building a PDF Translation Pipeline</h1>
<div class="post-meta">
<span>DIVYAM AHUJA</span>
<span class="separator">·</span>
<time datetime="2026-02-11">11 Feb 2026</time>
<span class="separator">|</span>
<span class="post-tags">
<a href="http://localhost:1313/tags/python/" class="post-tag">#python</a>
<a href="http://localhost:1313/tags/ocr/" class="post-tag">#ocr</a>
<a href="http://localhost:1313/tags/ml/" class="post-tag">#ml</a>
</span>
</div>
</div>
<div class="post-content">
<p>Recently, I needed to translate a PDF document from Hindi to English. Sounds simple enough, right? Turns out, it&rsquo;s a surprisingly deep rabbit hole.</p>
<h2 id="the-pipeline">The Pipeline</h2>
<p>The approach I settled on follows this flow:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">PDF → Images → OCR → Translation → Rendered Images → PDF
</span></span></code></pre></div><p>Each step has its own set of challenges:</p>
<ol>
<li><strong>PDF to Images</strong>: Convert each page to a high-DPI image for better OCR accuracy</li>
<li><strong>OCR</strong>: Extract text with position data using PaddleOCR</li>
<li><strong>Translation</strong>: Run extracted text through NLLB (No Language Left Behind)</li>
<li><strong>Rendering</strong>: Paint translated text back onto the original image</li>
<li><strong>Assembly</strong>: Combine rendered images back into a PDF</li>
</ol>
<h2 id="lessons-learned">Lessons Learned</h2>
<ul>
<li><strong>DPI matters a lot</strong> — bumping from 150 to 300 DPI dramatically improved OCR accuracy for Hindi text</li>
<li><strong>Font rendering is hard</strong> — getting translated text to fit in the same bounding boxes required careful font size calculation</li>
<li><strong>Fallback strategies</strong> — TrOCR as a fallback when PaddleOCR fails on certain text regions</li>
</ul>
<p>The code is messy but it works. Sometimes that&rsquo;s enough.</p>
</div>
<hr>
<a href="/" class="back-link">← back to home</a>
</article>
</main>
</div><footer class="site-footer">
<div class="site-wrapper">
<div class="site-footer-inner">
<div class="footer-copyright">
&copy; 2026 Divyam Ahuja
</div>
<div class="social-icons"><a href="https://github.com/ahujadivyam" target="_blank" rel="noopener noreferrer" title="GitHub"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg></a><a href="https://linkedin.com/in/ahujadivyam" target="_blank" rel="noopener noreferrer" title="LinkedIn"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a><a href="https://git.divyam.dev" target="_blank" rel="noopener noreferrer" title="Git"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM3 6a3 3 0 0 1 5.83-.75h4.34A3.001 3.001 0 0 1 18 6a3 3 0 0 1-4.83.75H8.83A3.001 3.001 0 0 1 3 6zm3 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 3a3 3 0 0 1 0-6 3 3 0 0 1 0 6zm12-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6z" fill="none"/><path d="M6 2a4 4 0 0 0-1 7.874V14.126A4.002 4.002 0 0 0 6 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 6 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm12-12a4 4 0 0 0-1 7.874v2.252A4.002 4.002 0 0 0 18 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 18 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/></svg></a><a href="mailto:ahujadivyam@gmail.com" target="_blank" rel="noopener noreferrer" title="Email"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"/><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"/></svg></a><a href="/index.xml" title="RSS Feed">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.295 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

View file

@ -1,110 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Things I&#39;ve built">
<meta name="author" content="Divyam Ahuja">
<meta property="og:title" content="Projects">
<meta property="og:description" content="Things I&#39;ve built">
<meta property="og:type" content="article">
<meta property="og:url" content="http://localhost:1313/projects/">
<meta property="og:site_name" content="Divyam Ahuja">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Projects">
<meta name="twitter:description" content="Things I&#39;ve built">
<title>Projects · Divyam Ahuja</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="http://localhost:1313/css/style.min.dde322c2f5eb486cde5fa722b8e6fe1eb33a8ad467a9549f2627b4df7a3807b4.css">
</head>
<body>
<div class="site-wrapper"><header class="site-header">
<div class="site-header-inner">
<a href="/" class="site-title">Divyam Ahuja</a>
<nav class="site-nav"><a href="/">Home</a><span class="nav-separator">|</span><a href="/posts/">Blog</a><span class="nav-separator">|</span><a href="/projects/">Projects</a><span class="nav-separator">|</span><a href="/resume/">Resume</a></nav>
</div>
</header>
<main>
<h1 class="page-title">Projects</h1>
<p class="projects-intro">Things I've built or contributed to.</p>
<div class="projects-grid">
<a href="https://git.divyam.dev/divyam/fastbin" class="project-card" target="_blank" rel="noopener noreferrer">
<div class="project-card-inner">
<h3 class="project-card-name">fastbin</h3>
<p class="project-card-desc">A high-performance code sharing webapp with real-time updates</p>
<div class="project-card-tags">
<span class="project-card-tag">Go</span>
<span class="project-card-tag">HTMX</span>
<span class="project-card-tag">gRPC</span>
<span class="project-card-tag">PostgreSQL</span>
<span class="project-card-tag">Docker</span>
<span class="project-card-tag">Kubernetes</span>
</div>
</div>
<span class="project-card-arrow"></span>
</a>
<a href="https://github.com/ahujadivyam/gsoc-chromium-freequeue" class="project-card" target="_blank" rel="noopener noreferrer">
<div class="project-card-inner">
<h3 class="project-card-name">gsoc-chromium-freequeue</h3>
<p class="project-card-desc">Lock-free ring buffer library built during Google Summer of Code for Chromium&#39;s audio processing</p>
<div class="project-card-tags">
<span class="project-card-tag">C&#43;&#43;</span>
<span class="project-card-tag">WebAudio</span>
<span class="project-card-tag">WebAssembly</span>
<span class="project-card-tag">WebWorkers</span>
</div>
</div>
<span class="project-card-arrow"></span>
</a>
<div class="project-card">
<div class="project-card-inner">
<h3 class="project-card-name">Homelab</h3>
<p class="project-card-desc">Self-hosted high-availability infrastructure on Raspberry Pi 5</p>
<div class="project-card-tags">
<span class="project-card-tag">Kubernetes</span>
<span class="project-card-tag">WireGuard</span>
<span class="project-card-tag">Rancher</span>
<span class="project-card-tag">MetalLB</span>
</div>
</div>
</div>
<a href="https://git.divyam.dev/divyam/divyam.dev" class="project-card" target="_blank" rel="noopener noreferrer">
<div class="project-card-inner">
<h3 class="project-card-name">divyam.dev</h3>
<p class="project-card-desc">This minimal, high-performance portfolio and blog</p>
<div class="project-card-tags">
<span class="project-card-tag">Hugo</span>
<span class="project-card-tag">CSS</span>
</div>
</div>
<span class="project-card-arrow"></span>
</a>
</div>
</main>
</div><footer class="site-footer">
<div class="site-wrapper">
<div class="site-footer-inner">
<div class="footer-copyright">
&copy; 2026 Divyam Ahuja
</div>
<div class="social-icons"><a href="https://github.com/ahujadivyam" target="_blank" rel="noopener noreferrer" title="GitHub"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg></a><a href="https://linkedin.com/in/ahujadivyam" target="_blank" rel="noopener noreferrer" title="LinkedIn"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a><a href="https://git.divyam.dev" target="_blank" rel="noopener noreferrer" title="Git"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM3 6a3 3 0 0 1 5.83-.75h4.34A3.001 3.001 0 0 1 18 6a3 3 0 0 1-4.83.75H8.83A3.001 3.001 0 0 1 3 6zm3 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 3a3 3 0 0 1 0-6 3 3 0 0 1 0 6zm12-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6z" fill="none"/><path d="M6 2a4 4 0 0 0-1 7.874V14.126A4.002 4.002 0 0 0 6 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 6 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm12-12a4 4 0 0 0-1 7.874v2.252A4.002 4.002 0 0 0 18 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 18 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/></svg></a><a href="mailto:ahujadivyam@gmail.com" target="_blank" rel="noopener noreferrer" title="Email"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"/><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"/></svg></a><a href="/index.xml" title="RSS Feed">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.295 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -1,203 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Divyam Ahuja — Resume">
<meta name="author" content="Divyam Ahuja">
<meta property="og:title" content="Resume">
<meta property="og:description" content="Divyam Ahuja — Resume">
<meta property="og:type" content="article">
<meta property="og:url" content="http://localhost:1313/resume/">
<meta property="og:site_name" content="Divyam Ahuja">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Resume">
<meta name="twitter:description" content="Divyam Ahuja — Resume">
<title>Resume · Divyam Ahuja</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="http://localhost:1313/css/style.min.dde322c2f5eb486cde5fa722b8e6fe1eb33a8ad467a9549f2627b4df7a3807b4.css">
</head>
<body>
<div class="site-wrapper"><header class="site-header">
<div class="site-header-inner">
<a href="/" class="site-title">Divyam Ahuja</a>
<nav class="site-nav"><a href="/">Home</a><span class="nav-separator">|</span><a href="/posts/">Blog</a><span class="nav-separator">|</span><a href="/projects/">Projects</a><span class="nav-separator">|</span><a href="/resume/">Resume</a></nav>
</div>
</header>
<main><div class="resume-page">
<div class="resume-header">
<h1 class="resume-name">Divyam Ahuja</h1>
<p class="resume-tagline">Software Engineer</p>
<div class="resume-contact">
<a href="mailto:ahujadivyam@gmail.com">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"/><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"/></svg>
ahujadivyam@gmail.com
</a>
<a href="https://divyam.dev" target="_blank">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"/></svg>
divyam.dev
</a>
<a href="https://linkedin.com/in/ahujadivyam" target="_blank">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
in/ahujadivyam
</a>
</div>
<div class="resume-contact">
<a href="https://git.divyam.dev/" target="_blank">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 2a4 4 0 0 0-1 7.874V14.126A4.002 4.002 0 0 0 6 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 6 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm12-12a4 4 0 0 0-1 7.874v2.252A4.002 4.002 0 0 0 18 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 18 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/></svg>
git.divyam.dev
</a>
<a href="https://github.com/ahujadivyam" target="_blank">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg>
gh/ahujadivyam
</a>
</div>
</div>
<section class="resume-section">
<h2 class="resume-section-title">Experience</h2>
<div class="resume-entry">
<div class="resume-entry-header">
<div>
<h3 class="resume-entry-title">Software Engineer</h3>
<span class="resume-entry-org">Microsoft · Noida</span>
</div>
<span class="resume-entry-date">Mar 2025 — Present</span>
</div>
<div class="resume-tech-stack">Python, JavaScript, TypeScript, Playwright, Telemetry</div>
<ul class="resume-entry-details">
<li>Build, evaluate, and enhance AI-powered user experiences for the Excel Copilot team.</li>
<li>Architected a parallelized automation framework for synthetic data generation and evaluation, boosting pipeline throughput by <strong>5x</strong>.</li>
<li>Orchestrated the Responsible AI (RAI) pipeline, executing evaluation runs on new models to guarantee safe and deterministic AI outputs.</li>
<li>Acted as on-call Shield Engineer, monitoring pipeline health, triaging partner issues, and driving incident response for critical bugs.</li>
<li>Integrated comprehensive telemetry, structured logging, and observability dashboards into pipelines to maintain <strong>&gt;95%</strong> reliability.</li>
<li>Engineered autonomous AI agents to automate repetitive tasks and optimize workflow efficiency.</li>
</ul>
</div>
<div class="resume-entry">
<div class="resume-entry-header">
<div>
<h3 class="resume-entry-title">System Software Designer</h3>
<span class="resume-entry-org">Advanced Micro Devices (AMD) · Bangalore</span>
</div>
<span class="resume-entry-date">Aug 2022 — Feb 2025</span>
</div>
<div class="resume-tech-stack">C, C&#43;&#43;, Java, Python, React.js, JavaScript</div>
<ul class="resume-entry-details">
<li>Engineered an OpenJDK performance monitoring system, enabling early detection and mitigation of performance degradation.</li>
<li>Spearheaded the development of a visualization dashboard and RESTful API for OpenJDK telemetry, increasing data accessibility by <strong>40%</strong>.</li>
<li>Automated nightly Java benchmarking and tuning using machine learning models, achieving a <strong>30%</strong> reduction in manual effort.</li>
<li>Executed advanced Java tuning techniques, yielding a <strong>2%</strong> performance increase across High Performance Computing (HPC) servers.</li>
<li>Refactored and containerized legacy projects for cross-platform compatibility, driving a <strong>90%</strong> reduction in deployment errors.</li>
<li>Received the <strong>Spotlight Award</strong> for exceptional contributions to automation and nightly benchmark visualization.</li>
</ul>
</div>
<div class="resume-entry">
<div class="resume-entry-header">
<div>
<h3 class="resume-entry-title">Google Summer of Code Contributor (Open Source Developer)</h3>
<span class="resume-entry-org">Chromium · Remote</span>
</div>
<span class="resume-entry-date">May 2022 — Aug 2022</span>
</div>
<div class="resume-tech-stack">JavaScript, TypeScript, C, C&#43;&#43;, WebAudio, WebAssembly, WebWorkers</div>
<ul class="resume-entry-details">
<li>Researched and implemented optimal design patterns integrating the WebAudio API with WebAssembly and WebWorkers.</li>
<li>Designed and authored a high-performance, lock-free ring buffer library for real-time audio processing.</li>
</ul>
<div class="resume-entry-links">
<a href="https://github.com/ahujadivyam/gsoc-chromium-freequeue" target="_blank">github.com/ahujadivyam/gsoc-chromium-freequeue</a>
</div>
</div>
</section>
<section class="resume-section">
<h2 class="resume-section-title">Skills</h2>
<div class="resume-skills">
<div class="resume-skill-group">
<h4 class="resume-skill-label">Programming Languages</h4>
<span class="resume-skill-items">C/C&#43;&#43;, Python, JavaScript/TypeScript, Java, Go (Golang), Bash, PHP</span>
</div>
<div class="resume-skill-group">
<h4 class="resume-skill-label">Frameworks</h4>
<span class="resume-skill-items">React.js, Next.js, Express.js, Django, Flask, Node.js</span>
</div>
<div class="resume-skill-group">
<h4 class="resume-skill-label">Tools/Platforms</h4>
<span class="resume-skill-items">Git, Docker, Emscripten, UNIX, Linux, POSIX, Shell, Kubernetes, WebAssembly, WordPress</span>
</div>
<div class="resume-skill-group">
<h4 class="resume-skill-label">Databases</h4>
<span class="resume-skill-items">MySQL, MongoDB, PostgreSQL, Redis</span>
</div>
</div>
</section>
<section class="resume-section">
<h2 class="resume-section-title">Projects</h2>
<div class="resume-entry">
<div class="resume-entry-header">
<div>
<h3 class="resume-entry-title">fastbin: a code sharing webapp</h3>
</div>
</div>
<div class="resume-tech-stack">HTMX, Go (Golang), gRPC, PostgreSQL, Docker, Kubernetes</div>
<div class="resume-entry-links">
<a href="https://git.divyam.dev/divyam/fastbin" target="_blank">git.divyam.dev/divyam/fastbin</a>
<a href="https://fastbin.lab.divyam.dev" target="_blank">fastbin.lab.divyam.dev</a>
</div>
</div>
<div class="resume-entry">
<div class="resume-entry-header">
<div>
<h3 class="resume-entry-title">Homelab</h3>
</div>
</div>
<div class="resume-tech-stack">Raspberry Pi 5, WireGuard, Kubernetes, Rancher, MetalLB</div>
</div>
</section>
<section class="resume-section">
<h2 class="resume-section-title">Education</h2>
<div class="resume-entry">
<div class="resume-entry-header">
<div>
<h3 class="resume-entry-title">Bachelor of Technology (B.Tech.) Computer Science</h3>
<span class="resume-entry-org">Deenbandhu Chhotu Ram University of Science and Technology · Haryana, India</span>
</div>
<span class="resume-entry-date">Aug 2018 — Aug 2022</span>
</div>
</div>
</section>
<div class="resume-download">
<a href="/resume.pdf" class="resume-download-btn">↓ Download PDF</a>
</div>
</div>
</main>
</div><footer class="site-footer">
<div class="site-wrapper">
<div class="site-footer-inner">
<div class="footer-copyright">
&copy; 2026 Divyam Ahuja
</div>
<div class="social-icons"><a href="https://github.com/ahujadivyam" target="_blank" rel="noopener noreferrer" title="GitHub"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg></a><a href="https://linkedin.com/in/ahujadivyam" target="_blank" rel="noopener noreferrer" title="LinkedIn"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a><a href="https://git.divyam.dev" target="_blank" rel="noopener noreferrer" title="Git"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM3 6a3 3 0 0 1 5.83-.75h4.34A3.001 3.001 0 0 1 18 6a3 3 0 0 1-4.83.75H8.83A3.001 3.001 0 0 1 3 6zm3 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 3a3 3 0 0 1 0-6 3 3 0 0 1 0 6zm12-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6z" fill="none"/><path d="M6 2a4 4 0 0 0-1 7.874V14.126A4.002 4.002 0 0 0 6 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 6 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm12-12a4 4 0 0 0-1 7.874v2.252A4.002 4.002 0 0 0 18 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 18 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/></svg></a><a href="mailto:ahujadivyam@gmail.com" target="_blank" rel="noopener noreferrer" title="Email"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"/><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"/></svg></a><a href="/index.xml" title="RSS Feed">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.295 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

View file

@ -1,71 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>http://localhost:1313/</loc>
<lastmod>2026-05-08T00:00:00+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url><url>
<loc>http://localhost:1313/posts/hello-world/</loc>
<lastmod>2026-05-08T00:00:00+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url><url>
<loc>http://localhost:1313/tags/hugo/</loc>
<lastmod>2026-05-08T00:00:00+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url><url>
<loc>http://localhost:1313/tags/meta/</loc>
<lastmod>2026-05-08T00:00:00+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url><url>
<loc>http://localhost:1313/tags/</loc>
<lastmod>2026-05-08T00:00:00+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url><url>
<loc>http://localhost:1313/posts/</loc>
<lastmod>2026-05-08T00:00:00+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url><url>
<loc>http://localhost:1313/posts/pdf-translation-pipeline/</loc>
<lastmod>2026-02-11T00:00:00+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url><url>
<loc>http://localhost:1313/tags/ml/</loc>
<lastmod>2026-02-11T00:00:00+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url><url>
<loc>http://localhost:1313/tags/ocr/</loc>
<lastmod>2026-02-11T00:00:00+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url><url>
<loc>http://localhost:1313/tags/python/</loc>
<lastmod>2026-02-11T00:00:00+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url><url>
<loc>http://localhost:1313/about/</loc>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url><url>
<loc>http://localhost:1313/categories/</loc>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url><url>
<loc>http://localhost:1313/projects/</loc>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url><url>
<loc>http://localhost:1313/resume/</loc>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
</urlset>

View file

@ -1,60 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Software Engineer">
<meta name="author" content="Divyam Ahuja">
<meta property="og:title" content="Hugo">
<meta property="og:description" content="Software Engineer">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:1313/tags/hugo/">
<meta property="og:site_name" content="Divyam Ahuja">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Hugo">
<meta name="twitter:description" content="Software Engineer">
<title>Hugo · Divyam Ahuja</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="http://localhost:1313/css/style.min.86de29e37fd55fb8581ee5569d0e766097f2718b8f8029e4e11c87973d24a5b1.css">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/tags/hugo/index.xml" title="Divyam Ahuja">
</head>
<body>
<div class="site-wrapper"><header class="site-header">
<div class="site-header-inner">
<a href="/" class="site-title">Divyam Ahuja</a>
<nav class="site-nav"><a href="/">Home</a><span class="nav-separator">|</span><a href="/posts/">Blog</a><span class="nav-separator">|</span><a href="/projects/">Projects</a><span class="nav-separator">|</span><a href="/resume/">Resume</a></nav>
</div>
</header>
<main>
<h1 class="page-title">Hugo</h1>
<div class="post-content">
</div>
</main>
</div><footer class="site-footer">
<div class="site-wrapper">
<div class="site-footer-inner">
<div class="footer-copyright">
&copy; 2026 Divyam Ahuja
</div>
<div class="social-icons"><a href="https://github.com/ahujadivyam" target="_blank" rel="noopener noreferrer" title="GitHub"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg></a><a href="https://linkedin.com/in/ahujadivyam" target="_blank" rel="noopener noreferrer" title="LinkedIn"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a><a href="https://git.divyam.dev" target="_blank" rel="noopener noreferrer" title="Git"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM3 6a3 3 0 0 1 5.83-.75h4.34A3.001 3.001 0 0 1 18 6a3 3 0 0 1-4.83.75H8.83A3.001 3.001 0 0 1 3 6zm3 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 3a3 3 0 0 1 0-6 3 3 0 0 1 0 6zm12-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6z" fill="none"/><path d="M6 2a4 4 0 0 0-1 7.874V14.126A4.002 4.002 0 0 0 6 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 6 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm12-12a4 4 0 0 0-1 7.874v2.252A4.002 4.002 0 0 0 18 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 18 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/></svg></a><a href="mailto:ahujadivyam@gmail.com" target="_blank" rel="noopener noreferrer" title="Email"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"/><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"/></svg></a><a href="/index.xml" title="RSS Feed">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.295 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

View file

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Hugo on Divyam Ahuja</title>
<link>http://localhost:1313/tags/hugo/</link>
<description>Recent content in Hugo on Divyam Ahuja</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Fri, 08 May 2026 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/tags/hugo/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Hello World</title>
<link>http://localhost:1313/posts/hello-world/</link>
<pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/posts/hello-world/</guid>
<description>&lt;p&gt;Welcome to my new blog! I&amp;rsquo;ve rebuilt my personal website from scratch using &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;, a fast static site generator written in Go.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-hugo&#34;&gt;Why Hugo?&lt;/h2&gt;&#xA;&lt;p&gt;I wanted something minimal, fast, and that gets out of the way. Hugo checks all the boxes:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Blazing fast builds&lt;/strong&gt; — the entire site builds in under 100ms&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Markdown-first&lt;/strong&gt; — I write posts in plain markdown files&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Zero JavaScript&lt;/strong&gt; — the site ships pure HTML and CSS&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Built-in features&lt;/strong&gt; — syntax highlighting, RSS feeds, sitemaps, all out of the box&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;the-design&#34;&gt;The Design&lt;/h2&gt;&#xA;&lt;p&gt;The design is inspired by the &lt;a href=&#34;https://probberechts.github.io/hexo-theme-cactus/&#34;&gt;Cactus Dark&lt;/a&gt; theme — a minimalist, terminal-inspired aesthetic with monospace typography and a dark color scheme. I built the theme from scratch for full control.&lt;/p&gt;</description>
</item>
</channel>
</rss>

View file

@ -1,60 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Software Engineer">
<meta name="author" content="Divyam Ahuja">
<meta property="og:title" content="Tags">
<meta property="og:description" content="Software Engineer">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:1313/tags/">
<meta property="og:site_name" content="Divyam Ahuja">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Tags">
<meta name="twitter:description" content="Software Engineer">
<title>Tags · Divyam Ahuja</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="http://localhost:1313/css/style.min.86de29e37fd55fb8581ee5569d0e766097f2718b8f8029e4e11c87973d24a5b1.css">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/tags/index.xml" title="Divyam Ahuja">
</head>
<body>
<div class="site-wrapper"><header class="site-header">
<div class="site-header-inner">
<a href="/" class="site-title">Divyam Ahuja</a>
<nav class="site-nav"><a href="/">Home</a><span class="nav-separator">|</span><a href="/posts/">Blog</a><span class="nav-separator">|</span><a href="/projects/">Projects</a><span class="nav-separator">|</span><a href="/resume/">Resume</a></nav>
</div>
</header>
<main>
<h1 class="page-title">Tags</h1>
<div class="post-content">
</div>
</main>
</div><footer class="site-footer">
<div class="site-wrapper">
<div class="site-footer-inner">
<div class="footer-copyright">
&copy; 2026 Divyam Ahuja
</div>
<div class="social-icons"><a href="https://github.com/ahujadivyam" target="_blank" rel="noopener noreferrer" title="GitHub"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg></a><a href="https://linkedin.com/in/ahujadivyam" target="_blank" rel="noopener noreferrer" title="LinkedIn"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a><a href="https://git.divyam.dev" target="_blank" rel="noopener noreferrer" title="Git"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM3 6a3 3 0 0 1 5.83-.75h4.34A3.001 3.001 0 0 1 18 6a3 3 0 0 1-4.83.75H8.83A3.001 3.001 0 0 1 3 6zm3 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 3a3 3 0 0 1 0-6 3 3 0 0 1 0 6zm12-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6z" fill="none"/><path d="M6 2a4 4 0 0 0-1 7.874V14.126A4.002 4.002 0 0 0 6 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 6 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm12-12a4 4 0 0 0-1 7.874v2.252A4.002 4.002 0 0 0 18 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 18 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/></svg></a><a href="mailto:ahujadivyam@gmail.com" target="_blank" rel="noopener noreferrer" title="Email"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"/><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"/></svg></a><a href="/index.xml" title="RSS Feed">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.295 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

View file

@ -1,47 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Tags on Divyam Ahuja</title>
<link>http://localhost:1313/tags/</link>
<description>Recent content in Tags on Divyam Ahuja</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Fri, 08 May 2026 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/tags/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Hugo</title>
<link>http://localhost:1313/tags/hugo/</link>
<pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/tags/hugo/</guid>
<description></description>
</item>
<item>
<title>Meta</title>
<link>http://localhost:1313/tags/meta/</link>
<pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/tags/meta/</guid>
<description></description>
</item>
<item>
<title>Ml</title>
<link>http://localhost:1313/tags/ml/</link>
<pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/tags/ml/</guid>
<description></description>
</item>
<item>
<title>Ocr</title>
<link>http://localhost:1313/tags/ocr/</link>
<pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/tags/ocr/</guid>
<description></description>
</item>
<item>
<title>Python</title>
<link>http://localhost:1313/tags/python/</link>
<pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/tags/python/</guid>
<description></description>
</item>
</channel>
</rss>

View file

@ -1,60 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Software Engineer">
<meta name="author" content="Divyam Ahuja">
<meta property="og:title" content="Meta">
<meta property="og:description" content="Software Engineer">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:1313/tags/meta/">
<meta property="og:site_name" content="Divyam Ahuja">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Meta">
<meta name="twitter:description" content="Software Engineer">
<title>Meta · Divyam Ahuja</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="http://localhost:1313/css/style.min.86de29e37fd55fb8581ee5569d0e766097f2718b8f8029e4e11c87973d24a5b1.css">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/tags/meta/index.xml" title="Divyam Ahuja">
</head>
<body>
<div class="site-wrapper"><header class="site-header">
<div class="site-header-inner">
<a href="/" class="site-title">Divyam Ahuja</a>
<nav class="site-nav"><a href="/">Home</a><span class="nav-separator">|</span><a href="/posts/">Blog</a><span class="nav-separator">|</span><a href="/projects/">Projects</a><span class="nav-separator">|</span><a href="/resume/">Resume</a></nav>
</div>
</header>
<main>
<h1 class="page-title">Meta</h1>
<div class="post-content">
</div>
</main>
</div><footer class="site-footer">
<div class="site-wrapper">
<div class="site-footer-inner">
<div class="footer-copyright">
&copy; 2026 Divyam Ahuja
</div>
<div class="social-icons"><a href="https://github.com/ahujadivyam" target="_blank" rel="noopener noreferrer" title="GitHub"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg></a><a href="https://linkedin.com/in/ahujadivyam" target="_blank" rel="noopener noreferrer" title="LinkedIn"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a><a href="https://git.divyam.dev" target="_blank" rel="noopener noreferrer" title="Git"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM3 6a3 3 0 0 1 5.83-.75h4.34A3.001 3.001 0 0 1 18 6a3 3 0 0 1-4.83.75H8.83A3.001 3.001 0 0 1 3 6zm3 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 3a3 3 0 0 1 0-6 3 3 0 0 1 0 6zm12-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6z" fill="none"/><path d="M6 2a4 4 0 0 0-1 7.874V14.126A4.002 4.002 0 0 0 6 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 6 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm12-12a4 4 0 0 0-1 7.874v2.252A4.002 4.002 0 0 0 18 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 18 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/></svg></a><a href="mailto:ahujadivyam@gmail.com" target="_blank" rel="noopener noreferrer" title="Email"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"/><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"/></svg></a><a href="/index.xml" title="RSS Feed">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.295 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

View file

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Meta on Divyam Ahuja</title>
<link>http://localhost:1313/tags/meta/</link>
<description>Recent content in Meta on Divyam Ahuja</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Fri, 08 May 2026 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/tags/meta/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Hello World</title>
<link>http://localhost:1313/posts/hello-world/</link>
<pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/posts/hello-world/</guid>
<description>&lt;p&gt;Welcome to my new blog! I&amp;rsquo;ve rebuilt my personal website from scratch using &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;, a fast static site generator written in Go.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-hugo&#34;&gt;Why Hugo?&lt;/h2&gt;&#xA;&lt;p&gt;I wanted something minimal, fast, and that gets out of the way. Hugo checks all the boxes:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Blazing fast builds&lt;/strong&gt; — the entire site builds in under 100ms&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Markdown-first&lt;/strong&gt; — I write posts in plain markdown files&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Zero JavaScript&lt;/strong&gt; — the site ships pure HTML and CSS&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Built-in features&lt;/strong&gt; — syntax highlighting, RSS feeds, sitemaps, all out of the box&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;the-design&#34;&gt;The Design&lt;/h2&gt;&#xA;&lt;p&gt;The design is inspired by the &lt;a href=&#34;https://probberechts.github.io/hexo-theme-cactus/&#34;&gt;Cactus Dark&lt;/a&gt; theme — a minimalist, terminal-inspired aesthetic with monospace typography and a dark color scheme. I built the theme from scratch for full control.&lt;/p&gt;</description>
</item>
</channel>
</rss>

View file

@ -1,60 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Software Engineer">
<meta name="author" content="Divyam Ahuja">
<meta property="og:title" content="Ml">
<meta property="og:description" content="Software Engineer">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:1313/tags/ml/">
<meta property="og:site_name" content="Divyam Ahuja">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Ml">
<meta name="twitter:description" content="Software Engineer">
<title>Ml · Divyam Ahuja</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="http://localhost:1313/css/style.min.86de29e37fd55fb8581ee5569d0e766097f2718b8f8029e4e11c87973d24a5b1.css">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/tags/ml/index.xml" title="Divyam Ahuja">
</head>
<body>
<div class="site-wrapper"><header class="site-header">
<div class="site-header-inner">
<a href="/" class="site-title">Divyam Ahuja</a>
<nav class="site-nav"><a href="/">Home</a><span class="nav-separator">|</span><a href="/posts/">Blog</a><span class="nav-separator">|</span><a href="/projects/">Projects</a><span class="nav-separator">|</span><a href="/resume/">Resume</a></nav>
</div>
</header>
<main>
<h1 class="page-title">Ml</h1>
<div class="post-content">
</div>
</main>
</div><footer class="site-footer">
<div class="site-wrapper">
<div class="site-footer-inner">
<div class="footer-copyright">
&copy; 2026 Divyam Ahuja
</div>
<div class="social-icons"><a href="https://github.com/ahujadivyam" target="_blank" rel="noopener noreferrer" title="GitHub"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg></a><a href="https://linkedin.com/in/ahujadivyam" target="_blank" rel="noopener noreferrer" title="LinkedIn"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a><a href="https://git.divyam.dev" target="_blank" rel="noopener noreferrer" title="Git"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM3 6a3 3 0 0 1 5.83-.75h4.34A3.001 3.001 0 0 1 18 6a3 3 0 0 1-4.83.75H8.83A3.001 3.001 0 0 1 3 6zm3 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 3a3 3 0 0 1 0-6 3 3 0 0 1 0 6zm12-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6z" fill="none"/><path d="M6 2a4 4 0 0 0-1 7.874V14.126A4.002 4.002 0 0 0 6 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 6 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm12-12a4 4 0 0 0-1 7.874v2.252A4.002 4.002 0 0 0 18 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 18 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/></svg></a><a href="mailto:ahujadivyam@gmail.com" target="_blank" rel="noopener noreferrer" title="Email"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"/><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"/></svg></a><a href="/index.xml" title="RSS Feed">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.295 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

View file

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Ml on Divyam Ahuja</title>
<link>http://localhost:1313/tags/ml/</link>
<description>Recent content in Ml on Divyam Ahuja</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Wed, 11 Feb 2026 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/tags/ml/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Building a PDF Translation Pipeline</title>
<link>http://localhost:1313/posts/pdf-translation-pipeline/</link>
<pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/posts/pdf-translation-pipeline/</guid>
<description>&lt;p&gt;Recently, I needed to translate a PDF document from Hindi to English. Sounds simple enough, right? Turns out, it&amp;rsquo;s a surprisingly deep rabbit hole.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-pipeline&#34;&gt;The Pipeline&lt;/h2&gt;&#xA;&lt;p&gt;The approach I settled on follows this flow:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PDF → Images → OCR → Translation → Rendered Images → PDF&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Each step has its own set of challenges:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;PDF to Images&lt;/strong&gt;: Convert each page to a high-DPI image for better OCR accuracy&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;OCR&lt;/strong&gt;: Extract text with position data using PaddleOCR&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Translation&lt;/strong&gt;: Run extracted text through NLLB (No Language Left Behind)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Rendering&lt;/strong&gt;: Paint translated text back onto the original image&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Assembly&lt;/strong&gt;: Combine rendered images back into a PDF&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;lessons-learned&#34;&gt;Lessons Learned&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;DPI matters a lot&lt;/strong&gt; — bumping from 150 to 300 DPI dramatically improved OCR accuracy for Hindi text&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Font rendering is hard&lt;/strong&gt; — getting translated text to fit in the same bounding boxes required careful font size calculation&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Fallback strategies&lt;/strong&gt; — TrOCR as a fallback when PaddleOCR fails on certain text regions&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The code is messy but it works. Sometimes that&amp;rsquo;s enough.&lt;/p&gt;</description>
</item>
</channel>
</rss>

View file

@ -1,60 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Software Engineer">
<meta name="author" content="Divyam Ahuja">
<meta property="og:title" content="Ocr">
<meta property="og:description" content="Software Engineer">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:1313/tags/ocr/">
<meta property="og:site_name" content="Divyam Ahuja">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Ocr">
<meta name="twitter:description" content="Software Engineer">
<title>Ocr · Divyam Ahuja</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="http://localhost:1313/css/style.min.86de29e37fd55fb8581ee5569d0e766097f2718b8f8029e4e11c87973d24a5b1.css">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/tags/ocr/index.xml" title="Divyam Ahuja">
</head>
<body>
<div class="site-wrapper"><header class="site-header">
<div class="site-header-inner">
<a href="/" class="site-title">Divyam Ahuja</a>
<nav class="site-nav"><a href="/">Home</a><span class="nav-separator">|</span><a href="/posts/">Blog</a><span class="nav-separator">|</span><a href="/projects/">Projects</a><span class="nav-separator">|</span><a href="/resume/">Resume</a></nav>
</div>
</header>
<main>
<h1 class="page-title">Ocr</h1>
<div class="post-content">
</div>
</main>
</div><footer class="site-footer">
<div class="site-wrapper">
<div class="site-footer-inner">
<div class="footer-copyright">
&copy; 2026 Divyam Ahuja
</div>
<div class="social-icons"><a href="https://github.com/ahujadivyam" target="_blank" rel="noopener noreferrer" title="GitHub"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg></a><a href="https://linkedin.com/in/ahujadivyam" target="_blank" rel="noopener noreferrer" title="LinkedIn"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a><a href="https://git.divyam.dev" target="_blank" rel="noopener noreferrer" title="Git"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM3 6a3 3 0 0 1 5.83-.75h4.34A3.001 3.001 0 0 1 18 6a3 3 0 0 1-4.83.75H8.83A3.001 3.001 0 0 1 3 6zm3 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 3a3 3 0 0 1 0-6 3 3 0 0 1 0 6zm12-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6z" fill="none"/><path d="M6 2a4 4 0 0 0-1 7.874V14.126A4.002 4.002 0 0 0 6 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 6 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm12-12a4 4 0 0 0-1 7.874v2.252A4.002 4.002 0 0 0 18 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 18 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/></svg></a><a href="mailto:ahujadivyam@gmail.com" target="_blank" rel="noopener noreferrer" title="Email"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"/><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"/></svg></a><a href="/index.xml" title="RSS Feed">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.295 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

View file

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Ocr on Divyam Ahuja</title>
<link>http://localhost:1313/tags/ocr/</link>
<description>Recent content in Ocr on Divyam Ahuja</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Wed, 11 Feb 2026 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/tags/ocr/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Building a PDF Translation Pipeline</title>
<link>http://localhost:1313/posts/pdf-translation-pipeline/</link>
<pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/posts/pdf-translation-pipeline/</guid>
<description>&lt;p&gt;Recently, I needed to translate a PDF document from Hindi to English. Sounds simple enough, right? Turns out, it&amp;rsquo;s a surprisingly deep rabbit hole.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-pipeline&#34;&gt;The Pipeline&lt;/h2&gt;&#xA;&lt;p&gt;The approach I settled on follows this flow:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PDF → Images → OCR → Translation → Rendered Images → PDF&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Each step has its own set of challenges:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;PDF to Images&lt;/strong&gt;: Convert each page to a high-DPI image for better OCR accuracy&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;OCR&lt;/strong&gt;: Extract text with position data using PaddleOCR&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Translation&lt;/strong&gt;: Run extracted text through NLLB (No Language Left Behind)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Rendering&lt;/strong&gt;: Paint translated text back onto the original image&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Assembly&lt;/strong&gt;: Combine rendered images back into a PDF&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;lessons-learned&#34;&gt;Lessons Learned&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;DPI matters a lot&lt;/strong&gt; — bumping from 150 to 300 DPI dramatically improved OCR accuracy for Hindi text&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Font rendering is hard&lt;/strong&gt; — getting translated text to fit in the same bounding boxes required careful font size calculation&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Fallback strategies&lt;/strong&gt; — TrOCR as a fallback when PaddleOCR fails on certain text regions&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The code is messy but it works. Sometimes that&amp;rsquo;s enough.&lt;/p&gt;</description>
</item>
</channel>
</rss>

View file

@ -1,60 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Software Engineer">
<meta name="author" content="Divyam Ahuja">
<meta property="og:title" content="Python">
<meta property="og:description" content="Software Engineer">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:1313/tags/python/">
<meta property="og:site_name" content="Divyam Ahuja">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Python">
<meta name="twitter:description" content="Software Engineer">
<title>Python · Divyam Ahuja</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="http://localhost:1313/css/style.min.86de29e37fd55fb8581ee5569d0e766097f2718b8f8029e4e11c87973d24a5b1.css">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/tags/python/index.xml" title="Divyam Ahuja">
</head>
<body>
<div class="site-wrapper"><header class="site-header">
<div class="site-header-inner">
<a href="/" class="site-title">Divyam Ahuja</a>
<nav class="site-nav"><a href="/">Home</a><span class="nav-separator">|</span><a href="/posts/">Blog</a><span class="nav-separator">|</span><a href="/projects/">Projects</a><span class="nav-separator">|</span><a href="/resume/">Resume</a></nav>
</div>
</header>
<main>
<h1 class="page-title">Python</h1>
<div class="post-content">
</div>
</main>
</div><footer class="site-footer">
<div class="site-wrapper">
<div class="site-footer-inner">
<div class="footer-copyright">
&copy; 2026 Divyam Ahuja
</div>
<div class="social-icons"><a href="https://github.com/ahujadivyam" target="_blank" rel="noopener noreferrer" title="GitHub"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg></a><a href="https://linkedin.com/in/ahujadivyam" target="_blank" rel="noopener noreferrer" title="LinkedIn"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a><a href="https://git.divyam.dev" target="_blank" rel="noopener noreferrer" title="Git"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM3 6a3 3 0 0 1 5.83-.75h4.34A3.001 3.001 0 0 1 18 6a3 3 0 0 1-4.83.75H8.83A3.001 3.001 0 0 1 3 6zm3 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 3a3 3 0 0 1 0-6 3 3 0 0 1 0 6zm12-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6z" fill="none"/><path d="M6 2a4 4 0 0 0-1 7.874V14.126A4.002 4.002 0 0 0 6 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 6 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm12-12a4 4 0 0 0-1 7.874v2.252A4.002 4.002 0 0 0 18 22a4 4 0 0 0 1-7.874V9.874A4.002 4.002 0 0 0 18 2zm0 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm0 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/></svg></a><a href="mailto:ahujadivyam@gmail.com" target="_blank" rel="noopener noreferrer" title="Email"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"/><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"/></svg></a><a href="/index.xml" title="RSS Feed">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.295 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

View file

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Python on Divyam Ahuja</title>
<link>http://localhost:1313/tags/python/</link>
<description>Recent content in Python on Divyam Ahuja</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Wed, 11 Feb 2026 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/tags/python/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Building a PDF Translation Pipeline</title>
<link>http://localhost:1313/posts/pdf-translation-pipeline/</link>
<pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/posts/pdf-translation-pipeline/</guid>
<description>&lt;p&gt;Recently, I needed to translate a PDF document from Hindi to English. Sounds simple enough, right? Turns out, it&amp;rsquo;s a surprisingly deep rabbit hole.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-pipeline&#34;&gt;The Pipeline&lt;/h2&gt;&#xA;&lt;p&gt;The approach I settled on follows this flow:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PDF → Images → OCR → Translation → Rendered Images → PDF&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Each step has its own set of challenges:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;PDF to Images&lt;/strong&gt;: Convert each page to a high-DPI image for better OCR accuracy&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;OCR&lt;/strong&gt;: Extract text with position data using PaddleOCR&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Translation&lt;/strong&gt;: Run extracted text through NLLB (No Language Left Behind)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Rendering&lt;/strong&gt;: Paint translated text back onto the original image&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Assembly&lt;/strong&gt;: Combine rendered images back into a PDF&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;lessons-learned&#34;&gt;Lessons Learned&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;DPI matters a lot&lt;/strong&gt; — bumping from 150 to 300 DPI dramatically improved OCR accuracy for Hindi text&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Font rendering is hard&lt;/strong&gt; — getting translated text to fit in the same bounding boxes required careful font size calculation&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Fallback strategies&lt;/strong&gt; — TrOCR as a fallback when PaddleOCR fails on certain text regions&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The code is messy but it works. Sometimes that&amp;rsquo;s enough.&lt;/p&gt;</description>
</item>
</channel>
</rss>