A table of Java versions supported by given ColdFusion versions

Mike's Notes

A useful table of Java - ColdFusion Server compatibilities.

Resources

Repository

  • Home > Ajabbi Research > Library > Software > ColdFusion

Last Updated

15/03/2025

A table of Java versions supported by given ColdFusion versions

By: Charlie Arehart
www.carehart.org: March 13 2025

Now that CF2025 has come out, supporting Java 21--and as ColdFusion and Java versions continue to evolve--you may wonder which version(s) of Java you can use with your current (or a given) version of ColdFusion.

You can't just use "any" jvm version with CF: it depends on first on what version of CF you are using, and then may even depend on what CF update has been applied to that CF version. (You also can't use Java from any vendor: Adobe supports only use of Java, and the license it for our use, I discuss later.) And to be clear, currently ONLY CF2025 supports Java 21.

So in this post, I offer a table that clarifies things, listing the various recent CF versions (even those no longer supported) and what (LTS) Java versions they supported, including if some CF update of a version changes the Java version supported.

FWIW, I originally offered this table within a longer 2019 CF Portal post about new Java updates which were released then (in Apr 2019), and then I pulled the table out to stand on its own in a later CF portal post.

I have decided to bring the post here to my own blog, to make it easier to keep it updated as information changes.

The table of Java versions supported by given CF versions

The info below is current as of Mar 2025. Find your cf version, and see what Java version(s) it may support:

Again, I will update this post as things change over time.

As for Java versions between these, note that the releases above are considered by Oracle and the Java community to be LTS or "long-term support" releases, and Adobe supports only those--and again, Adobe formally supports only use of Oracle Java with CF, and Adobe licenses Oracle Java for our use with CF (and only with CF).

As for downloading the latest Java installer or archives, Adobe also offers those for us. See the Adobe CF "downloads" page (which is not for downloading CF, but things related to CF), and specifically the list of Java installers/a> that current CF versions support.

How do I know what JVM version I am currently running?

I mentioned already that I have done a past post (and plan future posts) with more details, but this topic is worth pulling out here: naturally you may wonder, "well, what JVM version am I running now?" There are at least two ways.

The easiest may be to go into your CF Admin, and view either the Settings>Settings Summary page or the "System Information" page (the "i" icon in the top right of the admin). On those pages, about 10-20 lines from the top is a section on JVM details, and it will report what JVM version you are currently using.

If you don't have access to the CF Admin, I have a post on how you can also determine CF's Java version from within CFML code.

Finally, if you're still running anything less than CF2021?

Finally, if you are running any version less than CF2021 in 2025, you should know that you are running on a CF version that is no longer updated by Adobe (Cf2018 updates ended in Jul 2023, and CF2021 updates will end in Nov 2025).

Conclusion

