Skip to main content

The Samsung PRISM notebook trail: four repos behind one project

Share:XLinkedInHN
Cover for The Samsung PRISM notebook trail: four repos behind one project

The published version, and everything before it

The Samsung PRISM 2023 project I usually talk about is the multimedia indexer with the PyQt5 desktop UI on top of it. That is the artifact that got graded, that got the poster, that got the "winning" tag inside Samsung R&D. Everything I have written on the site so far is about that repo.

This post is about the other four.

Between December 2022 and February 2023, before any of the code that ended up in the indexer was written, I made four private GitHub repos that nobody has ever seen. They are the paper trail of a project that had not decided what it was yet. Two of them are three-file HTML scratchpads. One is a Streamlit file uploader with a stub function that never got filled in. The fourth is a semester of web-tech coursework I dumped into the same account because I had the tab open.

I want to write them down before I forget why they existed.

Prism-KPI (2022-12-13, HTML)

The first repo was called Prism-KPI. It is 118 kB: two HTML files, an index.js, a stylesheet, a README, and a handful of PNG icons. The index.html opens with a Bootstrap 5.0.2 navbar and the title "KPI Dashboard." Below the navbar is a grid of six panels, each rendering a gauge from a CSS trick I copied off some Codepen: a border-radius: 50%/100% 100% 0 0 rounded rectangle with a mask overlaid, the fill percentage set by a numeric ID.

The gauges track velocity, releasability, and test-case pass rate. None are hooked up. The numbers are hardcoded in index.js. There is a "Send Email" dropdown that calls smtpjs.com with a SecureToken and a body that reads "We have noticed that KPI parameters {} are over the threshold on the project {}." The commit history is thirty-eight entries long and almost every message is "Update index.html", "Update style.css", "Update index.js", or "Update README.md" in rotation.

The README is not a README. It is a diary. The header says # 16 Dec and then embeds a screenshot from user-images.githubusercontent.com, then # 15 Dec with five more screenshots, then # 14 DEC with one. It is what I would now put in a CHANGELOG.md, except I did not know what a CHANGELOG was.

The idea, as best I can reconstruct it, was that the Samsung PRISM cohort wanted a way to track our own progress. The gauges were meant to show sprint velocity and testcase pass rate. The email button was for auto-notifying the mentor when a threshold slipped. None of that ever happened. We tracked progress in Excel like everyone else.

prism (2022-12-15, HTML)

Two days after starting Prism-KPI, I created a repo just called prism. It is 3 kB. Three files: index.html, style.css, index.js. Four commits total. The messages are -, fix, Added files, Added and changed css.

I do not remember what this was. I opened it, made a hyphen-titled commit, made three more, and never touched it again. My best guess is that I wanted to build a public-facing "Samsung PRISM project" landing page and then realised I did not have anything to land on yet. Then I closed the tab.

The disk usage tells the story. Three kilobytes is roughly one empty HTML skeleton and a stylesheet with a body tag. That is what it was.

Prism-image (2023-01-20, Python)

A month later, in January, I made Prism-image. This is the only Python repo in the batch. It is a single-day repo: created, pushed, closed, all inside three minutes. The main.py is fifteen lines of Streamlit:

import streamlit as st
from io import StringIO
import numpy as np
import cv2
from PIL import Image, ImageEnhance
import timeit
 
def poisson_noisemap(data):
    modified = None
    import numpy as np
    image = read_image("YOUR_IMAGE")
    noisy = np.random.poisson(image / 255.0 * PEAK) / PEAK * 255
    return modified

I am rendering the file exactly as it stands in the repo. The poisson_noisemap function has a hardcoded string "YOUR_IMAGE", references an undefined PEAK constant, computes the noisy image, and then returns None because I never wired the return statement. Below it, a st.file_uploader accepts PNG and JPG, opens each with PIL, converts to RGB, and displays a 100-pixel-wide thumbnail.

That is the whole file. The README is the "Best-README-Template" boilerplate from othneildrew, unedited, still saying "Best-README-Template" as the project name.

What was I trying to do? The multimedia indexer was going to have to hold up against camera noise. Poisson noise, specifically, because it is what you get from low-light CCTV footage. I wanted a scratch environment where I could load an image, apply synthetic Poisson noise, and see how the downstream feature extractor handled it. Streamlit felt like the fastest way to get a slider and an upload box on the screen.

I got about fifteen lines in, realised that I did not know what PEAK should be, that I had not written read_image, and that the indexer was going to run headless anyway, and abandoned it. The Poisson noise experiments got moved into the indexer's own test folder a week later.

Website-dev (2022-12-18, HTML, 9.5 MB)

The fourth repo does not belong. Website-dev is web-technologies coursework: Ex1/, Ex2/, Ex4/, fonts, PHP scripts, XML with XSD schemas, XQuery. The commit messages are q2, ex4, add, added, addd, ad. Thirty-seven commits over two months, most in the range of a shell prompt slip.

The Ex2 folder has 2.xml, 2.xsd, 2a.xml, 2b-5.xml, and 2d-5.xsd. That is a graded assignment. Ex4 has an index.html, index.js, and style.css. There is a php/ directory. There is a fonts/ directory containing about 9 MB of .otf files.

I made this repo three days after Prism-KPI, in the same week, from the same laptop, on the same GitHub account. It has nothing to do with Samsung PRISM. It is a semester of Web Technologies Ex1 through Ex6 that I pushed to GitHub because that is where I put everything.

The reason it belongs in this post is that it is the same account, the same week, the same headspace. When I look at the four repos together, this one is the reminder that I was not doing Samsung PRISM full-time. I was a student. I had labs due. The winning project got built in the gaps between XQuery assignments and font-face declarations.

What the trail actually shows

Four repos, three of them scratch, one of them an entire coursework module misfiled into the same namespace. The indexer that eventually shipped has none of this code in it. Not the KPI gauges, not the empty landing page, not the Streamlit uploader, not the XQuery assignments. Zero lines of continuity.

But the sequence matters. Prism-KPI was me trying to build the meta-tooling before the tool. prism was me trying to build the landing page before the product. Prism-image was me trying to isolate one technical risk before I had a system to put it in. Website-dev was me forgetting where I was.

Every one of those was wrong. The order of operations turned out to be: build the actual system first, then wrap a UI on it, then explain it in a diagram. KPI dashboards, landing pages, and isolated noise experiments are what you do at the end, when the system is real enough to have progress worth tracking, a name worth landing on, and inputs worth stress-testing.

I did them at the start because I did not know that yet. The four repos are the fossil record of that.

There is a version of me that would delete these from GitHub. They are private, they are messy, three of them have a total lifespan measured in minutes, and one of them is coursework I renamed poorly. Nobody would miss them.

I am going to keep them. When someone asks me how I built the winning Samsung PRISM project, the honest answer is that I built four wrong ones first, in the same month, and only one of them was even the right kind of thing to be building. Deleting the wrong ones would make the story look like it went in a straight line, and it did not.

See also

Cite as: Saravanan, K. (2026). The Samsung PRISM notebook trail: four repos behind one project. Kaushik Saravanan. https://www.kaushik.cv/blog/samsung-prism-notebook-trail