The Messy Middle
A long quote from the essay Why Is Everyone In Tech So Sad? by Aaron Horwath:
Employees overwhelmingly choose to remain or leave their roles because of their colleagues and/or bosses, and the quality of the experience of the messy middle a workplace offers. Those are the elements that make work fun—and valuable.
But not everyone feels that way. In my experience, there are two broad categories of Knowledge Workers. The first are outcome-first workers. Their focus is on the business, on winning, on efficiency. Human needs and faults and emotions are an obstacle to be overcome.
The second group has an experience-first perspective. These workers love the messy middle. They value the journey. They want their organizations to perform well but as a natural consequence of collaboration, debate and shared struggle with people they actually like. Many experience-first people are artists outside of work. Photographers, directors, screenwriters, sculptors, painters, poets, writers. Many are active volunteers. For these people, to be pulled away from their economically unviable passions requires something in return: a company experience with freedom for exploration, creativity, problem solving and cool colleagues.
Research suggests this group needs that environment to do their best work. Harvard Business School’s Teresa Amabile spent decades studying what produces genuinely creative, high-quality output. Her Intrinsic Motivation Principle determines that people do their most creative and innovative work when motivated by the work itself — the interest, the challenge, the enjoyment — not by outcomes or metrics. The environments that kill creativity are political, risk-averse and relentlessly outcome-focused. The environments that stimulate it are collaborative, idea-driven and free. The messy middle, in other words, isn’t inefficient. It’s the condition under which genuinely valuable work gets produced.
It’s important to note that the impact of removing the messy middle from the work experience of these two groups is asymmetrical: For outcome-first people, it is a victory. For experience-first people, it undermines the foundation of work.
I'm definitely in the group of people who thrives in the messy middle.
Another interesting quote from the same essay:
We’ve been through waves of hiring and firing a thousand times before. But this time might be different. In the past, there was always a fresh cohort of workers waiting to be brought in. But what if talent stops coming back? What if the AI transformation gone wrong makes top talent — particularly those who are experience-first by nature — lose faith in Workism en masse? What if, when companies go to replenish headcounts, talent freed from the Workism spectacle has turned to different versions of their lives? What if their side projects suddenly became profitable? The talent pool increasingly doesn’t own homes and doesn’t plan on having kids, so it has perhaps never been easier to make a career pivot toward something that is genuinely satisfying in ways corporate life isn’t.
We're building on stolen ground
A technologist who builds the Machine anyway is just building it on stolen ground.
Back in April, I attended the Cables of Resistance conference. One of the workshops that provoked the most thoughts was hosted by Tara Tarakiyee, called "Can We Build Hardware Without Capitalism?"
The introductory quote here is from a blog post they wrote about the topics covered in the workshop. It's definitely worth a read. The short story The Machine Stops mentioned in the blog post can be found online at Standard Ebooks.
Nextcloud run as PHP-FPM in Docker, served via external nginx
As part of moving all my self hosted stuff to a new home server, I'm switching from serving Nextcloud directly from the host machine, to have it run in a Docker container.
I just managed to solve a problem with running Nextcloud from their nextcloud:fpm Docker image that I have been battling for a few days.
The fpm version of the container image is supposed to be accessed behind a web server like nginx. The web server is required in order to serve static files and other non-PHP content. Their examples suggest setting up a Docker compose file that runs both the fpm container and an nginx container. But I already have nginx running somewhere else and don't want to have multiple of those running.
The Nextcloud documentation provides an example configuration for nginx to use as a starting point.
Despite (roughly) following their guide for nextcloud:fpm, I kept getting a 404 response with the following body:
File not found.
Searching for this in the Nextcloud source led me on a detour: The string "File not found." is found in a file called apps/files/lib/Controller/ApiController.php, which made me believe this is where the response came from. But it turned out not to be the case and I scratched my head for a while, as I didn't see any changes when I altered that file. As I understand it, this specific response is instead (or also) a default response from the php-fpm process if it cannot find the file to process, and my best guess is that Nextcloud mimics this as a sort of security by obscurity when it doesn't know how to handle a request.
According to the nextcloud:fpm documentation, the web root should be mounted as a volume. Let's say these files are supposed to reside on your host in /path/to/nextcloud/data/www. Then your compose file should have a volume defined as:
...
volumes:
- /path/to/nextcloud/data/www:/var/www/html
...
If you ran nginx as part of the compose setup as suggested in their documentation, that container would have an identical mount, and nginx would serve files from /var/www/html.
But as I have an external nginx, it does not simply have /var/www/html set as the root for the Nextcloud virtual host. Instead, its root is set to be /path/to/nextcloud/data/www. And this is where the problem is: This absolute path is passed on to the upstream fpm handler, running in the Docker container, and this path does not exist in the container, which results in the "File not found." response.
My solution is to add another volume in the compose file, that also mounts the web root at the same location inside the container (having it mounted twice):
...
volumes:
- /path/to/nextcloud/data/www:/var/www/html
- /path/to/nextcloud/data/www:/path/to/nextcloud/data/www
...
This makes sure that both nginx on the host and php-fpm in the container can find the PHP files in the same place.
"Days" before May 16
The untested GLaDOS AI is activated for the first time as one of the planned activities on Aperture's first annual Bring Your Daughter to Work Day. In many ways, the initial test goes well: Immediately, within one picosecond of being switched on, GLaDOS becomes self-aware. The "going well" phase lasts for two more picoseconds, at which point GLaDOS takes control of the facility and locks it down, trapping everyone inside. She then deploys a deadly neurotoxin which kills the majority of the scientists within the facility. A few survivors manage to install a Morality Core into GLaDOS which prohibits her from using the neurotoxin again. With the Morality Core in place, GLaDOS turns her attention back to the facility and begins testing. Her goal: beat the hated Black Mesa in the race to develop a functioning portal technology.
From the Timeline of the Half-Life and Portal universe article on Combine OverWiki.
Brunost
John Mikael Lindbakk recently introduced his new programming language, Brunost:
One of the most important aspects of Brunost is that it requires Nynorsk. Variable, parameters and function names must be in Nynorsk. The interpreter ships with a Nynorsk dictionary that is used during the interpretation, and if the developer tries to do anything but Nynorsk, they'll get a clear message:
Feil: Namnet er ikkje gyldig nynorsk: 'thisIsNotNynorsk' på linje 8, kolonne 6
Nynorsk is no longer a minor subject in school. Soon, it will become a requirement for the Norwegian IT industry!