Skip to content

Commit

Permalink
Deploy dhruv-ahuja/dhruv-ahuja.github.io to dhruv-ahuja/dhruv-ahuja.g…
Browse files Browse the repository at this point in the history
…ithub.io:gh-pages
  • Loading branch information
GitHub Actions committed Oct 20, 2024
0 parents commit 36eeab0
Show file tree
Hide file tree
Showing 89 changed files with 1,438 additions and 0 deletions.
3 changes: 3 additions & 0 deletions 404.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<!doctype html><html><head><meta charset=UTF-8><meta content="IE=edge" http-equiv=X-UA-Compatible><meta content="width=device-width,initial-scale=1.0" name=viewport><title>
dhruv-ahuja
</title><meta content=dhruv-ahuja property=og:title><link href=https://dhruvahuja.me/fonts.css rel=stylesheet><script async data-goatcounter=https://dhruv-ahuja.goatcounter.com/count src=https://dhruvahuja.me/js/count.js></script><noscript><img src="https://dhruv-ahuja.goatcounter.com//count?p=/&t=dhruv-ahuja"></noscript><link href=https://dhruvahuja.me/atom.xml rel=alternate title=dhruv-ahuja type=application/atom+xml><link href=https://dhruvahuja.me/main.css media=screen rel=stylesheet><link href=https://dhruvahuja.me/theme/light.css rel=stylesheet><link media="(prefers-color-scheme: dark)" href=https://dhruvahuja.me/theme/dark.css rel=stylesheet><script src=https://dhruvahuja.me/js/feather.min.js></script><body><div class=content><header><div class=main><a href=https://dhruvahuja.me>dhruv-ahuja</a><div class=socials><a class=social href=mailto:dhruvahuja2k@gmail.com rel=me target=_blank> <img alt=email src=/social_icons/email.svg> </a><a class=social href=https://www.linkedin.com/in/dhruvahuja2k/ rel=me target=_blank> <img alt=linkedin src=/social_icons/linkedin.svg> </a><a class=social href=https://github.com/dhruv-ahuja/ rel=me target=_blank> <img alt=github src=/social_icons/github.svg> </a></div></div><nav><a href=/posts style=margin-left:.7em>/posts</a><a href=/projects style=margin-left:.7em>/projects</a> | <a href id=dark-mode-toggle onclick=toggleTheme()></a><script src=https://dhruvahuja.me/js/themetoggle.js></script></nav></header><main class=centered-header><div class=page-header>404<span class=primary-color style=font-size:1.6em>.</span></div><span>Page not found :(</span></main></div>
1 change: 1 addition & 0 deletions CNAME
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
dhruvahuja.me
602 changes: 602 additions & 0 deletions atom.xml

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions fonts.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Empty file added fonts/.gitkeep
Empty file.
Binary file added fonts/JetbrainsMono/JetBrainsMono-Bold.ttf
Binary file not shown.
Binary file added fonts/JetbrainsMono/JetBrainsMono-BoldItalic.ttf
Binary file not shown.
Binary file added fonts/JetbrainsMono/JetBrainsMono-ExtraBold.ttf
Binary file not shown.
Binary file not shown.
Binary file added fonts/JetbrainsMono/JetBrainsMono-ExtraLight.ttf
Binary file not shown.
Binary file not shown.
Binary file added fonts/JetbrainsMono/JetBrainsMono-Italic.ttf
Binary file not shown.
Binary file added fonts/JetbrainsMono/JetBrainsMono-Light.ttf
Binary file not shown.
Binary file not shown.
Binary file added fonts/JetbrainsMono/JetBrainsMono-Medium.ttf
Binary file not shown.
Binary file not shown.
Binary file added fonts/JetbrainsMono/JetBrainsMono-Regular.ttf
Binary file not shown.
Binary file added fonts/JetbrainsMono/JetBrainsMono-SemiBold.ttf
Binary file not shown.
Binary file not shown.
Binary file added fonts/JetbrainsMono/JetBrainsMono-Thin.ttf
Binary file not shown.
Binary file added fonts/JetbrainsMono/JetBrainsMono-ThinItalic.ttf
Binary file not shown.
Binary file added fonts/SpaceGrotesk/SpaceGrotesk-Bold.ttf
Binary file not shown.
Binary file added fonts/SpaceGrotesk/SpaceGrotesk-Light.ttf
Binary file not shown.
Binary file added fonts/SpaceGrotesk/SpaceGrotesk-Medium.ttf
Binary file not shown.
Binary file added fonts/SpaceGrotesk/SpaceGrotesk-Regular.ttf
Binary file not shown.
Binary file added fonts/SpaceGrotesk/SpaceGrotesk-SemiBold.ttf
Binary file not shown.
Binary file added images/mongodb_writes/poe_script_async.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/mongodb_writes/poe_script_memory_usage.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/repository_secrets.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<!doctype html><html><head><meta charset=UTF-8><meta content="IE=edge" http-equiv=X-UA-Compatible><meta content="width=device-width,initial-scale=1.0" name=viewport><title>
dhruv-ahuja
</title><meta content=dhruv-ahuja property=og:title><link href=https://dhruvahuja.me/fonts.css rel=stylesheet><script async data-goatcounter=https://dhruv-ahuja.goatcounter.com/count src=https://dhruvahuja.me/js/count.js></script><noscript><img src="https://dhruv-ahuja.goatcounter.com//count?p=/&t=dhruv-ahuja"></noscript><link href=https://dhruvahuja.me/atom.xml rel=alternate title=dhruv-ahuja type=application/atom+xml><link href=https://dhruvahuja.me/main.css media=screen rel=stylesheet><link href=https://dhruvahuja.me/theme/light.css rel=stylesheet><link media="(prefers-color-scheme: dark)" href=https://dhruvahuja.me/theme/dark.css rel=stylesheet><script src=https://dhruvahuja.me/js/feather.min.js></script><body><div class=content><header><div class=main><a href=https://dhruvahuja.me>dhruv-ahuja</a><div class=socials><a class=social href=mailto:dhruvahuja2k@gmail.com rel=me target=_blank> <img alt=email src=/social_icons/email.svg> </a><a class=social href=https://www.linkedin.com/in/dhruvahuja2k/ rel=me target=_blank> <img alt=linkedin src=/social_icons/linkedin.svg> </a><a class=social href=https://github.com/dhruv-ahuja/ rel=me target=_blank> <img alt=github src=/social_icons/github.svg> </a></div></div><nav><a href=/posts style=margin-left:.7em>/posts</a><a href=/projects style=margin-left:.7em>/projects</a> | <a href id=dark-mode-toggle onclick=toggleTheme()></a><script src=https://dhruvahuja.me/js/themetoggle.js></script></nav></header><main><article><div class=title><div class=page-header>About Me<span class=primary-color style=font-size:1.6em>.</span></div><div class=meta></div></div><section class=body><h2 id=tech>Tech</h2><p>Welcome to my website, my name is Dhruv and I’m a self-taught software engineer mostly interested in backend with a pinch of frontend engineering. I started programming in May of 2021 and started working professionally in July 2022. The first language that I learnt and the one that I work in primarily is Python, though I spent several months just nerding over Rust sometime back, proof of which can found in my blogs and projects. I am also exploring and practicing frontend technologies.<p>I am currently primarily hacking on <a href=https://github.com/dhruv-ahuja/backend_burger>backend_burger</a> and learning about scalable backend concepts plus some computer science concepts as well.<h2 id=interests>Interests</h2><p>I was learning Spanish and French before pivoting to tech, it has been two plus years now but I still listen to Spanish songs on a regular basis. Reading is a big passion of mine and I delve into long reading sessions frequently. I have sometime back finished the Witcher and Mistborn (1st generation) series.<p>I’m also into audio-gear – <a href=https://en.creative.com/p/speakers/creative-pebble-v3>Creative Pebble V3</a> for the desk and the <a href=https://shenzhenaudio.com/products/truthear-zero-earphone-dual-dynamic-drivers-pu-lcp-composite-diaphragm-in-ear-headphone>Truthear X Crinacle Zero</a>, EQd to Project Red V3, for mostly all other occasions. Both of these options are great value products and I’m super happy with them, for the time being :P I have also recently upgraded to the RK84 V2 keyboard with Gateron brown switches, a bliss to type on and has helluva battery life.<h2 id=contact>Contact</h2><p>You can write to me at <a href=mailto:dhruvahuja2k@gmail.com>my email</a>, connect with me on <a href=https://www.linkedin.com/in/dhruvahuja2k/>LinkedIn</a> and find my side-activity and projects on <a href=https://github.com/dhruv-ahuja/>Github</a>.</section></article></main></div></body><footer><p>Made with <a href=https://www.getzola.org/ target=_blank>Zola</a>, using a <a href=https://github.com/dhruv-ahuja/apollo-custom target=_blank>custom variant</a> of the <a href=https://github.com/not-matthias/apollo target=_blank>Apollo</a> theme.</footer>
270 changes: 270 additions & 0 deletions js/count.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,270 @@
// GoatCounter: https://www.goatcounter.com
// This file (and *only* this file) is released under the ISC license:
// https://opensource.org/licenses/ISC
;(function() {
'use strict';

if (window.goatcounter && window.goatcounter.vars) // Compatibility with very old version; do not use.
window.goatcounter = window.goatcounter.vars
else
window.goatcounter = window.goatcounter || {}

// Load settings from data-goatcounter-settings.
var s = document.querySelector('script[data-goatcounter]')
if (s && s.dataset.goatcounterSettings) {
try { var set = JSON.parse(s.dataset.goatcounterSettings) }
catch (err) { console.error('invalid JSON in data-goatcounter-settings: ' + err) }
for (var k in set)
if (['no_onload', 'no_events', 'allow_local', 'allow_frame', 'path', 'title', 'referrer', 'event'].indexOf(k) > -1)
window.goatcounter[k] = set[k]
}

var enc = encodeURIComponent

// Get all data we're going to send off to the counter endpoint.
var get_data = function(vars) {
var data = {
p: (vars.path === undefined ? goatcounter.path : vars.path),
r: (vars.referrer === undefined ? goatcounter.referrer : vars.referrer),
t: (vars.title === undefined ? goatcounter.title : vars.title),
e: !!(vars.event || goatcounter.event),
s: [window.screen.width, window.screen.height, (window.devicePixelRatio || 1)],
b: is_bot(),
q: location.search,
}

var rcb, pcb, tcb // Save callbacks to apply later.
if (typeof(data.r) === 'function') rcb = data.r
if (typeof(data.t) === 'function') tcb = data.t
if (typeof(data.p) === 'function') pcb = data.p

if (is_empty(data.r)) data.r = document.referrer
if (is_empty(data.t)) data.t = document.title
if (is_empty(data.p)) data.p = get_path()

if (rcb) data.r = rcb(data.r)
if (tcb) data.t = tcb(data.t)
if (pcb) data.p = pcb(data.p)
return data
}

// Check if a value is "empty" for the purpose of get_data().
var is_empty = function(v) { return v === null || v === undefined || typeof(v) === 'function' }

// See if this looks like a bot; there is some additional filtering on the
// backend, but these properties can't be fetched from there.
var is_bot = function() {
// Headless browsers are probably a bot.
var w = window, d = document
if (w.callPhantom || w._phantom || w.phantom)
return 150
if (w.__nightmare)
return 151
if (d.__selenium_unwrapped || d.__webdriver_evaluate || d.__driver_evaluate)
return 152
if (navigator.webdriver)
return 153
return 0
}

// Object to urlencoded string, starting with a ?.
var urlencode = function(obj) {
var p = []
for (var k in obj)
if (obj[k] !== '' && obj[k] !== null && obj[k] !== undefined && obj[k] !== false)
p.push(enc(k) + '=' + enc(obj[k]))
return '?' + p.join('&')
}

// Show a warning in the console.
var warn = function(msg) {
if (console && 'warn' in console)
console.warn('goatcounter: ' + msg)
}

// Get the endpoint to send requests to.
var get_endpoint = function() {
var s = document.querySelector('script[data-goatcounter]')
if (s && s.dataset.goatcounter)
return s.dataset.goatcounter
return (goatcounter.endpoint || window.counter) // counter is for compat; don't use.
}

// Get current path.
var get_path = function() {
var loc = location,
c = document.querySelector('link[rel="canonical"][href]')
if (c) { // May be relative or point to different domain.
var a = document.createElement('a')
a.href = c.href
if (a.hostname.replace(/^www\./, '') === location.hostname.replace(/^www\./, ''))
loc = a
}
return (loc.pathname + loc.search) || '/'
}

// Run function after DOM is loaded.
var on_load = function(f) {
if (document.body === null)
document.addEventListener('DOMContentLoaded', function() { f() }, false)
else
f()
}

// Filter some requests that we (probably) don't want to count.
goatcounter.filter = function() {
if ('visibilityState' in document && document.visibilityState === 'prerender')
return 'visibilityState'
if (!goatcounter.allow_frame && location !== parent.location)
return 'frame'
if (!goatcounter.allow_local && location.hostname.match(/(localhost$|^127\.|^10\.|^172\.(1[6-9]|2[0-9]|3[0-1])\.|^192\.168\.|^0\.0\.0\.0$)/))
return 'localhost'
if (!goatcounter.allow_local && location.protocol === 'file:')
return 'localfile'
if (localStorage && localStorage.getItem('skipgc') === 't')
return 'disabled with #toggle-goatcounter'
return false
}

// Get URL to send to GoatCounter.
window.goatcounter.url = function(vars) {
var data = get_data(vars || {})
if (data.p === null) // null from user callback.
return
data.rnd = Math.random().toString(36).substr(2, 5) // Browsers don't always listen to Cache-Control.

var endpoint = get_endpoint()
if (!endpoint)
return warn('no endpoint found')

return endpoint + urlencode(data)
}

// Count a hit.
window.goatcounter.count = function(vars) {
var f = goatcounter.filter()
if (f)
return warn('not counting because of: ' + f)

var url = goatcounter.url(vars)
if (!url)
return warn('not counting because path callback returned null')

var img = document.createElement('img')
img.src = url
img.style.position = 'absolute' // Affect layout less.
img.style.bottom = '0px'
img.style.width = '1px'
img.style.height = '1px'
img.loading = 'eager'
img.setAttribute('alt', '')
img.setAttribute('aria-hidden', 'true')

var rm = function() { if (img && img.parentNode) img.parentNode.removeChild(img) }
img.addEventListener('load', rm, false)
document.body.appendChild(img)
}

// Get a query parameter.
window.goatcounter.get_query = function(name) {
var s = location.search.substr(1).split('&')
for (var i = 0; i < s.length; i++)
if (s[i].toLowerCase().indexOf(name.toLowerCase() + '=') === 0)
return s[i].substr(name.length + 1)
}

// Track click events.
window.goatcounter.bind_events = function() {
if (!document.querySelectorAll) // Just in case someone uses an ancient browser.
return

var send = function(elem) {
return function() {
goatcounter.count({
event: true,
path: (elem.dataset.goatcounterClick || elem.name || elem.id || ''),
title: (elem.dataset.goatcounterTitle || elem.title || (elem.innerHTML || '').substr(0, 200) || ''),
referrer: (elem.dataset.goatcounterReferrer || elem.dataset.goatcounterReferral || ''),
})
}
}

Array.prototype.slice.call(document.querySelectorAll("*[data-goatcounter-click]")).forEach(function(elem) {
if (elem.dataset.goatcounterBound)
return
var f = send(elem)
elem.addEventListener('click', f, false)
elem.addEventListener('auxclick', f, false) // Middle click.
elem.dataset.goatcounterBound = 'true'
})
}

// Add a "visitor counter" frame or image.
window.goatcounter.visit_count = function(opt) {
on_load(function() {
opt = opt || {}
opt.type = opt.type || 'html'
opt.append = opt.append || 'body'
opt.path = opt.path || get_path()
opt.attr = opt.attr || {width: '200', height: (opt.no_branding ? '60' : '80')}

opt.attr['src'] = get_endpoint() + 'er/' + enc(opt.path) + '.' + enc(opt.type) + '?'
if (opt.no_branding) opt.attr['src'] += '&no_branding=1'
if (opt.style) opt.attr['src'] += '&style=' + enc(opt.style)
if (opt.start) opt.attr['src'] += '&start=' + enc(opt.start)
if (opt.end) opt.attr['src'] += '&end=' + enc(opt.end)

var tag = {png: 'img', svg: 'img', html: 'iframe'}[opt.type]
if (!tag)
return warn('visit_count: unknown type: ' + opt.type)

if (opt.type === 'html') {
opt.attr['frameborder'] = '0'
opt.attr['scrolling'] = 'no'
}

var d = document.createElement(tag)
for (var k in opt.attr)
d.setAttribute(k, opt.attr[k])

var p = document.querySelector(opt.append)
if (!p)
return warn('visit_count: append not found: ' + opt.append)
p.appendChild(d)
})
}

// Make it easy to skip your own views.
if (location.hash === '#toggle-goatcounter') {
if (localStorage.getItem('skipgc') === 't') {
localStorage.removeItem('skipgc', 't')
alert('GoatCounter tracking is now ENABLED in this browser.')
}
else {
localStorage.setItem('skipgc', 't')
alert('GoatCounter tracking is now DISABLED in this browser until ' + location + ' is loaded again.')
}
}

if (!goatcounter.no_onload)
on_load(function() {
// 1. Page is visible, count request.
// 2. Page is not yet visible; wait until it switches to 'visible' and count.
// See #487
if (!('visibilityState' in document) || document.visibilityState === 'visible')
goatcounter.count()
else {
var f = function(e) {
if (document.visibilityState !== 'visible')
return
document.removeEventListener('visibilitychange', f)
goatcounter.count()
}
document.addEventListener('visibilitychange', f)
}

if (!goatcounter.no_events)
goatcounter.bind_events()
})
})();

Loading

0 comments on commit 36eeab0

Please sign in to comment.