Damn lazy millenials

This is not about Alex St John. It's not even about people like him. It's about systems, and how they trick and affect us all. Let's start with some context.

Wait what's going on?

Yesterday saw Gamedev twitter explode in outrage after the publication of a VentureBeat article. The article in question is basically the usual rant against privileged lazybums who don't realize how good they've got it. Except this time it seems to come from one of our own, and it caught fire. Rami Ismail wrote an excellent first-level takedown, which should be mandatory reading for every young game developer out there. Kotaku wrote an article, everyone got very angry on social media, the usual.

But the story doesn't stop there. Thanks to a friend, I happened to have heard the guy's name before. It turns out that he wrote some hiring advice a good while back, that is surprisingly honest in how disgusting it is. "Recruiting Giants" is a masterclass in hiring for maximal exploitativity. It's a fascinating piece of writing, because of how brutally honest it is about not caring about people, diversity, health or any of those boring things.

A quick aside on ad hominem

I am still relatively new to the game industry. As such, I did not know much of Alex St John's reputation, which is apparently horrendous. It looks like he's known as a clown, a joke, and more. But if you use that to dismiss the article, you're missing the point. He's not alone in his thinking: look at how he mentioned the "Recruiting Giants" presentation was being given to other CEOs! Whether he's a joke or not, he's influential, and representative of a type of thinking. So let's dig into that thinking instead of getting distracted with gossip.

The hypocrisy of leaders

On one hand, we have a piece designed to make us stop whining. The whole point of the VentureBeat article is to make us feel guilty, and thankful that we even have a job in this privileged field. He frames this as a moral argument: don't we realize how lucky we are? how good we have it? Laziness, entitlement, dismissing the value of intellectual work over physical labor... It's all there. That is what he's telling US. Now let's look at what he tells LEADERSHIP instead.

"Recruiting Giants" is about recruiting people you can exploit. Note how it frames "real engineers" are people who can be fully dedicated to your company, and how it encourages breaking youngsters, especially if they're undiagnosed Asperger (!). It hates people who know their market value and perform to it: of course, that's bad business from the hiring end. It mentions passion, again and again, forgetting as always that the word comes from "suffering" - learn Latin and you too get to be an etymological killjoy.

This two-face discourse is the interesting thing here. On one hand, he wants us feeling guilty we're not passionate. On the other, he explain why passionate people are better for exploiting. This is propaganda and manipulation, nothing less. The only thing unique about St John here though is how honest he's being about the whole thing, because this mindset is by no means unique, neither to him, nor to games, nor even to tech.

Loving your job

One of modern capitalism's greatest successes is tying personal worth to the job market. "You should love your job, be dedicated, be happy you work in such a great place. If you don't love your job, be grateful you even have one, because have you seen the economy these days? Stop complaining. You're so entitled. Back in the days it was much harder so clearly you're whining over nothing."

I hate this line of thought. It pretends that progress has to stop somewhere. That since we have it better than people before us, we need to stop striving for more. That because the economy is bad, we need to relinquish quality of life as people. That because we have fancy smartphones these days, clearly alienation isn't a thing anymore. This ties into the basic income discussion, into French protests to preserve our social care, into boomers bashing millenials, into the banks bailouts, into what we should aspire for as a species. But let's focus on alienation.

A job is the exchange of labor for compensation. Period. That is what your work contract says after all. Does that mean you can't be dedicated, love your job and more? Of course not! But it does mean you should keep in mind that relationship is contractual, and there should be a fair trade-off. A company is not a person. It has no heart, no morals, no ethics, except those that are imposed onto it by regulation or its leadership. A company is generally profit-driven. Therefore making you dedicated to your job is an easy way to squeeze more out of you. No need to tell you to stay late, you'll do it yourself because you care. No need to ask you to monitor your emails late at night, you'll do it yourself because you can't turn off the work brain. No need to ask you to do free marketing on social media, you'll do it because you're proud of your work, and it'll look more honest to boot. I'm not saying you're a bad person for doing any of that: I'm saying understanding the mechanics behind it is important. Otherwise you'll just pin it on "bad management" and do it all over again next time.

