Where Are the Workers?

If you’ve ventured outside in the last few years, among other changes, you’ve likely noticed there’s a shortage of staff. Help wanted signs are outside of service businesses. Major hotel chains have stopped providing daily room service. Starbucks have shut down for days at a time and my very expensive gym has reduces its hours. Modern day anarchy. Let’s see what’s going on and if there’s anything we can do about it.

Here’s a qualitative summary of what we are experiencing: we cannot get the same services at the same quality and price today compared to before the pandemic. Moreover the narrative of unavailable services is accompanied by workers decrying working conditions, low pay, and inflexible hours, among other things. My favorite manifestation of the plight workers is the subreddit r/antiwork.

The membership for the subreddit r/antiwork has hockey-sticked in past year. While this subreddit recently suffered from a Moderator’s unfortunate interview with FoxNews (I’m not linking because Mods aren’t paid, they’re not supposed to be prepared for 15 minutes of fame, and they don’t represent a ‘movement’), the subreddit exposes predatory treatment of regular workers and the fact a lot of jobs don’t provide for any kind of human decency-type of features (not calling them benefits because in some countries they are rights) like sick leave, bereavement leave, safe working conditions, consistent working hours, and provide a sane way to spend 8+ hours per day. Here’s the subscriber growth:

This looks a lot like r/wallstreetbets during the $MEME stock craze of 2020 and 2021. $MEME stocks finally died; see my post that aptly preceded its inevitable decline (also see my note (1) about selling at the end of this post).

The growth of r/antiwork highlights the growing awareness in the US that some employers take advantage of their employees. Reading through the posts, as expected, most of the complaints arise from entry level, lower paid jobs created by small businesses. It makes sense that if small businesses are strained by a global pandemic they try and pass on as much of the strain to their employees, even if it doesn’t sound like the most humane response. In contrast, most tech companies sent their employees home in March 2020 and gave them a one-time payment to set up a home office and tacked on additional vacation days as the pandemic challenged mental health. As mentioned in my post about the shape of recovery, some industries have grown stronger while others such as travel, entertainment, hospitality, and food services are still struggling.

As we enter a new normal, we would expect to see a recovery in industries most affected by the lockdown. Consumer spending came roaring back, American savings accounts are the highest they have ever been, and a lot of states are acting like Covid is no longer a threat.

Overall employment is on track to fully rebound. Employment in the US will recover to pre-pandemic levels in 2022.

Statistic: Employment in the United States from 2012 to 2022 (in millions) | Statista
Find more statistics at Statista

The US population only grew .1% last year, thanks to Covid and Millennials preferring craft beer over babies, and we all got 1 year older. So why are we noticing a significant difference in the quality, quantity, and cost of literally any service?

The US labor force participation rate is not back to pre-pandemic levels. I think we’ve all seen the headlines that unemployment rate is 3.9%, which is historically low and some would argue below the natural churn rate. So, that’s why labor-force participation rate is such an important statistic to focus on. Couple a decreasing participation rate with an aging population and 0.1% population growth rate, we can clearly see there are fewer of the folks available to work pre-pandemic than current-pandemic state.

I’m going to make a few controversial points here. I’m open to criticism and changing my mind. Just don’t #cancel Adam Sutler. A lot of service jobs pay minimum wage or just above. Prior to the pandemic on-demand delivery and ride-share drivers accepted wages near minimum wage. Hospitality, food service, retail, construction, transportation, you-name-it workers accepted low wages. A lot of the lower wage workers are foreign-born. A lot of these services required people to show up in person to receive these services. Service workers in the US who were forced out of jobs that required in-person human interaction started different careers. Here are some trends around the change in population of foreign-born population in the US.

The US relies 10% more on foreign born labor than any other major economy, yet our foreign born population dipped sharply at the beginning of the recession triggered by the Great Trump Border Surge in March 2019. Yes, the US let in fewer immigrants, but it also had fewer jobs for immigrants during lockdown. After lockdown, applications for immigration spiked. Also job openings spiked in sectors where US-born workers already changed careers. Here’s a look at the backlog.