Finally, if you may have still other questions related to CF and Java versions (such as about Adobe's licensing of Oracle Java for us, or how Adobe does NOT support JVMs other than those from Oracle, and more), see my post, Several things to consider when applying updates to Java (aka the JVM, JDK, JRE).

I welcome comments and feedback, and if you need direct help with implementing any aspect of JVM updates, I'm a available for consulting help, often able to help even challenging problems in less than an hour.

CF
Java
  21 17 11 8 7 6
CF2025 Yes NO NO NO NO NO
CF2023 Not yet Yes NO NO NO NO
CF2021 Not yet Not yet Yes NO NO NO
CF2018 NO NO Yes (if CF2018 update 2 or later.
Supported Java 10 initially)
NO NO NO
CF2016 NO NO Yes (if CF2016 update 8 or later) Yes NO NO
CF11 (2014) NO NO NO Yes (if CF11 update 3 or later) Yes NO
CF10 (2012) NO NO NO Yes (if CF10 update 14 or later) Yes (if CF10 update 8 or later) Yes

Ajabbi Media Unit

Mike's Notes

I have recently been attending film industry training workshops.

Resources

Repository

  • Home > Handbook > Ajabbi > Media Unit > Strategy

Last Updated

02/04/2025

Ajabbi Media Unit

By: Mike Peters
On a Sandy Beach: 14/03/2025

Mike is the inventor and architect of Pipi and the founder of Ajabbi.

The recent 2-day script workshop by Script Editor, Claire Dobbin, in Dunedin was excellent, and I learned I shouldn't be a scriptwriter, which is important for me to know.

I previously made over 40 short-form natural history docos in Christchurch before the earthquake (my roles varied over time and included producer/director/art dept/camera/editor).

Pipi

I was NZERN's founder, National President, and architect years ago. I led the team that built Pipi 4, a national platform to support community-led ecological restoration. It had its own small server farm. Pipi 4 was highly successful in New Zealand but was 100% dependent on government funding. It eventually died during the Christchurch earthquakes.

Since then, I have been rebuilding Pipi to be used again. 

It has been through multiple versions, as significant challenges were solved, and the internal architecture has become entirely novel.

It uses multi-agent machine learning, and is much faster, more powerful, and more useful for other industries to make it financially viable. It is optimised for large systems that might have the equivalent of more than 100,000 web pages or hundreds of workspace screens.

Pipi 9 is cloud software that makes building billion-dollar enterprise systems easier, faster, and on budget. It is focused on massive, socially beneficial systems like health. It is funded by donations and bootstrapping, not investors.

Start-up

I have undergone various start-up programs to get my head in the right space, run experiments, and make better decisions. I wish I had understood these things back in the early 2000s. The most helpful reading resources are Steve Blank, Strategizer, IT Revolution, PostHog, A Smart Bear, and Kromatic.

CreativeHQ, NZTE and Startup Aotearoa have been great for talking things over.

Ajabbi

Ajabbi has been established to own Pipi, and any surplus income will go to a non-profit foundation to support users, provide open-source SaaS applications and fund research.

Starting with video

As a visual thinker, talking is much easier than writing, so to support users, make online bookings for "office hours" available. Set up an area with good sound and lighting that looks OK on video. I must replace most of my film gear with more useful modern equipment. Access to great equipment is no longer a barrier these days.

The new battery-powered LED panels are fantastic.

Media Unit

If Ajabbi goes well, I intend to eventually set up an entirely self-funded paid media unit as part of Ajabbi Research to provide supporting written and video content. The unit will start slowly, building capacity as needed and resources allow. Eventually, it will also publish books.

  • Recording straightforward YouTube content, explaining and demonstrating how to use the software.
  • Then, interviews with authors and scientists can be filmed.
  • Later, filming historical reenactments similar to the ones in Cosmos by Carl Sagan.
  • Starting with a contractor to make the initial content.
  • Then, as income and audience grow, the capability is moved in-house.
  • All content will be freely available for maximum reuse.

Other people will be writing, producing, directing, presenting/acting or crewing, though hopefully, I will get to help somewhere. My favourite jobs are related to the art department, including set building and miniatures.

Mistakes You Apparently Just Have to Make Yourself

Mike's Notes

In case you want a good night's sleep.

Resources

References


Repository

  • Home > Ajabbi Research > Library
  • Home > Handbook > Team > Culture

Last Updated

17/03/2025

Mistakes You Apparently Just Have to Make Yourself

By: Dan McKinley
Medium: Feb 18, 2017

Slamming your fingers in the car door of life

Over the years I’ve been collecting examples of what I can only describe as non-transferable knowledge. These are all definitely huge mistakes, but no amount of counseling or thought leadership is sufficient to wave people away from them. You have to touch these stoves before you’ll believe that they’re hot.

  1. This code is too bad. We have to rewrite it from scratch.
  2. This software is too unmanageable. Adding operational complexity will help.
  3. This problem has never been seen before. We have to use the bleeding edge to solve it.
  4. Adding network hops to the system will make it faster somehow.
  5. Running systems and open source projects are the same and should be built the same way.
  6. I can add value to this command line tool by writing my own wrapper for it.
  7. The programming tasks represent the majority of the effort.
  8. Functional tests!!
  9. We can just deploy the code with our version control tool.
  10. I want logical decoupling, therefore I must have physical separation.
  11. Bureaucracy solves everything.
  12. Bureaucracy solves nothing.
  13. These two teams use the same noun, so they should use the same code.

I’m the first person to make all of mistakes 1 through 13, and therefore @mcfunley is talking about me, specifically.

Hey, maybe you would like beat the odds and avoid at least a few of these. My startup, Skyliner, is like a straight jacket that you can wear to stop hitting yourself.

Learning Object

Mike's Notes

I'm figuring out how to integrate Learning Objects and SaaS Plugins into the existing, in-production Content Management System.

Update

Compare with Adobe RoboHelp, which is a CMS that can generate help documentation. There are similarities and differences.

Resources

References

  • IEEE Standard for Learning Technology—Extensible Markup Language (XML) Schema Definition Language Binding for Learning Object Metadata IEEE Std 1484.12.3™‐2020 (Revision of IEEE Std 1484.12.3‐2005)

Repository

  • Home > Ajabbi Research > Library > Software > Architecture > Learning Object
  • Home > Ajabbi Research > Source > SCORM

Last Updated

14/02/2026

Learning Object

By: Mike Peters
On a Sandy Beach: 12/03/2025

Mike is the inventor and architect of Pipi and the founder of Ajabbi.

I couldn't solve this problem until now because I needed both the Plug-in Engine (plu) and the Learning Object Engine (lob) to be under active development so I could see how they might integrate with the Content Management System Engine (cms). It is not proving to be simple.

Content Management System (CMS)

Since 2004, the CMS has undergone multiple versions and is now fast, robust, and mature. This integration will alter the data model and require a new version.

The CMS will provide all the content.

Metadata

Both the Plug-in and Learning Object engines describe CMS content with additional metadata about:
  • structure
  • relationships
  • names
  • properties
  • permissions
  • etc

Learning Object

Pipi needs learning objects nested in the Diataxis framework to provide structured user training and documentation. I am using a reduced-feature version of the original IEEE-standardised version.

According to Wikipedia, "The Institute of Electrical and Electronics Engineers (IEEE) defines a learning object as 'any entity, digital or non-digital, that may be used for learning, education or training.

Eventually, the Learning Object Engine (lob) will be available to assist enterprise SaaS applications with user documentation.

Lokalise file formats

Mike's Notes

I discovered this list of file formats on the Lokalise website. The files store translation strings and are used by Lokalise for import and export.

I designed Pipi 9 to support any human language and writing system (script) in the future. This is done by separating string storage from the underlying code, data models, etc.

The Language Engine (lng) stores a standard set of strings. One engine per language/script). These engines then interact with the Factory Engine (fac) to build in one language/script.

  • Each engine or object
  • Each plug-in
  • Each DDD module
  • etc