Another aspect of that trick is how employement and self-worth become linked. You're unemployed? That has nothing to do with your worth as a person. The job market's fucked. Your skills might be misaligned. Bad luck. Bad time. Shitty passport making you hard to hire. Discriminations. So much more. It's not your fault but it becomes your fault. It becomes a failure of your very self, and does a number on your mental health. Especially in a messy field like games, unemployement is to be expected. But we always internalize it as a failure on our part, instead of a product of the circumstances.

There's a French economist called Frédéric Lordon. His book, "Capitalisme, Désir et Servitude" has a concept of the angle between two vectors: your will and that of your employer. Your productivity is the dot product of those two vectors. The higher the angle, the less productive you are. So it's in the company's interest to align your desires with theirs, ideally without your awareness. This is exactly what St John is trying for in the VentureBeat piece.

Resistance and perspective

It is important to remain aware of how good we have it. That is absolutely orthogonal to striving for better still. Yes, game development is a "fun" field compared to many out there. Yes, our labor is pretty low on the physical side. Yes, we get to be creative, sometimes. Yes, it could be a whole lot worse. None of that means we shouldn't strive for more.

The project of the 20th century was to work less. Mechanization was going to free us, not become the scapegoat of chronic unemployement. Increased production efficiency meant more time for other things, creation, enjoying life. But somehow, somewhere, that was taken away. Bulltshit Jobs is a good read on that.

As we face a 21st century with a different job market that leaves many people stuck, it is worth asking: how did we end up striving for "a good economy" rather than a world where work isn't even needed anymore? Why would it be such a bad thing to not need to work, if systems are in place to keep the world running? Is it laziness to aspire to a society where hard work is genuinely not necessary anymore? I'm all for respecting our elders' and our peers' efforts, trials and hardships. But maybe aiming to avoid them ourselves is not such a bad thing.

No but seriously can we just burn him?

No. No burning. No pitchforks. It doesn't help anything and the ash is a mess to clean. Dogpiles are not good. Harassment is not good. So cut that crap. Take down ideas, not people.

As explained above, understanding how systems shape us is important. They mold our worldview, how we analyze and understand things, how we see ourselves and our self-worth, what we aspire to. That ALSO applies to those flinging shit from up above. For whatever reason they've had it good and become convinced the system is good, and therefore have an interest in maintaining it. Alex St John seems to genuinely believe his version of "real engineers" is the best way to get stuff done. He's painfully wrong, but that's not entirely his fault. The system does reward his version of things, to a point. How do we resist that system? How do we change it? Those are the questions worth asking.

My solution to this was to go freelance and do things on my own terms. I can afford to do so because I'm a French citizen in Sweden and therefore have full healthcare no matter what. I can afford to do so because I'm a programmer and work is easy to come by. I can afford to do so because my partner has a stable job, my parents have a stable job, and I have three or four safety nets below me. I can afford to do so because my mental healths needs last year were covered and I am now functional again.

Others do not have this. How can I help them? How can I get them to a place where they too can do things on their own terms? I'm still looking for answers. Writing things like this to help fix manufactured guilt is hopefully a start. Don't fall for this bullshit. Complain. Unionize. Reflect and respect, but don't let them guilt you into inaction. You deserve better.

Weaving 101

This is part of the Silk in Lyon series.

We'll be talking about weaving a lot in this series. But what is weaving exactly? How is it done? What materials does it use? What products does it result in?

There are overall two types of fabric, which you could also call cloth: knitted, and woven. Knitted fabrics are made by creating lots of tiny loops, locked into each other. Your T-shirts are most likely knitted, so are many hats and scarves and sweaters. Generally, if it's very elastic, it's knitted.

