Building A Dedicated Photo-Sharing Website in Claude Code

Thinking about the upcoming trip to Egypt, I realized I still didn’t have a good solution for sharing photos and comments beyond the usual social networks. Drawing on my experience from the past few weeks deploying web applications on Vercel, I decided to try the same by building a website for sharing and viewing photos. The additional complexity here is that the viewing portion is separate from the photo upload section. Therefore, I need to protect this feature with a password. Additionally, image storage must be optimized to minimize costs and provide a pleasant, flexible viewing experience. I’m using Vercel-only blog storage and Redis for metadata store.

In less than 2 hours, I built a fully functional application with Claude Code and Vercel. Impressive.

Apple Creator Studio - A Few Comments

On today’s announcement by Apple:

  1. Now we know why it took so long for Apple to update Pages, Numbers and Keynote. Where is iWork? Why no iWork subscription without the pro stuff?
  2. I don’t understand this bundling of pro apps with consumer-generalistic apps. Is Apple trying to upsell Pro Apps to consumers via a new subscription? They might be. I don’t think pros want to get Numbers or Pages, though.
  3. Icons are utterly un-Apple, or Apple has become something I no longer relate to software-design-wise. It’s not a good sign.
  4. Yes, Apple does look like Adobe and … Microsoft. And less, Apple.
  5. No mention of Photomator. I believe merging Photomator into Photos is not a good idea; combining a photo browsing app with a photo editing app isn’t ideal. Currently, Photos functions more as a photo browser than as a dedicated editing tool, and both aspects risk becoming mediocre. I want a focused, serious photo-editing app that doesn’t try to rival Photoshop. Is that too much to ask? The challenge lies in Apple’s prioritization of profit over user needs, which makes it difficult to develop such an app.

What a strange start to the year.

On Scrollbars

After reading a recent Gruber article about the macOS Tahoe window-resizing issue, I found a setting in Appearance that keeps scrollbars always visible. It’s somewhat odd because of the scrollbar’s thickness. I wish Apple would make them thinner and less noticeable. I’m unsure if I’ll get used to this.

Note: On Windows 11, scrollbars are always visible by default but are less obtrusive. 🤷🏻‍♂️ Apple was once known for leading with excellent design and great visual taste, but this is less obvious nowadays.

Auto-generated description: A computer interface displays settings for appearance customization, including options for Liquid Glass, theme colors, and icon styles.

On Apple’s Deal with Google

Back in November, Google announced Private AI Compute, positioning themselves to offer something like Apple’s Private Cloud Compute. It might be something that OpenAI wasn’t willing to do or didn’t see a fit in their business mission. By offering Private AI Compute, Google might have secured the business with Apple. Anyway, it’s becoming impressive how Google is taking back the lead in AI. Lastly, maybe we will see Google Gemini being added to this week’s next beta of iOS 26.3 to go side-by-side with ChatGPT?

When Things Go Wrong With AI-Generated Code

My first bad experience: the code generated by Claude Code made my dashboard unresponsive in my browser. Eventually, the data stopped updating. After a ten-minute debugging session, I asked Claude Code to revert the change, and it did so promptly. But then I started getting execution failure notices on Discord. A lot of notifications. Then I started investigating…

It appears the browser was making frequent refresh requests to one of my workflows, which depleted my Claude pay-per-use credits. Bummber. Looking at my n8n dashboard, I saw that one of my workflows was failing because of that. Logs were confirming the problem with the interaction with Claude AI. As shown on the graphs below, my instance CPU usage went through the roof. Ouch. Now I know what happened, and the problem was fixed. Now, I should find a way to rate-limit this type of behaviour. That’s for tomorrow, I guess. 😅

My Defaults as of 2026-01-10

