Artist Website Feature Request List
Or, why I've been using Substack as a portfolio site for four years.
When I first started building websites for my art in the late 1990s, it was possible to keep the entire LAMP stack in your head, and have room left over for enough CSS and Javascript to get the job done. Those days disappeared in 2010, but I pressed on anyway, crafting an XML-based site driven by CherryPy around 2014. It can do some interesting things. It has ontology tables that encode knowledge such as <uses-medium><such-and-such-painting/><oil-paint/></uses-medium>
.
That was great until a data loss wiped out the scripts I used to maintain the site, and I never rewrote them. I can tell you when that happened because it corresponds to a low period of my life and the last time I updated the image gallery, which was 2021. The experience exhausted what was left of my patience for hand-rolling sites. Artblog.net, too, was an XML/CherryPy project. It did everything it was supposed to do perfectly. I was proud of that, because far better programmers than me were defeated by their content management systems. The WordPress blog of Eric S. Raymond does nothing but cough 503 errors at you.1
But there was no user interface, unless emacs and bash is a kind of user interface. When readers emailed comments, I would retype them. This, like my art site, was unsustainable and causing my audience to dwindle. I needed a brand refresh anyway, so I moved to Substack. Substack supports tags, and soon Dissident Muse Journal became my portfolio site.
Smart programmers are really smart and I don’t pretend to be one of them. But I find the related problems interesting and I have a weird idea of recreation. Last year I quietly completed Hoon School, just in time for Urbit to have some kind of implosion that I still don’t understand and seems to have derailed the project. You may in fact have to be Curtis Yarvin to be productive in a language in which “Hello, World!” is this madness:
|= [=bowl ^] ^- (quip card _this) ~& "Hello, World!"
For that kind of trouble you can just learn Rust, which I did. Don’t ask me to explain the macro system to you, but I built some small, useful programs with it, like the Asynchronous Studio Book Club calendar generator.
I’m now in a tough spot. I’m sufficiently technical to know what’s possible, but not sufficiently technical to execute it. In fact, no one has the entire stack in his head any longer. A modern web service supplier typically has a whole technical team, each, for front end, back end, user experience, and design. The sensible choice would be to migrate to one of the available platforms for artists.
There’s just one problem: they all kind of suck. They don’t suck relative to what most artists are asking for. They suck relative to what they could be asking for. Remember when I solved arts calendaring? That was another Rust project. While I won’t say that nobody cared, I was working on a problem that no one was asking to be solved because arts calendaring works well enough in its janky way to make the investment in change unattractive. Most artists are just asking for a site that looks professional and flatters their work and doesn’t require inordinate technical knowledge (cough). And that is what the providers provide.
I don’t care intensely about the state of arts calendaring, I just needed a project for learning some Rust. My art site is a different story. Putting images up on Substack is convenient, and something that is convenient that exists is preferable to something ideal that doesn’t. But it’s far short of what’s necessary to turn viewers into collectors in a consistent way, which is not to say that it never happens. And compared to what’s possible, it’s nothing. What’s possible is glorious. How glorious? Let me count the ways.
I’ve been working on a feature request list for an ideal site for a few months. It is now quite extensive. Many artists are having perfectly good careers putting their images on attractive-enough display websites and posting their email for contact, and in the meantime, I will do likewise. But I’m hoping that in a year or two I can ask an AI entity to build me a site with the following features, and it will.2
Core Platform Features
Database and Schema
PostgreSQL database with Schema.org-compliant structure
JSONB columns for flexible Schema.org property storage
Integration of the Getty Art & Architecture Thesaurus
Recursive queries for ontology traversal
Full-text search capabilities across all content
Content Management
Support for artworks of any type: plastic, digital, and/or time-based
Person/artist management with biographical data
Art criticism article system with rich text editing and HTML source view
Collection and exhibition management
Location tracking for artwork provenance
Flexible tagging and categorization systems
API Layer
RESTful API built with the Rocket framework
JSON-LD output following Schema.org standards
Authentication and authorization system with 2FA
Rate limiting and API security measures
Error handling and logging
Image Management Features
International Image Interoperability Framework Integration
IIIF Image API compliance for high-resolution artwork images
Dynamic IIIF manifest generation from database
Support for image regions and annotations
Deep zoom functionality for detailed artwork examination
Image comparison tools
Thumbnail generation with multiple size variants
Image Processing
Automated tiled image generation
Batch processing capabilities for existing collections
Color palette analysis and storage
Automatic thumbnail and preview generation
3D Visualization Features
3D Model Support
Support for multiple 3D file formats (OBJ, PLY, STL input) and conversion capabilities between them
Automated conversion to web-optimized glTF format
3D model compression and optimization pipeline
Thumbnail generation for 3D models
Model validation and quality checking
3D Viewer Capabilities
Interactive 3D viewer using Three.js
Orbit controls for 360-degree examination
Zoom and pan functionality for detailed inspection
Lighting controls for better model visualization
Measurement tools for dimensional analysis
Viewpoint saving and sharing
3D Annotations
Region-based annotations on 3D models
Connectivity of 3D regions to ontology concepts
Scholarly commentary on specific model areas
Annotation display and management system
AWS Infrastructure Features
Storage and Delivery
S3 integration for image and 3D model storage
CloudFront CDN for content delivery
Automated backup and versioning for all assets
CORS configuration for web viewer compatibility
Processing Pipeline
Lambda functions for automated image processing
Lambda functions for 3D model optimization
SQS queues for asynchronous processing jobs
AWS Batch for heavy computational tasks
Progress tracking and error handling for all processing
Monitoring and Operations
Cost tracking and optimization recommendations
Security monitoring and compliance checks
Performance metrics and optimization insights
Automated scaling based on demand
User Interface Features
Frontend Build
Responsive design for desktop, tablet, and mobile
Frontend Experience
Unified interface for 2D and 3D content
Advanced search with ontology-aware filtering
Faceted search by material, technique, period, etc.
User-friendly content management interface
LLM content management capability
Accessibility and Performance
WCAG 2.1 accessibility compliance
Progressive loading for large images and 3D models
Offline capability for previously viewed content
Keyboard navigation support for all features
Data Integration
Schema.org structured data for SEO
Open Graph Protocol and X Card metadata
Analytics
User Analytics
Visitor behavior tracking and analysis
Popular content identification
Search query analysis and optimization
Performance bottleneck identification
Content Analytics
Artwork viewing patterns and preferences
3D model interaction heatmaps
Annotation usage statistics
Customer Relations Management
Featureful interface for tracking and developing customer base
Whitelisted, segmented email functionality for announcements and newsletters
Management of physical mail addresses with export capabilities
Dissident Muse Journal is the blog of Dissident Muse, a publishing and exhibition project by Franklin Einspruch. Content at DMJ is free, but paid subscribers keep it coming. Please consider becoming one yourself, and thank you for reading.
Our next title in the Asynchronous Studio Book Club is Art in America 1945-1970: Writings from the Age of Abstract Expressionism, Pop Art, and Minimalism, edited by Jed Perl. For more information, see the ASBC homepage.
The current exhibition in the Dissident Museum is David Curcio: The Point of the Needle.
I have said in the past that hacking WordPress is like organizing Cthulu’s sock drawer. If ESR can’t get his WordPress installation back up, there is something profoundly, abjectly wrong with WordPress.
When vibe coding became a thing, I thought, great, when do we get vibe chainsawing? Because if we’re going to fool around with projects in which failure has life-altering consequences, we might as well risk literal amputation. But the consistent pattern of AI is that is starts off comically bad at a given task, and in less time than anyone expects it’s performing better than any human on earth.
I applaud your scope but that list seems so broad that it's hard to think any but a few artists would ever need more than 30%... Maybe some sort of plug-n-play modules could eventually be developed? This looks like it could be useful as a broad academic project even...
The 3D list: Most of it appears more geared towards science than art, but even so it's far more useful to apply a standard (like OBJ or nothing) than allow for max flexibility. The annotations aspect is available on a number of Autodesk platforms, which might give you a few ideas if that section gets developed.
Conversions of any 3D format is hit or miss at best, and IMO the "web-optimized glTF format" has one benefit only: backwards compatibility. That ends up being the lowest common denominator unfortunately. We're due for some new updates on web 3D for sure...