Ok, so we know there’s a backlog of folks that want to live in the US. I’m going to assume they want to work here as well. We know there are job openings. Tying back the earlier graph about r/antiwork, people want more money, more flexibility, and to just be treated better in general. I don’t think it’s a stretch to say if employers don’t want to do any of those things they need to hire people who are more desperate. While wages are going up, job openings are going up faster.

I hope it’s not too controversial to say that if employers don’t want to offer more to employees, they are going to need to hire foreign born employees. Please don’t think I mean it’s best for society that small businesses take advantage of people, quite the opposite. All I’m saying is looking at the data, companies struggling to hire need to either offer more or offer the same to folks who need it more. Also according to the Economist, quoting Giovanni Peri and Reem Zaiour from UC Davis, there are 2m fewer working-age immigrants in the US than before the pandemic.

At the end of December 2021, there were 1,596,193 pending immigration cases and growing at a seemingly exponential rate. Biden’s perceived softer stance on immigration, as well as the pandemic, have encouraged the highest immigration attempts in history. The average wait time is 2.5 years and up to 4 years for asylum seekers (I thought there was some kind of correlation between the word ‘asylum’ and ‘urgency’).

Let’s also look at what has been growing: Amazon. I can’t find recent employment data on Amazon, but this chart is through 2020.

During the Pandemic, Amazon added 500k workers while other industries lost workers. It’s safe to say the 2-day free delivery has taken a huge chunk of the labor force away from other industries.

So we have fewer foreign-born workers, a lower labor force participation rate, growing non-service-sector jobs and a whole movement dedicated to exposing just how bad employers in the US treat their workers. We also have a record-high number of people knocking on the US’s proverbial front door for a place to live and work. I’m not here to make policy recommendations, but there’s no sense in ignoring the supply-side. If society thinks we should fill jobs with the work force living in the country today, it’s clear the work force is demanding more.

I particularly love these types of conclusions that turn both Democrat and Republican headline ideologies against each other. I’m sure there’s smart policy folks on both sides that can reconcile this contradiction.

Well that’s all I got. There’s a lot more data and a lot more to this story, but hopefully this is a start. What are the solutions you may ask? The US has jobs, let’s let in folks to do those jobs. On a personal level, I’d like to see wages rise, particularly for teachers and nurses and anyone else who puts in a concerted effort to build the machinery that powers our society. I’d also like to see people be more grateful for service industry workers. I’d love to see a world where we move from the ‘Have a Nice Day’ service-sign-off to a ‘thank you for the help’. Personally, I don’t really need anyone to be unrealistically fake nice, just don’t be realistically mean. My employer pays for my help and I’ll absolutely never tell them to ‘have a nice day’. To be fair, I’m not going to say ‘fuck you, pay me’ either. I’ll land somewhere in the middle.

  1. Quick aside, a lot of folks are upset with me because I didn’t explicitly tell them I sold a specific stock. First of all, see my post where I announced I’m selling 60% of all $MEME stocks. If that’s not enough, feel free to make your own decisions about selling. Once you double your money I don’t care what you do next. Sell, hodl, whatever. I did my part. Every dollar that is invested should have an investment thesis and every day that thesis should be evaluated. I understand it’s not practical to do every day, but once the thesis is either achieved or no longer valid, sell. Simple. That’s how fund managers work. They set a target, say a 20% IRR and 2x multiple. Once they hit it their return in the set investment period, they sell. It’s mechanical. The only reason to hold would be if they reevaluated the current state of the investment and underwrote, say, a 20% IRR and 2x return in the next holding period, say 5 years. Also, this blog is about uncovering rare market anomalies controlling for the current macro economic environment sprinkled with a bit of technology because, hey, market anomalies arise because people don’t understand the implications of technological innovations. Its this very misunderstanding and uncertainty where you can make a short-term buck. As you all know, long term I’m holding a lot of Vanguard funds and BRKB (I’ll buy an A share before I die). I’ve never claimed to to know what will happen in the long-term.

The Truth About Web3

I’ve spent the last week or so diving into Web3 and I’ve had some revelations as well as disappointments. Before diving in to what I like, don’t like, what’s exciting, and what’s a Ponzi scheme, let’s talk about what Web3 really is.