Examples

That means there can be an English-in-Latin script version of the DevOps Engine (dvp), a Kurdish-in-Latin, a Kurdish-in-Hawar, and ;a Kurdish-in-Sorani, etc script version of the DevOps Engine (dvp), etc. The same goes for all plug-ins and SaaS apps; each can be available in many languages/scripts where needed.

Use

This will be very useful when I return to do more work on the Language Engine (lng).

Resources

Repository

  • Home > Ajabbi Research > Library > Software > i18n

Last Updated

12/03/2025

Lokalise File Formats

Updated 2023

File format Name
android_sdk Lokalise Android SDK bundle
arb ARB
csv Comma-separated values
docx Docx
flutter_sdk Lokalise Flutter SDK bundle
html HTML
ini PHP INI
ios_sdk Lokalise iOS SDK bundle
js JavaScript Object
json JSON flat and JSON nested
json_structured Structured JSON
offline_xliff Offline XLIFF
php_array PHP arrays
php_laravel PHP Laravel
plist Objective-C/Cocoa Properties
po Gettext
properties Java Properties
react_native React Native (I18n library)
resx .NET Resources
ruby_yaml Ruby YAML
stf Salesforce Translation
strings Apple Strings
symfony_xliff Symphony PHP XLIFF
ts QT Linguist
xlf Angular i18n XLIFF
xliff Apple XLIFF
xlsx Excel 2007
xml Android Resources
yaml YAML

A Plea for more Mikado

Mike's Notes

Here is an article that I discovered in the latest Amazing CTO newsletter.

Resources

References

  • Reference

Repository

  • Home > Ajabbi Research > Library > Subscriptions > Amazing CTO
  • Home > Handbook > 

Last Updated

10/03/2025

A Plea for more Mikado

By:  Damien Mathieu
dmathieu.comMonday, August 21, 2023

One of the books that impacted the most my career is probably The Mikado Method. I read it almost 10 years ago, and I don’t practice it explicitly. But I think of the method almost every day, and it has been impacting how I work ever since.

And yet, it has remained something quite obscure. Whenever folks suggest must-read computer science books, it’s never there. So let’s try to explain it a bit more, and how it can be used every day in the life of a programmer.

What is the Mikado Method?

If you ever worked on a large refactoring project, library switch or upgrade, you may have ended up working in a branch for weeks (or months). You need to regularly rebase against the main branch (or have everybody working on the same branch), and may end up spending more time fixing conflicts than actually working on the change.

But somehow you move forward, and one day you are ready to ship that huge change. The biggest bet still lays ahead of you though: will there be performance changes? Did we miss something? Were there unknown bugs? In my experience, every big bang change always ends up in at least one cycle of reverting and going back to the PR, and a non-trivial number of them were not shipped at all.

The Mikado Method is a framework to make that kind of refactoring manageable.

The idea is to split things into atomic changes. Each of these changes will be shipped right away, on its own.

Let’s say you’re working on a Ruby on Rails application which hasn’t been upgraded in several years. So you need to go from Rails 4 to Rails 7 (wow!).

Let’s do it with some mikado!

The first step will be to locally upgrade the rails dependency in your Gemfile to the final version you want to run on. On a paper, draw a rectangle (or a circle, anything) and write down a couple words about the task you’ve just down, such as upgrade rails in Gemfile.

Now, run your unit test suite. Obviously, there will be lots of failures.

Go through each failure, and for each of them write a new rectangle on the paper, with a (very) short description of what you would have to do to fix that issue. If the cause is unknown at that point, you can also write down the failure itself, to be investigated. Link each rectangle to the parent one, as can be seen in the example image below.


Then, revert your changes. Delete everything! And I really mean revert, not move to a new branch or squash. If you feel this change took you too long to just be deleted, it means it wasn’t atomic enough and you need to split it.

Now, pick one of the failures you wrote down, any of them and try to fix it in the current codebase, without the original upgrade. Doing so may require some refactoring or more changes. In that case, don’t do them. Write them on your paper, delete everything and start implementing them. Similarly, if after fixing the problem, there are still failures, write them down, link them to the issue you were just trying to fix and delete everything.

And iterate from there against every failure, refactoring or change you need. If you discover a new issue, write it down and delete everything.

At some point, you will get a fix which actually works and for which all your tests pass. Ship that change!

And move on to the next failure.

Over time, you will get more and more actual fixes, and less and less reverts. Until all there is left to do is to make the change where you actually change the content of your Gemfile to upgrade the dependency version.

At that point, your application supports both versions, making that change very small and trivial to ship. Do it of course!

Obviously, the Mikado Method cannot work if you don’t have a good and highly reliable automated test suite.

Wow dude, this is too much

It absolutely is. And I haven’t heard of anyone following this process to the letter.

