← All work

Cognitive Offloading · Externalized Memory

Cyclops

An outward-facing laptop camera that reads the lecture board as copyable text.

Year
2026
Role
Solo — enclosure design, macOS app
Status
Working prototype — used in lectures
A small black printed cube clipped to the top right corner of a MacBook lid in an empty lecture hall, a USB cable running down from it, the large dark board at the front of the room behind it
Clipped to the corner of the lid. From the seat you see a hatch and a cable; the lens is on the other side, facing the board.

TL;DR

Cyclops gives a laptop a second camera that faces the lecture hall, not the person typing. A 3D-printed cube clips to the lid, and a macOS app shows the board live, keeps every capture beside your notes, and turns any part of the board into copyable text with one drag.

What can you do with it?

Capture the front of the room, zoom where you want, and turn what is on the board into text.

  • Capture what is in front of you — point the camera at the front of the room and capture whatever you want.
  • Drag to turn it into text — drag over a captured image, and the content in that area becomes text through OCR.
  • Zoom anywhere — zoom into any area you choose, not only the centre of the picture.
The Cyclops window: a slide titled Halting Problem – proof with the title boxed by a drag selection, and the captures panel on the right holding the recognised text
⌥-drag over the slide title: the area is read and the text sits in the panel.
A capture of a lecture screen from the back of the hall: handwritten matrix-multiplication bounds, O(n^2.8074) against O(n^2.37), readable in full
The wide-angle lens bends the picture slightly at the edges — but the room can be captured at any moment, so attention stays on the lecture instead of on the notes.

Why it matters

Professors write out difficult equations, or show pages that are not in the slides they share.

  • No more picking up a phone to photograph the board, or scrambling to copy it down.
  • Copying a slide by hand splits attention between listening and transcribing.
  • Putting capture and text extraction inside the laptop makes the board part of the note-taking workspace — the copying is offloaded, so attention stays on the lecture.

How it works

A printed mount gives the laptop an outward-facing eye; the app turns what it sees into images and text.

  1. Mount — a 30 mm PETG cube clips to the corner of the lid, behind the screen, and holds a USB camera looking forward, toward the front of the room.
  2. Capture — capture whatever you want on screen during the lecture, and copy it to the clipboard.
  3. Read the text — drag over any area to read the text in it with Apple Vision OCR. It reads most text well; complex equations are still beyond it.
Four OpenSCAD renders of the mount on a grey slab standing in for the MacBook lid: a hinged box over the top edge, a hinged box on the corner, a cube over the screen corner, and the final cube set behind the lid
Four mounts, left to right: hinge on the top edge, hinge on the corner, cube over the screen, and the final cube behind the lid.
Freshly printed black parts on a print bed: two cubes with a lens hole, their hatches, and two open pocket sleeves
The printed parts: the cube, its hatch, and a pocket sleeve that covers the lens and winds the 2 m cable.

Applications

  • Meetings and workshops — copy what is written on a whiteboard straight into notes.
  • Accessibility — students with low vision, or seated far back, can zoom into the board and read it on their own screen.
  • Lectures and seminars — capture slides and whiteboards from any seat.

Future directions

  • Slides that build themselves — capture automatically whenever the screen changes, and assemble the captures into a slide deck.
  • Crop like a scanner app — detect the screen's rectangle and straighten it automatically, so every capture looks like the original slide.
  • Search a recording — the app already records video; search it for a word and jump to the moment it appeared.
  • A camera that earns trust — a small camera could be misused by someone with bad intentions, and a plain black box looks suspicious. The friendlier logo was a first step; the next is a body closer to a keyring than a surveillance device.
Behind the project — how it started and how it changed

What is new

  • Freshly printed black parts on a print bed: two cubes with a lens hole, their hatches, and two open pocket sleeves

    A camera that faces the room, not you.

    A 30 mm printed cube clips onto the corner of a MacBook lid and points a USB camera at the front of the hall. Two parts. No hinge, no screws.

  • A capture of a lecture screen from the back of the hall: handwritten matrix-multiplication bounds, O(n^2.8074) against O(n^2.37), readable in full

    The board, legible from the back row.

    The camera streams 3264×2448, and zoom crops the sensor rather than scaling the picture — zooming in never costs resolution.

  • The Cyclops window: a slide titled Halting Problem – proof with the title boxed by a drag selection, and the captures panel on the right holding the recognised text

    Drag over the board, and it is text.

    ⌥-drag on the live picture captures the frame, reads that area at full resolution in Korean and English, and puts the text on the clipboard.

The problem

In a lecture hall the slide is at the far end of the room, and the only camera on my laptop points at me. Photographing the board means picking up a phone, and the photo then lives somewhere other than my notes.

Cyclops is two halves built together: a printed mount that gives the laptop an outward-facing eye, and a macOS app that turns what that eye sees into captures and text without leaving the window I am writing in.

How it changed

Each version below exists because the one before it was wrong about something specific.

  1. v1–v3retired

    Three mounts, each with the camera in the wrong place

    Why
    The camera had to move with the lid, aim at the front of the room, and survive being packed into a bag every day.
    Change
    First a clip over the top edge with the camera on a hinged yoke. Then the same hinge moved to the corner of the lid. Then the hinge went, and the camera sat in a 30 mm cube printed at a fixed angle.
    Result
    The third one was close, but the cube sat on the screen side of the lid, over the corner of the display I was trying to take notes on.
    Four OpenSCAD renders of the mount on a grey slab standing in for the MacBook lid: a hinged box over the top edge, a hinged box on the corner, a cube over the screen corner, and the final cube set behind the lid
    Left to right: top edge with hinge, corner with hinge, cube in front of the screen, cube behind it. Rendered from the archived OpenSCAD sources.
  2. v4

    Push the cube behind the lid

    Why
    The cube belonged on the room's side of the lid, not over my screen.
    Change
    The cube now sits flush with the screen-side plate and projects toward the back. The camera body hides inside it and only the lens barrel comes out. Angle is set by tilting the lid, with a 15° variant for a lid laid further back. A printed thickness gauge and a fit block come first, so the clip is sized to the actual lid and the actual camera before the full part is printed. A pocket sleeve covers the lens and winds the 2 m cable in eleven turns.
    Result
    From the seat you see one hatch outline and a cable. The whole thing is two printed parts, no support material, and it has been in my bag for lectures since.
    Portrait photo from behind the seat: the cube on the MacBook's top right corner, the Cyclops app open on screen, the cable coiled on the desk

The software: a capture is what you saw

The app keeps the live picture on the left and every capture in a panel on the right, each with the text read from it. A mini window stays on top beside my notes, so a capture or a ⌥-drag never means switching apps.

Most of the work was making the picture honest. The first captures came out visibly tighter than the preview, because the crop used the zoom region while the window was showing more of the frame above and below it — captures now crop to exactly what is on screen. The resolution picker did nothing at all at first: macOS resets the camera to 1920×1080 on every reconfiguration, so the chosen format has to be reapplied each time.

Text recognition always runs on the full-resolution capture, never the scaled image on screen. Zoom decides what is captured; it never decides how sharp the text is.

Built with

  • Swift
  • SwiftUI
  • AVFoundation
  • Vision (OCR)
  • OpenSCAD
  • 3D printing (PETG)