Compare commits

..

45 Commits

Author SHA1 Message Date
Jonathan Dahan 45df4976fb Plainer language
11 months ago
Jonathan Dahan 83d7018808 fix more links
11 months ago
Jonathan Dahan 93d74ab61b Fix some links
11 months ago
Jonathan Dahan 4b5e6fa218 recurse
11 months ago
Jonathan Dahan 55ccf38585 add robots.txt
11 months ago
Jonathan Dahan bf045f7fba use aria-current=page instead of .active
11 months ago
Jonathan Dahan b30a765a0b fix youtube embed sizes
11 months ago
Jonathan Dahan 55192fa895 embed flickr slideshow
11 months ago
Jonathan Dahan 80547800fb Fix links to code forges
11 months ago
Jonathan Dahan 8b63df13b0 arg ordering
11 months ago
Jonathan Dahan 1a2854d865 no logging on debian podman-compose :(
11 months ago
Jonathan Dahan 4dcd73a808 simpler descriptions
11 months ago
Jonathan Dahan 507638efec b
11 months ago
Jonathan Dahan d995b5b518 remove profile temporarily
11 months ago
Jonathan Dahan a9112f896b try separating the ssh host
11 months ago
Jonathan Dahan 61bf2819a5 separate
11 months ago
Jonathan Dahan e54be48ec1 separate
11 months ago
Jonathan Dahan f9f82c5fdc fix prepush dir
11 months ago
Jonathan Dahan 7722c11c31 actually push post-receive hook
11 months ago
Jonathan Dahan 67a044a765 empty commit for triggering hooks
11 months ago
Jonathan Dahan fbfea56629 podman build
11 months ago
Jonathan Dahan 1e9b80a60a pre-push update post-receive
11 months ago
Jonathan Dahan 17bbf141b9 b
11 months ago
Jonathan Dahan 012c3ae1f9 cleanup post-receive hook messages
11 months ago
Jonathan Dahan dddb2cbd60 switch to post-receive hook for CI
11 months ago
Jonathan Dahan 0cc5806183 Use pre-push as deploy
11 months ago
Jonathan Dahan 692d573770 checkbox hack
11 months ago
Jonathan Dahan a13758cfe2 hover for entire nav should work for dropdown
11 months ago
Jonathan Dahan 070478b1d9 only have a gap for landscape mode
11 months ago
Jonathan Dahan 282cbf35c5 Use neocities for hosting
11 months ago
Jonathan Dahan fdeced6a8d hardcode jonathan.is for deployment directory
11 months ago
Jonathan Dahan 7c33cc2e48 update todo
12 months ago
Jonathan Dahan 25e88101b6 v4 of podman-compose is external
12 months ago
Jonathan Dahan 5c2c4735e5 detach not daemon
12 months ago
Jonathan Dahan c7326d2f29 up only
12 months ago
Jonathan Dahan c81b85ab04 try manual compose down
12 months ago
Jonathan Dahan 7fb1b73e89 set image name
12 months ago
Jonathan Dahan 0fa13b70fa try hardcoding tags
12 months ago
Jonathan Dahan 48e1ab99d5 no pipefail for now
12 months ago
Jonathan Dahan 785c25d4a2 try just /data
12 months ago
Jonathan Dahan 508cd13c6c copy
12 months ago
Jonathan Dahan 947b7f234e self-updating post-receive. this is an awful idea
12 months ago
Jonathan Dahan 4af558d4ce use fqdn for docker image references
12 months ago
Jonathan Dahan f8a068a8ac empty commit for triggering hooks
12 months ago
Jonathan Dahan 7c39e75b89 chmod after copy
12 months ago

1
.gitignore vendored

@ -1 +1,2 @@
.pub
production.env

@ -1,4 +0,0 @@
#!/bin/sh
# sets the 'active' class on an item if the url matches the directory
if [ "$(dirname "$ZS_URL")" = $1 ]; then printf ' class=active' ''; fi

@ -0,0 +1,4 @@
#!/bin/sh
# sets the 'aria-current=page' on an anchor if the url matches the directory
if [ "$(dirname "$ZS_URL")" = $1 ]; then printf ' aria-current=%s' 'page'; fi

@ -4,18 +4,21 @@
<meta name=viewport content="width=device-width,initial-scale=1" />
<header>
<nav>
<a href=/>jonathan.is</a>
<menu>
<li id=landing {{ active . }}><a href=#>/???</a>
<li {{ active writing }}><a href=/writing>/writing</a>
<li {{ active speaking }}><a href=/speaking>/speaking</a>
<li {{ active coding }}><a href=/coding>/coding</a>
<li {{ active making }}><a href=/making>/making</a>
<li {{ active working }}><a href=/working>/working</a>
<li {{ active living }}><a href=/living>/living</a>
</menu>
</nav>
<input type=checkbox id=check />
<label for=check class=menu>
<nav>
<a href=/>jonathan.is</a>
<menu>
<li><a {{ aria-current . }} href=/>/???</a>
<li><a {{ aria-current writing }} href=/writing>/writing</a>
<li><a {{ aria-current speaking }} href=/speaking>/speaking</a>
<li><a {{ aria-current coding }} href=/coding>/coding</a>
<li><a {{ aria-current making }} href=/making>/making</a>
<li><a {{ aria-current working }} href=/working>/working</a>
<li><a {{ aria-current living }} href=/living>/living</a>
</menu>
</nav>
</label>
</header>
<main>

@ -5,4 +5,4 @@ data
backing-up
rss
hooks
hooks
production.env

@ -1,6 +1,10 @@
FROM prologic/zs AS build
FROM docker.io/prologic/zs AS build
COPY . .
RUN zs build --production
FROM caddy/caddy:2.8-alpine
COPY --from=build /data/.pub:/usr/share/caddy
FROM docker.io/ruby:alpine AS deploy
RUN gem install neocities
COPY --from=build /data/.pub /pub
FROM docker.io/caddy/caddy:2.8-alpine
COPY --from=build /data /srv

@ -1,3 +1,3 @@
[personal](git.woodbine.nyc/micro)
[personal](//git.woodbine.nyc/micro)
[github](github.com/jedahan)
[github](//github.com/jedahan)

@ -1,11 +1,30 @@
services:
jonathan.is:
image: jonathan.is
pull_policy: never
build:
context: .
dockerfile: Containerfile
restart: unless-stopped
ports:
- "8081:80"
- "8443:443"
- "8443:443/udp"
volumes:
- ./.pub:/usr/share/caddy
- ./data:/data
- caddy_data:/data
- caddy_config:/config
deploy:
image: localhost/jonathan.is:deploy
build:
context: .
dockerfile: Containerfile
target: deploy
pull_policy: never
env_file:
- production.env
command: "neocities push --prune /pub"
volumes:
caddy_data:
external: true
caddy_config:

@ -1,27 +1,22 @@
#!/bin/bash
set -e -u -o pipefail
set -e -u
while read oldrev newrev ref
do
if [[ $ref =~ .*/main$ ]];
then
echo "main ref received"
if [[ $ref =~ .*/main$ ]]; then
echo "[deploy] main ref received"
echo "moving into temporary work tree"; {
gitdir=$PWD
cd $(mktemp -d)
}
echo "[deploy] moving into temporary work tree"; {
gitdir=$PWD
cd ~/jonathan.is
}
echo "checking out latest source"; {
git --work-tree=$PWD --git-dir=$gitdir checkout --force
}
echo "[deploy] checking out latest source"; {
git --work-tree=$PWD --git-dir=$gitdir checkout --force
}
echo "generating static site"; {
podman compose build . --volume $PWD/.pub:/data/.pub
}
echo "restarting server"; {
podman compose restart || podman compose up
}
fi
echo "[deploy] building and deploying site"; {
podman-compose --podman-run-args='--log-driver=none' run deploy
}
fi
done

@ -0,0 +1,12 @@
#!/bin/bash
set -e -u
remote="$1"
url="$2"
echo "[deploy] updating post-receive hook"; {
ssh_host=$(echo $url | cut -d'/' -f3)
ssh_path=$(echo $url | cut -d'/' -f4-)
scp hooks/post-receive ${ssh_host}:${ssh_path}/hooks/post-receive
}

@ -2,29 +2,30 @@
title: jonathan.is
---
a [hacker](images/me.jpg) of Computational Machinations, Digital Arts and Electronic Sounds, hailing from Brooklyn
a [hacker](images/me.jpg) that [plays with the boundaries between the virtual and the physical](/making/12-living-room)
I am a programmer who likes to connect random inputs and outputs to see what people will do with them.
I often take virtual streams and provide them physical facilities to exaggerate their impact on our lives.
I am equally uncomfortable coding in C, C++, Rust, Javascript, Typescript, Coffeescript, Python, Piet, Basic, Hypercard, and Bash.
I painted a simple [echo program](images/piet.png) and could very easily see myself holed up for the winter just with canvas and wine.
a **facilitator** who teaches by learning, and learns through naive discovery with friends
Some communities I'm a part of and love include [the school for poetic computation](sfpc.io), [~~hacker school~~ recurse center](recurse.com), [woodbine](woodbine.nyc), [arthackday](arthackday.net), [the medialab at the met](http://www.metmuseum.org/about-the-museum/museum-departments/office-of-the-director/digital-media-department/digital-underground/posts/2013/introducing-the-media-lab), and [itp camp](http://itp.nyu.edu/camp2014/). If you are interested in chatting about any of these, please reach out!
a **programmer**, expressing ideas with C(++), Rust, Javascript, Hypercard, Bash, and others
a **loving participant** in communities such as [the school for poetic computation](//sfpc.io), [~~hacker school~~ recurse center](//recurse.com), [woodbine](//woodbine.nyc), [arthackday](//arthackday.net), [the medialab at the met](//www.metmuseum.org/about-the-museum/museum-departments/office-of-the-director/digital-media-department/digital-underground/posts/2013/introducing-the-media-lab), and [itp camp](//itp.nyu.edu/camp/). If you are interested in chatting about any of these, please reach out!
I painted a simple [echo program](images/piet.png) and could see myself holed up for the winter just with canvas and wine
# Creations and Consumptions
- <a href=github.com/jedahan rel=me>code</a>
- [short thoughts](twitter.com/jedahan)
- <a href=//github.com/jedahan rel=me>code</a>
- [short thoughts](//twitter.com/jedahan)
- [slightly longer thoughts](/writing)
- [where i've been](foursquare.com/jedahan)
- [oscillations](soundcloud.com/jedahan)
- [static visuals](flickr.com/photos/37234044@N07/sets)
- [motion pictures](youtube.com/jeadhan)
- [where i've been](//foursquare.com/jedahan)
- [oscillations](//soundcloud.com/jedahan)
- [static visuals](//flickr.com/photos/37234044@N07/sets)
- [motion pictures](//youtube.com/jedahan)
# Endeavours
- teaching at [parsons](http://jedahan.github.io/pucd2035d)
- did not graduate [~~hackerschool~~ recurse center](recurse.com)
- attended the [school for poetic computation](sfpc.io): first class
- taught at the [school for poetic computation](sfpc.io)
- founded [Island Labs](islandlabs.org), a long island [hackerspace](wikipedia.org/HackerSpace)
- maintain package repositories for [KISS](kisslinux.github.io), and [exherbo](exherbo.org) linux
- symposium [on programming old computers](https://www.youtube.com/watch?v=N6lX-Gxo3uM)
- teaching at [parsons](//jedahan.github.io/pucd2035d)
- did not graduate [~~hackerschool~~ recurse center](//recurse.com)
- attended the [school for poetic computation](//sfpc.io): first class
- taught at the [school for poetic computation](//sfpc.io)
- founded [Island Labs](//islandlabs.org), a long island [hackerspace](//wikipedia.org/wiki/Hackerspace)
- maintain package repositories for [KISS](//kisslinux.github.io), and [exherbo](//exherbolinux.org) linux
- symposium [on programming old computers](//www.youtube.com/watch?v=N6lX-Gxo3uM)

@ -1,3 +1,3 @@
## japan visit
https://www.flickr.com/photos/37234044@N07/albums/72157650404738803
<a data-flickr-embed="true" href="https://www.flickr.com/photos/37234044@N07/albums/72157650404738803" title="japan"><img src="https://live.staticflickr.com/8803/17561771016_124c5f06d6.jpg" width="640" height="480" alt="japan"/></a><script async src="//embedr.flickr.com/assets/client-code.js" charset="utf-8"></script>

@ -14,8 +14,8 @@ One player is all the enemies
You only get 3 lives, and each time the game glitches out until it becomes unplayable
[http://www.arthackday.net/projects/tyler-freeman-eric-van-der-molen-yodo-mario-you-only-die-once]()
[//www.arthackday.net/projects/tyler-freeman-eric-van-der-molen-yodo-mario-you-only-die-once]()
<img src=tumblr_mf3ceyHjre1rlcnubo1_500_500.png width=500 height=377 />
<iframe width=640 height=510 src=https://www.youtube.com/embed/8g_GVGyM9rw frameborder=0 allowfullscreen></iframe>
<iframe width=640 height=510 src=//www.youtube.com/embed/8g_GVGyM9rw frameborder=0 allowfullscreen></iframe>

@ -1,6 +1,6 @@
<video controls width=640><source src=banana.mp4 type="video/mp4" /></video>
physically programmable space, at [recurse center](recurse.com)
physically programmable space, at [recurse center](//recurse.com)
# projects
{{ index making }}

@ -1,33 +1,26 @@
# https://jonathan.is
## quickstart
develop - using [zs](//git.mills.io/prologic/zs) built-in debug server
$ ssh server "git clone --bare https://git.woodbine.nyc/micro/jonathan.is.git"
$ ssh server "cd jonathan.is.git && git show HEAD:hooks/post-receive > hooks/post-receive"
$ git remote add server ssh://server/~jonathan.is.git
$ git push server
which zs || go install go.mills.io/zs@latest
zs serve --debug
## manual install
test - runs a fresh build and serves with caddy
build
podman compose up --build
podman build . --tag jonathan.is
deploy - runs neocities cli
run
podman compose run deploy
podman compose up
## continuous integration
deploy
this will setup a post-receive hook, that does a fresh build + deploy
git push server
git push
## todo
### deploy
- [ ] forgejo (or git?) post-receive hook -> docker build
- [ ] proxy nginx on digitalocean
- [ ] setup beta.jonathan.is dns to digitalocena
### features
- [ ] generate rss feed

@ -0,0 +1,33 @@
User-agent: AdsBot-Google
User-agent: Amazonbot
User-agent: anthropic-ai
User-agent: Applebot
User-agent: AwarioRssBot
User-agent: AwarioSmartBot
User-agent: Bytespider
User-agent: CCBot
User-agent: ChatGPT-User
User-agent: ClaudeBot
User-agent: Claude-Web
User-agent: cohere-ai
User-agent: DataForSeoBot
User-agent: Diffbot
User-agent: FacebookBot
User-agent: FriendlyCrawler
User-agent: Google-Extended
User-agent: GoogleOther
User-agent: GPTBot
User-agent: img2dataset
User-agent: ImagesiftBot
User-agent: magpie-crawler
User-agent: Meltwater
User-agent: omgili
User-agent: omgilibot
User-agent: peer39_crawler
User-agent: peer39_crawler/1.0
User-agent: PerplexityBot
User-agent: PiplBot
User-agent: scoop.it
User-agent: Seekr
User-agent: YouBot
Disallow: /

@ -1,19 +1,29 @@
/* single element niceties */
a { color: inherit }
img, video { max-width: 100% }
li { list-style: none }
/* for youtube embeds */
iframe { width: auto; height: auto; }
body {
font-size: medium;
padding: 1em;
max-width: 1280px;
display: flex;
gap: 2em;
@media(orientation: landscape) {
gap: 2em;
}
}
header {
background: white;
position: sticky;
top: 1em;
& > nav {
top: 0;
& nav {
background: white;
position: sticky;
top: 0.5em;
top: 0;
display: flex;
font-size: xx-large;
& a {
@ -33,49 +43,44 @@ main {
flex: 1;
}
/* single element niceties */
a { color: inherit }
img, video { max-width: 100% }
li { list-style: none }
menu { cursor: pointer }
/* the /??? which shows in the nav on the homepage */
#landing {
display: none;
a[aria-current=page] {
pointer-events: none;
text-decoration: underline;
}
#check { display: none; }
@media (hover: hover) {
menu:hover li {
visibility: inherit;
display: block;
}
}
/* turn the menu into a dynamic one for highly vertical devices */
@media (orientation: portrait) {
#landing.active {
display: block;
body {
flex-direction: column;
}
main {
min-width: fit-content;
}
header {
max-height: 1em;
top: 0em;
& > nav {
top: 1em;
& menu {
& li {
transition: display 3s ease;
visibility: collapse;
display: none;
}
& li.active {
visibility: inherit;
display: block;
}
&:hover li {
visibility: initial;
display: block;
}
}
}
nav {
top: 1em;
}
body {
flex-direction: column;
#check:checked ~ .menu > nav > menu > li {
visibility: inherit;
display: block;
}
nav > menu > li {
visibility: collapse;
display: none;
& a[aria-current=page] {
visibility: inherit;
display: block;
}
}
}
@ -114,26 +119,26 @@ ul {
}
li:nth-of-type(6n + 1):hover,
li.active:nth-of-type(6n + 1) {
a[aria-current=page]:nth-of-type(6n + 1) {
color: var(--red);
}
li:nth-of-type(6n + 2):hover,
li.active:nth-of-type(6n + 2) {
a[aria-current=page]:nth-of-type(6n + 2) {
color: var(--orange);
}
li:nth-of-type(6n + 3):hover,
li.active:nth-of-type(6n + 3) {
a[aria-current=page]:nth-of-type(6n + 3) {
color: var(--pink);
}
li:nth-of-type(6n + 4):hover,
li.active:nth-of-type(6n + 4) {
a[aria-current=page]:nth-of-type(6n + 4) {
color: var(--green);
}
li:nth-of-type(6n + 5):hover,
li.active:nth-of-type(6n + 5) {
a[aria-current=page]:nth-of-type(6n + 5) {
color: var(--blue);
}
li:nth-of-type(6n + 6):hover,
li.active:nth-of-type(6n + 6) {
a[aria-current=page]:nth-of-type(6n + 6) {
color: var(--purple);
}

@ -1,17 +1,17 @@
[download as pdf](/resume.pdf)
<section id="contact">
<section id=contact>
<h1>Jonathan Dahan</h1>
<p>✉️ <a href="mailto:resume@jonathan.is">hi</a>@<a href="http://jonathan.is">jonathan.is</a> 🕸 <a href="http://jedahan.com">jedahan.com</a> <a href="https://github.com/jedahan">github.com/jedahan</a></p>
<p>✉️ <a href="mailto:resume@jonathan.is">hi</a>@<a href="//jonathan.is">jonathan.is</a><a href="//github.com/jedahan">github.com/jedahan</a></p>
</section>
<section id="experience">
<section id=experience>
<h2>experience</h2>
<div class="position">
<div class="title">
<h3>Fullstack Engineer at <a href="https://reaktor.com">Reaktor</a></h3>
<div class=position>
<div class=title>
<h3>Fullstack Engineer at <a href="//reaktor.com">Reaktor</a></h3>
<div>September 2019 - Present</div>
</div>
<ul>
@ -23,9 +23,9 @@
</ul>
</div>
<div class="position">
<div class="title">
<h3>Founder of <a href="https://baculus.co">Baculus</a></h3>
<div class=position>
<div class=title>
<h3>Founder of <a href="//baculus.co">Baculus</a></h3>
<div>August 2018 - August 2019</div>
</div>
<ul>
@ -36,9 +36,9 @@
</ul>
</div>
<div class="position">
<div class="title">
<h3>Technical Consultant for <a href="https://smalldata.industries">Small Data Industries</a></h3>
<div class=position>
<div class=title>
<h3>Technical Consultant for <a href="//smalldata.industries">Small Data Industries</a></h3>
<div>October 2018 - August 2019</div>
</div>
<ul>
@ -49,9 +49,9 @@
</ul>
</div>
<div class="position">
<div class="title">
<h3>Fullstack Freelance Engineer for <a href="https://micahwalter.studio">Micah Walter Studio</a></h3>
<div class=position>
<div class=title>
<h3>Fullstack Freelance Engineer for <a href="//micahwalter.studio">Micah Walter Studio</a></h3>
<div>September 2017 - June 2018</div>
</div>
<ul>
@ -59,9 +59,9 @@
</ul>
</div>
<div class="position">
<div class="title">
<h3>Software Engineer for <a href="https://etsy.com">Etsy</a></h3>
<div class=position>
<div class=title>
<h3>Software Engineer for <a href="//etsy.com">Etsy</a></h3>
<div>December 2015 - August 2017</div>
</div>
<ul>
@ -71,9 +71,9 @@
</ul>
</div>
<div class="position">
<div class="title">
<h3>Freelance Developer for <a href="http://www.bgc.bard.edu/gallery/gallery-at-bgc/the-interface-experience.html">Bard Graduate Center</a></h3>
<div class=position>
<div class=title>
<h3>Freelance Developer for <a href="//interface-experience.org">The Interface Experience</a> at <a href="//www.bgc.bard.edu/exhibitions/exhibitions/10/the-interface-experience">Bard Graduate Center</a></h3>
<div>September 2014 - July 2015</div>
</div>
<ul>
@ -83,9 +83,9 @@
</ul>
</div>
<div class="position">
<div class="title">
<h3>Freelance Developer for <a href="http://www.rockwellgroup.com/">Lab@Rockwell</a>, <a href="http://www.fakelove.tv/work/exhibit-growth">Fake Love</a></h3>
<div class=position>
<div class=title>
<h3>Freelance Developer for <a href="//www.rockwellgroup.com">Lab@Rockwell</a>, <a href="//www.fakelove.tv/work/exhibit-growth">Fake Love</a></h3>
<div>October 2013 - October 2014</div>
</div>
<ul>
@ -94,9 +94,9 @@
</ul>
</div>
<div class="position">
<div class="title">
<h3>Media Technology Developer at <a href="http://www.metmuseum.org/about-the-museum/museum-departments/office-of-the-director/digital-media-department/medialab">Metropolitan Museum of Art</a></h3>
<div class=position>
<div class=title>
<h3>Media Technology Developer at <a href="//www.metmuseum.org/about-the-museum/museum-departments/office-of-the-director/digital-media-department/medialab">Metropolitan Museum of Art</a></h3>
<div>February 2012 - August 2014</div>
</div>
<ul>
@ -109,49 +109,49 @@
</ul>
</div>
<div class="title">
<div class=title>
<div></div>
<div>Previous experience available on request</div>
</div>
</div>
</section>
<section id="communities">
<section id=communities>
<h2>communities</h2>
<h3><a href="https://nycresistor.org">NYC Resistor</a></h3>
<p>Member and teacher. Built out <a href="https://baculus.co">Baculus</a>, program and repair of CNC milling machines.</p>
<h3><a href="//nycresistor.org">NYC Resistor</a></h3>
<p>Member and teacher. Built out <a href="//baculus.co">Baculus</a>, program and repair of CNC milling machines.</p>
<h3><a href="http://recurse.com">Recurse Center</a></h3>
<h3><a href="//recurse.com">Recurse Center</a></h3>
<ul>
<li>Participant. Created a custom NES/famicom controller (in C and arduino) that could playback emulator speedruns on real hardware, build the basics of a blockchain client in rust, and learned a bit about networking layers with an online MOOC.
<li>Researched and built <a href="https://github.com/living-room">a programmable room</a>, including tools to introduce interactivity in a physical space.
<li>Researched and built <a href="//github.com/living-room">a programmable room</a>, including tools to introduce interactivity in a physical space.
<li>Programmed C/C++/openFrameworks computer vision tools, and a node.js db/event queue to allow others to contribute new sensors and visualizers.
</ul>
<h3><a href="http://sfpc.io">School for Poetic Computation</a></h3>
<p>Programmed and painted a <a href="http://www.dangermouse.net/esoteric/piet.html">piet</a> program whose source code is just a bitmap. Built a <a href="https://github.com/jedahan/pagesounds">network sonifier</a> to make it easier to understand what is going on with your machine and the rest of a local network. Made a collaborative light drawing robot out of an old pen plotter</p>
<h3><a href="//sfpc.io">School for Poetic Computation</a></h3>
<p>Programmed and painted a <a href="//www.dangermouse.net/esoteric/piet.html">piet</a> program whose source code is just a bitmap. Built a <a href="https://github.com/jedahan/pagesounds">network sonifier</a> to make it easier to understand what is going on with your machine and the rest of a local network. Made a collaborative light drawing robot out of an old pen plotter</p>
</section>
<section id="projects">
<section id=projects>
<h2>projects</h2>
<p>Won Hackaday's superconference <a href="https://hackaday.com/2016/11/16/solving-hackadays-crypto-challenge/#more-230676">Badge CTF</a>!</p>
<p>Won Hackaday's superconference <a href="//hackaday.com/2016/11/16/solving-hackadays-crypto-challenge/#more-230676">Badge CTF</a>!</p>
<p>Created a <a href="https://hackaday.io/project/7002-autones-zero-player-nesfamicom">0-Player Famicom</a> that played back speedruns on an unmodified famicom/NES using an arduino as a fake controller.
<p>Created a <a href="//hackaday.io/project/7002-autones-zero-player-nesfamicom">0-Player Famicom</a> that played back speedruns on an unmodified famicom/NES using an arduino as a fake controller.
<p>Built a game of <a href="http://events.ccc.de/camp/2011/wiki/BadgeAssassin">assassin</a> at <a href="http://events.ccc.de/camp/2011">CCC</a> using the <a href="http://r0ket.badge.events.ccc.de/">camp badges</a> radio as local radar, confused all nonparticipants.</p>
<p>Built a game of <a href="//events.ccc.de/camp/2011/wiki/BadgeAssassin">assassin</a> at <a href="//events.ccc.de/camp/2011">CCC</a> using the <a href="//github.com/r0ket/r0ket">camp badges</a> radio as local radar, confused all nonparticipants.</p>
<p>Creation of <a href="#">multiplayer synth</a> - a network/phone-controlled motors and relays using OSC and arduinos</p>
<p>Captured <a href="http://islandlabs.org/space">photography of space</a> and the tri-state area and captured the curvature of the earth from 34,000m with off-the-shelf hardware</p>
<p>Captured <a href="//islandlabs.org/space">photography of space</a> and the tri-state area and captured the curvature of the earth from 34,000m with off-the-shelf hardware</p>
<p>Packaged around 100 applications for the <a href="http://exherbo.org/">exherbo linux</a> distribution, contributing to user documentation</p>
<p>Packaged around 100 applications for the <a href="//exherbolinux.org/">exherbo linux</a> distribution, contributing to user documentation</p>
<p>Built API to access live position tracking of thousands of attendees as part of the <a href="http://amd.hope.net">AMD at HOPE</a> team, during a three-day conference. Enabled developers to create games on the platform</p>
<p>Built API to access live position tracking of thousands of attendees as part of the <a href="//vii.hope.net/amd.php">AMD at HOPE</a> team, during a three-day conference. Enabled developers to create games on the platform</p>
</section>
<section id="education">
<section id=education>
<h2>education</h2>
<ul>

Loading…
Cancel
Save