The principle

Woven fabrics are what we'll talk about here. The basic principle is to interlock perpendicular threads: over-under, over-under, and so on. Repeat this with many parallel threads going both ways, and you get cloth!

Basic weave structure

In practice, one of the thread groups is prepared in advance, and the other is interlocked row by row. The prepared thread go along the length of the fabric, and are called the warp. Every thread in a warp is called a warp end, and the number of threads per inch is measured in "epi", (warp) ends per inch. How big the epi is depends on the type of yarn used, and will affect the finished cloth greatly.

The other thread goes along the fabric's width, and is called the weft. Historically this was done by having the thread on a shuttle, and passing it back and forth from left to right and right to left. Newer techniques have been devised to make mechanized weaving faster, but this isn't the topic today.

A very simple loom

The simplest loom is what I'm using in my tapestry classes: basically a wooden frame with nails on it. The warp is wound around the nails, and the weft passed manually over-under-over-under and so on. This is how traditional tapestry is made to this day, though often using more sophisticated, larger looms with devices to lift every second thread. Separating the two thread groups, even and odd-numbered, is called opening the shed. Weaving happens by opening the shed, passing the weft through, switching the shed to the other thread group, passing the weft, etc. In tapestry, this is mostly done manually, and a frame loom such as this means you pick out the threads by hand everytime.

The rigid heddle

A slightly more sophisticated loom is a rigid heddle loom. It has two beams, or rollers: one at the back storing the warp, one at the front storing the woven cloth. The goal is to keep enough space for the shed to open cleanly. As you can see, every second thread is in a hole and will move up and down with the heddle. Push the heddle down, one shed opens; pull the heddle up, the other shed opens. A simple loom such as this is enough to make cloth quite fast already, compared to picking out the shed manually! Ashford, a company that manufactures looms, spinning wheels and more, has pretty good videos showing the whole process

Shaft looms

If we upgrade the loom a bit and make it bigger, we get this typical floor loom. This is what was used to make cloth for the longest time, and is still in use by many handweavers today. You can still see the two beams, but the mechanic at the center is quite different. This time we have several structures, called shafts. Each of these lifts a different group of warp ends, which allows the weaver to make more complex patterns. Preparing a loom is called dressing, and takes a lot longer than the weaving itself! Every thread has to be passed through the shafts in the right place, and through the reed at the front that keeps the threads spaced correctly. If you have jeans, look at them: the cloth likely has small ribs on it. This is a structure called twill, and is a typical use of a loom with a few shafts. More shafts can produce very complex patterns, as superbly demonstrated by Arra Textiles

Materials and finishes

The base material for weaving, like knitting, is yarn, but it'll often have different characteristics. For the warp, you'll generally want strong, non-elastic yarn as it'll be under quite a bit of tension. Materials can be anything: linen, wool, cotton and such as very common, but experimental weavers and fiber artists can use anything, from coper wire to paper! See for instance this wonderful fiber optic and silk curtain.

A woven cloth is not ready to use off the loom. It will need washing, pressing, and sometime further chemical processing, to get its final appearance and properties. The way a fabric feels to the touch is called the hand of the cloth. The way it behaves over a form is the drape. Different fabrics will bend and stretch differently, and as a weaver you get to decide exactly what you want to make. It will depend on the weave itself, on the yarn, how it was dyed, how it was spun, on the fiber, how it was grown, how it was prepared. At the peak of the Fabrique in Lyon, from the silk worms to the finished cloth, there were 60 to 90 different jobs involved in the manufacturing process! Textile manufacturing is mostly invisible today, but it's a very complex and fascinating industry.

What next?

Okay, that's all very nice and interesting. But we stopped at rather simple geometric patterns. So you'll ask, how are those very complex flowers and birds I've seen on brocards made? How are those questionable painterly cushions I've sit on a few times woven? When do the punchcards come in, because I'm a programmer and I KNOW punchcards are somewhere? That brings us back to Lyon, and we'll talk about it in the next part!

