CUNY TV Internship

cuny_1

cuny_2

cuny_3

cuny_4

cuny_5

What better way to conclude graduate school than to finish an internship at CUNY TV? Graduate school was always in my plans, but New York was never really in the picture because it just seemed beyond financial reach. But amongst other things, reading Annie Schweikert’s & Dave Rice’s IASA journal paper, Microservices in Audiovisual Archives: An Exploration of Constructing Microservices for Processing Archival Audiovisual Information, made the decision for me.

Most students of the program don’t typically do internships in their final semester and not gonna lie, it was brutal balancing the internship on top of my graduate thesis. But I would be kicking myself if I finished the program without doing a CUNY TV internship. Why you may ask? The paper made me rethink the possibilities of the architecture of audiovisual archival workflows, plus it also lit a path for a career that I have been intrigued about. Definitely a recommended read for anyone interested in audiovisual archiving & preservation.

But long story short, I did it and learnt a ton. While audio preservation is not necessarily my expertise, I worked on creating & improving audio processing workflows for the Himan Brown Collection. Most of it was building on Sarah Wardrop’s (previous intern) work on creating an automated way to ‘restore’ and improve the quality of digitized transcription discs. This involved creating scripts to de-noise & de-click these audio recordings. Bash scripts were written initially, but Python proved to be more suited for this process with the libraries it offers. This is a post for another day.

The greatest takeaway was witnessing and contributing to CUNY TV’s constellation of scripts. From creating access copies to extracting technical metadata, these scripts carry out the archive’s processes from ingestion to archive. Automation is beautiful since it eliminates / reduces manual processes that numbs the mind, but achieving a state of automation comes with a high technical barrier. It can help institutions with challenges like backlog and lean staffing, but creating and maintaining these scripts requires dedicated technical staff that comes with significant cost that only well resourced institutions can afford.

Big thanks to Dave Rice, Catriona Schlosser & Aida Garrido for the incredible internship!

Dark Mode

darkmode

I finally found some time to complete the site’s dark mode feature. As someone who uses dark mode a lot, I couldn’t put the feature off any longer. In theory, adding a dark mode feature is not complicated. However, it can be challenging in practice when integrating the feature into someone else’s code.

The first thing is to set up a button, which is the simplest step. It enables the visitor to toggle the site’s dark mode on & off.

<button
  id="dark-mode-toggle"
  class="dark-mode-toggle"
  aria-label="toggle dark mode"
>
  <svg width="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 496">
    <path
      fill="currentColor"
      d="M8,256C8,393,119,504,256,504S504,393,504,256,393,8,256,8,8,119,8,256ZM256,440V72a184,184,0,0,1,0,368Z"
      transform="translate(-8 -8)"
    />
  </svg>
</button>

The next thing is to set up a script to listen for the user’s action and to save their preference locally with ‘localStorage’.

document.addEventListener("DOMContentLoaded", () => {
  let darkMode = localStorage.getItem("darkMode");
  const darkModeToggle = document.querySelector("#dark-mode-toggle");

  const enableDarkMode = () => {
    // add class dark mode to the body
    document.body.classList.add("darkmode");
    // update dark mode in the local storage
    localStorage.setItem("darkMode", "enabled");
  };

  const disableDarkMode = () => {
    // remove class dark mode from the body
    document.body.classList.remove("darkmode");
    // update dark mode in the local storage
    localStorage.setItem("darkMode", "disabled");
  };

  if (darkMode === "enabled") {
    enableDarkMode();
  }

  darkModeToggle.addEventListener("click", () => {
    darkMode = localStorage.getItem("darkMode");
    if (darkMode !== "enabled") {
      enableDarkMode();
      console.log("Dark mode enabled");
    } else {
      disableDarkMode();
      console.log("Dark mode disabled");
    }
  });

  // set the initial state based on local storage
  if (darkMode === "enabled") {
    enableDarkMode();
  }
});

This logic will ultimately toggle the CSS dark mode in the site’s <body> element, which can be configured on a separate stylesheet. There are some suggested color themes for dark mode online that I found useful as a starting point in deciding the dark mode theme color palette.

NYU MIAP Magnet

I was thinking of a design for a commemorative magnet for my MIAP cohort and decided on a vectorscope’s signal output. For the uninitiated, a vectorscope is an instrument that measures and visualizes chrominance (color) information encoded in a video signal.

This particular signal pattern depicts the SMPTE color bar test pattern that is widely used for video calibration, per the NTSC standard. In this instance, the lines in the vectorscope measure the hue and saturation of the colors red, magenta, blue, cyan, green, and yellow in the bars.

I made slight modifications to the vectorscope’s graticules to commemorate (probably) the program’s most international cohort 🥳 watch out world!

🇨🇳 🇮🇩 🇲🇽 🇸🇬 🇪🇸 🇹🇼 🇺🇸

magnet_1

magnet_2

magnet_4

DIY Laptop Sleeve

My long overdue project to make a new laptop sleeve is finally complete. It was time to replace my old one that saw me through film school, undergrad, and grad school. The edges had frayed, and the corners of my computer had begun to peek out. I spent an entire Friday with Fin and Mist cutting, ironing, and sewing over lots of tea and watermelon. I learned a lot, and I am quite satisfied with the overall result.

On to the next chapter!

busted_sleeve

fin_working

mist

practice

sleeve_in_progress

finished_sleeve

button_detail

Sony Mavica MD7

I am gushing over my ‘new’ Sony Mavica FD7 camera that I recently got off Facebook Marketplace. It is one of the earlier digital cameras from Sony’s discontinued Mavica (Magnetic Video Camera) line that saves digital images on 3.5” 1.4 MiB 2HD floppy diskettes in DOS FAT12 format. AFAIK, the FD7 was released in 1997 with the FD5 model where the former boasts 10x optical zoom, while the later has a fixed focal length.

The camera produces .JPG images in 640x480 resolution with its 0.38 megapixel 1/4” CCD sensor. In terms of optics, it has a focal length range of 4.2 - 42mm, which is impressive for a camera of its size. The diskettes hold up to 40 .JPG images in its ‘normal’ setting and 20 images in its ‘fine’ setting. Each image takes up to 10 seconds to be recorded on the media and the process is accompanied by the sounds of the diskette’s whirring. Fun and amusing piece of technology.

leaf

ducky

wsq

bobst

8street