There are a lot of interesting visualizations on the web that help describe what Web3 is in relation to Web1 and Web2. Here’s a simple one:

There appears to be some logical progression from Read -> Read & Write -> Read & Write & Own. In Web2, we interact with social media by not only consuming content, but posting our own. The content we post we do not own. In fact it’s used to target us ads. But, if you post to Youtube you can monetize a video. You do kinda own that, but you are beholden to Youtube’s Terms of Service. When you post to IG and have enough followers, you can get a sponsorship and get paid for a post. IG Terms of Service makes you add a #ad to the post. Web2 ownership is a bit more blurry than it appears. We’ll get into Web3 ownership in a bit

The image above is a bit more technical, but it correctly shows how Web3 ownership works. Web applications in Web3 are built just like Web2, except one major difference: rather than storing data on a private company’s servers, data is stored in distributed database hosted by any individual who wants to be a host (using their own servers) and accessible by anyone who access it.

Databases allow users to read data and write data. In Web3, read and write access is controlled by a standard protocol with ownership over writing controlled by private keys. Without explaining this too much, in short, if you have a private key on your computer, like a password, and you can write data to this distributed database! You can also do things like send data from one person to another. You can sell things by telling the database that if you receive a certain amount of cryptocurrency, then transfer my ownership of this thing to the person who sent me crypto money. The protocol for sending and receiving digital assets (data, as in bits and bytes) is accessible to anyone on the Internet and is secured by open standard cryptography.

Here’s some immediate applications of a decentralized protocol. If you buy a piece of digital art, I can make a game that lets you use your Bored Ape’s as characters. I can make a game that uses digital items you own from another game, like Axie Infinity. In short, you can take your digital goods with you anywhere that supports Web3. Any Web3 application can use any data stored on the blockchain and it can use data you own outside of that web3’s website or product.

Technical Explanation of Web3 Data

Most NFTs run on the Ethereum blockchain. There are others, like Flow or Polygon. Some are compatible with Ethereum and have different advantages and disadvantages. Maybe it’s worth getting into those at another time. For now, let’s stick with Ethereum.

Ethereum NFTs use what is called the ERC-721 Non-Fungible Token Standard, which is effectively provides a mapping of a TokenId to an Owner Address, which is your wallet address. If you have the private key to the Owner’s Wallet, you can do things like sell an NFT. All of this code is public and can be executed by anyone. If you don’t have the private key, you can’t do things that require a private key, like sell something that isn’t yours. If someone else gets your private key, that person is now the owner.

/// Check owner
function ownerOf(uint256, _tokenId) external view returns (address);
/// Transfer
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;

I added the code just to illustrate how simple Solidity is. While the code is ‘simple’, the fact that once code is pushed to the blockchain it can never be changed encourages developers to leave backdoors in their code to make changes. Essentially developers create functions like the following

/// location of nft
mapping (uint => address) public artToOwner;
mapping (uint => address) artToCreator;
mapping (uint => string) artToUrl

