Movie Labs Ontology

Mike's Notes

An ontology for the Film Industry has been created by Movie Labs, supported by 
  • Disney
  • Paramount
  • Sony Pictures
  • Universal
  • Warner Brothers
The ontology has been made open-source. I should use this ontology as the basis for the film industry apps I have built.

Resources

References

  • Reference

Repository

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

Last Updated

17/05/2025

Movie Labs Ontology

By: 
MovieLabs: 18/07/2024

The Evolution of Media Creation

"In the Summer of 2019 MovieLabs, on behalf of its member studios, published a whitepaper called “The Evolution of Media Creation” which laid out a bold 10-year vision for the adoption of new technologies to aid in content production, post and VFX. The paper, often referred to as the ‘2030 Vision’ has now been broadly adopted by many partner companies and is accepted as the industry ‘north star’ for guiding production technologies towards a shared goal.​

The original Evolution of Media Creation paper, available as a free download, lays out 10 Principles for a more efficient media pipeline using cloud infrastructure, zero trust security and software-defined workflows. The Principles act not just as a destination, but also a roadmap for how to get there. This roadmap drives the work of MovieLabs and those of our studios and external partners as we work together as an industry to bring the promise of the 2030 Vision forward. ​

Although the 2030 Vision is a technology roadmap it’s primary focus is in empowering the creative – to be able to achieve more – to be more efficient (replacing repetitive and menial tasks so they can focus on creative tasks), flexible (so workflows can change and adapt to new situations and technologies) and faster (so there’s more of the most precious resource – time)." - Movie Labs

Interoperability in Media Creation

"In August 2023, MovieLabs added a new paper to the “2030 Series” titled “Interoperability in Media Creation” setting out a transformative vision for the future of media production workflows as software and cloud infrastructure play a larger role in supporting creative work.

The white paper focuses on interoperability and how it is a critical enabler for the 2030 Vision, emphasizing its increasingly pivotal role in shaping media production. Implementation of the interoperability principles in the paper can enable production teams to seamlessly integrate diverse software tools, services, and infrastructure. By achieving robust interoperability, studios and production teams can select and integrate the tools, vendors, and infrastructure that best align with each production’s unique needs, reducing the need for custom engineering and integration efforts." - MovieLabs

Example from Film Lab Blog

Posted on October 28, 2020
By Craig Seidel

File naming is a mundane yet persistently exasperating problem across media production...

In this post, I’m going to explain how we have addressed the problem in VFX, and how we plan to expand our solution to other areas of the workflow.

Earlier this year MovieLabs  partnered with the Entertainment Technology Center at USC (ETC) with the idea of developing a focused specification on “plate” naming. We published a paper in August called VFX Image Sequence Naming which defined naming for frame-based video (e.g., plates and comps) that are inputs and outputs of the VFX process. Now MovieLabs is expanding this scope to create a more universal solution.

Files, files, and more files.

The professional media creation process requires a staggering number of files. Every second a camera is running it generates about 24 files. These files can be copied every time there is a change, and often duplicated for other reasons. A major production might create 200,000 image files per day.

Each specialty creates its own files: Artwork, spreadsheets, computer models (both the VFX kind and the financial kind), call sheets, timecards, metadata, continuity, and on and on… These files are shared, often between disparate file management systems which often rename or recode them.

Keeping files organized is essential to the creative process.

People have developed numerous conventions for naming files so they are as self-identifiable as possible. Each of these many schemes is tailored to a specific file type, task, or even to a specific person working on a task.

That’s fine until files need to be shared, stored or archived. Then the sender and the receiver must come to some form of agreement and the file organization must be transformed from one to the other.

Some translations are built into tools. Some require custom work for bespoke production workflows (i.e., each new production), and some require manual manipulation.

Our goal is to provide naming conventions that increase interoperability, reduce custom work, reduce errors, and provide more flexibility in the creative process—all while keeping implementation as simple as possible to drive our ultimate goal of enabling creative teams to spend more time creating and less time managing files.

The fastest way to do something is not to do it!

That means the fastest way to convert files is not to convert them. The Image Sequence file naming specification we published provides naming that requires no translation (assuming everyone complies). In other words, a production can perform a VFX pull from editorial and deliver those files to any VFX house in exactly the form they expect them. No work. No errors. Plenty of flexibility.

This project started as “Plate” file naming.

Loosely defined, a Plate is a frame or series of frames used in visual effects. The term allegedly comes from painted matte plates. Plates are backgrounds, foregrounds, effects (non-digital or “practical”), or other images captured where pixels from the image make their way into the final work. Productions might shoot a “clean” plate without actors to provide unobstructed background for replacing wires used to suspend actors (rig removal). Plates can be thought of as video (not audio), but in practice each frame is its own image file.

