Sign in

David Roessli

@davidroessli.mastodon.social.ap.brid.gy
3 followers 2 following 210 posts

father / partner / webdesigner * (*) not necessarily in that order. Depends. I'm usually building websites at the speed of life when I'm not cycling, boating […] 🌉 bridged from ⁂ mastodon.social/@davidroessli, follow @ap.brid.gy to interact

PostsRepliesMedia
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 01/10/2026
For those struggling with Bluetooth disconnects on their shiny new iPhone 18 Pro, I might have found a temporary workaround. davidroessli.com/logs/iphone-18-pro…
davidroessli.com
iPhone 18 Pro Bluetooth is unstable — 01 Oct 2026
I'm hearing a lot from friends and collegues who've recently upgraded to Apple's latest iPhone 18 Pro that they are experiencing random Bluetooth disconnects, especially with Apple's own Apple Watch. Some reported that the migration process failed to successfully complete the iPhone paring step, and left the Apple Watch in limbo. The iPhone would appear in the watche's Bluetooth settings, but not in the iPhone's. The Watch app "Pairing fix" button only led to an error. The only work around was to reset the Apple Watch and repair it from scratch. Others report that suddenly their Apple Watch suddenly drops its Bluetooth connection to their iPhone 18 Pro, and they are at a loss to repair them. Moreover, I've heard numerous reports of issues to thirs party devices, such as CarPlay or speakers. ## A workaround As restarting the devices doesn't always fix the issue, the only workaround I found was to turn off Bluetooth on the iPhone, **and turn off all applications that are entitled to use Bluetooth**. Sounds weird, right? 1. Turn off Bluetooth. Make sure it's really off, sometimes it'll show off on the drop down but still be on in settings. 2. Go to Settings - Privacy & Security - Bluetooth. Click off every device toggled there. Wait two minutes. Click the devices you want connected back on. 3. Turn Bluetooth back on. The bug seems clearly related to the iPhone 18 Pro, so let's hope this gets fixed in a future iOS release.
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 25/09/2026
Almost there. Waxing Gibbous. 99% visible. #shotoniphone
Almost full moon taken with an iPhone.
120
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 23/09/2026
Xteink X4 Pro: my new super light (72g) e-ink eReader with CrossPoint 😍 #fun #backlight #xteink #books www.xteink.com/products/xteink-x4-p…
Holding the Xteink X4 Pro in my left hand
031
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 23/09/2026
Half way through my copy of «Annemasse, j'irai chercher ton âme», an in depth investigation on one of Geneva's French neighbourhoods: Annemasse. Fascinating. "If you want to better understand Geneva's and its paradoxes, the best thing to do is to take a […] [Original post on mastodon.social]
The cover of the print edition showing a barber shaving the back of the neck of a young man
001
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 22/09/2026
I love provocative ideas over breakfast! Best way to start the day! Checkout this great talk by @scottjenson on the #UX of #Desktop for everyone 💜 youtu.be/V7AfAcQwLW0?is=zZZq9wRxZdl…
010
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 09/09/2026
Wow, these two last days flew by in the blink of an eye! Thank you to @vitalyf and all the #SmashingConf team for pulling this off again, and a BIG thank you to all the speakers for sharing your thoughts and feelings about our industry with such an open mind and so much #love 💜😻
The Smashing team on stage
010
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 09/09/2026
“Show you are willing to be vulnerable helps you connect and build trust. […] Being a leader is a quality you acquire [whether you are in a leadership position or not].” 💜 Emma Bostian at #smashinconf
Emma Bostian
020
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 09/09/2026
“It can be scary to speak to someone with disabilities, but it can bring you so much. Learn from people who have disabilities in your life. Your users become the experts. Include them.” Marie van Driessche at #smashingconf
Marie van Driessche
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 09/09/2026
Tobi is really smashing it 🤘 #smashingconf
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 09/09/2026
I love talks like the one Lyra just gave. It was full of excitement, delight and surprise. Lyra enthusiasm is contagious. 💜 Just when you thought you knew everything there is to know about CSS 🤔 Love it.
Lyra Rebane
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 09/09/2026
“You cannot redesign/replicate in a year or two something that has been running for 30 years. You’ll loose something on the way, and that will be very bad.” Vitaly, the man that does it all, has this super power of explaining incredibly complex systems in […] [Original post on mastodon.social]
Vitaly Friedman
010
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 09/09/2026
odd ? time: time + (quarterBeat * swing) “It’s the first time writing a line of JavaScript made me feel happy, because I could feel its effect.” I felt it too 💜 @heydon at #smashingconf
Heydon Pickering
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
@jaffathecake is taking us in a fascinating time travel in the history of the select element. It turns out select is the element the most re-created by developers, and the one that gives the most frustration (by far) - no surprise. #smashingconf
Jake Archibald with his sloshy wine
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
“Be curious, and experiment, but remain grounded and use it [AI] for high value tasks. Don’t forget to touch grass.” Love it. Sarah Thompson at #smashingconf
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
“Technology growth is sky rocketing, and human brain evolution is very slow, it hasn’t been “updated” in the last 40’000 years. We can’t escape our cave brains. Design for it.” Sarah Thompson at #smashingconf
Sarah Thompson
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
RE: hachyderm.io/@rmondello/11723551055… More relevant now than ever. Thanks Ricky 🙏
hachyderm.io
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
“Remember the days when you reached the end of the feed?” #endthefeed @vitalyf at #smashingconf
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
Al literacy != maximum Al use. Al literacy = calibration. Ioana Teleanu at #smashingconf
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
“Which part of the job is yours? […] AI is getting good at making, but that’s not where the value is. […] Design is not output, or output was never design. We will design how AI decides.” Ioana Teleanu at #smashingconf
Ioana Teleanu
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
#smashingconf’s first morning was soaring. It feels so good to be back 😻☀️💜
#smashingconf lanyard with today’s schedule conveniently printed to be easy to read when warn around your neck
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
@joenatoli Breaking down the silos is hard. But getting people to care — even just a bit, for a short time — about each other and the business or the product feels so good. Thanks for sharing. Your talk is why I love #smashingconf
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
“You say no to protect the business, not the discipline, or a best practice, whatever that is. Friction is good. Late friction is expensive. Early friction is strategic. […] Don’t try to create a team that doesn’t disagree“ So insightful. Thank you 🙏 @joenatoli at #smashingconf
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
“Business isn’t personal. Wrong. To be good at anything, you need to care about it, and that makes it personal.” 💜 @joenatoli at #smashingconf
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
“Argument doesn’t equal opposition.” “Everybody is protection something.” “Stop taking sides. Figure out what each of you is trying to protect.” @joenatoli at #smashingconf
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
“If a product is defective on the receiving end, it’s (almost) always a failure to communicate properly.” “The friction you feel downstream, was usually created upstream.” @joenatoli at #smashingconf
Joe Natoli
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
In case you’re wondering, we’re having a blast at #smashingconf 🎉🎈
SmashingConf’s traditional balloon launch
010
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
“i18n is not just translating strings, it’s showing that we care.” 💜 @evaferreira at #smashingconf
Eva Ferreira
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
“Lately, using the web as a non-native English speaker sucks. Al generated crap-tions, unrequired translations, weird grammar...” Eva Ferreira at #smashingconf
Eva Ferreira
011
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
“The question isn't whether AI will be part of your design system workflow. It's whether your design system will be ready when it gets there.” TJ Pitre at #smashingconf
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
“You need the dark in order to show the light” - You can't fix drift you can't see. Validation is how the system shows you. by TJ Pitre at #smashingconf
Bob Ross quote
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
New layout for #smashingconf 💜
001
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 08/09/2026
Back at #smashingconf 😻
Freiburg et Münster with #smashingconf flag flying on a blue sky
010
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 07/09/2026
Off to Smashing Conference! See you in a few hours Freiburg #smashingconf
010
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 02/09/2026
So incredibly proud of my boy, who has just completed his second bachelor’s degree! After a Bachelor of Arts in Fine Arts, he has now graduated in physiotherapy — and has already been offered his first job! #sensitive #generous #humane #love What a journey. Proud dad moment. ❤️
Mathias smiling in Kolymbithres
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 02/09/2026
Giving Omarchy a go on a old 2015 iMac… 😎 #linux #desktop
Omarchy logo and install progress bar
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 28/08/2026
My #HomePods are slowly giving up the ghost… Fixed the first mini #diy davidroessli.com/logs/how-i-fixed-h…
davidroessli.com
How I fixed HomePod mini ghost touches — 28 Aug 2026
This last quarter saw the beginning of the slow demise of our HomePods. We have a bunch of HomePod minis around the house, and a couple of HomePod 2nd generation in the living room. The first to go haywire was the bathroom HomePod mini. It started by randomly resuming the last played track, at the same volume. As if its capacitive touch surface had been tapped. ## The ghost touch symptom Like for others, it quickly got worse. It started playing random tracks at random hours, including in the middle of the night, at full volume (apologies to my family and neighbours). Again, as if the volume-up control were being held down. A symptom widely reported. Since then, both of our second-generation HomePods have developed the same problem, but I found replacement touch panels on Alibaba - more on that later. At the time of writing, I wasn't able to find a replacement touch panel for the HomePod mini, so I decided to disconnect it, hoping it would continue to function normally. The only thing that no longer would work is the touch input (which we never use). After disconnecting the touch-panel ribbon cable and putting the HomePod mini back together, the ghost touches stopped completely. It still works normally through Siri, AirPlay and the Home app; the only thing I’ve lost is the touch interface on top. ### Caveat Losing the touch input can be an issue when resetting the HomePod manually which implies holding your finger pressed on the top of the HomePod. Try restoring it with a Mac instead. ## Teardown tips You'll find many disassembly guides and videos, choose the one that suits you best. * The overall operation isn't difficult, but there are a couple of ungluing steps **requiring soft prying tools** , and you'll need to **thread a draw string** to properly close the mesh at the end. * You'll need a T6 and T8 screwdriver. * **Don't try to pull the power plug out** , it's not designed to be unplugged. Work your way around it. * Gently pry the core open once you've removed the screws. * The touch panel is attached to the base with a ribbon cable. That's the one to disconnect until a replacement becomes available. * The final tricky bit is threading a draw string around the top of the mesh, and pulling it close. Don't thread it too close to the top, as the pressure to close it might break the mesh. Choose a row or two lower. * **Make sure to clean all the glue residue** before applying new glue, you'll have a cleaner result. ## Back to normal After disconnecting the touch-panel ribbon cable and putting everything back together, the erratic behaviour stopped completely. The HomePod mini still works normally with Siri, AirPlay and the Home app. The only thing I’ve lost is the touch interface on top, which in our case is no great loss. So far, this has turned an otherwise unusable HomePod mini back into a perfectly functional one. If replacement touch panels eventually become available, reconnecting or replacing the panel should be straightforward enough. I’ll update this post if the fix proves temporary — or if I manage to find a replacement touch panel for the mini. * * * PS: a side-effect of all this is a loss of trust in the HomePod technology. I unplugged all our HomePods before we left for Paros last week…
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 24/08/2026
Until next time. May we meet again 💜
View of Parikia bay to the south from Krotiri
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 22/08/2026
"Indecision" by Dimitra Chanioti. Found at Yria Ceramics, Paros.
A red slide as a reverse Y with two exits
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 19/08/2026
Just witnessed sea fog (advection fog) gliding horizontally into the bay of Parikia, like something out of the Pirates of the Caribbean … the fog was dense and obscured the other shore to the point the ferries switched to fog horns. Impressive.
Sea fog gliding over the bay under a blue skyFog like in full winterFerry disappearing in the fog
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 18/08/2026
All together back in one of our favourites place for a bit #family #friends #love #bliss
Parikia bay with moored sailing boats  viewed from Krotiri with Marpissa mountains in the back under a blue sky
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 11/08/2026
SuperDuper! 4 is out 🎉 Bought a new license immediately and enjoying discovering the new and improved features. Amazing. Must have. davidroessli.com/logs/new-version-o…
davidroessli.com
New version of SuperDuper! — 08 Aug 2026
Dave Nanian (Shirt Pocket) has released a new version of one of my all time favourite mac apps: SuperDuper! (discovered via ATP episode 703 @00:45:20). I've written about SuperDuper! before, and I'm still a fan after 20 years. It's not as critical as it once used to be for me, in part due to new backup flows and solutions, the increasing complexity of macOS and increased drive sizes, but I feel that version 4 will find its way into my backup strategy. The speed increases and the added flexibility are amazing. Shirt Pocket has a brand new website too, in line with SuperDuper!'s new clean UI (I feel a bit nostalgic for its former look and feel…) ## Speed This new version was rewritten from the ground up, and is 2x as fast out-of-the-box. _Turbo_ Smart Update can speed smart update to under 1 minute! Yes, it's hard to believe, give it a try. That alone would have made me update. Tip: use an SSD for best results (recommended for bootability). ## Flexibility Scheduled or automated copies offer a tremendous number of options, that will run logged in or out. SuperDuper was the tool I used to make a bootable copy of my startup drive, in addition of my backups. Booting off an external hard drive saved my bacon a number of times back in the day. It also enabled me to try out new Mac OS seeds before they were called beta versions. It became increasingly difficult to make an external bootable drive over the last decade, as Apple introduced new security features or changed file system. Nevertheless, Dave always found a way around, battling his way through changing or broken APIs. Today, SuperDuper! is articulated around copy jobs: > A "copy job" describes one thing you'd like SuperDuper to do—what to copy, how to copy, when to run, and what to do when the job is complete. > You might want a nightly backup of things that have changed, a full bootable startup drive, or two different copies to two different destinations: one that one every weekday. The options aren't infinite, but they're close. * I've set my desktop Mac to smart update every night * My MacBook Pro will backup all newer files to my archive drive when connected * I'm looking into making a bootable copy of my drives once a week ## Friendly UI Backups are hard, and Dave has always designed a friendly and helpful user experience for SuperDuper!. Version 4 is no exception. It walks you through the taks you want to accomplish step by step, with lots of suggestions and explanations along the way. You'll notice it as soon as the onboarding process (guided setup). ## Super duper friendly pricing As mentioned elsewhere, Dave has never charged for an upgrade - never once in over 20 years… The full price of SuperDuper! 4 is barely more expensive than its predecessor **and** he offers upgrade pricing! Don't cheap out - buy a new license. Period. ### Caveat * SuperDuper! 4 requires macOS 14 Sonoma or later. SuperDuper! Classic remains available for all older versions back to Mac OS Jaguar (10.2). * ~~If you're a SoftRAID user, it seems that SuperDuper doesn't recognise those volumes properly yet. Stay tuned.~~ **Fixed in v4.0.2** 🎉
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 31/07/2026
#Current #vibe #tgif music.apple.com/ch/album/purple-ros…
music.apple.com
Purple Rose by Kalabrese on Apple Music
Song · 2013 · Duration 6:37
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 23/07/2026
Is it me, or has the latest release (v5.0.3) of the mobile #Flickr app just reverted to its previous incarnation? 🤔 (pre v5)
Screenshot of Flickr profile screen
100
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 22/07/2026
I’m fully powered by #Kirby now, and it feels good. It was long in the coming, but boy was it worth it. I’ve rediscovered how I love tinkering with my own website. Anything feels possible now 💜 #cms #migration #happy davidroessli.com/logs/migrating-fro…
davidroessli.com
Migrating from Perch Runway to Kirby — 22 Jul 2026
I finally took the time to migrate my Perch Runway website to Kirby. You are reading these lines on a page served by the latest release of Kirby CMS. I’d been wanting to make the switch ever since attending a workshop by Bastian Allgeier at New Adventures 2020. ## Then I discovered Kirby Kirby's philosophy immediately appealed to me. I’ve always preferred treating the file system as the foundation of a website rather than hiding everything away in a database (and depending on it). Long before discovering Kirby, several bespoke content management systems I’d designed for clients followed a similar principle. Kirby simply felt like the natural expression of that idea. Only a year earlier, I had migrated this weblog from Movable Type to Perch Runway. At the time, Perch Runway was an excellent fit for the site. It was lightweight, flexible and let me build exactly what I wanted without getting in the way. I happily recommended it over WordPress whenever it made sense. It quickly became my CMS of choice. I started recommending it to clients, migrated several existing websites and built new ones with it. My own website, however, proved to be a much bigger undertaking. Over the years I had built a fairly sophisticated content model in Perch Runway, complete with custom collections, bespoke blocks and years of accumulated content. Migrating all of that wasn’t simply a matter of exporting a database and importing it somewhere else. By 2022, I had a working Kirby version of the site running locally, with matching collections and blocks. The foundations were there, but client work kept taking priority and the project quietly sat on the shelf for four years. Don’t ask. ## Switching for real When I finally picked it up again, I wrote a collection of export scripts and helper functions to transform the existing content stored in Perch’s database into Kirby content files. Along the way I refreshed—or completely rewrote—many of the templates and snippets, which had become rather dated since my first experiments with Kirby. The framework itself had evolved considerably, and I wanted the codebase to evolve with it. I also took the opportunity to simplify a number of existing components, rethink parts of the content model, improve responsive image handling and make it easier to integrate external sources such as Flickr or Raindrop.io. Some ideas I’d wanted to implement for years suddenly became much easier once the migration was underway. I learned a bunch about how Kirby works, and incidentally about the new features of the PHP language. The migration itself was almost the easy part. The challenge was preserving more than twenty-five years of content (with its own legacy issues), keeping every URL intact, maintaining publication dates and metadata, and ensuring that the public-facing site changed as little as possible while the foundations underneath were completely rebuilt. ## Outcome Perhaps the biggest benefit wasn’t changing CMS at all. It was having an excuse to revisit code I’d written years ago, delete a surprising amount of it, and take advantage of everything Kirby has included since I first experimented with it in 2022. If you’re facing a similar migration from Perch Runway, I’ve published the export scripts and helper functions on GitHub. They’re tailored to my own content model rather than being a generic migration tool, but they should provide a useful starting point—and perhaps save you a few hours of work. Kirby site dashboard as of July 2026 ## The migration Several people have asked how I performed the migration. The export scripts and helper functions aren’t intended to be a universal Perch-to-Kirby migration tool. They reflect the structure of my own website and the decisions I made along the way. Nevertheless, they may provide a useful starting point if you’re facing a similar migration. I’ve published the scripts on GitHub: perch-runway-to-kirby. Just bear in mind they will probably be useless to you as-is, but feel free to adapt them to your own project. All what follows is based on the fact that I had a Kirby version of my site running before the migration. ### 1. Blog entries I concentrated on migrating the blog entries first. The process wasn’t particularly complicated, but it was very specific to my site. Along the way I had to solve a number of small problems: * converting Perch blog posts into Kirby pages * translating custom blocks to Kirby blocks * preserving source image and references * rewriting internal links * keeping publication dates and slugs unchanged * exporting metadata * copying all assets over to Kirby * validating the imported content before switching production ### 2. New blog URL format I changed the URL scheme to match Kirby's flat organisation for my blog entries. I switched from using, `/logs/2026/06/lost-in-thoughts/` to `/logs/lost-in-thoughts/` maintaining the old format as a 301 redirect. This was taken care of in my `.htaccess` file. # ------------------------------------------------------------------ # Old blog URLs → new ones # ------------------------------------------------------------------ RewriteRule ^logs/[0-9]{4}/[0-9]{2}/([^/]+)/?$ /logs/$1/ [R=301,L] ### 3. Duplicate names As a consequence, I had a couple of duplicates: two posts with the same title that co-existed happily in the file system because of the prefixed date but generated an error: Example of duplicate post URLs Perch | Kirby ---|--- /logs/2015/03/sweet-sixteen | 201503121526_sweet-sixteen /logs/2017/03/sweet-sixteen | 201703031052_sweet-sixteen Changing the second URL to `201703031052_sweet-sixteen-today` fixed that. ### 4. Maintaining the trailing slash My website uses trailing slashes in its URLs since its inception. I was worried that switching to non-trailing slashes might create issues like, * unnecessary redirects * temporary SEO instability * duplicate URL risk during migration * broken historical backlinks if redirects fail * analytics fragmentation * cache inconsistencies I struggled with the decision of keeping them or not, and finally I kept them. Because Kirby’s native `url()` usually returns no trailing slash, I fixed calls to `$page->url()` in my snippets to add a trailing slash, to make sure everything matched the previous state, especially the canonicals. This was taken care of in my `.htaccess` file. # ------------------------------------------------------------------ # Canonical trailing slash URLs # ------------------------------------------------------------------ RewriteCond %{REQUEST_URI} !^/bin(/|$) [NC] RewriteCond %{REQUEST_URI} !^/panel(/|$) [NC] RewriteCond %{REQUEST_URI} !^/api(/|$) [NC] RewriteCond %{REQUEST_URI} !^/media(/|$) [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !\.[a-z0-9]{1,10}$ [NC] RewriteCond %{REQUEST_URI} !/$ RewriteRule ^(.+)$ /$1/ [R=301,L] ### 5. Single pages This was easy. Once the blog entries sorted, I recreated the singe pages one by one in Kirby, which gave me the opportunity to revisit them. ### 6. Perch assets cleanup Perch stores all its assets in `perch/resources` folder. The entries post first migration organised them in folders, but the posts preceeding it referred to assets all over the place. I had fixed most of the paths, but took the opportunity to go through all, * inline images (images in the body field) * legacy logs assets * inline images CSS classes * links to Perch resources and clean them up, replacing them with KirbyText (image: …) tags whenever possible. My migration script took care of most inline images, but not links to images (like those opening in a lightbox). ### 7. RSS feed and sitemap Kirby routing is powerful. It takes care of all my listings (by category, tag, year, photo, etc.) as well as my RSS feeds and sitemap. I wrote a couple of routes to offer 2 RSS feeds: short, and full content (just because I could). return [ "routes" => [ [ "pattern" => "rss", "action" => function () { $articles = collection("logs") ->listed() ->sortBy("published", "desc") ->limit(20); $content = snippet( "rss", [ "articles" => $articles, ], true ); return new Kirby\Cms\Response($content, "application/rss+xml"); }, ], [ "pattern" => "rss/full", "action" => function () { $articles = collection("logs") ->listed() ->sortBy("published", "desc") ->limit(20); $content = snippet( "rss-full", [ "articles" => $articles, ], true ); return new Kirby\Cms\Response($content, "application/rss+xml"); }, ], [ "pattern" => "sitemap.xml", "action" => function () { $pages = site() ->pages() ->listed() ->index(); $ignore = kirby()->option("sitemap.ignore", ["error"]); $content = snippet("sitemap", compact("pages", "ignore"), true); return new Kirby\Cms\Response($content, "application/xml"); }, ], [ "pattern" => "sitemap", "action" => function () { return go("sitemap.xml", 301); }, ], … // rest of config // ### 8. Migrate Raindrop.io bookmarks I publish a grid of my latest public Raindrop.io bookmarks on the homepage. Previously, I used a Perch collection to store them, which enabled search too, but I decided to store them as structured data as each bookmark didn't require its own public URL. A PHP script checks for new bookmarks once a day, and writes them to a JSON file, archiving the previous last 5 copies. [ { "id": 1234567890 "href": "https://example.com/article", "description": "Title or short description", "extended": "Markdown notes", "excerpt": "Quoted excerpt", "meta": "example.com", "hash": "abc123", "time": "2026-05-05", "shared": true, "toread": false, "tags": ["web", "css", "kirby"], "cover": "https://example.com/image.jpg", "domain": "example.com", "collectionId": 0987654321 } ] A Kirby Collection provides the items to display to the appropriate snippet. <?php use Kirby\Cms\Collection; return function () { $path = kirby()->root('site') . '/data/raindrops.json'; if (!file_exists($path)) { return new Collection([]); } $data = json_decode(F::read($path), true); $items = $data['items'] ?? []; if (empty($items)) { return new Collection([]); } usort($items, fn ($a, $b) => strtotime($b['time'] ?? '') <=> strtotime($a['time'] ?? '') ); return new Collection($items); }; ### 9. Migrate travel entries As for the past travel snippets, they were also stored in a Perch Collection, but with far less entries. I migrated them in a similar fashion than the blog entries: a PHP script ran through the Perch Collection, and created individual pages for each trip, moving the assets at the same time. The novelty is that each trip has its own page and permalink, giving me the possibility to enrich these pages with additional content. ## Still missing There are still a few things missing: **webmentions and comments** weren't migrated. I still have to figure out the best path forward for that. **Search** is still sketchy, and needs to be ironed out. There's a search box at the bottom of the logs page, but it's far from stellar. It feels good to be at last powered by Kirby. I love tinkering and trying new things, and I've learned so much in the process, it's really satisfying. Not having to deal with a database is a blessing in itself. The flat file and elegance of the CMS enabled me to find (and fix) corrupted markup in my legacy content by means of search and replace with regular expressions. So powerful. ## Migrating to Kirby If you're moving from another platform or CMS, this guide will help you understand the essentials, give you pointers to relevant documentation and resources, and smooth the process of setting up your new Kirby site to make the transition as seamless as possible.
102
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 21/07/2026
In view of what is going on everywhere with regards to banning teens for social networks everywhere, please watch/share Candice Odgers' TED talk. The problem might not be where you think it is. www.ted.com/talks/candice_odgers_wh…
ted.com
What we're getting wrong about teens and tech
For years, the warning has been: smartphones are destroying a generation. But developmental psychologist Candice Odgers says that decades of data on teens tells a different story — violence, alcohol use and pregnancy are at historic lows, and research shows social media may not actually be the culprit for mental health problems. Hear her analysis of what’s really troubling kids these days, and why banning them from online spaces may make things worse.
001
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 18/07/2026
Mole is a little macOS gem: “quiet, reliable, stays out of your way” #macapp #utility #indiedev davidroessli.com/logs/mole-a-hidden…
davidroessli.com
Mole 鼴 : a hidden favourite Mac app — 18 Jul 2026
I discovered Mole in mid-May while catching up on my RSS feeds over breakfast, and it immediately earned a place in my menu bar. (I'm picky about what apps can claim a spot in my menubar, but that's a story for another post). Coincidentally, that same morning, someone asked me for a recommendation for a macOS cleanup utility. Mole turned out to be the perfect test case. It quickly identified applications that could be removed, together with their leftover files, and grouped caches and other reclaimable data by how safe they were to delete. Mole covers a surprisingly broad range of system maintenance tasks: cleanup, software management, optimisation, analysis and system monitoring. > Five tools, one native Mac app > Clean, Software, Optimize, Analyze, and Status, plus a menu bar HUD, privacy alerts, a battery charge limit, fan control, Keep Screen On, and Clean Screen, all in one app. What won me over is the menu bar HUD, which provides an at-a-glance overview of what’s happening on your Mac, alongside uptime, macOS version and other useful system information. The entire app feels carefully designed, with thoughtful layouts, subtle interactions and consistent typography. > Quiet sounds like a mood, but for a tool it is a set of hard rules. Mole never flashes. A panel is either fully rendered or hidden, so there is no half-drawn card, no spinner sitting where a result will land, no white flash when an operation starts or ends. A scan finishes before the screen it produces appears, which means you never watch a surface assemble itself piece by piece. Waiting looks like one calm animation, not a loading bar. Check mole.fit for screenshots and learn about the design process and the story of Mole. ## Constant updates Mole has been receiving frequent updates since I installed it. For example, you can now right-click its menu bar icon for quick access to the most common tools. I don’t use the optimisation or analysis tools very often, but “Keep Screen On” and “Clean Screen” have become handy shortcuts. A “Clean Keyboard” mode would be a welcome addition during the current heatwave, but until then, I'll still rely on CleanMyKeyboard. The latest version can even offer to remove leftover files automatically when you uninstall an application. A clever feature, but make sure you understand what it will delete as it can pop-up when updating an app. Mole has quietly become one of those utilities I no longer think about because it’s simply always there. It’s beautifully designed, sensibly priced, and genuinely useful. You can try every paid tool twice for free, and the app is a one-time purchase with lifetime updates for USD 19 (for 2 activations).
040
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 10/07/2026
Riders on the storm (to be). Making our way home to the harbour. I love Summer 💜
Selfie of Fabienne and myself fleeing the incoming storm on our boat
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 09/07/2026
Riding to work x4 speed #bike #commute #stayalert #geneva davidroessli.com/logs/riding-to-wor…
davidroessli.com
Riding to work — 27 May 2026
My ~annual 4x speed clip of my bike ride to work. More road work, and denser traffic (you need to stay alert), but still a daily joy to commute from one world to the other. Not working? Hop over to Vimeo to view it… Saving these clips gives me a idea of how Geneva and its surroundings are changing over time and what my ride to work looks like. Soundtrack “House of the Rising Sun” by Sinéad O'Connor (1994)
010
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 07/07/2026
Woot! #Flickr has a new mobile app 🎉💜 @flickr
Screenshot of Flickr’s new mobile app
000
David Roessli @davidroessli.mastodon.social.ap.brid.gy · 07/07/2026
Looking for inspiration around Geneva? Check-out Alexia Benakis’ ”Une journée parfaite à Genève”, a charming guide full of ideas for outings, food and hidden gems. If you enjoy exploring Geneva, it’s well worth a look. #geneva #travel #guide #tips #ideas […]
mastodon.social
Original post on mastodon.social
001