Changes from the last edition are in bold. ✉️ Mail Client: Fastmail 📨 Mail Server: Fastmail 📝 Notes: Craft + Apple Notes ✅ To-Do: Things 3 📷 iPhone Photo Shooting: Camera.app 📚 Photo Management: Photos.app + Photomator 🗓️ Calendar: Calendar.app 🗄️ Cloud file storage: iCloud 📰 RSS: Reeder connected to Inoreader 📇 Contacts: Contacts 🕸️ Browser: Mobile Safari + ARC Browser on Mac + ChatGPT Atlas 🧠 AI: ChatGPT + Claude AI 🔎 Search: Kagi Search 💬 Chat: iMessage (WhatsApp when abroad) 🔖 Bookmarks: AnyBox 👓 Read It Later: Inoreader 📜 Word Processing: Ulysses, Craft 📊 Spreadsheets: Numbers 🛝 Presentations: Keynote 🛒 Shopping Lists: Reminders 🧑‍🍳 Meal Planning: None 💰 Budgeting & Personal Finance: Numbers 🗞️ News: La Presse (Apple News for English news) 🎶 Music: Apple Music 🎧 Podcasts: Apple Podcasts 🔐 Password Management: iCloud Keychain & Apple Passwords 👨🏻‍💻 Blog hosting: Ghost, Micro.blog, Scribbles.page 🌐 Web Services: Cloudflare, Chillidog Hosting, DigitalOcean

On Tahoe Icons

Just finished reading “It’s hard to justify Tahoe icons”, which many UI design pundits and non-UI experts, as well as simple, passionate Mac users, have been referring to a lot recently. I appreciate the documentation effort. It’s really well done. Very convincing. But…

Designers age and are gradually replaced by a younger generation. Whether you like it or not, they bring new beliefs (justified or not), design principles (better or not), and values (questionable or not). Recently, there’s a trend where software appears much less crafted than it once was. Everything seems thrown together, flat. And still…

I like those macOS Tahoe menus with icons (🫣), but yes, there is an absolute lack of consistency.

An Important Lesson

When I started my studies in computer science over 40 years ago, we learned to read functional specifications and then translate them into machine instructions (COBOL, FORTRAN, Pascal, etc.). It was the training of a programmer. I knew that one day I could become the person who writes functional specifications. I didn’t become a programmer, nor did I work in the development world.

Due to my recent experience with Claude AI, Claude Code, and Vercel to create custom applications, I realize that I have become the one who writes functional specifications, but for processing by artificial intelligence. What does this tell me about the profession of a software developer? The need to write specifications remains essential, if not more so, even with powerful tools like AI. I think it’s a valuable lesson.

On OpenRouter.ai

I just finished reading about the service openrouter.ai. I was curious to understand the purpose of this service as well as its business model. I saw several instances of this service being used in n8n workflows. The problem I see with this service is that it makes the consistency of the quality of responses from the requested LLMs even more unpredictable. Each request could be handled by LLMs with different characteristics and performance from one time to another. I’ll pass on this, but I still learned something tonight.

Launching Numeric Citizen Blog Digests

Today, I’m excited to share my latest idea and creation: a website collecting my Micro.blog posts, monthly digests. What, another website? Yup.

In case you didn’t know, Micro.blog has a newsletter capability. My blog offers readers the opportunity to subscribe to a monthly blog post digest delivered to their inboxes. Plus, each digest is also available as a webpage (here’s the index page if you are curious). It’s a great way to get a quick overview of everything I published for a specific month. Of course, the whole thing is searchable.

But one day, I tried feeding one digest into ChatGPT and started asking questions about it. It was a revelation. Eventually, I asked for a structured summary, and ChatGPT promptly complied, returning a beautifully formatted summary. I spent quite some time reading the output, and I was blown away by how accurate and complete it was. This is where the idea of creating a new website to store and share those summarized digests. I think it’s a great way to get up to speed with my blog for newcomers or for people who might have missed a few months.

So, here we are, digests.numericcitizen.me is born. For now, you’ll find the summary of last month, but each month will be added as a single article. An AI-generated summary (by Micro.blog) describes the current month, and you need to click the title to get all the content. I plan to add some other highlights to this site. Stay tuned and enjoy.