When a plate is passed to a VFX team, the recipient must understand the context of the plate. What is it part of? How does it align with other plates, and other elements? What work is required on the plate? Our challenge was to distill the information that describes a plate into a concise file name that is sufficient to identify the plate.

Aha! It’s an identification problem.

Realizing this was essential to determining what goes in the filename. We only need enough information to distinguish this plate from all other plates, thereby establishing its own identity. In other words, characteristics that aren’t distinguishing (e.g., pixel aspect ratio) need not be in the filename.

The anatomy of a filename.

Working with the subject matter experts participating in the ETC working group, we sorted through all the options and narrowed the choices down. Here are the fields we chose for the final specification:


	<showid> + “_” +
	<vfx-sequence> + “_” +
	<vfx-shot> + “_” +
	<image-type> + “_” +
	<vendor-code> + “_” +
	<revision-code>
	{ +  “_” + <alternate>}
	{ +  “_” + <camera-reference>}
	{ +  “_” + <identifying-description>}
	{ +  “_” + <spec-version>}
	{ + “.” + <frame-number>}
	+ “.” + <file-extension>

Show ID, VFX Sequence, and VFX Shot represent Use Context (how it will be used). Image Type is the kind of frame it is (e.g., main plate), based on a concept we call Functional Class. There are fields for vendor identification, revision, variant (e.g., 4K vs 6K), camera, and frame number. We use file extension to identify its Structural Type, represented as file type (generally, OpenEXR or DPX). For each of these we defined encoding rules that would ensure that filenames were encoded consistently.

Aha #2, It’s not just about plates.

Our second epiphany was that with a few changes we could generalize the specification to address almost any image sequences in VFX (e.g., comps, concept, layout, look dev, test shots, etc.). A few tweaks and the “Plate Naming” spec became the “Image Sequence Naming” spec. That is what we published.

Thanks!

Special thanks to the ETC working group co-chairs Erik Weaver and Horst Sarubin of Universal Studios. Thanks also to the contributors listed on page iii of the spec. Notably, Horst laid the foundation for this spec, and Barbara Ford Grant of MovieLabs provided domain expertise in honing it.

What’s next?

We are extending the work to other VFX focused areas (e.g., still images). This is part of a broader MovieLabs effort to establish a framework for naming any asset throughout the production process, to help increase interoperability, reduce errors, and save time.
As part of our work to realize the MovieLabs 2030 Vision, we have developed an asset metadata model that we are using to structure the metadata elements that comprise a filename. But that’s a topic for a future blog.

In the meantime, please download the specification and let us know if you have any comments. We’re interested in your feedback and participation on both the general naming and VFX naming work—because ultimately the benefits of standardization are only realized when everyone uses the standard.

An Ontology for Engineering Mathematics

Mike's Notes

An Ontology for Engineering Mathematics was published in 1994.

By Thomas R. Gruber and Greg R. Olsen.

The HTML version at ksl-web.stanford.edu has gone. I found a copy on the Wayback Machine.

Resources

References

  • Reference

Repository

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

Last Updated

17/05/2025

An Ontology for Engineering Mathematics

By: Thomas R. Gruber and Greg R. Olsen
Morgan Kaufmann: 17/07/2024

Thomas R. Gruber and Greg R. Olsen. (1994). An ontology for engineering mathematics. In J. Doyle, P. Torasso, and E. Sandewall (Eds.), Fourth International Conference on Principles of Knowledge Representation and Reasoning, Gustav Stresemann Institut, Bonn, Germany, Morgan Kaufmann, 1994.

Possibly the first refereed publication of an AI ontology, explicitly called out as an ontology.  Defines a formal axiomatization of the mathematics sufficient to represent modern engineering models. The HTML version of this paper is deeply cross indexed and contains the entire ontology in machine and human readable form.

Original abstract: We describe an ontology for mathematical modeling in engineering. The ontology includes conceptual foundations for scalar, vector, and tensor quantities, physical dimensions, units of measure, functions of quantities, and dimensionless quantities. The conceptualization builds on abstract algebra and measurement theory, but is designed explicitly for knowledge sharing purposes. The ontology is being used as a communication language among cooperating engineering agents, and as a foundation for other engineering ontologies. In this paper we describe the conceptualization of the ontology, and show selected axioms from definitions. We describe the design of the ontology and justify the important representation choices. We offer evaluation criteria for such ontologies and demonstrate design techniques for achieving them.

Data Center Heatmap

Mike's Notes

Note

Resources

