Tuesday, Sep 21, 2021
There is something in the air, water, ether, whatever. A lot of mostly young people don't have a sense of hope. The level of inequality in society has gotten to a point where it is hard to tell if people saying "eat the rich" are doing so ironically. What is not in question is the movements and media that are related to this feeling of ennui.
Lying Flat Movement
The "lying flat" (Tang ping) movement in China was largely a response to the 996 work system (9 am to 9 pm, 6 days a week - or a 72 hour work week). It is a social protest of sorts where people try to do as little as possible to survive. It is an organic response by Chinese millennials who feel disillusioned about unrealistic goals and expectations put on them by society.
WaPo Article about the movement.
Work is a False Idol New York Times article By Cassady Rosenblum. Ms. Rosenblum is a writer who recently quit her job as a producer at “Here & Now,” a National Public Radio news program, and is living with her parents in West Virginia.
Walkaway is a novel by Cory Doctorow. It imagines a future world where wealth inequality gets so wide that people decide to go live off the land in the countryside, forests and mountains rather than participate in the ultra capitalistic system.
Nomadland is a film about people who drop out of society as much as possible. The main character lives in a van. It was mostly in reaction to the 2008 crisis, but it came out in 2020 and won best picture so the ideas of the film are still salient.
Reddit has a shitload of subreddits full of frustrated people:
/r/LateStageCapitalism has 650k subscribers who largely feel that we are near the end of what capitalism can extract from people. They point to things like health care and education being profitized as a sign that we (The United States) is working against it's own goals in order to make the rich richer.
/r/antiwork has 422k subscribers whose tag line is "Unemployment for all, not just the rich." Subscribers believe that we can get to a society where no one is required to work if they don't want to.
/r/Anticonsumption has 290k subscribers who are questioning the consumer nature of society. Specifically, the feeling that people mostly for work subsistence pay in order to buy things we will need to upgrade or replace regularly.
/r/lostgeneration/ has 220k subscribers who feel that their generation has worse opportunities compared to their ancestors.
Why is it happening?
Bullshit Jobs is a book by David Graeber. He posits that some percent of people feel they are doing jobs that have no positive impact on society. Most estimates he sites puts the percent around 40%. Some of the jobs he sites are professional jobs like lobbyist or corporate lawyer. Where, like an arms race, they only exist because others have them.
He posits that the people with the "Shit jobs" is different. Although "essential jobs" has been used by the government when they wouldn't pass a budget, most people learned of that term in early 2020 during COVID. It has been pointed out by many, but This American Life's episode "Essential" did the best job pointing out that usually essential jobs have low pay and poor benefits. I think most of these jobs are "Shit jobs" by Graeber's definition.
I think with the wealth gap widening and fact that university graduates are starting life after college with more debt than ever (at least in the USA) it is impossible for most people to feel they have any opportunity to exist without fear and/or desperation. Whether they have a "Shit job" or they feel obligated to take a job they hate, people can't see a way to break out of the cycle.
Once people have that feeling from my observations 1 of 2 things happen:
- They feel extremely desperate and angry, which can quickly turn to idle thoughts of violence on the 1%.
- They feel nihilistic and want to drop out of society and just exist on their own terms.
I am not predicting a revolution anytime soon, but I think the current system is unsustainable forever.
Friday, Sep 13, 2019
California is drastically underrepresented in the US Government due to the systemic over representation of rural states in the Senate. North Dakota has the same number of senators as California. Which means for every person a Senator in North Dakota represents, a Senator in California represents more than 50. In order to combat this, California thinks that passing state laws will inspire other progressive states to pass similar laws normalizing progressive ideas. Over the last 15 years we have seen this happen with Marijuana and auto emissions. In a perfect world, the US Government would be more in-step with what the majority of her citizens want, but here we are.
In that vein, California's state government passed and signed Assembly Bill 5 this week. It changes the rules of who can be considered an independent contractor. It adds an ABC test as follows:
- A: that the worker is free from direction and control in connection with the performance of work;
- B: that the worker performs work outside the “usual course” of the hiring entity’s business; and
- C: that the worker is customarily engaged in an “independently established trade, occupation, or business of the same nature as that inviting the work performed”
Everyone knows the intended targets of this legislation are Uber and Lyft (and all the other gig companies). I worked for Taxi Magic, a company that was trying to color inside the lines and play nice with existing ground transportation companies. I only say that to establish my bona fides when I try to point out some of the flaws of this bill.
The gig economy has forever shaken up the status quo on the backs of people who are willing to work for less than minimum wage. When I think about this change, it is easy to ignore individual workers and make sweeping generalizations. People who are willing to be exploited, knowingly or otherwise, don't do it because they have a lot of options. They believe they are making a rational choice. I fully support the role of government to step in and stop people from being exploited. The problem is, this law doesn't just affect people working for gig economy companies.
If you look at the B test it conclusively excludes staff augmentation. Staff augmentation is where a company hires a freelancer on a weekly or monthly basis to be a part of their team because they are unsure how much capacity they need or they have a hard deadline they can't meet without short-term help. I can only speak to the engineering field and my own experiences, but people who are hired based in this manner are not being exploited in a way the government can help. One can normally charge a fair market rate that pays as well or better than if you were full time. You are billing enough to afford health care. However, due to the nature of staff augmentation, you are literally doing the same thing as the rest of the team.
This happening in California means we are in for a super stupid proposition fight. California's Constitution allows citizens to put a measure on the ballot to override the legislature. There are a number of pros and cons of this type of direct democracy that we don't have time to discuss today. If I had to use a Facebook relationship status I would say "It's complicated". Uber, Lyft and Door Dash have already vowed to put 30 million dollars each toward passing a proposition to override this bill. So, I guess subscribe to ad-free youtube if you live in California?
The bill itself is a bandage on top of a broken employment system. I support California trying to protect workers, but this bill sweeps up too many people not being harmed. I am not a lawyer or policy maker so I don't know how I would amend B exactly, but in its current form, it is too broad. Maybe adding an exclusion for people whose rates are X times the minimum wage would target people who are need protecting?
Thursday, Apr 26, 2018
I have been building custom software for close to 20 years now, 14 of those years have been in a consulting role. For the last 8 of those years I have been running my own company, most recently Red Rectangle.
This is fairly obviously but, there are a few of different reasons you might want to hire a person to help you build custom software:
- You have a specific problem that doesn’t seem to be addressed by existing software.
- You already have software that isn’t meeting your needs.
- Your existing team either doesn’t have enough capacity or doesn’t have a specific skill set needed in the short term.
- You believe you have a better solution to a problem and can make money off it.
The first thing I would advise is to search the internet again, because the number of problems already solved is much higher than most people realize. There is a reason why lots of multi-million dollar companies are basically managed off an Excel spreadsheet or two.
Normally there comes a time in almost all companies where it makes financial sense to have custom software. Whether, competition comes in that is cheaper or labor becomes more and more expensive.
When is it time?
Ultimately, the decision gets made when a product owner believes they can save money with an upfront capital investment. I don’t think it will come as a surprise to anyone when I say, the main motivation is to do more with less resources. The most common resource in this case is employees.
Talking about automating work and doing more with less people is obviously a touchy subject. This is because people initially think about layoffs and the rich getting richer. But depending on the type of company the people whose jobs are getting automated, are generally not automated fully. This gives employers opportunities to retrain and reassign employees that already have some understanding of their business. This can be a big win for employees, because the most repetitive and tedious tasks are automated first.
Another big reason to automate tasks is for consistency and quality. If you have a task that is very tedious, humans tend to make mistakes more often than if it is difficult. This is because we tend to underestimate easy tasks and overestimate hard tasks. The brain is setup to put more energy into difficult tasks. These tasks also tend to be the easiest, this makes repetitive tasks an especially good target for automation.
What is it like working with a consultant?
For some people this is going to be super obvious. Start by asking friends or family if they have any experience hiring someone to help them. In my experience, you might have to go to friends of friends to find someone with relevant advice. Ask all your questions no matter how dumb or irrelevant you think they are.
This gives you some vocabulary you might not know and also helps exercise that part of your brain. Building software requires thinking systemically. You might know what your pain point is, but sometimes the steps before your pain point can be easier to fix and provide 80% of the value.
Go into any talks with a software consultant with an open mind. The best consultants will ask questions about your business that seem very obvious to you. That is ok, they might be checking assumptions, or helping themselves build a mental model of your business. Before a line of code is written or a screen is wireframed, everyone has to understand and agree what the current process is.
Try to do less. Software can always be made more complex in the future; solving evermore complicated problems. But in my experience, software is frequently over complicated before a better solution to a problem can be discovered. Then what happens is the current piece of overcomplicated software is slowly morphed into a system that more closely resembles the ideal solution. The biggest downside to this approach is wasted time and money.
How do I find a good consultant?
If only a little tongue-in-cheek, I would suggest you already found one (me). But more seriously, make sure you talk to a few people and to make sure it isn’t all smoke and mirrors and you have a good grasp on the process.
You should expect that any person you are going to work with is going to be evaluating you as well. Beyond the usual time and budget considerations. You need to consider other characteristics such as likability and temperament. If you are the type of person who likes to work with someone who is very direct then say that. Setting expectations early is the key to a good relationship.
I have personally never used any of the freelance websites such as upwork, freelance.com, etc. There would be noway for me to comment on them. But I would only suggest using these sites for very small projects with easy to define specifications. They probably have their place for people who know what they are doing, but are a bad fit for building long-term relationships on both sides (consultant and business owner).
How much should I pay?
I know this is the main question every client has. There is a constant cost benefit analysis that takes place to decide both, how much software to build and whether or not to build any software. Sometimes the right answer is to not build a product.
I am not going to write down specific prices because I want this article to be evergreen. There are basically 2 different ways to structure payment for services.
- Money for software
- Ownership for software
Money for software
This means the consultant and product owner agree on a price and scope before getting started. This is a good fit for well understood small projects. I usually don’t structure projects on fixed bid. This is because you have to have a very good understanding of what is getting built before the project starts.
A big down side to fixed bid contracts is change requests. When the product owner’s understanding of a project changes and a change to what the project does is needed, a new statement of work is needed that changes the original scope with the new budget. As a consultant, I usually make these additive. So any changes are in addition to the original scope, even if the project owner is removing features from the original.
One way fixed bid contracts can work is if the consultant already has a software product that solves most of the product owner’s problems. A fixed bid statement of work can be written that covers the customization needed for the business needs. But this essentially fits my definition of a small project.
Time and Materials
Time and materials generally means paying per hour, day, week, month, etc. You get what you pay for and generally have flexibility to change at anytime. I always push people in this direction first, this is because I have never done a project where the scope didn’t change significantly in the middle. Also, as apposed to fixed bid, developers don’t have to apply some multiplier on this. When I worked for consulting firms, they would ask us how long it would take then multiply that number by 2 or 3 depending on how bad each individual developer was at estimating.
Ownership for software
I personally have a lot less experience with this so I would caution anyone entering this type of agreement to do a lot of due diligence.
Percent of Profits / Stock
The most common approach I see is a business person says, I will give you X% of my profits / revenue / company. Sounds great on paper. Both sides share the risk and reward. The trouble is from the consultant’s side, if you took a stake in a lot of companies, consider the tax complications you are looking at. I already pay my accountant a substantial amount of money every year (money well spent). I assume taking a stake in a company would complicate that.
This is a less common approach. The idea is that custom software is written for a business at a discounted rate. In exchange for the discounted rate the software developer receives the opportunity to reuse the code for an internal product or another client. This usually comes with a clause that the consultant won’t compete directly with the product owner.
This is a good approach if the product owner isn’t trying to make a product for resale. For instance, I can imagine a dentist office needing some very specific integration between a piece of equipment and their billing system. The dentist just wants to automate some tedious task, but the consultant could potentially resell the same solution to 100 dentist offices for very little work after the initial project.
Venture backed companies will never take this approach, especially with small consultancies. This is because even if the product the venture company is making fails, the VC can always sell the intellectual property to try to claw back some of the money.
To sum it up; make sure you are solving the right problem, at the right time, with the right people. Focus on the easiest things first to get quick wins and to build a rapport with your team. Product owners and consultants will have a good outcome if they try to understand the tradeoffs and risks of the other party. But, it can end up falling into patterns and ruts like any relationship. Like any great relationship, the most important aspect is communication.
Thursday, Apr 12, 2018
Recently, respected Apple pundit, Jason Snell published an article on Macworld summarizing Apple’s previous two chip transitions from Motorola 6800 to PowerPC and then from PowerPC to Intel. The history part of the article is really good. And I think the punditry part is probably right in the very long run.
This was all in response to an article in Bloomberg about Apple designing its own chips for the mac. On Upgrade this week Jason and Myke had a pretty in depth discussion about the future of the mac and “eventually they will just switch everyone to iOS?”
When is eventually?
The thing I would really push back on is the timeline. Even 5 years seems too short to pull off this transition. Transitioning an operating system will never be as fast as transitioning the processor. The operating system is by definition a level (or 10) of abstraction from the chip. Apple can and does hide underlying differences from users, third-party developers and most of their own developers. When an operating system is slowly changing they have the opportunity to control how long they maintain compatibility before forcing developers and users to comply. A change as big as the OS forces everyone to deal with it and will never happen quickly or be mandatory. In Jason’s defense, he did say something like, “by the time this happens it won’t matter.” I definitely agree with that.
The last time Apple changed the operating system on the mac they were basically irrelevant in computing and macOS 9 was so inferior to the competition in most ways that it was mandatory to do something drastic. Right now I just don’t see the pressure or benefit of doing something drastic.
Another one of Jason’s points was that web developers are too small of a userbase to make decisions about which chip to use for the underlying OS. I would question that assertion a bit. If the numbers were so low I don’t think there would be 3+ companies (plus docker) making software for virtual machines for the mac.
I do not have the numbers and I am not going to search for them, but I am going to bet, that whatever percent of the userbase web developers account for does not reflect the amount of revenue the company brings in on the Mac. For example, if web developers account for <1% of users, they probably still account for 2% of the revenue / profit. Of course, that is still all a rounding error on their quarterly numbers.
Server-side web developers are not the only people virtualizing x86. Some people still test on Internet Explorer. For a long time Microsoft Office wasn’t good enough on mac, so people would run Windows for Excel. I am sure there are lot of people buying macs that still want Windows.
A Dell in Apple
I think it is fairly widely accepted that Apple’s biggest weak spot is services. Which guess what? They all run on intel. That is not changing anytime soon. There are too many layers of infrastructure built up over the decades based on x86. The best server developers will not want to run the same architecture on their machines as their servers. It removes one level of abstraction, allowing them to write better software, faster.
I have a hard time seeing Apple allow a Windows / Linux laptop to be used inside their own HQ for development. Even if you could find server developers who were willing to work without native virtualization, you are putting them at a competitive disadvantage by doing so. It isn’t the reason most people work at Apple, but working on a computer produced by the company you work for is a bonus that very few developers get to have.
A reason they won’t give up intel any time soon is vanity. I think they secretly love that all throughout Google, Facebook, Amazon, Netflix, etc there are shiny macs on the desks of lots of developers. Those companies don’t care what type of computers their developers use, they care that they can ship code. As soon as their developer stop asking for macs, there will be no more shiny macs on desks. Because any other platform will be cheaper for these companies.
If you wanted to bring iOS to the laptop and desktop, it would probably be easier to make iOS run on intel. Trivial is the wrong word, but I don’t think it would be crazy given that iOS is already running in the simulator, not emulator for development. This is something you occasionally have to deal with when writing iOS apps and testing on the simulator.
Though I don’t see any reason to do that unless they make iOS drastically more powerful. Not in terms of processing, but in terms of features. Without the ability to virtualize another OS in the background there would be almost no reason to bring out a real iOS device on intel.
I will start taking this transition seriously when Xcode works and more critically is good on iOS. The former is obviously going to happen. I expect that in one of the next couple WWDCs they will announce Xcode on the iPad Pro, but I assume that it will take 2 or more years before it is usable for anything but the most trivial use cases.
The thing about developing code is you need to be able to have full access to your system. I just don’t see Apple changing iOS to allow that. Having access to run a local server while developing a mobile client and running a man-in-the-middle proxy to inspect your network traffic just doesn’t seem like something that is likely to change soon. (Though shoutout to Charles Proxy coming to iOS)
The best scenario
From my perspective the best scenario is probably to release the 12 inch MacBook on ARM. All the other Macs could start to get more and more ARM chips in them for background processing. Eventually the ARM chip could be the primary with an x86 coprocessor for things that don’t transition over. I am not a hardware expert so I don’t know how hard this is. Though I imagine it will be difficult coordinating two different architectures drawing to the same screen, but I think it is solvable.
The vast majority of computers sold are portable. This means that the carrot would presumably be customers pressuring third-party developers to be better citizens when the battery menu shames them. I would propose that over the course of 5 years you remove your x86 processor from the lower lines and herd all the “pro” customers to higher and higher end computers. Let’s be honest Apple loves driving up the average selling price on their devices. When you start herding developers will get the signal and try to figure it out how to move to ARM.
If Apple refuses to make computers that developers can use, they might as well make the transition now. I don’t know a lot of developers that are happy with Apple at the moment. Apple has been putting out wildly overpriced lackluster mac hardware for the last 2 years, it does its job, but barely.
Friday, May 5, 2017
Update September 20th 2021
In the more than 4 years since I wrote this article a couple things have happened:
- The video was removed from youtube, so in turn I removed it from the site.
- A bunch of companies have come into existence to shake up the processes of buying and selling houses. OpenDoor is trying to shake up the market by buying and selling houses directly. They are also becoming more and more vertically integrated by taking over more parts of the process.
The process of automating home buying is going to be slow because it is something that most people do very infrequently. That means it is hard to see changes. but I still think they are coming.
Look in any direction and you will see that automation is changing the face of employment, whether it be factory robotics or tax preparation. Blue collar workers and white collar workers alike need to start preparing for the future. But recently, Century 21 recently put up a commercial so out of touch with reality.
Basically, they are trying to point out how awesome it is that they have real people. 🙄
This has been coming for a long time with real estate agents. According to an academic article from 2013, titled "THE FUTURE OF EMPLOYMENT: HOW SUSCEPTIBLE ARE JOBS TO COMPUTERISATION?", real estate agents have a 86% chance of losing their job to automation. Other parts of the real estate process are even higher. I am not writing this with any emotion, be that anger, sadness, grief, and definitely not glee. This automation is coming, because it is too lucrative not to. It is best to prepare for the inevitable future rather than fight it.
Century 21 is in a very difficult position. If they try to start pivoting their company to focus more on automation, they risk their best agents getting angry and leaving in the short term. Since, most agents get (or used to get) work by word of mouth, the specific agency they work for is largely irrelevant.
Realogy (the company that owns Centry21), has thousands of employees and a trove of great data. I assume they have someone leading the charge to automate much of the work that real estate agents currently do. They are one of the best positioned companies and if they don't automate … well you know what I think.
Back to the commercial seemingly made from another universe. Since Realogy is so big, I assume they give Century 21 a big enough budget to keep the wheels on while they try to figure out what is next. Or they might have no idea what they are doing. 😉