This week (ended July 14 2019), Twitter went going crazy over an overly-reductive 10X engineer thread on Friday / Saturday.
The ‘10X’ buzzword has reached a point where it’s clearly struck a nerve.
But I don’t think the 10X fetish is going away anytime soon.
If there’s more pushback in the future, it’ll just go underground and morph into some other buzzword that means ‘person who can be pushed to deliver more code for less money’.
After all, productivity = revenue / person
…
The Steam Labs Interactive Recommender is getting much praise around the web.
The popular vs. niche slider in particular is quite cool, and I wish it were integrated into all web products. Google, Twitter, and their ilk would be much more interesting with that filtering option.
The interface is also crazy fast. But apparently it’s because the interface is ‘cheating’: Digging around in DevTools, I didn’t see any network traffic when changing the filtering options. So everything’s occurring client-side.
It looks like the JSON describing all the games is sent in the HTML document. That JSON contains a list of 1,296 games, which seems like far less than the entire Steam catalogue. Either it’s a curated subset just for me, or perhaps Steam responded to the “mountain of porn” controversy by culling the list:
i tried the steam interactive recommender and set it to max niche and newest and my recommendations are just porn games
— Gay For Rhea @ FE3H (@SapphicSpear) July 18, 2019
what are you trying to tell me steam, i was hoping to see neptunia/senran kagura/atelier
wait porn games may not be far off the mark there
The new ‘dust’ Device Mapper target in Linux 5.2 is a cool feature for simulating a storage device with arbitrary failures. This is great for testing your code on a flaky hard disk / USB drive. (release notes)
I've been looking at virtualization and failure simulation too long. "there is also a new device mapper target that simulates a device that has failing sectors and/or read failures" immediately stood out and I thought "Oh!, Cool!! what's it actually enable?" https://t.co/tmvogVNT79
— Joseph Heck (@heckj) July 13, 2019
The “What is the most C++ thing?” thread was funny and informative.
What would you say is "*the* most C++ thing"?
— JF Bastien (@jfbastien) July 12, 2019
Something you do semi-frequently in C++ which no other language would choose.
The thing that makes this a perfect question is the constraint:
Something you do semi-frequently in C++ which no other language would choose.
The answers are a micro-master-class in how to best approach and understand C++:
delete this;
— Joe Groff (@jckarter) July 12, 2019
Job postings where the only required qualification is “can write C++”
— Andrew Fischer (@ndyfschr) July 13, 2019
This next one’s a doozy. I guess I had such “C++ Stockholm syndrome” that I never realized this:
Change code practices to fit build system and compilation model:
— Tamir Bahar (@tmr232) July 12, 2019
- pimpl
- header only libraries
- forward declarations
- any form of compilation firewall
- more advanced stuff I'm not capable of describing
Also, referring people to the standard on a regular basis.
Aggressively avoid exceptions even though the language supports them.
— Félix Cloutier (@zneakr) July 12, 2019
Wrestling with the thought of pulling in any dependency (especially the first), because I know it will decimate my user base.
— Nagy-Egri Máté (@nagyegrimate) July 13, 2019
• Doing I/O by operator overloading instead of function calls
— Eric Fischer (@enf) July 12, 2019
• A cultural phobia of copying data, even though the entire container system is set up to contain objects themselves instead of references to them
In my “Trying to Learn C#” talk I said something like if you reached in and ripped out the heart ❤️ of C++ it would be the destructor.
— Patricia Aas (@pati_gallardo) July 12, 2019
I did this with actual reaching in and grabbing arm and hand gestures...
I think I need therapy 😰
And my own contribution:
Dedicate years learning it suuuuuuper deeply. Then vow (in blood, of course) never to use it again. Avoid it at all costs. Recommend all others do the same.
— ⚡ Devon ⚡ (@DevonStrawn) July 13, 2019
Craig & David shared a nice level design tip.
When I talk about "breaking up boxy levels", this is the oldest and most fundamental technique: throw shit at the walls.
— Craig Perko (@craigperko) July 11, 2019
This era is good to study - boxy exteriors are just as common, and just as carefully broken up.
Although my fave example is Bloodlines, not Kingpin. https://t.co/R3j2f8X3oT
I’ve been studying composition fundamentals, and it’s great to have easy tactics to make boring elements a little more interesting.
A DSL for purely-functional 3D graphics is kind of neat.
Firstly, it combines F#, Domain-Driven Design, and the Elm Architecture. That’s interesting because you don’t even see much about these technologies in isolation – they’re still on the fringe. Combining them is even more interesting.
Secondly, the Elm Architecture solves a recurring problem that game developers fail to solve: how to synchronize game state and render state without introducing bugs?
Jacco Bikker open sourced the Lighthouse 2 rendering engine It’s his latest real-time ray-tracing / path-tracing engine. Here is Jacco’s blog post about it.
@SandwichColonel posted this fun Power Drift-style game demo with sprites from Nintendo’s 3D Hot Rally:
Movin' forwards
— ColonelSandwich (@SandwichColonel) July 12, 2019
(Music is Running Up! from Dirt Fox)#gamedev #indiedev #arcade pic.twitter.com/sHCWJfFTlI
That tweet led me to these detailed articles by fellow Portlander Jake Gordon about how to build an old-school 3rd person racing game:
- intro
- straight roads (this is where the real meat starts)
- curves
- hills
- conclusion
Interesting discussion on the ‘games as art’ debate between two folks who were both at Brian Moriarty’s 2011 GDC talk.
"Games are art" is a straw man. Talk with me about this.
— /'dɹɑkɪn/ Inbox (92) (@droqen) July 11, 2019
Zach Gage makes some great points about Duchamp opening the door to question fundamental assumptions:
what modern art gets that moriarty does not, is that art fundamentally IS an experience — That there’s context and culture brought to what you see. Duchamp opened the door by questioning the context of ‘gallery’ and ‘value’. It feels cynical now but it was a radical new idea
— Zach Gage (@helvetica) July 13, 2019
Continuation of Duchamp’s strategy of ‘breaking out of aesthetics to enter every other realm’:
the rest of modern art history has been about pushing forward down that path of what context means and how to break art out of this very small place it could speak (visual aesthetics) and into every other realm.
— Zach Gage (@helvetica) July 13, 2019
Video games as the latest step in this process:
Videogames (and games in general, LARPS most clearly) represent the newest front (and the one with the most powerfully far-reaching literacy) in this movement
— Zach Gage (@helvetica) July 13, 2019
A reminder of what separates critics from artists:
lastly, critics job is not to tell artists the future.
— Zach Gage (@helvetica) July 13, 2019
if critics knew the future they would be artists.
Tim Dawson shares this great game / graphics debugging tip:
when I'm figuring out code, something I rely on more than I'd like to admit is dumping numbers I'm interested in on the screen to see them change realtime then looking for patterns
— Tim Dawson (@ironicaccount) July 12, 2019
"hmm that number looks a lot like current position minus the orthographic camera size setting" etc
It’s a smart way to debug: by having a mental model of how variables change over time.
Inigo gives good advice for how to approach the start of a creative technical project:
IMHO, when you're about to start a challenging rendering project, do NOT hire engineers, don't start brainstorming optimization and don't attempt finding a new rendering technique just yet. Instead, hire good artists first and foremost. Talk to them. They'll know how to proceed.
— inigo quilez (@iquilezles) July 9, 2019
It also apples if you’re a developer looking to build something: pair up with an artist first.
It’s an insight I’ve heard many times from hobbyists and seasoned professionals. It’s a lesson I learned the hard way years ago, too.
Developers should not make of go of it alone, especially not at the outset of a project. It’s somewhat counter-intuitive (I mean, art naturally comes after code, amiright?), but creatives are even more critical at the inception. You’ll save a lot of time and increase your odds of success.
If you’re a developer there’s a (relatively) quick hack to feel this lesson deep in your bone marrow:
Spend a few months creating assets in your medium of choice.
As an added bonus, you’ll pick up some rudimentary art skills and appreciate the work of your creative colleagues even more.
A a neat trick, but it doesn’t help folks with LAN IP addresses like 192.168.1.*
.
I learnt today that IP addresses can be shortened by dropping the zeroes.
— Infected Drake (@0xInfection) July 8, 2019
Examples:
http://1.0.0.1 → http://1.1
http://192.168.0.1 → http://192.168.1
This bypasses WAF filters for SSRF, open-redirect, etc where any IP as input gets blacklisted.#infosec #bugbounty #bugbountytip pic.twitter.com/2zcrLCmq0R
Pavel Dobryakov shared how he made a touch-sensitive fluid simulation even cooler by exaggerating swipe feedback via motion blur:
using directional blur to make swiping more impactful 😮 pic.twitter.com/A7YtftAMVR
— Pavel Dobryakov (@PavelDoGreat) July 8, 2019
If you’ve seen Martin Jonasson & Petri Purho’s Juice it or lose it talk, the same principles apply here.
Either Amiga nostalgia is experiencing an upswing, or I just became more aware of it:
You've worked with a stubborn engineer.
— Cabel (@cabel) July 12, 2019
But have you ever worked with an engineer so stubborn, that to get them to use the new OS they're supposed to be working on, you create a custom build of the OS, with the old UI, break into their office, and replace ROMs in their computer? pic.twitter.com/wDhf2WBAH4
I once owned a copy of the “Amiga System Programmer’s Guide”. If I remember correctly, there was a note in that book about a way to achieve >64 colors without HAM…
Excellent, I'm ready to go, need to find my disk with Devpac now... 😁 pic.twitter.com/yruqpCZEVK
— Seán (@sb101sb) July 7, 2019
Akiba’s retro electronics stores are just a marvel to behold. I cannot wait to checkout BEEP next time I’m in Tokyo.
AMIGAの雑誌のお値段を見直し致しました!AMIGA本体も販売しておりますので、ご一緒にいかがでしょうか?(テリー) pic.twitter.com/9NUE7R6P3t
— アキハバラ@BEEP (@BEEP_akihabara) July 7, 2019
Blake has an enviable collection of retro computers and frequently posts his cool hacks:
Logged into the PLATO system IRATA ONLINE via my Amiga 1000. This is awesome! #BBS #vintagecomputing #Amiga pic.twitter.com/NobYhgaMMv
— Blake Patterson (@blakespot) July 6, 2019
Demoscene nostalgia: Making of Second Reality, by Future Crew.
A home video from 1993 showing the Future Crew putting the final touches on their soon-to-be-famous demo at Trug’s house.
Thanks to the English subtitles (turn on closed-captions), we can follow some of their discussion:
- weighing the merits of using Pascal vs. how much assembly code it generated (!) - a common debate at that time
- color gamut issues with projectors (that would project the demo to the audience at the demo party release)
- listening to the soundtrack playback from a tracker (look like ST3, or maybe a predecessor?)
- ‘borrowing’ a drawing from How to Draw Comics the Marvel Way
BoxCutter is a paid ($20 minimum) addon for Blender.
Pretty cool - it provides a good subset of Sketchup’s solid modeling functionality.
A note about writing the roundup
When I started writing the roundup, most of the linked content was tweets.
At first I tried embedding the tweets using Twitter’s embed codes – the obvious solution.
But embedded tweets are kind of a UX mess. Especially when there’s dozens of them on one page. Twitter’s formatting takes up a lot of space, with crufty bits that I don’t feel add to the reading experience.
So I wrote a quick script to pull just the bits I wanted from the Twitter API. That worked great but had a major problem I didn’t foresee…
The Twitter developer agreement won’t let you modify the formatting of tweets!
I wanted to do something nicer and more condensed here, but don’t want to run afoul of Twitter. So I have no choice but to live with the non-optimal Twitter formatting for now.
Ugh.
Anyways, onwards.
Why do the roundup?, revisited
I came across an even better reason to do this roundup: it provides breadcrumbs into the endless haystack that is the Web.
Perhaps my Twitter-fu is bad - but for big threads I often cannot find a Twitter sub-thread from the top-level thread link. Case in point - here’s a top-level thread.
And here’s the sub-thread I wanted to reference.
Notice how the sub-thread doesn’t appear when you scroll through the view from the top-level thread? You have to click into a single comment to get this super insightful sub-thread. But how do you know to click that single comment? You don’t. You either get lucky, or you miss that insight.