Why silk in Lyon?

This is part of the Silk in Lyon series.

Lyon is a city in the middle-south of France, on the Rhône. It's always been a commercial hub as a result, way before planes and trains were available, and got plenty of tax-free fairs by royal orders. Italy is also not too far, which means many merchants came to the fairs. In the 15th century, that was where silk was bought in France, but not made.

Unfortunately, wars with Italy were a reoccurring thing, and the French tendency to protectionism was already very present. The French king Louis XI decided to try and start a silk industry in Lyon in 1466, as a natural evolution of the commerce already set there. It didn't take, as Lyon was afraid this would scare the Italian merchants away. The silk weavers went and settled in Tours instead.

In 1536, François the First was both fond of silk and of fighting the Italians. He wrote new letters, giving the same rights to Lyon that Tours had: weaving silk, gold and silver. The context had changed: more letters from the king had made Lyon a very free town, and this time the new industry picked up quickly. Italian silk weaving masters settled in Lyon, paying no taxes as long as they lived within the town walls, and taught their craft to the locals. This blooming industry will later be known as La Grande Fabrique, "The Great Manufacture/Factory".

The second part of the 16th century starts the cycle of crisis for silk in Lyon: between religious wars, shifts in taxes and competition, the industry collapses a first time. It picks back thanks to more shifts in rules, and an innovation, the "métier à la tire", literally "pulling loom" and translated to drawloom. We'll talk more about the technicalities in a later article.

Around the same time, thanks to more royal decisions, the south of France starts growing silk. If you're not familiar with the process, it involves breeding butterflies to collect the cocoons of the worms. To collect just the one continuous thread, a process called reeling, the poor larvae need to be boiled dead before they poke a hole in the cocoon. This is why silk is generally not vegan-friendly!

This brings us to the 17th century, and Colbert. Through several reforms, rules and what we would today call a marketing push, the number of silk weavers in Lyon grows quickly. Orders mostly come from the Crown, to furnish castles and dress princes. But as the reign of Louis XIV comes to an end, these dry out, forcing the industry to look for new clients. Pattern-makers leverage the reputation of the French court, and start shaping the "French taste", which we'll discuss in detail in another article.

The 18th century is a golden age. All of Europe wants French silk, designed and woven in Lyon. Paris is a fashion capital, where merchants from Lyon and their artists make sure to keep up with trends. The social structures get set in stone, causing the first serious clashes between weavers and silk merchants. Several inventors innovate and improve on the classic loom: Basile Bouchon and Jean-Baptiste Falcon use punch cards, Jacques Vaucanson attempts mechanization. None of these catch on entirely, but they will lead the way for the Jacquard loom.

Then comes the French Revolution, which changes everything. Obviously the political earthquake affects Lyon and the silk industry, but a big problem is that nobles were the main customers of silk. The rest of Europe is also mildly upset by the whole beheading thing. The religious congregations get kicked out from the Croix-Rousse hill, which becomes the heart of the Fabrique. And that will be our next part!

Much ado about Customize

Battlefield means soldier customization. Battlefield 4 specifically allows you to customize your loadout (or kit), your weapon accessories, and your vehicle. For reasons best called historical, the whole system was and still is extremely complex and filled with technical debt. Which is where I come in.

A large part of my work on Battlefield 4 ended up being that system, because it needed a quasi-full rewrite of the UI layer. The initial goal was to reduce technical debt and make it more data-driven, it ended up allowing us to convert it to the in-house C++ UI framework rather than using Scaleform. But this is not what we'll talk about today. No, we'll talk about funny bugs.

