Category: general

I knew what to build. I just didn’t know how, until AI.

Building Photo Declutter with Claude, Cursor, and a lot of iteration.

I had an idea for a photo organising app that would display random photos and allow you to just keep or delete them. I wanted it to be a slick native iOS app. Suddenly AI has allowed me to scratch that itch. Swipe right to keep, swipe left to mark for release, nothing gets deleted until you confirm it.

I’ve worked in UX for over 20 years and I’ve done UX for mobile apps, since right back when BlackBerry was a thing, and iPhone was released. My team designed the first SNCF iPhone app. So I know how important native apps are, and I didn’t think I would have the time to learn and implement a Swift app at 50. I knew what to build, just not how.

2026 will be the year of AI, that’s what I told myself in January. So I decided to stop resisting, and start really testing.

Initially I started talking to ChatGPT, finding out its limits, searching for a good way to prompt. I didn’t like it much at first, the tone bothered me. Asking it to remember not to use certain phrases helped, along with telling it to stop using hyperbole and praise.

I then started to ask what a good development workflow with AI might look like. Cursor came up, and I downloaded it and prompted a skeleton app on the advice of ChatGPT. Just get the main idea working. I wanted to access the photo library and to start counting how many photos there were, before shuffling the photos and displaying them for swiping to keep or release. This was the basis of the Photo Declutter idea.

“Most apps add more to your life. This one helps you let go of a little.”

I got a clean Xcode install set up first – always sanity-check before pointing an LLM at your project! Then I pointed Cursor to the same place and prompted it (with ChatGPT’s help) to make the bare-bones app. Then I quickly ran out of free credit on Cursor and I had to decide what I was going to pay for.

My initial feeling was just to subscribe to ChatGPT and work iteratively from there, so I did. I was quickly caught up in some strange hallucinations as it rewrote code with approximate variable names that forced me to think a bit too hard and challenge the responses too often. Asking around I realised Claude might be a better fit, and I eventually migrated completely to Claude as using projects with the source code worked really well to maintain sensible context. ChatGPT had worked nicely for generating some app images and the app icon though!

During this transition away from ChatGPT I had started to doubt if I could succeed – a lot of work was needed on the code still, and the looming product release and app review had me worried. Writing a product philosophy document, partly to give Claude context, partly to focus myself, helped.

I had considered Swift a bridge too far. Then I met Claude.

Immediately with Claude progress was better. In my history with ChatGPT I had a number of files that accelerated development : a philosophy document, a backlog, and a changelog story. So loading those into a project with some relevant source files meant I could immediately converse about the rest of the features that needed developing.

As I started to work with Claude the code base was becoming clearer to me too. I already had a hobbyist developer background, so gradually Swift was making sense to me, and the notions of views and stacks started to map to my thinking about HTML rendering and CSS constraints. I tested Claude Code on a separate project in parallel, and saw it could help, but I was reluctant to make it manage all my code since I was now into a nice LLM assisted manual iteration to finalise the app.

Developing an app is one thing – I now had swiping, sharing, check before release (deletion) and a fledgling statistics page working. Submission to the app store was necessary, and it costs 99€ to subscribe to Apple Developer program. I felt ready to take the plunge.

Getting onto the developer program wasn’t smooth, probably because the pipeline is full of AI-assisted people like me, hungry to start submitting apps. Probably loads of agent assisted bots also clogging up the pipeline too! So Apple took ages (like 2 weeks) to approve and I didn’t have access to test StoreKit (for a tip jar and an unlock feature that is little more than a bigger tip really, for those who really want custom timed sessions).

In the meantime there was lots to prepare anyway. An App Store description, screenshots from the app, and some marketing material. It’s not simply a case of launching an app and hoping everyone installs it… you have to push here and there. In particular it’s important to pay a lot of attention to the details of all the information you need to provide for an app submission, so that it will pass review. Many things are in fact required before you submit – including justification as to why you need access to the photo library and notifications, a good title and description, screenshots, and the signature of a number of agreements about payments and use (or not) of network access, cryptography and your tax status.

On the marketing side, any app is unlikely to make visibility even with a few seed installs; the virality is only via the “share” feature, but people who make shares might remove the link that’s automatically added anyway. I’ll look at promotion at a later date, but since this is a hobby project the main likely channel for big installation growth would be an article from a journalist, or a lucky review from a known YouTuber.

As I finished up screenshots and marketing planning, the use-case for Claude came to me. I realised it could help with a code review. So I pointed Claude Code to the project directory and asked it to check whether the app was submission-ready. Here the LLM was solid, flagging a couple of key points: describing why notification permission is needed was missing, and seeing that the code had some minor issues that needed attention. I let it auto-fix them while vetting each code change.

I let it auto-fix them while vetting each code change.

