An Unexpected Year at the Getty in Los Angeles

getty

It has been a crazy past couple of months moving and settling in Chicago, but I have finally found my cadence in my new home to pen my thoughts about my incredible time in Los Angeles.

Like New York, LA was never part of my plans. It just never appealed to me. So when I learned I’d be spending 12-months there working at one of the finest museums in the world, no less I was equal parts surprised and thrilled. Life and luck continue to surprise me.

My time as the Collection Platforms & Data Graduate Intern at Getty Digital was nothing short of incredible. From day one, I was surrounded by an exceptional cohort of interns whose talent, tenacity, and generosity continuously put me in awe. Each brought unique expertise to the table: conservation science, decorative arts and sculpture, historic preservation. Every conversation became an opportunity to learn something new, and I found myself constantly inspired by the depth of knowledge this group shared so generously.

Working at Getty Digital felt like witnessing the future of museum technology unfold in real time. The team operates at a remarkable level, supported by Getty’s substantial resources, and I had a front-row seat to their innovative work. One of my highlights was diving deep into Getty Digital’s data ecosystem and pipelines: the infrastructure that powers their ambitious IIIF and Linked Open Data initiatives. Seeing how these systems work together to make collections more accessible was genuinely eye-opening.

The internship allowed me to develop skills across three key areas of digital preservation, each presenting its own unique challenges.

Web Archiving

I worked on preserving Getty’s legacy websites using tools like Archive-It and Browsertrix. What made this fascinating—and sometimes frustrating was that each site responded differently to different tools. Some sites captured beautifully with one approach but fell apart with another. The work required constant experimentation and problem-solving to achieve the best possible preservation outcome. There’s something satisfying about finding just the right combination of tools and settings to capture a site faithfully.

Time-Based Media Preservation

I also became acquainted with Rosetta, an Ex Libris product, where I ingested Getty Museum’s time-based media collection. The process involved file extraction, metadata injection, and validation. Meticulous work that required attention to detail at every step. One aspect I particularly enjoyed was working with file format signatures, where I had the opportunity to implement one developed by the intern before me. It felt like being part of a continuum of preservation efforts.

System Integration

Perhaps the most eye-opening project was implementing Single Sign-On for Rosetta. I’d always wondered how SSO actually worked behind the scenes, and getting hands-on experience demystified the process entirely. Understanding how these authentication systems integrate with existing infrastructure gave me a new appreciation for the complexity of museum technology ecosystems.

This internship has been a springboard for my career in ways I’m still discovering. Beyond the technical skills, I’ve gained confidence in tackling complex digital preservation challenges and a clearer vision of the kind of work I want to pursue. I’m incredibly grateful to my manager, Teresa Soleau, for this opportunity and for her leadership, wisdom, and experience. She created an environment where I could grow, experiment, and learn from both successes and setbacks.

As I settle into Chicago and this next chapter, I carry with me not just new skills but a renewed sense of purpose about the importance of preserving our digital cultural heritage.

Dark Mode Pt. II: Flash of Unstyled Content (FOUC)

darkmode_fouc

As it turns out, the implementation of the site’s dark mode was plagued by a Flash of Unstyled Content (FOUC). As illustrated, light mode would flash during navigation between pages while in dark mode. Yuck.

The issue lies in the fact that the dark mode class is applied to <body> only after the page fully loads. As a result, the browser renders the default light theme in the brief moment between page load and the execution of the dark mode script.

The fix:

  • Apply dark mode to <html> instead of <body> by adding an inline script at the top of head.html
  • Update dark mode styles to target html.darkmode.body
  • Update dark mode JavaScript to use document.documentElement.classList.add("darkmode"); instead of document.body.classList.add("darkmode");

Apple QuickTime MOV: The Atomic File Format

A recent analysis of a Apple QuickTime .MOV file I conducted at work compelled me to write this post to discuss its file structure.

Released in 1991, Apple QuickTime .MOV files are structured by hierarchical atoms that store media data and metadata. A typical .MOV file may consist of the following atoms:

1. ftyp (file type)

The ftyp atom specifies the file format type. For example, ‘qt’ for QuickTime.

2. moov (movie) aka ‘the meat’

The moov atom defines the .MOV file since it carries crucial technical metadata like duration and display specifications.

It may have other types of sub-atoms, with at least one of the following three: mvhd (movie header), cmov (compressed movie) & rmra (reference movie). Several other sub-atoms like clip (clipping), trak (track), ctab (color table), and udta (user data) may exist in the moov atom.

The layout of a moov atom:

Data Type
Size 4 bytes
Type='moov' 4 bytes
Profile atom 'prfl'
Movie Header atom (REQUIRED) 'mvhd'
Movie Clipping atom 'clip'
Track atom 'trak'
User Data atom 'udta'
Color Table atom 'ctab'
Compressed Movie atom 'cmov'
Reference Movie atom 'rmra'

3. mdat (media data)

As suggested, mdat contains the files audio & video data.

4. free/skip (padding) [optional]

5. uuid (user defined) [optional]

Interestingly, the file that landed on my desk came without its ftyp atom, which I learnt was only required after the establishment of the ISO Base Media File Format (ISO BMFF) standard. It is also likely that legacy tools and software at the time may omit the atom, relying completely on players like QuickTime player to smartly defer to the moov atom. Hence it is plausible that legacy .MOV files may come without the ftyp atom, hence failing to play in some players and file format identification checks.

Mounting USB drives in WSL

I never realized WSL does not natively allow Windows users to access a USB drive in the system for reasons unknown to me.

However, it can be configured.

1. Create a mount point:

mkdir /mnt/a

The directory’s name does not matter.

2. Mount the desired drive letter to the newly created directory.

sudo mount -t drvfs A: /mnt/a

Managing Python aliases on Windows

Python was not found but can be installed from the Microsoft Store: ...

I kept getting the above error when calling Python in the command-line after upgrading Python, despite adding it to System Environment Variables. As it turns out, Windows secretly maintains aliases - python.exe & python3.exe - in ‘%USERPROFILE%\AppData\Local\Microsoft\WindowsApps’ that encourages Python installations through its Microsoft Store. While this may streamline the installation process for new users, this causes rage to those that want more bespoke configurations.

Thankfully, one can easily disable these aliases once they are made aware of them.

Step 1: Locate the aliases

Search ‘Manage App Execution Aliases’ in the Windows search bar.

Step 2: Toggle off ‘python.exe’ & ‘python3.exe’

cuny_4

A further step is to put ‘%USERPROFILE%\AppData\Local\Microsoft\WindowsApps’ lower in the pecking order in Environment Variables.