A native Bitcoin Stamps viewer for NeXTSTEP 3.3, running on real NeXTstation hardware (68040 CPU).
Connects to the stampchain.io API over HTTPS to fetch and display Bitcoin Stamps, including PNG, GIF, and SVG formats.
- Fetches stamp collections from multiple Bitcoin wallet addresses
- Displays stamp images (PNG, GIF, SVG) with nearest-neighbor pixel-perfect upscaling
- SVG rendering via patched nanosvg library (C89 compatible)
- GIF multi-frame support with filmstrip viewer (click thumbnails to browse frames)
- HTTPS/TLS 1.2 connectivity via cryanc
- Stamp list grouped by wallet address, sorted alphabetically by CPID
- Filter checkboxes: JPG/PNG, GIF, SVG, Other
- CPID search field (press Return to filter)
- Detail panel showing CPID, stamp number, wallet, supply, creator, block, type, balance, divisible, locked
- Local cache for instant startup (stamps.cache)
- Wallet address management panel (add/remove with confirmation)
- Edit menu with Cut, Copy, Paste, Select All (Cmd+X/C/V/A)
- Quit confirmation on window close
- NeXTSTEP 3.3 on 68040 hardware (NeXTstation, NeXTcube, or NeXTstation TurboColor)
- Network connectivity to the internet
- Git client for NeXTSTEP (NeXTGitHub)
On the NeXTstation:
cd /me/repos/NeXTStepStamps/StampViewer
make clean
make
The build script bs.sh automates pull + build + install:
sh /me/bs.sh
The app is installed to /me/Apps/StampViewer.app.
StampViewer/
src/
objc/ # Objective-C UI (AppKit)
main.m # App entry point
AppDelegate.m # App lifecycle, fetch, cache
StampWindow.m # Main window layout
StampListView.m # Scrollable stamp list grouped by wallet
StampDetailView.m # Stamp metadata fields
StampImageView.m # Image display with upscaling + GIF filmstrip
AddressPanel.m # Wallet address management dialog
WalletStore.m # Wallet address persistence
c/ # Pure C modules
stamp_api.c # Stampchain API client, JSON parsing, image loading
http_client.c # HTTP/HTTPS client using cryanc TLS
json_parser.c # Minimal JSON parser
base64.c # Base64 decoder (custom, no external dependency)
svlog.c # File-based logging
lib/ # Third-party headers
nanosvg.h # SVG parser (patched for C89)
nanosvgrast.h # SVG rasterizer (patched for C89)
stb_image.h # PNG/GIF/JPEG decoder
Pre-compiled as .o files at the repo root, shared across NeXTSTEP projects:
| Library | File | Purpose | Source |
|---|---|---|---|
| cryanc | cryanc.c/.h |
TLS 1.2 for HTTPS | classilla/cryanc |
| nanosvg | nanosvg_impl.c |
SVG parsing and rasterization | memononen/nanosvg |
| stb_image | src/lib/stb_image.h |
PNG/GIF/JPEG decoding | nothings/stb |
All libraries are patched for pre-C99 compatibility (NeXTSTEP cc / gcc 2.x):
- No
//comments,inline, anonymous unions,long long, or mid-block declarations - Float math functions (
sinf,sqrtf, etc.) mapped to double versions vianextstep_compat.h
StampViewer uses the stampchain.io API v2:
GET https://stampchain.io/api/v2/balance/{address}?page=1&limit=1000
Returns stamp metadata including CPID, stamp number, creator, supply, and base64-encoded image data or image URLs.
MIT
Created by ARNLTony
Built with Claude Code on a NeXTstation TurboColor running NeXTSTEP 3.3.