References

  • Reference

Repository

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

Last Updated

17/05/2025

Data Centre Heatmap

By: Barry
Barry on WordPress: 28/07/2022

At Automattic, our systems team manages over 10,000 physical servers located across 30 data centers on 6 continents. As our compute density has increased from 24 CPU threads/RU in 2013 to 128 CPU threads/RU in 2022 the maximum thermal thresholds have decreased. Older, less powerful servers could operate with inlet air temperatures up to 42C (107.6F) while newer servers trigger CPU throttling at much lower temperatures of 35C-37C (95F – 98.6F). Normal data center operating temperatures tend to be between 20F-25C, but cooling failures are somewhat common (they even affect Google), so we have to monitor temperatures carefully.

We are big fans of Prometheus and Grafana, and for a few years, our temperature graphs have looked like this.


This graph shows the temperatures of some servers located in our data center in Johannesburg, South Africa over one week. The coloured lines represent individual servers, and the bold red line is the average temperature in the rack.

We get this data from our server's inlet temperature sensor using ipmitool. I thought it would be interesting to visualize this data a bit differently, and Grafana has a Heatmap graph type that makes it pretty easy. 

First, we simply want to graph the temperature by location for a given datacenter. In PromQL this looks like

avg by (location) (ipmi_inlet_temp{dc="$DC"})

location includes the rack identifier and the location in the rack. For example a location of 101-10 would mean Rack 101, RU 10. We store this information is our data center asset management system (which is a colon separated file) and it gets added as labels to all Prometheus metrics. By choosing the Heatmap (New) graph type and configuring some basic graph options, Grafana allows us to create a graph which shows the same data as our original graph, but in a different, and more useful way. We can easily see that the top of the rack is warmer than the bottom which is to be expected since the cold air in this facility comes from the floor. We can also see that temperatures have increased slightly over the past week, which is not ideal, but they are not at dangerous levels.

JNB

We can contrast this with a rack in Milan, Italy, where there was a cooling outage which caused the servers to operate beyond their intended temperature threshold for some time: 

Milan, Italy

Using the same data and graph options, we can also easily create heat maps of entire rows of racks to visualize airflow management and identify areas for potential improvement. Here is a row of racks in a data center in Los Angeles with poor airflow management. We can see the racks at the end of the row suffer from increased temperatures due to air leakage from the hot aisle to the cold aisle. 

Los Angeles

This data can be contrasted with data from a set of racks in Amsterdam, which have much better airflow management.

Amsterdam

This post shows how easy it is to create cool(!!) and useful heat maps using Grafana, Prometheus, and a little time. If this sort of stuff interests you, Automattic is hiring!

Checkboxes: Design Guidelines

Mike's Notes

Some design guidelines on checkboxes.

Resources

References

  • Reference

Repository

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

Last Updated

17/05/2025

Checkboxes: Design Guidelines

By: 
Wikipedia: 2024

"A checkbox (check box,  tick box) is a graphical widget that allows the user to make a binary choice, i.e. a choice between two mutually exclusive options. For example, the user may have to answer 'yes' (checked) or 'no' (not checked) on a simple yes/no question.

Checkboxes are shown as empty boxes when unchecked and with a tick or cross inside (depending on the graphical user interface) when checked. A caption describing the checkbox's meaning is normally shown adjacent to the checkbox. Inverting the state of a checkbox is done by clicking the mouse on the box or the caption or by using a keyboard shortcut, such as the space bar.

A series of checkboxes is often presented, each with a binary choice between two options. The user may then select several of the choices. This is contrasted with the radio button, in which only a single option is selectable from several mutually exclusive choices.

Checkboxes may be disabled (indicated "greyed out") to inform the user of their existence and possible use despite momentary unavailability." - Wikipedia

Code

<fieldset>
  <legend>Choose your monster's features:</legend>

  <div>
    <input type="checkbox" id="scales" name="scales" checked />
    <label for="scales">Scales</label>
  </div>

  <div>
    <input type="checkbox" id="horns" name="horns" />
    <label for="horns">Horns</label>
  </div>
</fieldset>

Homepage Design

Mike's Notes

Note

Resources

References

  • Reference

Repository

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

Last Updated

17/05/2025

Homepage Design

By: 
NNGroup 14/07/2024

Homepage Design: 5 Fundamental Principles from Norman Neilson (NN Group).

Principles

  • Principle 1: Ensure Easy Access to the Homepage
  • Principle 2: Communicate Who You Are and What You Do
  • Principle 3: Reveal Content Through Examples
  • Principle 4: Prompt Actions and Navigations
  • Principle 5: Keep Homepages Simple
  • Durability of the Homepage Principles