But processes aren’t meant to be followed to the letter. They are meant to provide a frame. Once that process is fully understood, getting out of it can be beneficial, to adapt it to your own needs, while retaining the core ideas and goals of that process.

In the case of the Mikado method, I think the biggest takeaways are to ship atomic changes, and not be afraid to drop things if they derail.

Atomic Everything

There’s nothing worst (well …) than seeing a Pull Request describing something, but where other unrelated (yet relevant) changes crept in.

Whenever I am working on something, and I notice something else in the same bit of the codebase which should be changed or refactored, I take a note of it, and come back to it once my original change is ready for review. I see this as a lighter way of doing Mikado. And yet, everything in a PR is related to the same thing, making its review much easier.

One way to cheat about this would be to name the PR “do this and that”. Well, don’t! If your PR includes an and, there should be two of them (the same goes for issues).

The gist of it is: split everything you do into the smallest bit possible, and ship all those bits independently.

A failure of an example

Here is an example why thinking about everything atomically is safer. At $PREVIOUS_EMPLOYER, we wanted to migrate from Opentracing to OpenTelemetry.

Both libraries are quite similar, but we had some heavy internal things that couldn’t work exactly the same between both of them, so we wanted to ensure there were no performance regression with the change. Hence we decided to do a big bang PR to be able to run performance tests.

I worked for over a month just making the appropriate changes, the PR was huge, and then I worked for another month just on the benchmarks. Until we were ready to ship the change.

Due to errors unseen before and uncaught by unit tests, Wwe shipped and reverted 3 times before deciding to drop a quarter of work and restart from scratch with small PRs we could ship daily.

To be fair, this quarter wasn’t entirely lost, since it brought us benchmarks we wouldn’t have had this soon were it not for a big bang change. But the frustration was there anyway. And I am sure that if we had decided to keep on trying to ship that big bang PR, we would have ended up reverting more than 10 times.

Delete your WIP code

I am sometimes stuck into a fix that seems daunting. The more I fix things, the more there are to fix, and it seems like I’m never going to get over it. Well, this is exactly the kind of moment where deleting everything and starting from scratch again is highly beneficial.

Once again, I do mean delete. Not squash or branch off of. There is a real psychological value in deleting a change where you’re stuck to start fresh.

However, when you do that, you should start working on the new fix right away. Don’t wait for a couple days. You don’t have the code available, but your mind is still there. That’s what’s going to allow you to go back there much more quicker and better than you did the first time.

Said like this, it may seem the need to delete WIP code like this is pretty exceptional. I’ve personally grown to make it quite standard. Whenever I spend more than 15-20 minutes stuck on something, I’m usually going to delete it and start fresh.

This can only work because I am a bit extreme about making everything atomic. So I also very often have something that works and I can commit. When that happens, I only delete whatever’s not been committed yet. Not all the unpushed commits I made earlier. Every of those atomic commits must have a green local test run of course.

Conclusion

Mikado is much like the agile method. It’s something everybody should apply to some degree, but not follow to the letter. But working with it in mind provides a very good base to ship code (whether it be a small bugfix, or a very large refactoring) in a safe and reliable way.

It’s probably not something everybody should do as described in the book (though if you do try it for a large enough project, I’d be happy to hear about it). But I am convinced that having some experience of it will make anyone a better developer!

It helps to be organised but not too organised

Mike's Notes

This is how I keep notes.

Resources

References


Repository

  • Home > Ajabbi Research > Library >
  • Home > Handbook > 

Last Updated

18/04/2025

It helps to be organised but not too organised

By: Mike Peters
On a Sandy Beach: 09/03/2025

Mike is the inventor and architect of Pipi and the founder of Ajabbi.

Yesterday and today are filing days.

I draw my ideas on paper and then make stuff from them. As a result, I generate at least one or two thousand pages of handwritten notes a year.

  • I have also used pocket notebooks with sequential daily notes, but I prefer A4 paper because it can be sorted later by subject or idea.
  • I carry a leather A4 organiser everywhere, constantly drawing and making bullet points while drinking coffee.
  • There is a direct correlation between morning coffee and paper generated.
  • I also photocopy helpful illustrations from books.
  • I use colour highlighters all over the place. Using colour helps me mentally structure stuff.
  • The A4 white pages are stacked neatly until I can't find anything, and then filing begins by project, sub-project, etc.
  • I use a hierarchical physical file structure that maps to my digital filing structure of nested folders.
  • I use 3-hole ring binders with the same folder names, with card dividers containing colour paper cover sheets to provide three division levels.
  • I then use the binders as a reference source, often reworking the notes into a few consolidated pages and throwing out the rest.
  • Projects in production go on a kanban board.
  • I have 30 years of organised notes and 40 years of shelved pocket notebooks.

I use the same system for film, art, and software projects.

Today, I set aside 2 hours weekly to organise my notes.

Embedding Wolfram Notebooks

Mike's Notes

My working notes on building the first plug-in.

Resources

References


Repository

  • Home > Ajabbi Research > Library >
  • Home > Handbook > 

Last Updated

11/05/2025

Embedding Wolfram Notebooks

By: Mike Peters
On a Sandy Beach: 04/03/2025

Mike is the inventor and architect of Pipi and the founder of Ajabbi.

