this site
---
i wrote it in pure html/js/css without libraries
(apart from some p5.js sketches in the gallery).
I wanted a small footprint
my resume
my cv in pure json form
---
it also has my github, linkedin, and email
my json cv turned into pure html with a recursive typescript function.
---
At the time of programming, I wanted to code-golf my site, generating html
at runtime via recursive functions and datastructures.
I've moved away from that since, because as I added work/sketches it morphed into a small framework.
I might revisit it someday, but it felt like overkill just for a small personal site.
function gen_html(html, obj: object) {
let _html = ""
Object.keys(obj).forEach((key: string, i: number) => {
const val = obj[key], disp_key = key2show(key, i) // dk = displayed key
switch (typeof val) {
case "string":
_html += `<a class="item ${disp_key}"
${disp_key === "link" ? `target="_blank"
rel="noopener noreferrer" href=${val}` : ""}>
${disp_key} - ${val}
</a>`
break
case "object":
_html += `<div class="container">
<p class="title ${disp_key}">
${disp_key}
</p>
<div class="${disp_key}">
${gen_html(_html, val)}
</div>
</div>`
break
}
})
return _html
}
sample of my livecoding and visual work
---
click videos to play/pause them
toy involving strange fonts and patterned text
---
inspired by the idea of a templating language that always compiles
specific letters may or may not have specific effects
toy involving mice and mirrors
---
inspired by those children's "make a snowflake" flash games from the 2000s
try scrolling up/down/left/right
holding shift
pressing space
bookmarklets that goof a page's css
---
inspired by ui scaling issues and video game corruptors
page for viewing screenshots I've taken.
they're grouped by their media of origin
---
if an object or landscape strikes, I take a picture.
if what's on my laptop strikes me, I take a picture.
(photos in technology > photos of technology)