Engineering Newsletters

Mike's Notes

I recently discovered and subscribed to a series of software engineering newsletters written by highly experienced engineers. Most have a website and often reference other engineering websites.

Resources

References

  • Reference

Repository

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

Last Updated

17/05/2025

Engineering Newsletters

By: Mike Peters
On a Sandy Beach: 13/07/2024

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

words

Just Use Postgres for Everything

Mike's Notes

Note

Resources

References

  • Reference

Repository

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

Last Updated

17/05/2025

Just Use Postgres for Everything

By: Stephan Schmidt
Amazing CTO: 12/07/2024

How to reduce complexity and move faster

TLDR; just Postgres for everything.

We have invited complexity through the door. But it will not leave as easily.

There is Radical Simplicity though.

One way to simplify your stack and reduce the moving parts, speed up development, lower the risk and deliver more features in your startup is “Use Postgres for everything”. Postgres can replace—up to millions of users—many backend technologies, Kafka, RabbitMQ, Mongo and Redis among them.

This makes every application easier to develop, scale and operate.

Less moving parts means fewer developers for parts that don’t provide value or just replicate existing functionality (frontend) and more developers on parts (like the backend) that does provide value to customers. What if you could increase feature output by 50% without higher costs? For developers: What about a lower cognitive load? You really deeply understand all moving parts? No more imposter syndrome?

Just Use Postgres

  • Use Postgres for caching instead of Redis with UNLOGGED tables and TEXT as a JSON data type. Use stored procedures or do as I do, use ChatGPT to write them for you, to add and enforce an expiry date for the data just like in Redis.
  • Use Postgres as a message queue with SKIP LOCKED instead of Kafka (if you only need a message queue). Or as a job queue in Go with River
  • Use Postgres with Timescale as a data warehouse.
  • Use Postgres with pg_analytics as an in memory OLAP with Apache Datafusion
  • Use Postgres with JSONB to store Json documents in a database, search and index them - instead of Mongo.
  • Use Postgres as a cron demon to take actions at certain times, like sending mails, with pg_cron adding events to a message queue.
  • Use Postgres for Geospacial queries.
  • Use Postgres for Fulltext Search instead of Elastic.
  • Use Postgres to generate JSON in the database, write no server side code and directly give it to the API.
  • Use Postgres with auditing with pgaudit
  • Use Postgres with a GraphQL adapter to deliver GraphQL if needed.

There I’ve said it, just use Postgres for everything.

Good code is rarely read

Mike's Notes

Note

Resources

References

  • Reference

Repository

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

Last Updated

17/05/2025

Good code is rarely read

By: Alex Molas
alexmolas.com: 06/06/2024

The other day, I was interviewing a developer for a position at Wallapop. The candidate was a bit junior, but I enjoyed their technical assignment, and the conversation was going great. One of the questions I had to ask was

How do you define good code?

I was expecting an answer in the lines of “best practices, DRY, SOLID, code formatting, design patterns, etc.”, but the candidate just answered.

Good code is code that’s easy to read.

And this apparently simple answer got me thinking for the last week. Here are some random thoughts I had.

Why best practices?

Best practices are tools that help us write code that’s easy to read. These practices, such as the DRY principle, following SOLID, and maintaining consistent code formatting, are not arbitrary rules. These guidelines have been developed to ensure that code is understandable and maintainable. When code is easy to read, it’s easier to debug, extend, and refactor. This readability allows other developers (or even your future self) to quickly grasp the logic and purpose of the code without extensive documentation.

Read to write

But no one reads code just for the fun of it 1. When you read code, it’s to understand it and then use it. This means that the purpose of code readability is to facilitate further development. If code is written clearly, it reduces the cognitive load on the developer who will work with it. Code that is easy to read is also code that is easy to use. When functions and classes are named appropriately and their purposes are clear, you can use them without understanding their internal workings.

Code shouldn’t be read more than written

The saying “code is read more than written” is often cited to emphasize the importance of writing readable code. But it could be a symptom of bad code. If a code needs to be read frequently, it might indicate that it is not as clear or intuitive as it should be. Good code should be used more than read. It should be so well-designed that developers can use it without needing to read through it extensively.

Good code is rarely read

Therefore, your goal when writing code is for it to be read as little as possible. This might sound counterintuitive, but if your code is so easy to use that it doesn’t require an in-depth undertanding to be used, then it is good code. It should be so well-structured and named that its purpose and functionality are immediately apparent. This minimizes the need for others to read through and interpret the code, allowing them to use it more effectively.