I want to visually explain to Ajabbi users the maths that Pipi uses. I am not a mathematician, but I have learned to use maths visually in experiments and for analysing data.

Pipi

Pipi makes use of these kinds of maths:

  • Fuzzy Logic
  • Markov
  • Monte Carlo
  • Statistics
  • Algorithms
  • Etc

Ajabbi SaaS

The applications being built also need to use math directly, and users may need access to mathematical tools. The Pipi Content Management System Engine (CMS) generates the UI and content on every web page, so this means using forms rather than direct coding.

Wolfram

Last year, I took some free online training provided by Wolfram on creating and editing Notebooks. Afterwards, one of their people contacted me, leading to an open discussion about how to embed Wolfram Notebooks and maths training on the Ajabbi website.

One of their partnership people contacted me. They said that WordPress had also provided embedding. So, the first port of call is to see how WordPress does it.

Since then, Wolfram has kindly given me access to Wolfram One for three months so that I can experiment, test, and post some examples.

To do

  • Make the first plug-in to embed Wolfram Notebooks onto the ajabbi.com web pages using a simple web form.
  • Extend the plug-in to be generic and work with other 3rd-party websites.
  • Configure an embedded notebook to analyse live data at Ajabbi (I don't know how yet).
  • Embed free relevant maths instruction beside the notebooks.

WordPress

WordPress offers a plug-in for embedding content from third-party websites. The plug-in appears as a simple web form.

Embedding

Embedding makes use of the HTML tag iFrame.

Code

<iframe src="demo_iframe.htm" height="200" width="300" title="Iframe Example"></iframe>

Properties

Attribute Value Description
allow   Specifies a feature policy for the <iframe>
allowfullscreen TRUE Set to true if the <iframe> can activate fullscreen mode by calling the requestFullscreen() method
FALSE
allowpaymentrequest TRUE Set to true if a cross-origin <iframe> should be allowed to invoke the Payment Request API
FALSE
height pixels Specifies the height of an <iframe>. Default height is 150 pixels
loading eager Specifies whether a browser should load an iframe immediately or to defer loading of iframes until some conditions are met
lazy
name text Specifies the name of an <iframe>
referrerpolicy no-referrer Specifies which referrer information to send when fetching the iframe
no-referrer-when-downgrade
origin
origin-when-cross-origin
same-origin
strict-origin-when-cross-origin
unsafe-url
sandbox allow-forms Enables an extra set of restrictions for the content in an <iframe>
allow-pointer-lock
allow-popups
allow-same-origin
allow-scripts
allow-top-navigation
src URL Specifies the address of the document to embed in the <iframe>
srcdoc HTML_code Specifies the HTML content of the page to show in the <iframe>
width pixels Specifies the width of an <iframe>. Default width is 300 pixels

Foundation examples

Mike's Notes

I am considering establishing a foundation to support Ajabbi and its users. Here are some examples of other "public-good" foundations.

Resources

References


Repository

  • Home > Handbook > Ajabbi > Foundation

Last Updated

05/06/2025

Foundation examples

By: Mike Peters
On a Sandy Beach: 07/03/2025

Mike is the inventor and architect of Pipi and the founder of Ajabbi.

Here are some examples of Foundation descriptions from their websites.

  • Raspberry Pi Foundation
  • Linux Foundation
  • Apache Foundation
  • Wikimedia Foundation

Raspberry Pi Foundation

The Raspberry Pi Foundation is a UK-based charity that aims to enable young people to realise their full potential through the power of computing and digital technologies.

Linux Foundation

Innovation comes from everywhere. We help companies and developers identify and contribute to the projects that matter. Working together, the open source community is addressing the challenges of industry and technology for the benefit of society. Code is power. Community is a strength. We are one.

Apache Foundation

The Apache Software Foundation (ASF) exists to provide software for the public good. We believe in the power of community over code, known as The Apache Way. Thousands of people worldwide contribute to ASF open source projects every day.

Wikimedia Foundation

The Wikimedia Foundation is the nonprofit that hosts Wikipedia and our other free knowledge projects. We want to make it easier for everyone to share what they know. To do this, we keep Wikipedia and Wikimedia sites fast, reliable, and available to all. We protect the values and policies that allow free knowledge to thrive. We build new features and tools to make it easy to read, edit, and share from the Wikimedia sites. Above all, we support the communities of volunteers around the world who edit, improve, and add knowledge across Wikimedia projects.

The Rot Economy

Mike's Notes

Ed Zitron's blog post in 2023 on Silicon Valley behaviour provides a fascinating insight. I copied it from his blog.

Resources

References


Repository

  • Home > Ajabbi Research > Library >
  • Home > Handbook > 

Last Updated

11/05/2025

The Rot Economy

By: Ed Zitron
Where's your Ed At?: Feb 9, 2023

At the center of everything I’ve written for the last few months (if not the last few years), sits a cancerous problem with the fabric of how capital is deployed in modern business. Public and private investors, along with the markets themselves, have become entirely decoupled from the concept of what “good” business truly is, focusing on one metric — one truly noxious metric — over all else: growth.

“Growth” in this case is not necessarily about being “bigger” or “better,” it is simply “more.” It means that the company is generating more revenue, higher valuations, gaining more market share, and then finding more ways to generate these things. Businesses are expected to be - and rewarded for being - eternal burning engines of capital that create more and more shareholder value while, hopefully, providing a service to a customer in the process. In the public markets, that means that companies like Google, Meta, and Microsoft were rewarded for having unfocused, capital-intensive businesses that required mass layoffs when times got tough, because the market loved the idea that they’d found a way to save money. They weren’t punished for their poor planning, their stagnating products, their mismanagement of human capital, or their general lack of any real innovation because the numbers kept going up.

When I wrote in October that Mark Zuckerberg was going to kill his company, the street responded in kind, savaging Meta’s stock for burning cash building a metaverse that was never going to exist. Yet once Zuckerberg fired 11,000 people and claimed that 2023 would be the “year of efficiency,” the market responded with double-digit increases in the price of Meta’s shares, despite the fact that Facebook’s active user growth declined and they lost $13.7 billion on the same metaverse department that caused the stock to drop the last time.

The markets seemed to ignore the $410 million fine that Meta received for GDPR violations, along with the fact that European users will now have to deliberately opt-in to sharing their data - which is bad, considering only about 25% of iOS users choose to opt-in to app tracking, and their business model is intrinsically linked to the repurposing of customer data into ad targeting telemetry.

Let’s be abundantly clear: Meta’s core advertising models depend heavily on things that likely become impossible to do legally (or even technically, given Apple’s App Tracking Transparency, Alphabet’s retirement of the third-party tracking cookie, and the Chromium Project’s planned blocking of non-cookie fingerprinting technologies) in the next decade. Their other products simply do not make that much money. Their CEO’s big idea to make more money has lost them billions of dollars, and likely won’t make them any for quite some time. Yet Meta remains beloved, because the numbers are going up.

Killing Innovation

Google has a similar yet slightly different story, where their core product - search - has gone from a place where you find information to an increasingly-manipulated labyrinth of SEO-optimized garbage shipped straight from the content factories. As Charlie Warzel put it last year: “Google Search, what many consider an indispensable tool of modern life, is dead or dying.”  Users have to effectively find cheat codes - adding things like “[whatever you’re searching]+Reddit” to get reliable answers. Despite its decades-long efforts to improve the quality of organic results, Google remains easily-gamed by anyone who knows how to craft an algorithm-friendly headline.

Without finding a way to negotiate with Google Search, you’re offered a fragmented buffet of content provided by Google’s algorithm, either based on how much they’ve been paid to prioritize said content or by how companies have engineered content to rank higher on search. Google no longer provides the “best” result or answer to your query - it provides the answer that it believes is most beneficial or profitable to Google. Google Search provides a “free” service, but the cost is a source of information corrupted by a profit-seeking entity looking to manipulate you into giving money to the profit-seeking entities that pay them.

The net result is a product that completely sucks. “Googling” something is now an exercise in pain, regularly leading you to generic Search Engine Optimized content that doesn’t actually answer your question. Google’s push to hyper-optimization has also led it to serve results based on what it *thinks* people mean, rather than what they actually said. It’s frustrating, upsetting and annoying. A problem that likely hits hundreds of millions of people a day, yet Google doesn’t have to change a thing, because the street likes that they have found more innovative ways to get blood from a stone. These moves are unquestionably hurting Google, to the point that Microsoft’s Bing (paired with OpenAI’s ChatGPT), has gained major headlines for providing the service that everybody wished Google would.

That’s because Google has, like every major tech company, focused entirely on what will make revenues increase, even if the cost of doing so is destroying its entire legacy. Google has announced their own “Bard AI” to compete with Bing’s ChatGPT integration, and I’ll be honest - I feel a little crazy that nobody is saying the truth, which is that Google broke the product that made them famous and is now productizing fixing their own problem as innovation.

That’s because the markets do not prioritize innovation, or sustainable growth, or stable, profitable enterprises. As a result, companies regularly do not function with the intent of making “good” businesses - they want businesses that semiotically align with what investors - private and public - believe to be “good.”

Despite its ubiquity, companies like Uber should not exist. Uber has not made a profit from its businesses. They had a net loss of 1.21 billion last quarter, yet the street fell over itself to praise the company because “gross bookings grew 19% year-over-year” for their unprofitable businesses that largely hinge upon the government failing to impose sensible labor laws, a con that will eventually come to an end, and indeed, has ended in some territories like the UK, where Uber drivers are now recognized as employees, and are therefore entitled to pensions, paid vacation time, and a minimum wage. London, I note, is one of Uber’s most important markets.

Yet as of writing, Uber’s stock is up 5%.

The media itself somewhat fuels this economy of growth-mongering. CNBC reports earnings like many other media entities, but their reports on, say, Uber fail to acknowledge the fact that Uber has spent nearly 15 years burning money. It has never turned a profit. Even with its push into freight and food delivery, it  may never turn a profit, no matter how much it contorts its financials to pretend otherwise. Yet acknowledging the truth is that much worse because Uber will not be killed, because people keep buying the stock, because it is a “valuable company” in the eyes of markets that have fucking cataracts.

This is why we see such vast oscillations of hiring and firing - because these companies are never, ever punished for failing to operate their businesses in a sustainable way, or even with a view for the future, particularly when it comes to macroeconomic trends that literally everyone else saw coming.

Their business models were predicated on an endless supply of cheap money, even though the Fed steadily ratcheted interest rates in the years leading up to the Covid pandemic, only slashing them to mitigate the pain of Covid and (to a lesser extent) the US-China trade war.. The specter of inflation reared its ugly head as early as 2020, first driven by the lockdown-induced chaos on supply chains, and then exacerbated further by the war in Ukraine, the collateral damage of China’s Zero Covid policy, and a chronic labor shortage in most industrialized countries.

The markets do not react when they are mass-hiring people to capture consumer demand. They do not react to the fact that Microsoft, for example, seems to be laying off people almost every year. In 2020, CEO Satya Nadella called for a “referendum on capitalism,” telling businesses to start to grade themselves on the “wider economic benefits they bring to society, rather than profits.” To be clear, this was four months after Microsoft laid off 1000 people, one year before they hired 23,000 people, and a few months after which they laid off 10,000 people to “deliver results on an ongoing basis, while investing in [their] long-term opportunity.”

Everything Ventured, Nothing Gained

Before these companies reach the public markets, they are fueled by an even more violently reckless form of funding - venture capital. Venture capitalists are regularly incentivized to create businesses that look valuable but aren’t necessarily of value. When I wrote about the Liches of Silicon Valley last year, I remarked upon how many valley companies experience volatile, erosive cycles of growth with the goal of being acquired or going public, burning as much venture capital as it takes to find an outcome:

They repeat a very specific cycle - company is the next big thing, company is now worth over a billion dollars, company is experiencing “unheard of growth” (with no question as to whether they are sustainable or profitable), company is now challenging ‘the big dogs’ of industry, a little M&A, an absolutely insane valuation, and then a sudden realization that actually, perhaps this wasn’t a good business at all? I am hammering on TechCrunch links here because I am being lazy - they are far from the only outlet to assume that a company like Brex would not simply run itself into the ground through virtue of existing - but the path is always the same - growth, growth, growth, legitimization, growth, growth, acquisition, and then an eventual reckoning with real life.

Venture pumps millions or billions of dollars into ideas that might sell a product or a service, but ultimately resemble things that can be sold to other companies or put on the public market for a profit higher than what was paid on a per-share basis. I once suggested that Silicon Valley conflated “making great ideas work” with “making ideas I like work,” but on consideration, many of these companies aren’t even things venture capitalists like - they are things that resemble things that they can sell. Do I genuinely believe that everyone who invested into the Web3 grift was a strident believer in the brave new decentralized economy? Hell no. They just went where the winds blew — or where they seemed to be blowing.

Andreessen Horowitz was the lead participant in arguably the biggest con in venture capital, pumping billions into Web3 companies that didn’t have any real product, but stapled together enough buzzwords and websites to resemble actual entities. A16Z found a way to vastly accelerate the idea-to-business-to-profit cycle of venture. Despite claiming it was “Time To Build” in 2020, Andreessen Horowitz realized that there wasn’t ever really much of a need to build at all - you could create things that semiotically aligned with what “valuable” looked like and profit off of that. While the public markets may (at least, before the rise of the SPAC) have required some sort of business - even if said business wasn’t graded on being a “good” one - the cryptocurrency markets allowed the vaguest of ideas to get even vaguer valuations.

This same insipid thought process applies to the rest of their portfolio too. Adam Neumann, a guy who is most famous for running WeWork into the ground, got a second at-bat with his new startup “Flow,” a company that Neumann is still not able to fully describe, but that may involve you renting to own an apartment that Flow owns somewhere at some point. Just like Silicon Valley can’t help itself from reinventing the bus, Neuman is seemingly attempting to reinvent the rental market — a diseased, exploitative industry in its own right — in his own image. He’s replacing one cancer with another, only even more aggressive and metastatic.

Neumann was, is, and will always be full of shit. Appropriately, in a video A16Z released yesterday, Neumann used the following analogy to describe Flow:

The founder turned to a toilet metaphor to explain one aspect of his idea of ownership. “If you’re in an apartment building, and you’re a renter, and your toilet gets clogged, you call the super,” he said. In contrast, “if you’re in your own apartment, and you bought it and you own it and your toilet gets clogged, you take the plunger.” For Neumann, fixing up your own apartment means shifting from “being transactional to actually being part of a community” and “feeling like you own something.”

In a functioning society, Adam Neumann would not be given a single dollar. This quote proves that he has never unclogged a toilet, because in the event that you could unclog your toilet in an apartment you rented, you’d probably do it. If the clog was so severe it required the super, you would probably still call a plumber if you owned the place, because your nasty business has created a problem you cannot solve.

What I am suggesting is that Adam Neumann doesn’t know anything about home ownership, or unclogging toilets, or toilets, or the regular experience of being a human. Yet he is given unfathomable amounts of capital to address problems related to these things, because he has the resemblance of the kind of messianic white guy that is able to take a product and sell it, even if he is quite literally the guy who failed to do this before.

Neumann turned a (nominally) $47bn company into a $2.9bn company. In a sane and just world, he wouldn’t see a dollar of funding for the rest of his life.

There are tons of other examples of colossally stupid assholes and stupid ideas getting money. As I wrote about on Monday, the largest investment rounds of the last few years have gone to companies that got obscene valuations based on nothing other than a vague sense of them “looking like a winner.” There is no reason a weight loss app should need $540 million to operate - that is not a sustainable enterprise considering the entire weight loss industry is worth about $3.8 billion. Clubhouse was never worth the billions of dollars pumped into it, considering the entire radio industry only makes about $12 billion a year combined. While capital is required to get a company off the ground, the only way to justify these massive surges of capital is that venture capitalists are putting companies on life support in the hopes that they can flog them for a profit.

And this corrosive capital system gets continually rewarded. Companies like Uber are taken public, making massive windfalls for venture capitalists without ever having to run a profitable business. Venture capitalists crammed $41 billion into crypto in the space of 18 months, despite there being no real use cases for crypto. Metaverse companies raised $120 billion in 2022 for a concept that has yet to really exist, and perhaps never will. Yet these concepts get vast amounts of money because venture capitalists are incentivized to pump cash into “good companies to invest in” over “good companies.”

As my friend Kasey put it in a recent conversation, growth is a fire. If you build a nice, sustainable fire, it’ll keep you warm, cook food and sustain life. And if the only thing you care about is how big your fire is, then it’ll set fire to everything around it, and the more you throw into it, the more it’ll burn. Eventually, you’ll have nothing left, but if you desperately desire that fire, you will constantly have to find new things to burn at any cost.

And we, societally, have turned our markets and businesses - private and public - over to arsonists. We have created conditions where we celebrate people for making “big” companies but not “good” companies.

Venture capital and the public markets don’t actually reward or respect “good” businesses or “good” CEOs - they reward people that can steer the kind of growth that raises the value of an asset. Elon Musk’s success with Tesla didn’t come from the inarguable point that he ended the monopoly of the internal combustion engine - it came from his canny manipulation of the symbolic value of a stock through lies and half-truths, meaning that there was always a perpetual reason that Tesla was a “growth” company and a “good stock to buy.” Sundar Pichai isn’t paid $280 million a year because he’s a “good CEO.”  After all, Google has all but destroyed its search product. He’s paid because he finds ways to increase the overall growth of the company (even while their cloud division still loses money), and thus the stock goes up.

The consequences are that these companies will continue to invest in things that grow the overall revenue of the company over all else. They will mass-hire and mass-fire, because there are no consequences when the markets don’t really care as long as the company itself stays valuable. Venture capitalists certainly don’t mind - after all, it’s “less burn” to “get you through” tough climates that were arguably created by the poor hiring decisions of a company that was never incentivized to hire sustainably or operate profitably.

Until we see a seismic shift in how major investors treat the companies they invest in, this cycle will continue. I guarantee that we will see each and every one of the companies doing mass layoffs do mass-hirings in the next few years, and then do another mass layoff not long after, because they are simply treating human capital as assets to be manipulated to increase the value of a stock. They are not structured to evaluate whether the business is “sustainable,” because their only interest is seeing their current profits grow by multiples that please Wall Street.

“Good companies” should not have to repeatedly lay people off. They should not be mass-hiring for fear that the demand they are capturing is temporary, and those new employees will soon find themselves at the receiving end of a pink slip.

The lens through which we evaluate businesses is cracked, and until we fix it, we will continue to experience these punishing cycles of binging and purging on human capital.

This is the problem at the center of almost everything I’ve written. Why are bosses mad they can’t bring people back to the office? Because their alignment of business success isn’t really tied to profit or “success,” but rather the sense that they are “big” and “successful,” which requires a bustling workplace and “ideas.”

Why did billions of dollars get pumped into crypto’s countless non-companies? Because “success” as defined by capital has been reframed to mean “number go up.” As a notion, it is divorced from any long-term thinking, fiscal probity, or even what you and I would call “morality.”

Why did these companies never seem to get blamed for hiring and then quickly firing tens of thousands of people? Because at the heart of the business media and the markets, workers were necessary casualties of the eternal struggle for growth. Layoffs are inevitably reported as a large number (“10,000 employees at Microsoft”), which makes it all too easy to remove the human element. When confronted with numbers of this scale, it’s easy to ignore the individual human agony that comes with losing a job. The uncertainty and shame that follows a firing.

The truth is that nothing lasts forever. Companies can (and should) die — or, at the very least, understand that there is an inevitable limit to growth, and eventually they must reconcile with being a stable, albeit plateaued, business.

A product may be profitable for a while, but there is a line at which profitability comes at the cost of functionality, and your company may simply not be able to grow more. A business that cannot generate profit is not a good business, and a business that can never generate a profit deserves to die.

And the net result of all of this is that it kills innovation. If capital is not invested in providing a good service via a profitable business, it will never sustain things that are societally useful. Companies are not incentivized to provide better services or improve lives outside of ways in which they can drain more blood from consumers. And the street doesn’t care either - just look at Facebook and Instagram, two products that have grown endlessly profitable and utterly useless in the process.

If capital wishes to call labor entitled, capital must acknowledge that it is the most entitled creature in society, craving eternal growth at the cost of the true value of any given service or entity.