The user testing journey was interesting. In parallel to reviewing and finalising features I had the app sideloaded (installed directly from my Mac to iPhones via a USB cable) onto my phone and a couple of friends’ phones. I was pleasantly surprised by some initial reactions. The app really comes into its own when you see it acting on your own photos. Some useful feedback during testing led to adding safeguards. If you miss releasing photos at the end of a session, you can’t start a new one without confirming that your “to be released” pile can be forgotten about. An option to add to a collection “rediscovered” on double-tap was also inspired by user testing.

One thing missing that was brought up in testing – by my son – is a chance to rewind if you swipe a photo right (to keep it) but you wanted to delete it or add it to your collection. This has been backlogged as a feature for an upcoming release. The app philosophy doesn’t want to go too far into features though; simplicity is a key goal.

The app really comes into its own when you see it acting on your own photos.

The other thing in testing was that it’s not easy to get people to give you their phone to plug into your laptop, so close friends who trust you are really the only audience available. TestFlight helped eventually, though getting people to accept an invitation, install an app, and actually use it turns out to be its own small miracle.

The good news finally came, that the developer account was available (I had to call Apple to actually unblock the access, over a week after having paid the 99€). I started to get my build onto App Store Connect, and meticulously filled out all the information necessary to launch. Then I was ready for my first review. I submitted the app without in-app purchases for now, to see if it passed review. It did!

In the meantime I now had access to test StoreKit and set up my in-app purchases. The app isn’t meant to be a premium subscription experience or even paid, I just wanted a couple of mechanisms to make a little back on the time investment, and the Developer Program costs. So I thought a “buy me a coffee” tip on the about screen, and a once-off payment for custom session lengths would suffice. I set those up and added the code to make that all happen in a couple of short sessions.

The app is now live at v1.1 – in-app purchases are in place, but really the app is free for its main purpose: a daily ritual to declutter your photos and rediscover some great pictures from the archive on your phone.

I’m proud of where I’ve got in a short month since I started the project. I never imagined myself finding the time to become an iOS developer.

A friend pointed me toward Byung-Chul Han after seeing the app: his writing on the compulsion to accumulate, and the quiet value of letting things go, maps surprisingly well onto what I’d built by instinct. I’d arrived at the philosophy before I had the vocabulary for it.

Why it’s time to leave Twitter and move to the Fediverse

Elon Musk seems to be a bull in a china shop with his heavy-handed treatment of Twitter. Reflecting on the situation I have had an awakening of sorts – remembering my early Twitter follows like Aral https://mastodon.ar.al/@aral who stands up for data-independence and privacy.

Why should a money-losing massive single entity have a de facto monopoly on short message / microblogging service? Especially now that we may all have serious doubts about governance there.

I realise how much more reliant so many people, institutions and brands are on social media now. They don’t need to all be on a few key platforms (Twitter, Meta, LinkedIn…), but it suits them as they all vie for our attention in a few places. The early web wasn’t built on platforms. It was built on protocols – agreements as to how data could be exchanged via certain ways of formatting messages and exchanges between multiple small sites. I love the openness of the early web that brought us to where we are today. The foundations of everything are those open protocols: email, DNS, websites, etc.

For microblogging services we can exchange in similar ways via a distributed system. That is precisely what the Fediverse is. A collection of protocols to federate messaging, just like the original Internet. It’s been around for a long time. 

Twitter has gone crazy. It’s now overtly super-capitalist. Elon is making massive changes because the company is losing money. Precisely because Twitter has become the de facto platform – not protocol – for exchanging short messages among groups of like-minded people, and it’s free (so everyone goes there).

The cost of moving

I’m a big fan of a corner of Twitter where fans of the cue sport that is snooker hang out. Mutual follows and hashtag discovery have created a close group of fans. It’s cool that you can also connect to the players, referees and TV commentators. 

But I’m currently trying to move over to an open community.  There are a number of advantages. We can ban trolls, community wide. We won’t have an algorithm pushing adverts and “sponsored content”. We can push our own trending hashtags. We can control what we see in our local and federated timelines. We can be more inclusive. Imagine:

You’re not the product anymore. You’re a community member in your host’s ad-free server they pay for. There’s no venture capitalist payday coming for them. Everything you do here costs your host a little bit of money. Find out how you can chip in. https://tabletop.social/@JoeSondow

The downside is that it has to be on a private server (where someone is paying the hosting), or a paid-for service. Some people currently on Twitter aren’t available on Mastodon or other Fediverse sytems – yet. Perhaps that doesn’t matter so much once you start finding a community away from a platform that is pushing you shit you don’t want, because you use their service for free.

Some places are offering free accounts (as noted in the quote), though this may not be the best way to have a lasting presence. Taking control by paying a small subscription is a low price to pay for big freedom. 

Luckily I have a history of Linux server administration so I fired up a server in the cloud. I’ll shortly be writing about how I did this, on a server that costs around 10€ a month.

Handy Links

If you’re a snooker fan, you can request an account here: https://snooker.uk.to/ or if you don’t like snooker there’s a big list on https://joinmastodon.org/

A useful user guide for getting to know the basics: https://docs.framasoft.org/en/mastodon/User-guide.html 

Going Solo as a UX Strategy Consultant

presenting-small

