chore: add gitignore and remove tracked build artifacts
This commit is contained in:
parent
9b79e8e60d
commit
05b4d4cad8
36 changed files with 70 additions and 4043 deletions
12
.gitignore
vendored
Normal file
12
.gitignore
vendored
Normal 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
|
||||
|
|
@ -901,3 +901,55 @@ th {
|
|||
main {
|
||||
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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,12 @@
|
|||
</div>
|
||||
</div>
|
||||
<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 }}
|
||||
</div>
|
||||
<hr>
|
||||
|
|
|
|||
|
|
@ -1,73 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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’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’m not writing code, I’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’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’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">
|
||||
© 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>
|
||||
|
|
@ -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 |
|
|
@ -1,60 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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">
|
||||
© 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>
|
||||
|
|
@ -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>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -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 |
|
|
@ -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&v=2&port=1313&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's audio processing</p>
|
||||
<div class="project-card-tags">
|
||||
<span class="project-card-tag">C++</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">
|
||||
© 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>
|
||||
|
|
@ -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><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></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><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></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><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></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>
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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’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’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">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s2">"""Return a greeting message."""</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="sa">f</span><span class="s2">"Hello, </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">! Welcome to divyam.dev"</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">"__main__"</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">"World"</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">=></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">'/api/posts'</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">=></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’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’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">
|
||||
© 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>
|
||||
|
|
@ -1,74 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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">
|
||||
© 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>
|
||||
|
|
@ -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><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></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><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></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
@ -1,94 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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’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’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">
|
||||
© 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>
|
||||
|
|
@ -1,110 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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've built">
|
||||
<meta name="author" content="Divyam Ahuja">
|
||||
|
||||
|
||||
<meta property="og:title" content="Projects">
|
||||
<meta property="og:description" content="Things I'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'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's audio processing</p>
|
||||
<div class="project-card-tags">
|
||||
<span class="project-card-tag">C++</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">
|
||||
© 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>
|
||||
2506
public/resume.pdf
2506
public/resume.pdf
File diff suppressed because it is too large
Load diff
|
|
@ -1,203 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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>>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++, 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++, 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++, 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">
|
||||
© 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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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">
|
||||
© 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>
|
||||
|
|
@ -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><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></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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">
|
||||
© 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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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">
|
||||
© 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>
|
||||
|
|
@ -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><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></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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">
|
||||
© 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>
|
||||
|
|
@ -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><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></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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">
|
||||
© 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>
|
||||
|
|
@ -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><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></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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">
|
||||
© 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>
|
||||
|
|
@ -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><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></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
Loading…
Reference in a new issue