Spaces:
Running
Running
<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D"> | |
<head> | |
<title>Neal.fun</title> | |
<meta data-n-head="ssr" charset="utf-8"> | |
<meta data-n-head="ssr" name="viewport" content="width=device-width,initial-scale=1"> | |
<meta data-n-head="ssr" name="google-site-verification" content="Vyp6Lq2HJODQviN98DbqlmqefoUuDj_cwlmS7jAgaao"> | |
<meta data-n-head="ssr" name="title" content="Neal.fun"> | |
<meta data-n-head="ssr" name="description" content="Games, visualizations, interactives and other weird stuff."> | |
<link data-n-head="ssr" rel="canonical" href="https://neal.fun"> | |
<link data-n-head="ssr" rel="icon" type="image/png" href="/favicons/home.png"> | |
<script data-n-head="ssr" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4556406968269041" async crossorigin="anonymous"></script> | |
<link rel="preload" href="/_nuxt/230b0e1.js" as="script"> | |
<link rel="preload" href="/_nuxt/d2031f3.js" as="script"> | |
<link rel="preload" href="/_nuxt/d1bdeae.js" as="script"> | |
<link rel="preload" href="/_nuxt/8408c71.js" as="script"> | |
<link rel="preload" href="/_nuxt/992eef7.js" as="script"> | |
<link rel="preload" href="/_nuxt/dcc1889.js" as="script"> | |
<style data-vue-ssr-id="1a73ea6b:0 2ccdeb7a:0 f516c438:0 db35a8f0:0"> | |
.nuxt-progress { | |
position: fixed; | |
top: 0; | |
left: 0; | |
right: 0; | |
height: 2px; | |
width: 0; | |
opacity: 1; | |
transition: width .1s,opacity .4s; | |
background-color: #000; | |
z-index: 999999 | |
} | |
.nuxt-progress.nuxt-progress-notransition { | |
transition: none | |
} | |
.nuxt-progress-failed { | |
background-color: red | |
} | |
@font-face { | |
font-family: Roboto; | |
src: url(/_nuxt/fonts/Roboto-Medium.70ace38.woff2) | |
} | |
@font-face { | |
font-family: Roboto; | |
font-weight: 700; | |
src: url(/_nuxt/fonts/Roboto-Bold.002079d.woff2) | |
} | |
html { | |
font-size: 16px; | |
-ms-text-size-adjust: 100%; | |
-webkit-text-size-adjust: 100%; | |
-moz-osx-font-smoothing: grayscale; | |
-webkit-font-smoothing: antialiased; | |
box-sizing: border-box; | |
color: #000; | |
font-family: Roboto,sans-serif; | |
background: #fff | |
} | |
*,:after,:before { | |
box-sizing: border-box; | |
margin: 0 | |
} | |
.simple-page { | |
background: #f1f2f6 | |
} | |
.pw_report_ad_container { | |
display: none | |
} | |
@font-face { | |
font-family: RobotoCondensedLight; | |
src: url(/_nuxt/fonts/RobotoCondensed-Light.f982e4a.woff2) | |
} | |
.container[data-v-7b1d768e] { | |
margin-left: auto; | |
margin-right: auto; | |
color: #000; | |
font-family: RobotoCondensedLight,sans-serif | |
} | |
.follow-block[data-v-7b1d768e] { | |
background-color: #fff; | |
font-size: 20px; | |
text-align: center; | |
margin-bottom: 37px | |
} | |
.posts[data-v-7b1d768e] { | |
display: grid; | |
margin-top: 10px; | |
font-size: 0; | |
grid-template-columns: repeat(3,1fr); | |
grid-template-rows: auto; | |
grid-gap: 20px 22px; | |
justify-content: center; | |
padding: 0 25px; | |
max-width: 1400px; | |
width: 100%; | |
margin-left: auto; | |
margin-right: auto | |
} | |
.made-by[data-v-7b1d768e] { | |
background: #fff; | |
margin-top: 10px; | |
font-size: 21px; | |
text-align: center; | |
padding: 25px 20px 20px; | |
margin-bottom: 40px | |
} | |
.site-title[data-v-7b1d768e] { | |
text-align: center; | |
margin-top: 58px; | |
font-weight: 700; | |
min-height: 55px; | |
max-width: 210px; | |
margin-left: auto; | |
margin-right: auto; | |
width: 100%; | |
display: block; | |
animation: pulse 1s infinite alternate-reverse | |
} | |
.site-tagline[data-v-7b1d768e] { | |
text-align: center; | |
font-size: 21px; | |
margin-top: 10px; | |
margin-bottom: 47px; | |
opacity: .7 | |
} | |
.socials[data-v-7b1d768e] { | |
display: flex; | |
justify-content: center; | |
grid-gap: 12px; | |
margin-top: 12px | |
} | |
.social-btn[data-v-7b1d768e] { | |
border: 1px solid #000; | |
border-radius: 12px; | |
padding: 10px 18px 8px 12px; | |
display: flex; | |
align-items: center; | |
color: #000; | |
text-decoration: none; | |
cursor: pointer | |
} | |
.social-btn[data-v-7b1d768e]:hover { | |
transform: scale(1.04) | |
} | |
.social-btn-icon[data-v-7b1d768e] { | |
height: 26px; | |
margin-right: 10px | |
} | |
.social-btn-twitter[data-v-7b1d768e] { | |
padding: 1px 0 | |
} | |
.contact[data-v-7b1d768e] { | |
margin-top: 12px | |
} | |
.contact a[data-v-7b1d768e],.privacy[data-v-7b1d768e] { | |
color: #000; | |
text-decoration: none | |
} | |
.privacy[data-v-7b1d768e] { | |
display: block; | |
margin-top: 12px; | |
opacity: .5; | |
font-size: 16px | |
} | |
.newsletter-tagline[data-v-7b1d768e] { | |
position: absolute; | |
top: 9px; | |
right: 10px; | |
font-size: 20px; | |
cursor: pointer; | |
display: flex | |
} | |
.newsletter-tagline[data-v-7b1d768e]:hover { | |
transform: scale(1.03) | |
} | |
.newsletter-icon[data-v-7b1d768e] { | |
height: 15px; | |
position: relative; | |
top: 4px; | |
margin-right: 5px | |
} | |
@media only screen and (max-width: 1280px) { | |
.posts[data-v-7b1d768e] { | |
grid-gap:15px 16px | |
} | |
} | |
@media only screen and (max-width: 1130px) { | |
.posts[data-v-7b1d768e] { | |
grid-template-columns:1fr 1fr; | |
max-width: 900px; | |
grid-gap: 15px 18px | |
} | |
} | |
@media only screen and (max-width: 700px) { | |
.newsletter-tagline[data-v-7b1d768e] { | |
display:none | |
} | |
} | |
@media only screen and (max-width: 600px) { | |
.posts[data-v-7b1d768e] { | |
grid-template-columns:repeat(1,1fr); | |
grid-gap: 7px; | |
padding: 0 8px | |
} | |
.site-title[data-v-7b1d768e] { | |
margin-top: 55px; | |
font-size: 48px | |
} | |
.site-tagline[data-v-7b1d768e] { | |
margin-top: 10px | |
} | |
.made-by[data-v-7b1d768e],.site-tagline[data-v-7b1d768e] { | |
margin-bottom: 30px | |
} | |
.made-by-desc[data-v-7b1d768e] { | |
max-width: 300px; | |
margin-left: auto; | |
margin-right: auto | |
} | |
.socials[data-v-7b1d768e] { | |
display: grid; | |
grid-template-columns: 1fr 1fr | |
} | |
.social-btn[data-v-7b1d768e] { | |
justify-content: center; | |
padding: 10px 0 | |
} | |
.social-full[data-v-7b1d768e] { | |
grid-column: span 2 | |
} | |
} | |
.link { | |
border-radius: 19px; | |
aspect-ratio: 391/145; | |
display: block; | |
position: relative; | |
z-index: 2 | |
} | |
.link-img { | |
max-width: 100%; | |
cursor: pointer; | |
transition: transform .07s linear,filter .1s ease-out,opacity .15s linear; | |
opacity: 0 | |
} | |
.link-img:hover { | |
transform: scale(1.02); | |
filter: drop-shadow(3px 3px 5px rgba(0,0,0,.17)) | |
} | |
</style> | |
<link rel="preload" href="/_nuxt/static/1707066671/state.js" as="script"> | |
<link rel="preload" href="/_nuxt/static/1707066671/payload.js" as="script"> | |
<link rel="preload" href="/_nuxt/static/1707066671/manifest.js" as="script"> | |
</head> | |
<body> | |
<div data-server-rendered="true" id="__nuxt"> | |
<div id="__layout"> | |
<div> | |
<div class="container" data-v-7b1d768e> | |
<div class="newsletter-tagline" data-v-7b1d768e> | |
<img src="/general/mail.svg" class="newsletter-icon" data-v-7b1d768e>Get new posts | |
</div> | |
<img alt="Neal.fun logo" src="/general/logo.svg" class="site-title" data-v-7b1d768e> | |
<div class="site-tagline" data-v-7b1d768e>a tiny website by neal</div> | |
<div class="posts" data-v-7b1d768e> | |
<a href="/infinite-craft/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Infinite Craft" src="/link-images/infinite-craft.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/internet-artifacts/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Internet Artifacts" src="/link-images/internet-artifacts.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/password-game/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="The Password Game" src="/link-images/password-game.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/space-elevator/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Space Elevator" src="/link-images/space-elevator.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/asteroid-launcher/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Asteroid Launcher" src="/link-images/asteroid-launcher.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/perfect-circle/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Draw a Perfect Circle ⭕️💯" src="/link-images/perfect-circle.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/wonders-of-street-view/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Wonders of Street View" src="/link-images/wonders-of-street-view.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/days-since-incident/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Days Since Incident" src="/link-images/days-since-incident.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/design-the-next-iphone/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Design the next iPhone" src="/link-images/design-the-next-iphone.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/absurd-trolley-problems/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Absurd Trolley Problems" src="/link-images/absurd-trolley-problems.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/earth-reviews/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Earth Reviews" src="/link-images/earth-reviews.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/lets-settle-this/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Let's Settle This" src="/link-images/lets-settle-this.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/ambient-chaos/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Ambient Chaos" src="/link-images/ambient-chaos.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/rocks/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Rocks" src="/link-images/rocks.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/sell-sell-sell/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Sell! Sell! Sell!" src="/link-images/sell-sell-sell.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/universe-forecast/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Universe Forecast" src="/link-images/universe-forecast.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/auction-game/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="The Auction Game" src="/link-images/auction-game.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/printing-money/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Printing Money" src="/link-images/printing-money.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/life-stats/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Life Stats" src="/link-images/life-stats.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/deep-sea/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="The Deep Sea" src="/link-images/deep-sea.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/size-of-space/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="The Size of Space" src="/link-images/size-of-space.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/share-this-page/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Share This Page" src="/link-images/share-this-page.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/dark-patterns/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Dark Patterns" src="/link-images/dark-patterns.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/who-was-alive/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Who Was Alive?" src="/link-images/who-was-alive.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/where-does-the-day-go/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Where does the day go?" src="/link-images/where-does-the-day-go.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/life-checklist/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Life Checklist" src="/link-images/life-checklist.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/speed/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Speed" src="/link-images/speed.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/paper/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Paper" src="/link-images/paper.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/logos-from-memory/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Draw Logos From Memory" src="/link-images/logos-from-memory.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/progress/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Progress" src="/link-images/progress.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/spend/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Spend Bill Gates' Money" src="/link-images/spend.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
<a href="/baby-map/" class="link" style="background:#f1f2f6" data-v-7b1d768e> | |
<img onload alt="Baby Map" src="/link-images/baby-map.svg" loading="lazy" class="link-img" style="opacity:0"> | |
</a> | |
</div> | |
<div class="made-by" data-v-7b1d768e> | |
<div class="made-by-desc" data-v-7b1d768e>Hi! I'm Neal. This is where I make stuff on the web. Obligatory links: | |
</div> | |
<div class="socials" data-v-7b1d768e> | |
<div href="https://twitter.com/nealagarwal" target="_blank" class="social-btn social-full" data-v-7b1d768e> | |
<img src="/general/mail.svg" alt="Mail" class="social-btn-icon social-btn-twitter" data-v-7b1d768e> | |
<span data-v-7b1d768e>Newsletter</span> | |
</div> | |
<a href="https://twitter.com/nealagarwal" target="_blank" class="social-btn social-full" data-v-7b1d768e> | |
<img src="/general/twitter.svg" alt="Twitter" class="social-btn-icon social-btn-twitter" data-v-7b1d768e>Twitter | |
</a> | |
<a target="_blank" href="https://www.buymeacoffee.com/neal" class="social-btn social-full" data-v-7b1d768e> | |
<img alt="Coffee" src="/general/coffee.svg" class="social-btn-icon" data-v-7b1d768e>Buy me a coffee | |
</a> | |
</div> | |
<div class="contact" data-v-7b1d768e> | |
Say hello: | |
<a target="_blank" href="/cdn-cgi/l/email-protection#ee8687ae808b8f82c0889b80" data-v-7b1d768e> | |
<span class="__cf_email__" data-cfemail="462e2f062823272a68203328">[email  protected]</span> | |
</a> | |
</div> | |
<a href="/privacy-policy/" class="privacy" data-v-7b1d768e>Privacy policy</a> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script> | |
<script defer src="/_nuxt/static/1707066671/state.js"></script> | |
<script src="/_nuxt/230b0e1.js" defer></script> | |
<script src="/_nuxt/992eef7.js" defer></script> | |
<script src="/_nuxt/dcc1889.js" defer></script> | |
<script src="/_nuxt/d2031f3.js" defer></script> | |
<script src="/_nuxt/d1bdeae.js" defer></script> | |
<script src="/_nuxt/8408c71.js" defer></script> | |
</body> | |
</html> | |