After 12+ years working on permanent contracts for major brands in travel, eCommerce and insurance, I have finally decided to create my own company and start consulting.

I believe we are now firmly in the post-digital era, where products and brands will be defined by the experience they give to their users rather than their feature set as such. Online digital experiences in particular, being intangible and easily copiable, will be remembered not for what they do but how they make us feel.

My areas of expertise are:

  • Managing UX and design projects and strategy
  • Creating, reinforcing and running UX and product teams
  • UX and eCommerce training and/or coaching
  • Conversion rate optimisation via data driven approaches (quantitative and qualitative)

I am part of the Zooka network should you need additional resource and expertise on SEO, CRO and project delivery.

Don’t hesitate to get in touch with me via LinkedIn or Twitter, or by commenting here.

The Facebook Walled Garden?

Is anyone else concerned that the Internet is becoming a walled garden on Facebook, encouraging people never to leave the facebook site? People are more likely to read the Guardian now it’s a Facebook app. No doubt this is due to having to install the app to read content “read” by others – frictionless sharing as they call it. It means a lot more traction gained for Facebook, and a less neutral web experience.

Net neutrality is already wishful thinking, now that Google & Facebook dominate so much – do you even have a separate Instant Messaging / email app outside of Outlook at work? Are you aware that most of what you listen to and read will be shared automatically with your friends?

‎”As well as increasing traffic, the app is making our journalism visible to new audiences. Over half of the app’s users are 24 and under – traditionally a very hard-to-reach demographic for news organisations. The Facebook app is one of a number of successful launches by the Guardian in recent months as our ‘digital first’ strategy gains momentum. We’re delighted with the results.”
Andrew Miller, chief executive officer of Guardian Media Group

I must be an old grumpy git, since being on Facebook is frighteningly efficient at appealing to the younger demographic. I do get nostalgic about plain-text email with properly nested quoting wrapping at 74 characters, web pages that are visible anywhere on any device, and music that comes from analogue encoding on physical objects. Will appealing to the younger net users without embedding your content on Facebook be possible soon?

Happy New Year too!

Together for Ten Years

Five years ago, I published an article for our fifth wedding anniversary. So if I have got my head on straight, that makes it our tin – 10 years – anniversary today.

How time flies. When we first got married our wedding site had a guestbook I cooked up in PHP. Five years on, a blog post was where a few friends gave their comments. Ten years on, and it’s Facebook where all the reactions have come from. So from DIY PHP/MySQL to WordPress (also PHP/MySQL) to Facebook (PHP too) things keep on changing.

Here’s to ten more! No doubt the next anniversary post will happen somewhere else entirely. Any predictions?

Sketch Notes on Design / UX

I love the series of sketch notes from Eva-Lotta Lamm, someone who attends a lot of conferences and makes notes with amazing visual impact.

I could have chosen one of many different images that she has uploaded, but this one is recent, colourful and contains perhaps a few things that are less technical – though you probably need to work in a company with an active website to really “get” the overall message. I’d love to know if you get anything out of reading them if you’re completely outside of web marketing / user experience / web project management.

They’re available as a book and there is a fantastic presentation on how sketch notes work

Do you sketch in meetings while taking notes? Did you realise that it’s a good thing to maintain your attention span? Or that it helps you to memorise what you hear?

User centred Design at XING @ UX Camp Europe
Originally uploaded by evalottchen

French Country Dancing

On the 1st of May (or the Sunday close to it usually) Argenteuil closes a stretch of road near the Seine and they remember the pre-war (pre WWI) era with old style dress, dances and activities. Argenteuil has a fine artistic history. Impressionists like Manet, Monet, Caillebotte, Sisley, Seurat and Braque (born there) all spent time there at one point or another. Flâneurs from Paris would catch a train to Argenteuil on Sunday to be in the “countryside” and wander by the Seine.

I think I’ve been every other year – on average – that I’ve lived in Argenteuil. A lot of people play the game and dress up for the occasion. There’s usually some jazz / musette playing live, dancing, traditional street food as well as typical international fare (beer, chips and BBQ sausages). It’s a shame that the very road they close for the occasion is the road that stops most people from being able to venture down onto the banks of the Seine. You can get there, but you have to go up on the bridge, down a set of stairs, and then walk over the grass verge with cars going past at 90 km/h (56 mph). There’s only a section – as far as I can tell – of grass and trees wide enough to get you far enough from the traffic to appreciate the river.

French Country Dancing
Originally uploaded by simon_music

3 Parisian Things

Sacré Coeur

The church (Basilique, in fact) of the Sacré Coeur in Montmartre. It’s quite a climb through streets aptly named things like Rue du Calvaire, roughly translated as “time of hardship street” in common parlance.

You can get a cog-wheeled railway which mounts a steep incline instead, called the funiculaire. Recommended if you want a bit of energy to check out the nearby square where artists paint caricatures or portraits and coffee is ridiculously expensive.

Maybe check out the Espace Dali if you’re into a small, hidden away museum with all things Dali. Continue reading