Quite early on, one day, we fire up the game for a quick review. And we're greeted by the soldier having a glowing light orb over his head. After a good ten minutes laughing out loud and catching a quality video capture, we start looking for an explanation. It eventually turned out to be a temporary underwater indicator. "Wait", you say, "this still makes no sense". It actually does! And the same root cause led to the screen being blurry and filled with fishes another time, but tragically I do not have a screenshot of that particular hilarious bug.

See, the Customize backdrop is a standard 3D set, built in the level editor. But it needs to exist on the level to be loaded at the same time, while being out of sight from the main events, of course. Can you see where this is going? Yes, the Customize backdrop is under the level! Which technically means it's under the water level, which was triggering underwater effects like the blinker and the fishes. The fix was to add an exclusion volume, which was luckily supported in the engine.

Another time, during a regular playtest, angry emails start coming in. "How am I supposed to fly my plane with a tank floating in front of me??!" Laughs, video capture, and search for an explanation. Luckily I had just been poking at the 3D vehicle display in Customize, so that ridiculous tank sure looked familiar. It wasn't a case of broken physics, as has happened before in Battlefield, because the tank was always in a set position in front of the player's camera. Which is exactly how the Customize vehicle was positioned.

So what was going on? The Customize vehicle is a normal game entity, spawned through the same code as anything else in the game. Which is why the flying tank had physics and could be shot down. It just needs to... not... be replicated on the server. Woops.

It turns out that two lines of code had been inverted. The first line spawned the vehicle into the world. The second line told the vehicle to stay on the client, and not be sent to the server for replication. The correct order was the opposite one, since the spawning also caused replication if the option hadn't been set. And that is how stateful code will get you every time.

A fun side effect of the bug was that you could stack Customize vehicles from several clients. And so the tankcopter was born!

Those were hands-down my best bugs during Battlefield 4's development. Not the hardest to fix or the most epic hunt for a culprit, but definitely the most amusing ones. The Battlefield 4 UX team was a pleasure to be a part of, and I'm proud of what we delivered. I couldn't have wished for a better first game job.

Lyon articles index

In early January 2016, I spent a few days in Lyon to explore the textile history of the town. That was prompted by visiting the silk museum in Stockholm, where I learned that Swedes had stolen all the mechanical secrets from Lyon!

Everything I heard and saw will not fit in a single reasonable write-up, so I'll be dividing it up. Here's a preliminary plan that will turn into an index, of course highly subject to change as I write the parts!

  • History and social context
    • Why silk in Lyon?: On the beginnings of the Fabrique, from François the First to the Roi Soleil, up to the French Revolution.
    • La Croix-Rousse: Recentish story of the neighborhood which was basically a weaving factory in the 19th century.
    • What was a canut?: Won't be the first nor the best explanation of it, but maybe a start for the curious!
    • What was a soyeux?: The 1% of the days.
    • The various revolts: And why the left-wing picking up slogans without digging is problematic.
    • The modern crisis and what and who is left: Or "I was lucky to meet a daughter of a canut whose father gave up only in 1980".
    • Processing my thoughts on how this relates to my field :): Expect Silicon Valley bashing, a criticism of the modern left-wing and anti-capitalism.
  • Technique
    • Weaving 101: 'Cause we can't talk advanced fun without the basics.
    • From "lacs" to the Jacquard in Lyon: From pulling ropes and exhausting work to a machine making the job disappear.
    • Some velvets and how they're made: Because I hate velvet with a passion but fell in love with how it's made.
    • Those huge ribbon looms from Switzerland They look awe-inspiring and the way they work is really interesting!
    • "Chiné" or the French take on ikkat: How to make complex patterns on a plain weave.
    • Brocatelles, "pockets" and a few ways to add 3D
  • Art
    • From ripping off the Italians to "the French taste": Tied into the early days is how patterns developed.
    • Woven portraits: Amazingly expensive and impressive technical achievements.
    • Why you shouldn't use your flash when taking pictures: Reflection on pigments, the current aspect of old textiles versus re-weaves, and how things might have looked in the past.