In conclusion, good code is rarely read. Good code is so ergonomic that you almost don’t need to read it; you just use it. It allows developers to focus on building features and solving problems rather than deciphering existing code. This is the ultimate goal of good coding practices: to create code that is so clear and intuitive that it almost disappears, allowing the functionality to shine through.

CommonMark

Mike's Notes

Note

Resources

References

  • Reference

Repository

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

Last Updated

17/05/2025

CommonMark

By: 
commonmark.com: 20/04/2025

A strongly defined, highly compatible specification of Markdown

What is Markdown?

It’s a plain text format for writing structured documents, based on formatting conventions from email and usenet.

Who created Markdown?

It was developed in 2004 by John Gruber in collaboration with Aaron Swartz. Gruber wrote the first markdown-to-html converter in Perl, and it soon became widely used in websites. By 2014 there were dozens of implementations in many languages.

Why is CommonMark needed?

John Gruber’s canonical description of Markdown’s syntax does not specify the syntax unambiguously.

In the absence of a spec, early implementers consulted the original Markdown.pl code to resolve these ambiguities. But Markdown.pl was quite buggy, and gave manifestly bad results in many cases, so it was not a satisfactory replacement for a spec. Markdown.pl was last updated December 17th, 2004.

Because there is no unambiguous spec, implementations have diverged considerably over the last 10 years. As a result, users are often surprised to find that a document that renders one way on one system (say, a GitHub wiki) renders differently on another (say, converting to docbook using Pandoc). To make matters worse, because nothing in Markdown counts as a “syntax error,” the divergence often isn’t discovered right away.

There’s no standard test suite for Markdown; MDTest is the closest thing we have. The only way to resolve Markdown ambiguities and inconsistencies is Babelmark, which compares the output of 20+ implementations of Markdown against each other to see if a consensus emerges.

We propose a standard, unambiguous syntax specification for Markdown, along with a suite of comprehensive tests to validate Markdown implementations against this specification. We believe this is necessary, even essential, for the future of Markdown.

That’s what we call CommonMark.

Who are you today?

We’re a group of Markdown fans continually working toward the vision of CommonMark — a standard, interoperable and testable version of Markdown.

  • John MacFarlane, jgm@berkeley.edu
  • Martin Woodward, martinwoodward@github.com
  • Jeff Atwood, jatwood@codinghorror.com

Who were you in 2014, when this started?

We’re a group of Markdown fans who either work at companies with industrial scale deployments of Markdown, have written Markdown parsers, have extensive experience supporting Markdown with end users – or all of the above.

  • John MacFarlane, of Pandoc
  • David Greenspan, of Meteor
  • Vicent Marti, of GitHub
  • Neil Williams, of Reddit
  • Benjamin Dumke-von der Ehe, of Stack Overflow / Stack Exchange
  • Jeff Atwood, of Discourse

How can I help?

Exercise our reference implementations, or find a community implementation in your preferred environment or language. Provide feedback!

If a CommonMark implementation does not already exist in your preferred environment or language, try implementing your own CommonMark parser. One of our major goals is to strongly specify Markdown, and to eliminate the many old inconsistencies and ambiguities that made using Markdown so difficult. Did we succeed?

Where can I find it?

spec.commonmark.org

The CommonMark specification.

code.commonmark.org

Reference implementation and validation test suite on GitHub.

talk.commonmark.org

Public discussion area and mailing list via Discourse.

commonmark.org/help

Quick reference card and interactive tutorial for learning Markdown.

spec.commonmark.org/dingus/

Live testing tool powered by the reference implementation.

When is the spec final?

The current version of the CommonMark spec is quite robust after many years of public feedback.

There are currently CommonMark implementations for dozens of programming languages, and the following sites and projects have adopted CommonMark:

  • Discourse
  • GitHub
  • GitLab
  • Reddit
  • Qt
  • Stack Overflow / Stack Exchange
  • Swift

Payment Service Providers

Mike's Notes

Eventually, Ajabbi will need the services of a payment service provider.

Resources

References

  • Reference

Repository

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

Last Updated

17/05/2025

Payment Service Providers

By: 
Wikipedia: 2024

"A payment service provider (PSP) is a third-party company that allows businesses to accept electronic payments, such as credit card and debit card payments. PSPs act as intermediaries between those who make payments, i.e. consumers, and those who accept them, i.e. retailers."

"They often provide merchant services and act as a payment gateway or payment processor for e-commerce and brick-and-mortar businesses. They may also offer risk management services for card and bank-based payments, transaction payment matching, digital wallets, reporting, fund remittance, currency exchange and fraud protection. The PSP typically provides software to integrate with e-commerce websites or point of sale systems." - Wikipedia.