/// Modifier that checks if the sender is the Creator of the NFT
modifier isCreator(uint _nftId) {
  require(msg.sender == artToCreator[_nftID];

/// Modifier that checks if the sender owns the NFT
modifier isOnlyOwner(uint _nftId) {
  require(msg.sender == artToOwner[_nftId];

/// Gets the owners digital art URL
function getMyArtUrl(uint _nftId) external isOnlyOwner returns (string) {
  return artToUrl[_nftId]

/// WTF!!! Allows someone other than the owner to change the content
function changeArtUrl(uint _nftId, string _url) external isCreator(_nftId) {
  artToUrl[_nftId] = _url;

That’s basically Solidity pseudocode (maybe it would run if I finished it?), but as you can see this basically leaves a backdoor for the NFT creator to literally change the location where the digital art is stored. There’s a lot of ‘What Ifs’ to explore here

What If the Owner Changes the URL? That would suck. You then own the rights to the new URL. At least there would be a record of the old URL.

What If the Owner of the URL’s Server Changes the Content? Then the NFT owner owns whatever replaces it. There are some interesting solutions for this problem. Technically speaking, you could just have the URL be a hash value of the contents of data. So if the data ever changed, so would the URL. There’s actually a solution for this called IPFS or Interplanetary File System, which uses content-addressing to uniquely identify each file in a global namespace connecting all computing devices. Cool…(to me it is)?

Can Anyone Find the URL of My NFT? Not always, but as a developer, why bother writing the extra code. Also, someone will always be able to access it. Just maybe not everybody.

Why Data Storage is So Expensive?

I hope you didn’t think the digital art was somehow on ‘The Blockchain’. Storing any data on the blockchain is wildly expensive. It’s hard to get exact estimates, but adding a single word to the blockchain can cost over $10. It costs between $100 – $300 to mint a single NFT. The only thing that is free is reading data.

I’m not sure it will ever be ‘cheap’ to store data on a blockchain. Because blockchains are distributed by nature, an entire copy of the data must exist on every Node (computer or server) and those Nodes must verify that every addition to the database agrees with all the other Nodes. Furthermore, these databases can never be modified, so they can only grow.

The Answer to Web3’s Data Problems is Web2

I’m being facetious, but making a ton of copies of data and adding a ton of redundancy to a database for literally anything requires quite a lot of computing power. I don’t see how there’s ever going to be a way around that. Any company that says they are building the next generation of Web3 is lying. The next Social Media company that is built on Web3 will store the bulk of the data on private servers. The Blockchain will just be pointers these servers. Websites will employ the very cool web3.js and ask you to connect your Metamask account, but at the end of the day they will simply ask the blockchain for the location on A PRIVATE SERVER for all of your data. Sure, reading and writing data from the blockchain provides a standard protocol, an API that will never change, and data that is immutable, but it’s just a pointer to the good stuff. Private companies will always control your data. Well…

Here’s an idea to solve the issue of private data. Everyone has their own server for writing data their own data. A user goes to a Web3 site. The site asks them to create an account and connect their ‘wallet’. Any data you upload to the site – a profile picture, a Tweet, this blog post, whatever – is stored directly on your private server. The hosting website simply sends the payload to your server and marks the location on the blockchain.

Now, you’d have to specifically grant read and write access to this web3 website to your private server. All this security is just extra code that slows me down! Also, this web3 company is going to have a hell of a time aggregating this data since it won’t be stored in a central location. In fact, if they want to speed up performance, maybe they choose to go ahead and read all of the data for each user every hour and aggregate and cache this data. Whoops, I just rebuilt Web2. Pretend that last part didn’t happen…if a user now wants to delete their account, they can just wipe the data on their server and voila, their data is off of the internet. Unless someone copied it that is.

Maybe there’s something in this idea, but no one wants to host their own server. Why go on…

There’s So, So Much More

I’m not sure where to stop with this blog post, so I’ll stop here. You can watch this 2 hour YouTube video mercilessly documenting all the problems with NFTs. There was this ‘bug’ on OpenSea that allowed people to buy NFTs significantly below market price and immediately sell them again realizing profits of $190k+. Apparently it wasn’t a bug, but a known issue. These ‘hackers’ exploited the fact there were multiple listings for the same NFT. The lower priced listings were mistakes, but due to the nature of the Blockchain, these mistakes can’t get taken back.

The best article out there is Moxie’s My First Impressions of Web3. He actually builds Dapps, mints NFTs, and changes the content of these NFTs after he sells them depending on the IP address used to access the art. He also discovers that OpenSea does monitor its market place and took down his NFTs.

The last point I want to make is nothing is private. Once someone sees your Ethereum address, they can trace every payment ever made to and from the address. Good luck hiding when everything is public. It would be pretty easy to aggregate every single piece of data written to every single Web3 site for any person. The only thing that is private is the identity of the address, but to do anything meaningful in society identity might be the last form true authenticity left in this digital world. We should really invest more in identity and control over identity. Web3 isn’t the solution, but it might play a role in the solution coupled with taxation for bad actors and more innovation. I didn’t want to say regulation. I do believe if you put a tax, or a fine on every action that causes a negative externality the market will figure itself out. If you want privacy in society, fine anyone responsible for violating privacy.