I had to start this week with this epic 1-bit lofi game prototype:
cinematic platformer pic.twitter.com/Ux2gxPeKOn— Stuffed Wombat (@wombatstuff) July 15, 2019
This is just…perfect. I love it so much!
It adds several bits of visual language to the Juice it or Lose It paradigm:
- Dutch angle
- flailing limbs
- slow motion
It’s like an even simpler, more potent distillation of Canabalt.
First, a really, really cool UI intereaction: a “sliding number box” with vertical axis for increasing orders of magnitude, horizontal axis for fine adjustment.
Just added a new float-ladder feature to #iogui math elements. It lets you quickly fine-tune numbers without keyboard. This is very useful on mobile devices since it doesn't trigger on-screen keyboard on first touch! https://t.co/BhVJx496L2 #webcomponents #customelements pic.twitter.com/7Lib09d8hd— io-gui (@io_gui_js) July 18, 2019
Second, Io supports rendering a widget via a shader, for speed and encapsulation.
Here is an early preview of a color-picker #customelement made with #iogui. The element uses a single #WebGL shader hooked up to #webcomponents API Live demo here https://t.co/rBLns2caCe Source code: https://t.co/QH2IVm1H2j pic.twitter.com/MMK8vCjqIK— io-gui (@io_gui_js) July 16, 2019
TabNine is an ML-based freemium code completion tool ($50 - $100 individual / pro license). GPT-2 for code completion is very promising.
Amazing!! Deep Learning-based NLP techniques are going to revolutionize the way we write software. Here's Deep TabNine, a GPT-2 model trained on around 2 million files from GitHub. Details at https://t.co/8J2v8Ns7n4 #nlproc pic.twitter.com/VWB4XsyD4T— Gerard de Melo (@gdm3000) July 17, 2019
Getting this right at scale is basically a minefield of edge cases, but this will be a big deal after many iterations.
IP issues are a concern. TabNine only indexes source code with liberal licenses. But then there are the “unique” licenses like Facebook React’s patent grant that complicate matters.
A strong endorsement for using Rust instead of C++, from Rik Arends:
I keep harping about how Rust is amazing. It is amazing. AVX2 mandelbrot, SSE2 YUV camera, async Direct3D-direct-to-video memory, My own windows media bindings. All since last wednesday. And it just ran 14 hours no crash. Unbelievable. Using 36 threads here at 100%. Silkysmooth.— Rik Arends (@rikarends) June 23, 2019
Rik makes an interesting case for Rust as ‘bare metal hardware super-glue’ (or duct tape, if that’s your jam). C/C++ is/was basically the only game in town for this. It’s a good beachhead for Rust adoption: tackling ambitious projects that would be too hard in C/C++.
I’ve coded similar ‘highly-integrated’ hardware projects in the past, and was is indeed a problem. I used various approaches to make the whole thing simpler (most notably, careful use of LuaJit), but overall system complexity was still a nightmare. If Rust can pull off what Rik’s evangelizing, then I’ve got a couple of projects in mind that would benefit. Dying to try it out!
Rik is creating Makepad, a web-hosted Rust-based live-coding IDE for 2D design. It’s all WASM and WebGL. The IDE at that link is being used to view (and edit!) Makepad’s source code itself.
Makepad is experimenting with some new ideas that I’ll have to dig into later:
- “dual immediate mode” for building UI, which claims to have “the code simplicity of an immediate mode API with the scalability/componentisation of a retained mode API”
- portable shaders compiled from Rust code
Ilmari Heikkinen continues work on Qframe, now with even more features, still in 300 LoC!?:
Qframe 0.10.0 - Now with JSON validation, CORS headers for local net requests, HttpOnly session cookies, hasOwnProperty checks in routers, comments for every line of code, bcryptjs instead of bcrypt, removed nodemon dep. Still in 300 lines 😇https://t.co/qWuUXuYrzs— Ilmari Heikkinen (@ilmarihei) July 17, 2019
I’m planning to double-back and study Qframe in-depth, because it’s rare to see so many essential backend features in such a tiny codebase.
And it’ll be a treat because Ilmari even went and commented every single line of Qframe’s source code.
I went back through my old blog and found that I had written about Ilmari’s ‘mugen’ project (over 10 years ago!).
@ilmarihei I've followed you for a while, but did not connect the dots that you also made 'mugen' back in the day (I even blogged about it back when we all still blogged :-)https://t.co/VIW64Img0J— ⚡ Devon ⚡ (@DevonStrawn) July 15, 2019
Ilmari shared even more amazing ZUI apps he had built in addition to ‘mugen’:
Wow, that's a blast from the past. I've been trying to write that program now for more than a decade. https://t.co/NJq6mXNF8z & https://t.co/El2ThwJjwk , https://t.co/2gLDF4Drhe , https://t.co/V7KljU1b2q 🤦♂️— Ilmari Heikkinen (@ilmarihei) July 16, 2019
Oh this one too https://t.co/YzvQH6IsOt— Ilmari Heikkinen (@ilmarihei) July 16, 2019
And a higher-resolution image of ‘mugen’:
I found the sources, circa 2003. The readme comments make my head hurt. The code and the UX make my head hurt worse. But it runs! pic.twitter.com/gT7UOGvaCt— Ilmari Heikkinen (@ilmarihei) July 16, 2019
The Russian-owned, privacy-destroying FaceApp reveals archetypal caricatures of hyper-femininity and hyper-masculinity:
Re-filtered the same pic of me through the Male/Female FaceApp filter over and over...here are the two genders everyone pic.twitter.com/fLOyQTjBTj— as someone who, (@perma_ben) July 16, 2019
Reminds me of some MSR work in the 2000s where the researchers extrapolated along some kind of ‘image regression’ model applied to faces. They found that the resulting faces indeed looked like archetypal caricatures, just like these.
I love level designers:
Does anyone else just randomly start modelling The Temple of Time from #OcarinaOfTime when they get bored/want to relax? No just me? Thought so... #Zelda #OOT #3DSMax pic.twitter.com/IOROEpbBDi— Matt Needler (@FireDragon04) July 14, 2019
Blender Cycles vs. Eevee render:
so, what if... #b3d #eevee pic.twitter.com/7gE7HccxzZ— Andy Goralczyk (@artificial3d) July 18, 2019
Speaking of Blender, a fantasy of ‘default cube’ heaven:
When you delete the default cube.@andrewpprice @tonroosendaal @BlenderArtists#b3d #cgi #eevee #blender pic.twitter.com/PjpT9cCsUW— Mr. Kintten San (@0by0ne) July 17, 2019
Pacpong = Pacman + Pong + Space Invaders. A brilliant combination of three classic games:
Game jam idea.... pic.twitter.com/hjbk8yKcFJ— Blaine Hodge (@nullterm) July 17, 2019
This is why buying virtual objects makes no sense. Virtual objects + profit motive + irrational consumers.
One of the reasons that digital/simulation can often be more expensive over time is that it creates something with no feasible end. (5/N)— Hannah Godofsky 💃🏼 (@h_thoreson) July 16, 2019
The many, many uses of optimal transport
Like many others, I stumbled across the incredible power of optimal transport recently.
This was the ‘gateway tweet’ that introduced me:
Sinkhorn iteration for Optimal Transport with TF. Code: https://t.co/qn1LXa551F pic.twitter.com/UQgbDlly3g— Alex Mordvintsev (@zzznah) July 16, 2019
Optimal transport is…amazing. Simply amazing.
I started collecting more notes about it, but my notes were too numerous for the roundup. So I wrote up a dedicated article on optimal transport.
Procedural Earth in PICO-8:
Contacted by someone disappointed that there was no longer any way to get the source for my #pico8 planetary #procgen demos. No Patreon anymore, so I decided to just open the code - here are the full versions on the BBS:https://t.co/VbSf77LRCkhttps://t.co/ZMGNIy89Yj#demoscene pic.twitter.com/oCOa00UHLa— Jakub Wasilewski (@krajzeg) July 17, 2019
A cool data-driven dialogue system:
July 18, 2019
I like how this illustrates a “sum that’s more than the sum of its parts”: by combining minimal design, emotion content, cuteness, and animation.
The source code is basically markup:
July 18, 2019
Another cool 1-bit game prototype:
EXPLORER.EXE— Marlon (@mr_m_wiebe) July 18, 2019
(a lil side project😄) pic.twitter.com/gZpxgWXCo6
An interesting use of SDFs for “sticky particles”.
Particle collision with SDF is more fun than expected 👨🎨 https://t.co/0XnRvTr3QY pic.twitter.com/BhqDXKWo4Y— Ryan Alexander (@notlion) July 17, 2019
It’s similar to “The Unfinished Swan” game. Instead of particles, you could dynamically splat onto a texture. Or splat onto an alpha map which reveals parts of a static texture.
Running nmap on your @Airbnb network is a great way to find hidden cameras and remind yourself you need to improve your posture.🤦♂️ pic.twitter.com/eRXLrBWwZI— Virtue Security (@VirtueSecurity) July 16, 2019
three dollars pic.twitter.com/WwusRXHcHN— Paperback Paradise (@paprbckparadise) July 3, 2019
July 16, 2019
I would have considered the padlock on this electrical switch adequate, but the wasps nest is a nice touch. pic.twitter.com/43fhVTbxqk— Keith Peters (@bit101) July 18, 2019
Rare photograph of a 10x engineer in action. pic.twitter.com/c9kN1SzE91— Daniel Martín (@dmartincy) July 13, 2019
Therapist: and what do we do when we feel sad?— Neckbeard Hacker (@NeckbeardHacker) July 17, 2019
Me: fork emacs
The front end eco-system of my website: pic.twitter.com/jpufX8PcJc— Marcel 💻 DevOps guy (@marceldempers) July 15, 2019
I have found the cutest thing in the known universe and it is this duck pic.twitter.com/t84EH2IuVL— Johnny (@thejohnnyshark) July 16, 2019
my heart 😭 this bunny shop assistant doing such a good job ♥️🐇 pic.twitter.com/8Iqt3eMkLs— marie lum @ SDCC (@PuccaNoodles) July 17, 2019
More reasons to roundup
This week, I found more evidence for the pro-roundup “roundup as breadcrumbs” argument from the previous edition.
There just isn’t a good tool to organize tweets. So the roundup is kind of a nice way to:
- GC my brain
- keep tabs on projects as they evolve
- share interesting bits with you all
- bookmark with context
So far I haven’t come up with any good reasons not to roundup, other than time involved. But reviewing the previous roundups shows me that there’s enough value in doing this that I’ll continue for the moment.
One benefit of the roundup that I predicted but haven’t experienced until now is accreting enough material to generate entire articles from.
This week was the first time that happened, with my article about the many, many applications of optimal transport.
Thank you for reading, and have a great week!