xem
Joined 13 years ago
Joined 13 years ago
I'm 35, Web Dev since 2009, work from home (2 hours away from work) since 2020, and my company just decided that they want everyone back at the office immediately, or quit.
So I quat. And I decided I'll never be an employee ever again. I'm gonna make a living out of my passions: write a book, create video games, adopt pets, photo, video, and if I run out of money I can still do Web Dev as freelance.
Frightening but also exciting!
- Unicode and characters encodings
- Native WebGL
- CSS3D
- Women
I lied about women.
It was made in 1kb for the JS1K demo competition: https://js1k.com/2018-coins/demo/3124
Detailed source code: https://github.com/xem/epicycles/blob/gh-pages/index.html
Controls:
- Arrow keys: up / down to change the number of gears, left to toggle intermediate paths, right to clear the scene.
- Mouse: click to add points to the path
<input id=i> <a onclick='u.innerHTML+="<li onclick=innerHTML=innerHTML.strike()>"+i.value'>+ <a onclick=u.innerHTML="">X</a> <ol id=u>
There are 4 occurrences of "innerHTML" and 3 occurrences of " onclick='" so I replaced those two substrings with H and o.
The whole HTML is rendered using an ES6 template literal (document.write(` ... `))
Everytime a ${H} or a ${o} is present in the template, the value of H or o is copied here.
It's a native feature of JS since ES6.
Besides that, the second <a> implicitly closes the first <a>, so no need to use </a>. The id's are global, that's why we can access i.value or u.innerHTML directly. In onclick, "this" (the current element) is implicit. Finally, the strikethrough is done using the (deprecated but still working) .strike() String method.
<script>document.write(`<input id=i><a${o=" onclick="}'u.${H="innerHTML"}+="<li${o}${H}=${H}.strike()>"+i.value'>+<a${o}u.${H}="">x</a><ol id=u>`)</script>
Demo: https://codepen.io/xem/pen/dypVzaw?editors=1100
Cheers :)
- JS code-golfing... I'm not alone but we're a small community, who enjoy making JS programs / art / games with the smallest possible amount of code (js1k.com, js13kgames.com, dwitter.net, ...)
- Unicode, its quirks, its updates (not only emoji), its encodings and its predecessors charsets
- Regexes (everyone hates them but I enjoy using them)
- Browsers hacks and polyfills (remember IE6? Firefox 3? Chrome 1? With enough effort, you could make them do almost everything that modern browsers can do today. My job has been to do exactly that for many years, and it was actually pretty fun)