Drop #614 (2025-02-28): Friday Morning Grab Bag

Saurabh’s macOS Tips & Tricks; SmallJS; A Call For Preservation

The Friday Drop covers three key technology topics that enhance productivity, programming, and digital preservation. The post begins with some macOS tips and tricks that can streamline your workflow, then introduces SmallJS as a bridge between Smalltalk elegance and modern web development, and concludes with a timely discussion on the importance of digital archiving tools in preserving institutional knowledge that might otherwise be lost. Each section provides practical resources for readers interested in improving their technical capabilities or contributing to digital preservation efforts.


TL;DR

(This is an AI-generated summary of today’s Drop using Ollama + llama 3.2 and a custom prompt.)

  • macOS offers numerous productivity enhancements including keyboard shortcuts for menu navigation, window management techniques, and screenshot manipulation tools (https://saurabhs.org/macos-tips)
  • SmallJS bridges the elegant Smalltalk-80 language with modern web environments, compiling to JavaScript while maintaining full access to its ecosystem and offering a file-based architecture compatible with preferred IDEs (https://small-js.org/Home/Home.html)
  • Various archiving technologies like ArchiveBox, CKAN, and Tube Archivist can help preserve institutional knowledge and data that might otherwise be lost from government and other sources

Saurabh’s macOS Tips & Tricks

Photo by Prathyusha Mettupalle on Pexels.com

macOS offers a wealth of hidden features and keyboard shortcuts that can significantly enhance productivity general macOS UX experience.

I came across this recently updated, handy list of macOS tips and learned a bunch of new ones for Sonoma. It’s a great list and I’ve augmented one of my Joplin notes to include some of them (I don’t use all the apps/etc. Saurabh covered). It’s organized in a slightly different manner, and I’ve extracted a portion of it, and put it below with some added (light) commentary.

General UI Navigation

Keyboard Shortcuts for Menu Navigation

The macOS interface provides several ways to quickly access menu items without using the mouse:

  • Press ⇧⌘/ to search all menu items in the current application
  • Use ⌃F2 to move keyboard focus directly to the menu bar
  • In modal dialogs, press Command + the first letter of a button to activate it
  • Use ⌘. as an equivalent to the Escape key

Window Management

macOS includes window management capabilities:

  • Hold Control and Option while clicking a window to focus without bringing it to the front
  • Press ⌘-backtick to cycle between windows of the current application
  • Use ⌥⌘W to close all windows of the foreground application
  • Hold Option while clicking the green zoom button to fill the screen without entering full-screen mode
  • Double-click a window’s border to expand that edge to fill the screen

Screenshot Techniques

Taking and manipulating screenshots is streamlined with these shortcuts:

  • After pressing ⇧⌘4, hold Control while capturing to copy to clipboard instead of saving as a file
  • When drawing a selection area, hold Option to resize from the center or Shift to adjust only one axis
  • Press Space after ⇧⌘4 to capture a specific window, and add Option to remove the window shadow

Finder Enhancements

File Management

Finder includes numerous shortcuts for efficient file handling:

  • Press ⌥⌘V after copying a file to move it instead of duplicating it
  • Use ⌃⌘N with multiple files selected to create a new folder containing those items
  • Press ⇧⌘. to toggle visibility of hidden files
  • Hold Option while dragging a file to create a copy instead of moving it

View Options

Different Finder views offer specialized shortcuts:

  • In Columns view, hold Option while resizing a column to resize all columns simultaneously
  • In List view, use ⌘+ and ⌘- to increase and decrease row size
  • Press ⌘I to show file info, or ⌥⌘I for a floating inspector that updates with selection
  • Use ⌥⌘C to copy the full pathname of the selected file

Dock and Mission Control

Dock Customization

The Dock can be manipulated in various ways:

  • Press ⌥⌘D to toggle Dock visibility
  • Hold Shift while dragging the Dock’s resize handle to quickly move it to a different screen edge
  • Hold Option while resizing the Dock to resize in 16-point increments
  • Hold Option and Command while clicking a running app’s Dock icon to hide all other applications

Mission Control Navigation

Mission Control provides powerful workspace organization:

  • Hold Control when pressing the Mission Control key to show only the current app’s windows
  • In Mission Control, Option-click another desktop space to switch while staying in Mission Control
  • When configuring Hot Corners, hold modifier keys (Control, Option, Command, Shift) to require those keys when activating the corner

Application-Specific Tips

Safari

Safari includes numerous productivity enhancements:

  • Use ⌥⌘{↑,↓,←,→} to navigate tabs in 2D space within tab groups
  • Hold Option while closing a tab to close all other tabs except the current one
  • Press ⇧⌘T to reopen the most recently closed tab or window
  • Right-click the reader icon to automatically enable Reader Mode for all pages on the current site

Preview

Preview offers various document manipulation features:

  • Press “backtick” to bring up a magnifier, then use + and – to resize it
  • Reorder pages in a PDF by dragging them in the sidebar
  • Merge PDFs by dragging pages from one document’s sidebar to another’s
  • Hold Option while in text selection mode to switch to rectangular selection

SmallJS

Longtime Drop fam will remmeber (all too well) my 💙 for Smalltalk. It falls into the “Betamax” software category (i.e., it is superior tech but lost what I’ll call a very rigged popularity contest). I’ve been tracking SmallJS (GH) for a bit and today seemed like as good a day as any other to mention it.

SmallJS bridges the quite elegant Smalltalk-80 language with today’s web and server environments, compiling Smalltalk to JavaScript that runs in any modern browser or Node.js-compatible environments. This empowers us with a more refined alternative to JavaScript while maintaining full access to its ecosystem.

Unlike traditional whole/self-contained image-based Smalltalk systems (Pharo, Squeak, Dolphin), SmallJS uses a file-based architecture that most of us are far more comfortable with. This means we can use our preferred IDEs, though SmallJS itself only has robust support for VS Code-based IDEs.

The compiler is written in TypeScript rather than Smalltalk, eliminating bootstrapping issues when modifying language components while enhancing maintainability. There’s a long history of “writing the new Smalltalk implementation in that implementation” for this particular ecosystem.

SmallJS preserves Smalltalk’s pure object-oriented nature while generating JavaScript that works seamlessly with existing libraries and frameworks (yes, that means you are not confined to just what’s in the Smalltalk implementation). The system maintains a clear separation between base libraries and application code, importing only what’s needed during runtime.

Every aspect of the system is customizable, providing the consistent message-passing paradigm that makes Smalltalk so powerful. To ease the transition, SmallJS keeps class and method names similar to JavaScript counterparts where possible.

SmallJS comes with pre-integrated wrappers for browser technologies (Document, Window, HTML elements, CSS) and server-side capabilities (Node.js core, Express, and database access for SQLite, Postgres, MySQL). This comprehensive coverage lets developers build full-stack applications entirely in Smalltalk.

The system includes example projects and a browser-based playground for experimentation. The project website serves as a hub for documentation and learning resources.

SmallJS should appeal to JavaScript folks who want a more elegant, fully object-oriented language, and to Smalltalk developers wanting to deploy directly to browsers or Node.js environments. It’s particularly suited for web applications, APIs, and backend services.

I’ll try to show some example project over the coming months as I increasingly need more focused distractions from the authoritarian takeover of America.


A Call For Preservation

Photo by Pixabay on Pexels.com

We’ve already lost quite a bit of institutional knowledge and data that was collected, catalogued, and served from the U.S. federal government. It is only going to get worse, and we’ll have to be concerned not just about resouce availability, but also resource integrity, since part of the current plan is to rewrite history.

We’ve covered a few archiving technologies, and I’ll be covering more in detail, but wanted to also take today to drop a list of some archiving tech that’s “current”, diverse, fairly well-maintained, and also accessible (some more than others). It’ll give y’all a chance to play the field before I scrounge the time to cover more in detail.

  • ArchiveBox: Self-hosted wayback machine that creates HTML & screenshot archives of sites from your bookmarks, browsing history, RSS feeds, or other sources. (Python; Docker)
  • ArchivesSpace: Archives information management application for managing and providing Web access to archives, manuscripts and digital objects. (Ruby)
  • bitmagnet: A self-hosted BitTorrent indexer, DHT crawler, content classifier and torrent search engine with web UI, GraphQL API and Servarr stack integration. (Go; Docker)
  • CKAN: CKAN is a tool for making open data websites. (Python)
  • Collective Access – Providence: Highly configurable Web-based framework for management, description, and discovery of digital and physical collections supporting a variety of metadata standards, data types, and media formats. (PHP)
  • Ganymede: Twitch VOD and Live Stream archiving platform. Includes a rendered chat for each archive. (Docker)
  • LiveStreamDVR: An automatic Twitch recorder capable of capturing live streams, chat messages and stream metadata. (Python; Nodejs; Docker)
  • Omeka S: Omeka S is a web publication system for universities, galleries, libraries, archives, and museums. It consists of a local network of independently curated exhibits sharing a collaboratively built pool of items, media, and their metadata. (Nodejs)
  • Readeck: Readeck is a simple web application that lets you save the precious readable content of web pages you like and want to keep forever. See it as a bookmark manager and a read later tool. (Go; Docker)
  • Sosse: Selenium based search engine and crawler with offline archiving. (Python; Docker)
  • Tube Archivist: Organize, search, and enjoy your YouTube collection. Subscribe, download, and track viewed content with metadata indexing and a user-friendly interface. (Docker)
  • Wallabag: Wallabag, formerly Poche, is a web application allowing you to save articles to read them later with improved readability. (PHP)
  • Wayback: A self-hosted toolkit for archiving webpages to the Internet Archive, archive.today, IPFS, and local file systems. (Go)
  • Webarchive: Lightweight self-hosted wayback machine that creates HTML and PDF files from your bookmarks. (Go)

FIN

Remember, you can follow and interact with the full text of The Daily Drop’s free posts on:

  • 🐘 Mastodon via @dailydrop.hrbrmstr.dev@dailydrop.hrbrmstr.dev
  • 🦋 Bluesky via https://bsky.app/profile/dailydrop.hrbrmstr.dev.web.brid.gy

Also, refer to:

to see how to access a regularly updated database of all the Drops with extracted links, and full-text search capability. ☮️

Fediverse Reactions

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.