Tag: Tools

  • RetroVista

    RetroVista

    Picture a (pixel) perfect world

    App URL: retrovista.sangsara.net

    My previous app Window Box was designed to be a second screen companion, showing views of the real world while you work. RetroVista brings you to more perfect places: the kind of pixel-art landscapes you might have grown up with, fully animated and sounding like a lost cartridge from 1989.

    Hit “Start”, watch the console boot up, and find yourself down by the coast, or in the mountains, or a desert, a forest, the arctic, a city, or an alien planet. Each scene is procedurally generated, so no two are alike. Waves crash, clouds drift, birds flock, and trees sway. You can even enable Live Time and Weather and it’ll match the conditions where you are.

    Alongside the vintage graphics, the sound is authentic too. Each console’s audio chip is synthesized in software, so pick the NES and you get its bright pulse waves, the Game Boy and its thin, warm beeps, or the Super Nintendo and its lush instruments. The Master System, Commodore 64, PICO-8, and a 1-bit mode are in there too.

    Scenes produce rain, wind, surf, and thunder sound effects along with gentle, procedurally generated music that’s never the same twice. The tunes weave in and out of silence, slowly evolving, so you can leave them playing for hours.

    Completing the experience are a realistic CRT filter, a handy clock, and a shuffle mode that brings you a new world every so often. Add it to your phone’s Home Screen as a progressive web app and it’ll even work offline.

    Made for your second screen, and your inner child.

    NEW in v3.0!

    • RetroVista Express: Hop on a train and tour the world in Orient Express style. This new mode takes you through the countryside and special versions of all previous scenes with parallax scrolling and a special dining car mode (in place of opening the window).
    • Tap mode: Activate this in all other worlds and interact with the scenery and inhabitants! You can even knock thrice on the window to call your special friend.
    • An absolute avalanche of other improvements and expansions on existing functionality. Oh, and a new logo and start screen.

    NEW in v2.0!

    • RetroVista pays homage to Window Box by ripping it off — you can now shut the window and appreciate the local flora of each scene. Outdoor sounds get muffled, the rain stays out and runs down the glass, all that good stuff is here. “W” acts as the shortcut key.
    • The Game Boy Advance joins its older siblings, with a new backlit LCD filter effect too.
    • Tokyo has been added as a new city, with loads of detail. Our previous City scene has been renamed New York, and looks more the part with smokestacks and water towers.
    • Plus: occasional gusts of wind blow debris around in all scenes, many smaller improvements, and a very special surprise for those who love curling up by the window.

    Changelog:

    3.0.0 – Express train and Tap mode. The biggest update yet. Details in the post above.

    2.1.0 – Tokyo: Trees now line the streets and occasionally bloom as cherry blossoms.

    2.0.5–8 – Tokyo: atmospheric sounds, new event animations, fix for window audio bleed.

    2.0.1–4 – Added window frames for Forest/Mountains and Arctic, tweaks to sfx.

    2.0.0 – Window Box, Tokyo, and GBA. Massive update, details above.

    1.5.0 – City jazz!

    • Every City scene now plays chiptune jazz: swung rhythm, 7th chords over ii-V-I changes, a walking bass and soft brushes on the noise channel

    1.4.10 – Foggy worlds no longer play a low buzzing drone

    1.4.9 – Power savings

    • The screen draws at 20 frames a second instead of 30, which saves power and keeps rain and snow in step with the rest of the animation
    • Sound runs at a lower sample rate (22.05 kHz) with no audible difference, for about half the audio processing cost
    • The screen skips redrawing when nothing has changed

    1.4.8 – Audio behavior

    • The speaker button in the top-left corner now stops and starts sound instead of muting it.
    • Music and sound keep playing when you leave the app or lock the phone

    1.4.7 – Raindrop sfx and visitor animation fixes

    1.4.6 – Master System improvements

    • Master System now plays by the real console’s screen limits: 32 of its 64 colors on screen, in two palettes of 16, with each 8×8 tile using one palette

    1.4.5 – Further C64 optimizations

    1.4.4 – C64 multicolor mode and colors

    • C64 now plays by the real machine’s multicolor bitmap limits: pixels twice as wide as tall, one background color for the whole screen, and only three more colors in each 4×8 cell

    1.4.3 – NES hardware rules, sound behavior

    • NES emulation improved across all scenes to obey the real console’s color limits
    • iPhone and iPad: sound now plays with the silent switch on (it pauses other audio, like a music app)

    1.4.2 – Version numbering

    • The splash footer shows the version number

    1.4.1 – Cricket adjustment

    • Crickets go quiet in the rain, sing at one pitch per world (a second cricket joins now and then), softer, and in spells with long quiet stretches between

    1.4 – Visitor and city sounds

    • City: trains clack along the rail and sound their horn as they cross, ferries give one long low blast and tugs two short toots, and planes swell overhead, only while they’re on screen
    • City: a car horn down the street now and then (rarer at night) and, very rarely, a far-off siren
    • Visitors everywhere get voices, timed to what they do on screen: the elk bugles when it stops, ducks quack, the hawk cries, the barn owl screeches, owls hoot from the trees, the heron croaks as it takes off, boars grunt while they root, gulls cry, dolphins splash back in, the coyote howls, tumbleweeds swish, the saucer warbles and zips off, the whale blows with each spout and sings, the arctic fox yips before it pounces

    1.3.2 – NES colors

    • NES: shades the palette lacks, like a night sky’s navy, are dithered from two colors instead of snapping to the nearest one, so Arctic and Mountains nights no longer go flat teal

    1.3.1 – City storms

    • The city keeps running in storms: ferries, tugs and trains carry on, and planes come in low under the cloud with their lights on

    1.3 – Visitors

    • Visitors: incidental animations in every scene, by day, by night and in the rain (storms stay empty)
      • City: ferries, tugs, planes and trains on a waterfront rail
      • Mountains: elk, ducks, hawks and barn owls
      • Arctic: Arctic foxes, polar bears and whales
      • Coast: sailboats, dolphins, gulls, crabs and turtle hatchlings
      • Forest: deer with fawns, rabbits, boars with piglets, herons and owls
      • Desert: tumbleweeds, camel caravans, vultures, roadrunners, a howling coyote and fennec foxes
      • Alien: saucers, sky jellyfish, slimes, six-legged grazers and crystal spores
    • Visitors respect depth: nearer land hides them, and they’re scaled for their distance
    • Butterflies and fireflies in the forest
    • Night sky: shooting stars, satellites, the odd comet and meteor shower, peeking through on cloudy nights
    • City skies are dimmed by light pollution
    • Crescent moons are lit from below, with their horns up
    • Animations step at a low frame rate, like the rest of the art
    • Fixes: forest walkers no longer wade the stream, streams dim at night, desert mesas no longer hover, sailboats no longer clip the distant island

    1.2 – Music and resolution

    • Three resolution modes: Authentic (default), Chunky and Hi-Res
    • Occasional drums, with kits that suit each world
    • Musical phrases now come home to the root chord
    • Rain and storms are rare in the desert

    1.1 – Coast waves

    • The waterline moves: waves run up the beach, drain back and leave a wet sheen
    • Surf sounds are synced to each visible wave

    1.0.1 – Polish

    • Toolbar fades after 30 seconds untouched
    • Coast palms stay on dry sand
    • New description and social preview image

  • Shelf Expression

    Shelf Expression

    Find it on GitHub


    Shelf Expression is the system I use for bookshelf.sangsara.net. It produces a responsive microsite displaying a shelf of up to 48 books, with cover art and synopses automatically pulled from online sources. It offers a choice of three themes: Minimal, with a simple uncluttered grid; Vitsoe, with a tasteful skeuomorphic shelf; and Billy, inspired by an IKEA classic.

    You can use it to add a curated page to your personal site — recommendations for visitors (like I’ve done), a personal bibliography, or maybe a book club’s seasonal reading list. It is ready to use from a GitHub template: if you use an agentic coding tool, point it at the repo and have it adapt the settings to your own needs. If you don’t, there’s a README with instructions, or you can export a static site to host however you like.

    There is also a built-in editing interface (Shift-Ctrl-U) for updating the book selection without having to write any code. Updates can be automatically installed from the same place with two clicks, no nerdery required. This editor also includes a nifty “Share Studio” that creates social media-ready images of your favorite book(s).

    Shelf Expression is free for non-commercial use. In its default configuration, it assumes you use GitHub and Vercel/Netlify, but you’re free to modify it for any setup. Credit is appreciated but not necessary, though I’d love to hear from anyone who uses it.

    Detail view: Navigate books with buttons, arrow keys, or swipes.
    Editor: Easily update your shelf through an integrated admin panel.
    Share Studio: Make Instagram-ready images of your books

    • Release history is on GitHub
    • V3.15 — Three new decorations: a trophy, a scent diffuser, and a photo frame you can put your own snaps in.
    • V3.14 — Import from Goodreads! It’s under the “Add book” button in the Editor.
    • V3.12–3.13 — Share Studio “Feature” layout supports batch exports and “Grid” layout supports using photos as backgrounds. Minor visual improvements to Vitsoe shelves.
    • V3.11 — A new bookcase has arrived. It’s inspired by IKEA’s iconic Billy model. White in light mode, brown in dark mode.
    • V3.10 — Realistic physical wear on books. Choose from pristine, lightly worn, and well-loved levels of patina on your covers. The effects are achieved with multiple layers yielding over 1,500 possible combinations.
    • V3.9 — Built-in updater! Now the Editor will tell you if a newer release is available for your repo, and offer to install it from GitHub. This was the final missing piece to make Shelf Expression easy for casual users.
    • V3.8 — Enhanced Share Studio to allow adding temporary books, and a carousel post export option with feature slides for each book in a grid.
    • V3.7 — Decorations! Use the included starter pack (consisting of a cactus, HomePod mini, camera, snow globe, and anime figurine) or upload your own transparent PNGs.
    • V3.6 — Support for hosting on Netlify.
    • V3.4–3.5 — The Editor is more user-friendly and independent when run locally on a Mac/PC. You can finally configure, update, and export a site without editing text files or pasting code. All changes are saved to local files without needing to rebuild the app, so it’s ready to upload.
    • v3.3 — Some new animations and improvements to existing ones.
    • v3.2 — The Bookshelf Editor now includes the ability to create a zipped, static bookshelf site for self-hosting. This makes it much easier for anyone to use. Just run the app on your machine’s local server, set up the books you want, export, and upload anywhere.
    • v3.1 — Graphical updates to improve the Vitsoe shelving system, plus dark mode options.
    • v3.0 — Now you can edit and publish changes to your bookshelf from your phone or anywhere, without running the app on a local server on your desktop. It uses an on-device, fine-grained GitHub key for permission to publish changes to your own repo, which can then push out a page to Vercel or other host. A redesigned Share Studio produces even better social sharing images for your shelf.
    • v2.0 — Code cleanup with Hark Pro, and ported to a new standalone repo. It’s now easier to make it your own + a much faster way to add books, and a smoother gallery.
    • v1.0.7 — Sharing feature added to admin tool, which creates social media-ready collages of up to 12 books.
    • v1.0.0 to 1.0.6 — Bug fixes, switched from Gemini to OpenRouter for AI summaries, enhancements to asset loading/caching
  • Week 14.26

    Week 14.26

    An update on my app addiction

    On Wednesday morning I woke up and saw that my last app DataDeck was getting a bunch of likes and reposts on Bluesky, which was a nice surprise. If ever there was a place where people would appreciate a wacky, nerdy idea, I guess that would be it.

    My Instagram Story on Wednesday

    I made a couple of post-release updates to my magnetic poetry non-game, CommonVerse. There are now two new themes, one called Label Maker that resembles those little Dymo stickers we used to make, and another called Zine which is like a random note of cutout words. The UX has also been improved in subtle ways that might make it easier to manage making sentences.

    My “main” app project now is one that I can keep noodling on in the background, with no real endpoint — it’s done when I think it’s done — and the idea was that would help me slow down and spend less time with this vibe coding stuff. Guess what happened? That’s right, if you design something that can sit on the back burner, it will sit on the back burner. I started work on another app instead.

    Defying time and gravity

    I’ve known that the next step was to play with agentic coding tools like Codex or Google’s Antigravity. These are code editors with integrated AI that can look across all your project files and manage multiple agents working on simultaneous tasks. It’s a far cry from the way I’d been working: getting advice and instructions from a single chat, and then doing everything myself in a code editor. So I finally got started with Antigravity, and it blew my mind.

    The productivity increase is hard to describe. I could just describe stuff and it would get done without further work on my part. The tool can use the system’s terminal and Chrome browser to install packages, click around and test the app, figure out why things aren’t working, and fix it while you watch. Stuff that took me days over the last month could have been done in hours. It was automating so much of what little I, the non-programming human, was doing and considered my job, that it made me feel kinda redundant, to say nothing of real programmers.

    With Antigravity, the MVP of my app concept was done in three hours on a Friday. The good/bad news was that it blew through most of my token allocation for the week. So I went back to the “old” way of working and made subsequent changes manually. What I discovered was that I much prefer getting hands on with the project files, looking through the code to understand what was going on and what went where. I think I’ll use these agentic tools to get started fast and figure out a working architecture. After that, it’s more fun to get involved and make improvements slowly.

    Ate and left the Crumbs

    So the new app is called Crumbs, as in breadcrumbs, as in leaving a trail of them so you know where you’ve been. It’s a private location journal that lets you mark where you are on a map with a single button push. Over time, you can see the path of your journey(s).

    I made this because I’ve always wanted something like this for logging holidays, and no app really does what I want. Foursquare’s Swarm is based on Places, so you have to find the business listing or entry in order to check in. If you’re in the middle of a national park, or in a country where no one has created Places, or you can’t read the names, you’re out of luck. Google Maps has a Timeline, but it tracks your location all the time, and it only shows your trail on a day-by-day basis. Your data is also locked in their app and you can’t get it out to visualize in other ways.

    Crumbs is private, and you can take the data out in JSON format. It logs the time and weather along with your location, and you can write little notes. You can save an image of your map, or export a PDF of your journal.

    A big breakthrough (for me)

    Unfortunately, because it’s a web app and not a native iOS app, it can’t permanently store data on your device. The OS may decide to purge all your data if you haven’t used it in a week. That’s a dealbreaker for any app intended to be a life-logging tool. That really bummed me out, and I thought it would just have to be a personal tool that I couldn’t distribute to anyone else — since remembering to do manual backups/restores of the JSON file would be a massive PITA for any user.

    And then I had a Eureka moment! I thought of a possible solution and asked Gemini if it was feasible, to which it answered “Yes, this is an ideal solution”. I wanted to scream “Well, then why didn’t you suggest it all this time we’ve been discussing how to get around the problem!?”

    The answer was Dropbox integration. I can’t make a web app read/write files locally, but I can do it in the cloud. So now Crumbs is as useful as a “real app”, provided you connect a Dropbox account.

    As of Monday morning this post is late and I think Crumbs is ready, so here it is.

    The first ugly prototype of Crumbs out of Antigravity

    Other thoughts

    • Here’s a free idea: I was inspired by this stamp journal that went semi-viral, and wanted to make some sort of digital Instax photo album. It’d be kinda nice to keep a virtual scrapbook of interesting images, right? Well, turns out you can just use Apple’s Freeform app and Dazz Cam. It’s as simple as making a board and dropping in images, then arranging them however you want. All stored locally and synced to iCloud, easy peasy. Just because you can vibe code it doesn’t mean you should.
    • My iPhone’s MOFT Snap Case developed a cut/tear in its faux leather surface, and so had to be replaced after just six months. Its replacement is a Caudabe Sheath, which fits my requirements of being neither silicone nor slippery, with full edge coverage and a Camera Control passthrough button. It’s a hard plastic material with a rough, pebbled texture that makes it feel secure when held. It also came in second in MobileReviewsEh’s roundup of the year’s best cases. I got the version with the ‘open’ cutout for the 17 Pro Max’s camera island, not the ‘precise’ covered design.
    • Kim managed to finish reading Project Hail Mary and we went to see the film on Sunday (non-IMAX). Apparently there’s a longer cut, nearly four hours, which will be released on streaming in August when it comes to Amazon Prime Video. Yes, this is billed as an Amazon original film from the very first frame, coming even before the MGM logo (which they own), and I don’t think that will ever stop being weird. The film is good, a mostly faithful adaptation of a fun but slightly flawed book. I just think they glossed over a lot of detail in the final act, which lowered the stakes and made it less exciting and rewarding than it could have been. Hopefully the extended cut’s extra run time is concentrated at the end.
  • Week 16.23

    I usually look through my camera roll to recall events as I start writing these posts. It’s telling me nothing much happened this week.

    That’s not true; it’s just a lot of it was spent online. You might have noticed the excitement and fast pace of advancements in AI recently, and it seems I’m spending a correspondingly larger amount of time playing with, reading about, and discussing the impact of it on our work and lives. It’s enough to make one consider taking a gap quarter or year off work to focus on this stuff.

    One catalyst was a colleague being invited to do an interview on what it means for design, and so we had a conversation about the trends beforehand. Unsurprisingly, the media is still thinking about both design and AI simplistically: will image generation mean fewer jobs for illustrators and that sort of thing. I find it hard to be optimistic in the short-term, in that AI is lighting a fire under our asses and it’s going to cause a lot of pain. But the potential for us as a discipline to evolve under pressure into something greater is undeniable.

    It didn’t help that the next thing I saw was The AI Dilemma, a talk by the creators of the documentary, The Social Dilemma, wherein they say the problems unleashed on society by social media were just the prequel to what AI is on track to do if we don’t prepare. And let’s just admit we don’t have a great track record of preparing for things we know are going to hit us later. It’s about an hour long but I’d file it under essential viewing just for awareness of what’s building up.

    The above talk was given at The Center for Humane Technology, and coincidentally this was the week we finally got a look at what Humane, the secretive product company founded by a load of ex-Apple designers and engineers, has been building and teasing.

    I’ve been anticipating their debut for a long time and had a pretty good idea of the core concept from their leaked pitch deck and patents. Essentially, a device achieves AR by projecting a digital interface on the world around you the old-fashioned way, using rays of light pointed outwards, rather than on the inside of glasses. At some point along the way they started mentioning AI a lot, and it looks like the secret ingredient that turns a nothing-new wearable camera + laser projector into a real alternative to smartphones. In other words, an intelligent assistant that isn’t primarily screen based, so we can be less distracted from “real life”.

    It’s probably best to withhold judgment until we see more at some sort of unveiling event, with more demos, a name, a price, a positioning. But it’s worth remembering that when the iPhone came out, it was a phone good enough to replace whatever you were using at the time. Humane’s device is said to be standalone and not an accessory to be paired with a smartphone. It’s also shown taking calls. The bar for replacing your telephone is now much higher after some 16 years of iPhones.

    An intelligent assistant that let you do things quicker with less fiddling was always my hope for the Apple Watch from its very first version; that Siri would be the heart of the experience, and the UI wouldn’t be a mess of tiny app icons and widgets, but a flexible and dynamic stream of intelligently surfaced info and prompts. We all know Siri (as a catch-all brand/name for Apple AI) wasn’t up to the task at the time, but I keep hoping the day is right around the corner. Fingers crossed for the rumored watchOS revamp at WWDC this year.

    There’s now also a rumor that iOS 17 will add a new journaling app, and my expectations are already very high. They say it’ll be private, but tap into on-device data like Health and your contacts and calendars. That goes beyond what Day One does. I’m imagining the ultimate lifelogging app that automatically records where you go, who you met, what you did, how tired you were, what music you were listening to, and your personal reflections, all in one searchable place. I’ve tried a bunch of these before, like Moves and Momento, but nothing lasted. If Apple does do this, I may finally be able to ditch Foursquare/Swarm, which I still reluctantly use to have a record of where I’ve been. Its social network aspect is nice but not essential since hardly anyone else uses it now.

    I remember there was a Twitter-like app called Jaiku on Nokia smartphones over 15 years ago that had a feature where, using Bluetooth, it could tell if you met up with a fellow user, and post to your other friends about it. I was excited by it but had few friends and even fewer ones on Jaiku. Just like with AirTags and Find My, tapping into Apple’s giant user base could finally make this concept viable. As long as Apple isn’t trying to do a social network again.

    ===

    Oh right, back to AI. What have I been doing? Some of it was playing games with ChatGPT, essentially asking it to be a dungeon master using the following superprompt (which I did not create btw!):

    I want you to act like you are simulating a Multi-User Dungeon (MUD). Subsequent commands should be interpreted as being sent to the MUD. The MUD should allow me to navigate the world, interact with the world, observe the world, and interact with both NPCs and (simulated) player characters. I should be able to pick up objects, use objects, carry an inventory, and also say arbitrary things to any other players. You should simulate the occasional player character coming through, as though this was a person connected online. There should be a goal and a purpose to the MUD. The storyline of the MUD should be affected by my actions but can also progress on its own in between commands. I can also type “.” if I just want the simulated MUD to progress further without without any actions. The MUD should offer a list of commands that can be viewed via ‘help’. Before we begin, please just acknowledge you understand the request and then I will send one more message describing the environment for the MUD (the context, plot, character I am playing, etc.) After that, please respond by simulating the spawn-in event in the MUD for the player.

    Try it! I even had success asking it (in a separate chat) to come up with novel scenarios for a SF text adventure game, which I then fed back into this prompt. I can’t emphasize enough how fun this is: you can take virtually any interesting, dramatic scenario and immediately play it out as an interactive story.

    Here’s an example where I played the role of a time traveler who has to stop a future AI from destroying humanity by going back in time to prevent the invention of certain things, starting with the Great Pyramid of Giza, which will purportedly become a power source for the AI.

    And here are a couple of new products made possible by GPT. There are so many, all asking for about $10/mo. Most won’t survive as this stuff becomes commoditized, but for the moment they are all amazing because these things weren’t possible before.

    • Tome: It’s a sort of PowerPoint that can create entire decks on its own from a short brief you give it. For example, ask for a sales deck and it’ll set up a working narrative arc over multiple slides, not filled with placeholder text and images mind you! But actually generate text and original pictures to fill every one of them. Of course, it will use common storytelling structures — the portfolio introduction I made as a test looked like 90% of the applications that we see, using very familiar language for describing one’s experience, design philosophy, values, skills. This is fine, of course. You can edit it, or use it for as long as “what went before” continues to have currency in this society. When quality is everywhere, quality becomes meaningless. Fire under buttocks.
    • Rationale AI: Describe a decision you’re trying to make, and it’ll tell you the pros and cons, or generate a SWOT analysis, or work out the causal chain of the path you’re on. For many people, this sort of reasoning is not hard to do, but perhaps it’s a game changer for those who can’t. For example, if you’re in an emotionally distressing situation and cool logic is evasive; it could help to show the bigger picture. I tested it with such a scenario and it gave some solid insights (be careful with advice from an AI, of course). But that this thing works at all is a marvel! “Should I become a full-time influencer?” is not a question a machine could have understood in the past, and certainly it could not have forecasted that failing down the road might put stress on your finances and lead to harmful self doubt and regret over quitting your job.
    • Summarize.tech: I found this by accident when someone shared a two-hour YouTube video essay in a group chat and everyone said “I ain’t got time for that”. I remarked that it sure would be great if an AI could watch that and write a tl;dr for us. And then I thought… surely that exists. And it does.

    ===

    It was also my birthday, and I saw John Wick 4 and ate a lot of Taiwanese hot pot. Also binged all of the new Netflix show, The Diplomat, and it was actually good. Life’s alright when that happens.

  • Week 6.23

    Tl;dr: I moved to a new Mastodon server and signed up for a fun omg.lol account. Plus some thoughts on AI after playing around with ChatGPT this week.

    The operator of my queer-friendly, anti-Nazi Mastodon server (mastodon.lol) decided to shut it down after receiving too much hate and harassment. I don’t blame him for prioritizing his own safety and peace, and any disappointment is aimed at humanity in general. But this episode highlights the problems with Mastodon that I’ve been thinking about since adopting it. Namely, ground-up decentralization creates weaker nodes, and the UX friction of asking new users to choose a great first server that they can stick with for life. I joined mastodon.lol a scant three months ago!

    I also only found out about the shutdown by pure luck, chancing upon his announcement toot as I scrolled the timeline. We have three months before it goes offline. Without a sorting algorithm and/or the time to read every single post, it’s more likely people are going to miss the message than see it.

    My new address is @sangsara@social.lol, a paid Mastodon instance run by the omg.lol service which I learned about from Michael who also uses it. If you were already following me, you should have been automatically shifted to the new address. But migration on Mastodon doesn’t carry over posts, only followers and bookmarks, so my 67 entries will be wiped when the old server shuts down.

    I could have gone with one of the big, semi-official servers like mastodon.social or mastodon.online, but as soon as I started exploring omg.lol, I kinda fell in love with its idea of a scrappy nerdy community built around a series of web tools. I used to buy silly domains and dream about turning them into useful services — but lacked all of the skills and vision to actually pull it off. But here for $20/yr, you get a bunch of things riding off that great domain name: a personal web address with a profile page, an email address, a blogging service and /now page if you want, a statuslog service, pastebin, a permanent URL tool, access to their IRC/Discord server, and now, Mastodon.

    Based on this experience, I also decided it was time to redesign the About page here, which is my one true profile page on the web.

    ===

    I had a conversation late last week about generative AI and how it can steal many creative jobs away, but also increase access to higher quality creative work. It reminded me of that Steve Jobs interview where he said the way we “ratchet up our species is to take the best and to spread it around to everybody, so everybody grows up with better things”. If you put copyright and capitalism aside for a minute, because illegally trained AI leads to a sort of creative socialism, you can imagine how this plays out. There’s a ton of top-notch, high-budget creative work out there, but it’s not evenly distributed. What happens when any dive bar can have a Wednesday night promotions poster on the front door that looks like it was designed by TBWA? There will be a chaotic leveling and raising of all boats, and then any humans left standing and still able to think will figure out what’s next.

    ChatGPT has gone incredibly mainstream in a short time, and while I’m usually one of the first in line to try this sort of thing, that wasn’t the case here. I read about it, saw the screenshots shared online, but never actually signed up to try it myself until this week. I was too engrossed in the imaging/Midjourney side of things, and maybe some part of me that identifies as a copywriter knew that this was going to be a threat and I wasn’t in a hurry to face it.

    Now that I’ve played with it, though, including some amusing and convincing conversations about the nature of design and intelligence, I’m more excited and concerned than ever. It’s not only that generative AI tools will replace skilled human jobs and force a rethink of ethics, ownership, and labor in society — it’s that we’re not ready for the pace at which it will happen. We have not had the time and space to discuss this as communities, families, and countries.

    Text runs the world, and a text genie is squeezing its way out of the bottle. Legal documents, performance reviews, applications for access, convincing arguments for sales and solutions, and professional emails (that are now just a style to be applied to quick bullet points) will be passed off and leveled off. And those are just the use cases I’ve tried this week! Powerful tools are being put into untrained hands overnight, and as we’ve been hearing everywhere, companies are rushing to irreversibly build them into the digital engines that run everything. From search and Microsoft Office to project management and customer service. Some of it is safe and logical, and some could do with a little more thought.

    Ted Chiang wrote an excellent piece on the subject that I need to read again.

    I did get a kick out of David Guetta’s enthusiasm, though. There is so much potential here for fun and creativity, if you’re also the kind of guy who can give an unironic shoutout to a murdered man’s family.

    ===

    One of the things I “trained” ChatGPT to do in one long session was help me to write better Midjourney prompts. Here’s a series we made of objects that look the way they sound. It was a difficult challenge to attempt, requiring an understanding of abstract synesthesia that was beyond either AI, but I’m not too upset about the results.

    Media:

    • If you can separate the art from the artist, Ryan Adams has yet another new album out. This one is a track-by-track cover of Blood on the Tracks (Apple Music), kinda like what he did with Taylor Swift’s 1989.
    • We are caught up to episode 5 of The Last of Us and it’s strikingly good. Jose asked if I noticed a key character in episode 3 was also the hotel manager in season 1 of The White Lotus and I had not. When they say an actor disappears into their role, I suppose this is what they mean.
    • I got started on Persona 5 Royal (Switch). I played the original version on the PS4 and abandoned it maybe three or more years ago, blaming a lack of time in front of the TV and the non-portable nature of the experience. No excuses now. Except… I have put it on hold after the tutorial because I’m not sure I want to spend the next 60 hours on this just yet. It’s a young person’s game and I need something a little more casual.
    • Despite probably seeing The Third Man many times over the years, I don’t remember it clearly at all. Here’s my Letterboxd review: “I have probably tried to see this film about three or four times. Tonight I succeeded, and it is the sum of all previous attempts, including vague memories of staying awake in film class in university. What a strange and meandering film, with intriguing technical aspects and unexpected emotional depth, and an ending scene for the ages. I thought four stars but I’ll be damned if I didn’t give it all five.” It has only strengthened my resolve to see more old folks and read more old books. This foray into the contemporary over the past decade has been a waste of time!
    • Do you think Seth MacFarlane has modeled himself on Orson Welles in some ways?! There’s a physical resemblance + the multihyphenatism.
    • I saw Black Panther: Wakanda Forever. What a crock of shit.
  • Darkroom Photo App Shows Why UX Details Are Everything

    Darkroom Photo App Shows Why UX Details Are Everything

    A new photo editor for iOS launched today, and it’s called Darkroom (free, with a $2.99 in-app purchase to unlock Curves).

    “Another photo editing app? What does this one bring to the table?” I’ve seen a few early reviews of Darkroom begin along those lines. It seems a sense of fatigue has set in amongst people watching this space, and it interests me to find that I don’t feel the same way. I’ve dived into every new release with optimism, because there are still so many ways to improve upon what we can currently do on our mobile devices.

    The Verge mentions Darkroom in the same breath as VSCO Cam, suggesting that the latter has a new challenger. That’s somewhat wrong-headed; they aren’t anymore alike than, say, how Super Mario Bros. and The Legend of Zelda are as ways of passing time. Both apps allow you to tune the look of a photo, and apply presets, but it’s how they’ve been engineered to do it that counts.

    Darkroom’s most exciting development, if you listen to what people are saying, is that it allows you to edit photos by adjusting RGB curves. Except that’s not especially new in the iPhone app space — Photoforge did it years ago, Filterstorm has that and much more in the way of professional tools, and there are others. The next feature to get attention is that you can save any of your adjustments as a custom preset, ready for future photos, and it’s like making your own filters. Again, this is territory that Mattebox, PicTapGo, Mextures, et al pioneered awhile ago.

    The reason Darkroom is exciting, is that it seems to have absolutely nailed the UX of these features, and made them feel manageable, comfortable, and pleasurable to use as a whole. I want to emphasize that this is hard, and that their solutions are so subtle and executional, they might not have convinced anyone of their worth if presented as bullet points on a slide at some early point in the process.

    Using other apps with curves and pro adjustments can feel claustrophobic and stressful on a small screen. I’ve hated almost every single one (Adobe’s own Photoshop Touch is so awful at it) and keep them on my phone as last resorts. If I’m on holiday and take a problematic photo with potential, I’m more likely to wait till I get home just so I can do it on a Mac than try to fiddle with it on the go. Snapseed is one powerful exception, but that uses its own control metaphors, not curves.

    Darkroom’s UI is blissfully open in design. It will likely get more complicated as they add more promised features, but I’m hopeful the team finds a way to keep this incredible simplicity. As you page through its 5 key sections (composition, filters, adjustments, curves, history), you never lose your place in the mental model. Nothing is buried in a submenu or out of sight.

    You don’t have to click a checkmark to save an adjustment before tapping another, because everything can be undone to an infinite degree, and one can undo hundreds of minute actions back to the beginning of an edit if necessary. Because that step (so annoying in apps like Afterlight, Faded, and VSCO Cam) has been eliminated, using Darkroom’s tools feels close to direct manipulation of the colors and pixels on your screen. One more nice touch: you can tap to the left or right of a slider knob to nudge it in that direction. Simple, but I can’t remember the last time a photo app let me do that.

    Loading up a photo is seamless. The app starts with a view of your entire photo library. Tapping a photo pulls it forward, straight into editing mode. At this point, you can swipe to either side to start editing adjacent photos in your library. Flicking a photo down tosses it back into the pile, and you’re looking at all your photos again. In use, it feels gloriously fast and uncomplicated. As that bullet point on a slide, “Seamless browsing and editing flow” wouldn’t have done it justice. This is the kind of feature that needs to be designed, prototyped, tweaked, and tuned over and over to create something subtle, but innovative. A team rushing their project out would have missed the opportunity.

    The difference between Darkroom and apps that require stepping in and out of different editing modes, especially when the placement of those modes is obscured, is like Apple’s own (now discontinued) iPhoto for iOS and the new built-in photo editing options in Photos.app. The former was a confusing mess with plenty of user-undiscoverable gestures and submenus, while the latter gives most users all the power they need in a more approachable UI.

    iPhoto Photos

    I’ve stopped using half of the other apps I’ve listed above as problematic, and forgotten the names of twice as many more. The ones I remember tend to be the ones I really wanted to succeed; I’ll unfairly single out Mattebox as an app with great technology and features, but suffered from confounding UX design. Countless times, I actually got lost inside the mess of buttons and menus that were hidden at the “back” of its camera mode. Thinking about the Darkroom icon sitting on my homescreen now doesn’t fill me with the same dread. I’m dreaming about using it later tonight, and tomorrow, and anticipating what will be new in the first update. Although its name is generic, I don’t think I’ll be forgetting it soon. I imagine it’s the beginning of a new phase of using my iPhone as a camera, one in which I can send better photos home while still on holiday.

  • Cortex Camera is your best bet for quality iPhone photos

    Cortex Camera is your best bet for quality iPhone photos

    Original iPhone capture
    Original iPhone capture

    IMG_0506
    Cortex Camera capture

    It’s hard to believe that you can get different results from the same hardware—the same smartphone camera—just seconds apart. The first photo was taken with the iPhone 5S’s built-in camera app, which employs some impressive software techniques to improve most photos. In this case, a low-light scene forced an ISO sensitivity of 1000.

    The second photo was taken with Cortex Camera, which takes a series of images over 2 seconds or so (you don’t have to keep your hands perfectly still, but still-as-possible helps). These are then combined for far less noise, more accurate colors, and higher resolution (12mp on the iPhone 5/5S, which normally take 8mp images). The default Camera.app also combines up to four captures for better photos, but is optimized to work for all situations. For any scene without moving subjects and where you have the luxury of time, Cortex delivers better results.

    Camera.app 100% crop
    Camera.app 100% crop

    Cortex Camera 100% crop
    Cortex Camera 100% crop

    The shots above are 100% crops from the same scene. Note that the Cortex Camera version is both larger and more detailed. It has more potential for processing, and beats a fair few prosumer point and shoot cameras at the pixel level.

    The first app to do this “supersampling” was Occipital’s ClearCam, which I used to swear by. However, like their other app 360 Panorama, ClearCam hasn’t received any updates in the wake of iOS 7, and appears to have been abandoned as the company pushes their new Kickstarter-backed project, the Structure Sensor. At this time, ClearCam makes you wait longer and has a cumbersome alignment and enhancement process. Cortex Camera just takes the picture and saves it all in one step. It’s a damn shame, because both Occipital apps were among the first and best of their kind, enabling users to do things with their iPhones that seemingly defied the capabilities of the hardware. They clearly have a knack for clever imaging technology; I just hope they take a longer view of supporting their products some day.

    If you’re in the market for a new app to take and share those 360-degree panoramas, Sphere (formerly Tour Wrist) does a good job and is free. Bubbli is also promising, but captures video instead of photos to stitch a scene together, which means you have to pan slowly to get an even exposure. If you’ve got the cash and a love of new gadgets (mustnotbuymustnotbuy) Ricoh’s new Theta camera does the trick in a single click. It’s the first consumer-ready spherical capture camera and looks like a presentation remote. Simply hold it above your head and hit the button, and it takes in the entire scene. What’s more, the $400 device has built-in wifi and beams photos over to your iPhone for instant sharing. It’s not hard to imagine this feature on an iPhone a decade from now.

  • Still Living UP

    It’s been a month since I bought my Jawbone UP band, and since then I’ve incorporated a lot more walking into my life, trying to reach my goal of 8,000 steps a day. By my estimates, I probably averaged half of that before, since a lot of my time is spent at a desk, and commuting to and from it in cabs and public transport. Most days now, I do 8,000–10,000 by walking halfway home in the evenings.

    I just weighed myself, and I’m back to the weight I remember being for quite awhile, up until the last couple of years when I’ve felt fatter and slower. The difference is about 3kg, not a lot, and I’d like to lose a few more kilos to get my BMI in the sweet spot.

    What surprises me is how painless it’s all been. No grunting at the gym, or aching all over in the morning. Just being mindful of how much movement I should be making each day, and going out of my way to walk more. Low-impact, sustained exercise. I listen to podcasts, new music on Spotify, or think about things along the way. I get some air, and take the occasional photo (below) if I see an interesting scene. It’s great.

    IMG_7565

    Okay, I guess I’ve also been slightly more mindful of my caloric intake, thanks to the food diary feature of the UP app. I haven’t denied myself anything reasonable, and so there’s no need for “cheat days”. I’d consider my eating habits to be 95% the same. Still, it probably helped?