{"title":"cauenapier","link":[{"@attributes":{"href":"https:\/\/cauenapier.com\/","rel":"alternate"}},{"@attributes":{"href":"https:\/\/cauenapier.com\/feeds\/feed.xml","rel":"self"}}],"id":"https:\/\/cauenapier.com\/","updated":"2026-07-06T21:27:00+01:00","entry":[{"title":"Hermes and I","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/hermes-and-i\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2026-07-06T21:27:00+01:00","updated":"2026-07-06T21:27:00+01:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2026-07-06:\/blog\/hermes-and-i\/","summary":"<p>Hermes became real for me when I trusted it with things that mattered, and useful when I could keep clear boundaries around authorship.<\/p>","content":"<p>I've been using Hermes a lot lately.\nEspecially after reading <a href=\"https:\/\/duarteocarmo.com\/blog\/how-i-hermes\">Duarte's post<\/a><\/p>\n<p>At first it was interesting mostly as a tool. Another AI agent, another interface, another way to ask models to do things.<\/p>\n<p>I've tried Openclaw, Nanoclaw and many others.\nBut none of them clicked with me.\nI couldn't do anything really useful with it.<\/p>\n<p>But recently I've realised how useful it can be when I asked it to help me with some maintenance and updates on my Raspberry Pi server, where I run several apps, including Immich.<\/p>\n<p>Recently I asked Hermes to help me back up all my photos from Immich to a storage box and then help me update Immich to version 3.\nThat is not a toy task.\nThat is my real data, my real server and something I did not want to mess up.<\/p>\n<p>And it worked amazingly, surprisingly, well.\nWith no hiccups, nothing wrong.\nOf course, I also felt safer because it could stay with me through the whole process.\nChecking things.\nPreparing steps.\nWatching long-running tasks.\nHelping me think about risk before doing anything dangerous.\nThat was the moment where Hermes stopped feeling like a demo and started feeling like something I could actually rely on.<\/p>\n<p>I've mostly used it with Codex.\nBut I've also used it with local LLMs and occasionally with other models through OpenRouter.\nWhat matters less to me is the exact model and more that Hermes gives me a practical way to work with them.\nIt lets me bring the same kind of help into different parts of my digital life.<\/p>\n<p>I've also used Hermes for software and infrastructure work.\nTo build things for Town Square and my personal website, but also to help with operational work around them.\nDeploying to the Hetzner server, investigating issues and checking what is happening directly on live data.<\/p>\n<p>Another important aspect is writing, notes and authorship.\nHermes sometimes review my blog posts and point out weak or confusing parts.\nIt also has access to my Obsidian vault with my personal notes, planning, projects, etc.<\/p>\n<p>But controlled authorship is an important point.<\/p>\n<p>I still do 90% of the changes in my notes myself.\nI do not want an AI silently rewriting my thoughts and mixing its voice with mine.\nBut sometimes I do ask Hermes to change a few things.\nMaybe clean up grammar.\nMaybe reorganize a paragraph.\nMaybe review a draft and tell me where the weak points are.<\/p>\n<p>Whenever it touches a note, it adds the tag <code>AI_coauthored<\/code>.\nIt makes the collaboration explicit.\nThe note is still mine but clearly shows when AI touches something.<\/p>\n<p>I've been thinking that maybe this should have more levels in the future.\nNot just one tag, but maybe two or three.\nOne for small grammar fixes.\nAnother for suggestions or review.\nMaybe another for cases where the AI had a more substantial co-authoring role.\nI have not defined those tags yet.\nBut that is the direction I want to go.\nNot all AI help is the same and I think it is useful to make those differences visible.<\/p>\n<p>That is probably the main thing I like about using Hermes.\nIt is not just automation, it is negotiated collaboration.\nI decide where I want help and how much.\nAnd I can keep a clear line between my thinking and the machine's contribution.<\/p>\n<p>So for me, Hermes became real not when it wrote text or generated code.\nIt became real when I trusted it with things that mattered and when I found a way to include it in my workflow without giving up authorship.<\/p>\n<p>That balance is what makes it useful.\nNot full automation, no blind trust.\nJust a very practical kind of collaboration.<\/p>","category":{"@attributes":{"term":"Blog"}}},{"title":"Coding on the Beach","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/coding-on-the-beach\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2026-06-30T20:49:00+01:00","updated":"2026-06-30T20:49:00+01:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2026-06-30:\/blog\/coding-on-the-beach\/","summary":"<p>A reflection on coding from the beach in Algarve and whether making things on vacation can still count as rest.<\/p>","content":"<p>Last week I was in Algarve, in the south of Portugal and I've been coding from the beach.\nI know. Very nerd.<\/p>\n<p>Part of me keeps judging it. What am I doing? Is this too much? Am I failing at resting properly? Why can't I just disconnect like a normal person?<\/p>\n<p>But then I also wonder... how different is it really from reading a book? In some ways it feels better. I'm not just consuming. I'm making things, exploring ideas, following curiosities.<\/p>\n<p>Whenever the girls go into a store, I open the terminal and start vibe coding.\nUsing Termux on Android, SSHing into my Hetzner server.<\/p>\n<p>It is awkward enough that the whole thing becomes a little funny. Typing on a phone is already bad, but in Termux autocorrect doesn't work, so I end up sending the agent these broken, typo-filled little texts that would be almost unintelligible to a normal human being.<\/p>\n<p>Later I remembered I could just use remote control with Claude, since I was already connected through Tailscale. That made typing much easier.<\/p>\n<p>The battery also doesn't last the whole day. So even this very nerdy setup comes with a natural limit. At some point the phone is dying, the sun is reflecting on the screen and the ocean is right there.<\/p>\n<p>So I keep asking myself: am I hurting myself by not disconnecting?<\/p>\n<p>I don't think resting always means doing nothing. A lot of the time it just means changing the kind of activity, the pace, the context, the pressure.<\/p>\n<p>There is a difference between sitting in the same chair, under the same roof, staring at the same machine because you have to and standing near the beach with a phone in your hand, poking at ideas because you feel like it. There is a difference between obligation and play.<\/p>\n<p>That doesn't mean the question goes away. I still don't fully know at what point something enjoyable quietly turns into compulsion. At what point \"I'm just having fun\" becomes another way of never really stopping. Because I know that my brain never really stops.<\/p>\n<p>But at least right now, it does feel recharging.<\/p>\n<p>Maybe not in the pure, empty-headed sense people usually imagine when they talk about rest. Not total silence, not full disconnection, not the idealized version of vacation where your brain completely powers down. But still recharging in its own way.<\/p>\n<p>I am having fun. I can stop at any time. I can look up, put the phone away and go into the water.<\/p>\n<p>Maybe that is the real test.<\/p>\n<p>Not whether I touched a terminal on vacation, but whether the thing still feels light. Whether I am choosing it freely. Whether I can leave it behind for the ocean without resistance.<\/p>","category":{"@attributes":{"term":"Blog"}}},{"title":"A Good Product Is Hard to Outgrow","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/a-good-product-is-hard-to-outgrow\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2026-06-26T14:23:00+01:00","updated":"2026-06-26T14:23:00+01:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2026-06-26:\/blog\/a-good-product-is-hard-to-outgrow\/","summary":"<p>Great tools stay approachable at the beginning, but reveal deeper capability as users grow into them.<\/p>","content":"<p>At first glance, it is strange that Excel survived for decades.<\/p>\n<p>It is visually primitive. A blank grid of cells. No obvious workflow. No onboarding. Nothing about it suggests that investment banks use it to build billion-dollar financial models or that entire companies run on top of it.<\/p>\n<p>Yet they do.<\/p>\n<p>Why did this tool survive while newer, more polished and highly capable products struggled to replace it? How can complex analysis happen inside the same tool that a child can use within minutes?<\/p>\n<p>Very few tools operate comfortably across such a wide spectrum of users.<\/p>\n<p>Beginners see cells and tables.<\/p>\n<p>Intermediate users see formulas.<\/p>\n<p>Advanced users see workflows, automation and interconnected systems.<\/p>\n<p>Experts see infrastructure.<\/p>\n<p>The interface remains largely the same, but the user's understanding of it changes dramatically.<\/p>\n<p>That is one of the most remarkable qualities of great software. The best tools do not merely stay useful. They reveal deeper layers as users grow into them.<\/p>\n<h2>Understanding the Journey<\/h2>\n<p>Most software struggles with this balance.<\/p>\n<p>Tools designed for beginners are often easy to learn but quickly become restrictive. As users become more experienced, their needs become more sophisticated and the tool that once felt empowering begins to feel limiting.<\/p>\n<p>More advanced software tends to solve this problem by exposing every capability upfront. The result is often the opposite problem: overwhelming complexity. New users are confronted with dozens of features they do not yet need and cannot yet understand.<\/p>\n<p>Few products manage to remain approachable while continuing to expand alongside their users.<\/p>\n<p><img alt=\"Learning curve for good and bad tools\" src=\"https:\/\/cauenapier.com\/images\/good-product-learning-curve.png\"><\/p>\n<p><em>A useful tool should feel rewarding early, while still leaving room for deeper capability over time.<\/em><\/p>\n<p>Excel does.<\/p>\n<p>The reason tools like Excel scale so well is not that they expose all their power immediately. They do almost the opposite.<\/p>\n<p>Great products do not overwhelm users with capability. They reveal it gradually.<\/p>\n<p>The first useful action in Excel is obvious: click a cell and start typing. Within minutes, a user can create a table and organize information. The software becomes useful long before the user understands its full capabilities.<\/p>\n<p>The complexity is not removed. It is staged.<\/p>\n<p>A beginner can ignore formulas entirely. Later, formulas become useful when repetitive calculations appear. As datasets grow, filters and pivot tables become relevant. As workflows become more sophisticated, automation, scripting and integrations become valuable.<\/p>\n<p>Each layer becomes meaningful only after the previous one has become familiar.<\/p>\n<p>The user is not forced to learn everything upfront. Instead, the software grows alongside their ambitions.<\/p>\n<h2>Why We Outgrow Tools<\/h2>\n<p>Most tools are abandoned for one of two reasons.<\/p>\n<p>Some are too complicated to learn. Users never make it past the initial friction.<\/p>\n<p>Others are too simple. They solve an immediate problem but eventually become limiting as the user's needs evolve.<\/p>\n<p>The first type fails because it asks too much too soon.<\/p>\n<p>The second fails because it has nowhere left to grow.<\/p>\n<p>Users outgrow these products because they eventually encounter a problem the tool was never designed to solve and there is no clear path to adapt the tool to solve it. At that point, they migrate.<\/p>\n<p>The tool becomes a stepping stone.<\/p>\n<p>Excel rarely becomes a stepping stone.\nIt provides a core set of functionalities that gives it incredible flexibility.<\/p>\n<p>One reason is that it makes surprisingly few assumptions about how work should be done. It does not force users into a predefined workflow. It provides primitives: cells, rows, columns, formulas and references.<\/p>\n<p>From these simple building blocks, users create budgeting systems, financial models, inventory management systems, project trackers, forecasts, dashboards and workflows that the original designers could never have predicted.<\/p>\n<p>The software remains relevant because users can continuously adapt it to new problems.<\/p>\n<p>As their needs grow, the tool remains flexible enough to grow with them.<\/p>\n<h2>The Best Tools Leave Room<\/h2>\n<p>This pattern appears in many enduring products.<\/p>\n<p>Obsidian begins as a simple note-taking application. Over time, users discover links, graph views, queries, plugins and entirely new ways of organizing knowledge.<\/p>\n<p>Figma begins as a canvas for designing interfaces. Later it becomes a design system, a collaboration platform and a foundation for organizational workflows.<\/p>\n<p>These tools share an important characteristic.<\/p>\n<p>They provide building blocks rather than rigid processes.<\/p>\n<p>They allow beginners to accomplish something useful immediately while leaving room for advanced users to construct entirely different systems on top of the same foundation.<\/p>\n<p>The complexity is available, but it is not imposed.<\/p>\n<p>That distinction matters.<\/p>\n<p>Many products achieve simplicity by removing power. They become easy to learn but easy to outgrow.<\/p>\n<p>Others pursue power by exposing every capability immediately, making them difficult to approach.<\/p>\n<p>The best products take a different path.<\/p>\n<p>They preserve complexity without demanding it.<\/p>\n<p>They provide depth without overwhelming users.<\/p>\n<p>They allow beginners to ignore complexity while giving advanced users room to explore it.<\/p>\n<p>They do not merely reduce friction.<\/p>\n<p>They create a path for growth.<\/p>\n<p>And that may be one of the defining characteristics of software that endures.<\/p>","category":{"@attributes":{"term":"Blog"}}},{"title":"Mom, I made it to HN front page","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/mom-i-made-it-to-hn-front-page\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2026-06-23T00:00:00+01:00","updated":"2026-06-23T00:00:00+01:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2026-06-23:\/blog\/mom-i-made-it-to-hn-front-page\/","summary":"<p>Townsquare made it to the Hacker News front page, chaos followed and the best part was seeing how much people genuinely enjoyed being together there.<\/p>","content":"<p>This weekend Townsquare made it to the <a href=\"https:\/\/news.ycombinator.com\/item?id=48608570\">Hacker News front page<\/a>.<\/p>\n<p>I had posted it on Friday, but it didn\u2019t make much noise at first. Then I went to Rock in Rio Lisbon and mostly forgot about it for a while.<\/p>\n<p>On the way back home, around 3am, I saw an email from Hacker News moderation. They had liked the idea and moved the post into the second-chance pool, which meant it would get another shot on the front page.<\/p>\n<p>That\u2019s when things got wild.<\/p>\n<p>I was checking everything on the way home: visitor numbers, server health, messages. When I opened the Townsquare landing page, the square was packed. There were people everywhere.<\/p>\n<p>Part of me was happy and part of me was a little sad that I had missed the beginning of it. By then the post had already been popular for a couple of hours and there were lots of comments I hadn\u2019t answered.<\/p>\n<p>Still, I don\u2019t regret it. I was with my girlfriend and sometimes real life should win.<\/p>\n<p>At some point I called my mom and told her I had made it to the Hacker News front page. It felt a bit silly to care that much, but I did. It was one of those small internet milestones I had imagined for years and never really expected to hit.<\/p>\n<p>It didn\u2019t take long for people to start testing the system. Some were curious in a good way. Some were just trying to break things. We got the usual chaos, including bots and a weird synchronized chant of every possible variation of one very stupid word.<\/p>\n<p>I couldn\u2019t react fast enough and that part bothered me. The people who might actually have liked the idea were seeing Townsquare at one of its messiest moments.<\/p>\n<p>But even with that, something good was happening.<\/p>\n<p>More Townsquares got verified. More sites joined. <a href=\"https:\/\/townsquare.cauenapier.com\/map\">The map<\/a> is growing. People sent me coffees. I started reading the comments and messages and realized the project had landed with some people in exactly the way I had hoped.<\/p>\n<p>I also started a series called Town Highlights, where I can share interesting sites I find through Townsquare and talk to their owners. Check out the <a href=\"https:\/\/townsquare.cauenapier.com\/blog\/posts\/town-highlight_1\/\">first highlight with Low Sound<\/a>.<\/p>\n<p>This is the first project I\u2019ve made that got this kind of attention and it is probably the silliest one too.<\/p>\n<p>It is simple. It is not productive. It is not complex. It is not driven by algorithms. It does not make you the product.<\/p>\n<p>I think that is exactly why it connects.<\/p>\n<p>Townsquare touches something very basic: human connection, warmth and the pleasure of finding someone else in a strange little corner of the internet.<\/p>\n<p>I don\u2019t know if it will keep growing. I don\u2019t know how long people will keep using it. But as long as there is even one person walking around my site, smiling while jumping with a silly stick character and having an interesting conversation with a stranger, I\u2019ll keep building it.<\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Making"}},{"@attributes":{"term":"Internet"}}]},{"title":"Town Square, the community deserves connection","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/town-square-the-community-deserves-connection\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2026-06-19T21:17:00+01:00","updated":"2026-06-19T21:17:00+01:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2026-06-19:\/blog\/town-square-the-community-deserves-connection\/","summary":"<p>A short update on Town Square after launch: the map is live, new features keep emerging from people enjoying it and the best part has been seeing how much the community cares.<\/p>","content":"<p>So many things happened since the <a href=\"https:\/\/cauenapier.com\/blog\/townsquare_release\/\">first day<\/a> I released <a href=\"https:\/\/townsquare.cauenapier.com\/\">Town Square<\/a>.<\/p>\n<p>I have been shipping a lot because people were genuinely having fun with it and naturally started imagining what else would make it even better.\nThey were not just asking for features.\nThey were playing with it, enjoying it and saying things like how nice it would be if Town Square had this or that.<\/p>\n<p>There is now more room for people to make their own square feel like their own.\nYou can customize colors, change the number of props and play with different locations.\nI have also been slowly improving mobile.\nThat part is still hard, but it has been an interesting challenge.<\/p>\n<p>I also made a proper <a href=\"https:\/\/townsquare.cauenapier.com\/\">landing page<\/a> for Town Square.\nUntil now, it was mostly something you had to stumble into or hear about from someone else.\nNow there is a clearer front door.\nA place where people can immediately understand what Town Square is, see it live and get a feel for the project.\nThat felt important too.\nIt makes the whole thing feel more real.<\/p>\n<p>The biggest new thing is the Town Square map.\nYou can check the <a href=\"https:\/\/townsquare.cauenapier.com\/map\">live map here<\/a><\/p>\n<p><img alt=\"Town Square Map\" src=\"https:\/\/cauenapier.com\/images\/townsquare_map.png\">\nIt shows all the verified cities that are already part of Town Square and the roads between them.\nA one way connection appears as a simple road.\nA two way connection appears as a stronger one.\nThe bigger the city, the more messages have been sent there over time.\nYou can also spot live visitors as blinking dots moving around the map.\nAnd I added a small star to the cities that contributed to the project.\nWhat I like most is that the map is live.\nAs new Town Squares are added, they just start appearing there and the whole thing slowly feels more like a real little world.<\/p>\n<p>I also built a map editor, so I can draw trees, mountains and lakes.\nThat part was especially fun.<\/p>\n<p>If you want the running list of changes, I have been updating the <a href=\"https:\/\/townsquare.cauenapier.com\/changelog\/\">Changelog<\/a><\/p>\n<p>And I also set up a Town Square <a href=\"https:\/\/townsquare.cauenapier.com\/blog\">Blog<\/a><\/p>\n<p>I will be posting updates there as the project keeps growing.<\/p>\n<p>I also want to leave a big thanks to <a href=\"https:\/\/kevquirk.com\/\">Kev<\/a>, <a href=\"https:\/\/puf.io\/\">Frank<\/a> and <a href=\"https:\/\/emilesilvis.com\/\">Emile<\/a> for <a href=\"https:\/\/buymeacoffee.com\/cauenapier\">sending me a coffee<\/a> and contributing to the project.\nThat genuinely gave me a lot of energy to keep going.<\/p>\n<p>But what stayed with me even more were the emails.\nDozens of kind messages.\nAppreciation.\nLove.\nPeople taking the time to say that this tiny thing on the internet meant something to them.<\/p>\n<p>That is the part I keep coming back to.<\/p>\n<p>Town Square is made with love for the community.\nAnd I think the community deserves more spaces for simple connection.\nNot another giant platform.\nJust small places that feel alive again.<\/p>\n<p>Thanks you so much! \u2764\ufe0f\n<img alt=\"High five\" src=\"https:\/\/cauenapier.com\/images\/high-five.gif\"><\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Making"}},{"@attributes":{"term":"Internet"}},{"@attributes":{"term":"Town Square"}}]},{"title":"Two days of Town Square","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/two-days-of-town-square\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2026-06-14T20:05:00+01:00","updated":"2026-06-14T20:05:00+01:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2026-06-14:\/blog\/two-days-of-town-square\/","summary":{"@attributes":{"type":"html"}},"content":"<p>It has been two days since I posted about the release of <a href=\"https:\/\/cauenapier.com\/blog\/townsquare_release\/\">Town Square<\/a> and I thought it would be nice to write a quick report.<\/p>\n<p>My post got automatically posted on Bubbles and I shared it on Hacker News.\nSomeone also posted it on Lobste.rs, which I had never heard of before.\nLater it got posted on some other sites I don\u2019t even know.\nAll of that generated a big traffic spike.\nLots of people visited the site and explored the town square at the bottom.<\/p>\n<p>Things got crowded quickly, but it was fun.\nPeople started talking, walking around.\nJust figuring things out.<\/p>\n<p><img alt=\"Town Square 1\" src=\"https:\/\/cauenapier.com\/images\/townsquare_1.png\"><\/p>\n<p><img alt=\"Town Square 2\" src=\"https:\/\/cauenapier.com\/images\/townsquare_2.png\"><\/p>\n<p>People understood it very quickly and soon started asking for features.\nThe most requested feature was jumping.\nBirds came second.\nI added both in less then an hour or two and it was fun to see how quickly people started playing with them.\nSomeone said:<\/p>\n<blockquote>\n<p>\"it's fun to chase the birds\"<\/p>\n<\/blockquote>\n<p>While running around and making birds fly.\nA lot of people were just jumping around and enjoying it.<\/p>\n<p>We also noticed quickly that the mobile experience is not great yet.\nSo I already started working on that.<\/p>\n<p>Sunday morning I had a wonderful surprise.\nSomeone sent me 5 euros through the \"Buy my a coffee\" button on my site.\nIt was such a good way to wake up!\nIt is not really about the money.\nIt is about the signal.\nIt is about someone making that extra effort to say, in a very direct way, that this meant something to them.\nAnd that means a lot to me.<\/p>\n<p>I can finally cross this item off my Impossible List<sup id=\"fnref:1\"><a class=\"footnote-ref\" href=\"#fn:1\">1<\/a><\/sup>:<\/p>\n<blockquote>\n<p><del>Make 1 Euro from something I built online<\/del><\/p>\n<\/blockquote>\n<p>I have been following the messages and having a blast reading the comments.\nI've received several emails from people just thanking me about it.\nSome of the comments in my site's Town Square were also very sweet.\nThings like:<\/p>\n<ul>\n<li>\"This is charming.\"<\/li>\n<li>\"This blog post is sick\"<\/li>\n<li>\"This animation is surprisingly satisfying\"<\/li>\n<\/ul>\n<p><img alt=\"Town Square 3\" src=\"https:\/\/cauenapier.com\/images\/townsquare_3.png\"><\/p>\n<p>Of course, there were also some people being disrespectful for a while.\nSome racist nonsense and that kind of thing.\nBut I think the best response, in this case, is just to ignore it.<\/p>\n<p>And humans being humans, people also spent an unexpected amount of time talking about farting.<\/p>\n<p>Obviously, bots showed up too.\nSomeone made a group of bots that ran around, talking and jumping.\nAt one point they were all synchronized.\nIt felt like the middle of a wedding party, with drunk people doing a train dance.<\/p>\n<p>The idea behind Town Square was always about community.\nSo getting this kind of response from people made me really happy.\n<img alt=\"Town Square 4\" src=\"https:\/\/cauenapier.com\/images\/townsquare_4.png\"><\/p>\n<p>More than the traffic or the feature requests, I loved seeing people having fun together.\nThat was the best part.\nFor example, one person said they were about to go into a job interview and three other people just wished them good luck. \n<img alt=\"Town Square 5\" src=\"https:\/\/cauenapier.com\/images\/townsquare_5.png\">\nIf you are that person and are reading this, I hope it went well!<\/p>\n<p>So far, 31 sites have registered on my hosted instance of Town Square, but just 11 of them are already verified.\nA big shout out to the sites that already connected and verified themselves. Thank you for joining in:<\/p>\n<ul>\n<li><a href=\"https:\/\/newsonaut.com\">newsonaut.com<\/a><\/li>\n<li><a href=\"https:\/\/blog.narf.ssji.net\">blog.narf.ssji.net<\/a><\/li>\n<li><a href=\"https:\/\/ournarberth.com\">ournarberth.com<\/a><\/li>\n<li><a href=\"https:\/\/ashishb.net\">ashishb.net<\/a><\/li>\n<li><a href=\"https:\/\/j17.org\">j17.org<\/a><\/li>\n<li><a href=\"https:\/\/inhji.de\">inhji.de<\/a><\/li>\n<li><a href=\"https:\/\/pkcbarc.oss.zone\">pkcbarc.oss.zone<\/a><\/li>\n<li><a href=\"https:\/\/overengineer.it.com\">overengineer.it.com<\/a><\/li>\n<li><a href=\"https:\/\/triffid.org\">triffid.org<\/a><\/li>\n<li><a href=\"https:\/\/kristoff.it\">kristoff.it<\/a><\/li>\n<\/ul>\n<p>I will soon be creating a map of all these sites and hopefully start connecting those town squares.\nI also want to make Town Square more open over time, so people can create their own props and build interesting things around the map and the wider world.<\/p>\n<div class=\"footnote\">\n<hr>\n<ol>\n<li id=\"fn:1\">\n<p>https:\/\/impossiblehq.com\/impossible-list\/&#160;<a class=\"footnote-backref\" href=\"#fnref:1\" title=\"Jump back to footnote 1 in the text\">&#8617;<\/a><\/p>\n<\/li>\n<\/ol>\n<\/div>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Making"}},{"@attributes":{"term":"Internet"}},{"@attributes":{"term":"Town Square"}}]},{"title":"Turn your site into a place people can bump into each other","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/townsquare_release\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2026-06-12T17:30:00+01:00","updated":"2026-06-12T17:30:00+01:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2026-06-12:\/blog\/townsquare_release\/","summary":"<p>Releasing Town Square. Bring back the feeling that real people are browsing your site with you.<\/p>","content":"<p>A few weeks ago, I added a silly, funny experiment on this website. \nI talked about it on this <a href=\"https:\/\/cauenapier.com\/blog\/townsquare\/\">blog post<\/a>. \nIt was a tiny Town Square at the bottom of every page <sup id=\"fnref:2\"><a class=\"footnote-ref\" href=\"#fn:2\">2<\/a><\/sup>.<\/p>\n<p>When you visit the site, you'll see a small strip populated by stick figures. \nEach figure represents another visitor currently browsing the website. \nYou can see what page people are reading, walk around and send messages. \nFor example, you could see someone reading the same article as you and start a discussion about it.<\/p>\n<p>The goal wasn't to build another social network.<\/p>\n<p>It was to bring back a small feeling that the web used to have: the sense that there are actual people on the other side of the screen.<\/p>\n<p>Town Square is intentionally tiny and forgetful. \nThere are no accounts, no profiles, no follower counts, no permanent chat history. \nMessages exist only while people are there to read them.<\/p>\n<p>After several people asked me how they could add this to their own websites, I decided to open source it and provide a public server, so anyone can easily integrate Town Square into their site with no self-hosting required.\nI hope it encourages a few more websites to feel like places instead of pages.<\/p>\n<p>If you would like to host it yourself, fork it or contribute with the project, the repo is <a href=\"https:\/\/github.com\/cauenapier\/TownSquare\/\">https:\/\/github.com\/cauenapier\/TownSquare\/<\/a><\/p>\n<p>If you don't want to (or don't know how to) host it yourself, you can register your website on <a href=\"https:\/\/townsquare.cauenapier.com\/\">Town Square<\/a>.<\/p>\n<p>I have a lot of ideas for what I could to next. It has been a fun, relaxing, small project so far. <\/p>\n<p>Like adding more props for the characters to interact and improving overal user experience on the chat feature.\nBut I'm also very excited about the idea of implementing the functionality to connect your TownSquare with another website, like a neighbour.\nYou would walk to the edge of the site and transport to the neighbour website, creating a network of townsquares.\nLike a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Webring\">Webring<\/a> <sup id=\"fnref:1\"><a class=\"footnote-ref\" href=\"#fn:1\">1<\/a><\/sup><\/p>\n<p>If you like the idea and have requests, changes, or ideas for what Town Square could become, <a href=\"mailto:contact@cauenapier.com?subject=Town%20Square\">send me an email<\/a>. I'd genuinely love to hear from you.<\/p>\n<div class=\"footnote\">\n<hr>\n<ol>\n<li id=\"fn:1\">\n<p>Or the <a href=\"https:\/\/indieweb.org\/IndieWeb_Webring\">Indie Webring<\/a>, as I have in the bottom of my page.&#160;<a class=\"footnote-backref\" href=\"#fnref:1\" title=\"Jump back to footnote 1 in the text\">&#8617;<\/a><\/p>\n<\/li>\n<li id=\"fn:2\">\n<p>Check it at the bottom of this page.&#160;<a class=\"footnote-backref\" href=\"#fnref:2\" title=\"Jump back to footnote 2 in the text\">&#8617;<\/a><\/p>\n<\/li>\n<\/ol>\n<\/div>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Making"}},{"@attributes":{"term":"Internet"}},{"@attributes":{"term":"Town Square"}}]},{"title":"Aphantasia and the Other Senses of the Mind","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/inner_mind_senses\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2026-06-05T00:00:00+01:00","updated":"2026-06-05T00:00:00+01:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2026-06-05:\/blog\/inner_mind_senses\/","summary":"<p>A personal reflection on aphantasia, the \u201cother senses of the mind,\u201d and what it means to remember without seeing. The post explores inner speech, memory, sensory imagination and the unsettling possibility that different minds may experience absence, attachment and recollection in very different ways.<\/p>","content":"<p>The other night, very late, just before sleep, I was talking with my girlfriend and somehow mentioned that I have aphantasia.\nShe didn\u2019t remember what it was, so I explained it.\nThe conversation changed when I told Bia that I cannot see my late grandmother\u2019s face in my mind.\nShe got sad immediately.\nNot in a dramatic way, just genuinely sad for me, because for her the face of someone she loves is something she can call up internally, almost as if it were still there.\nI can't do that.\nOr at least not as vividly as she describes her own mental image.<\/p>\n<p>Until then I had treated aphantasia as a curious fact about myself, not as something that might change the texture of memory, absence and love.\nNot as something that might have shaped my way of thinking, my personality, or even some of my skills.<\/p>\n<h1>Remembering without seeing<\/h1>\n<p>If you have never heard of aphantasia, or of the \"mind's eye,\" try the following exercise:<\/p>\n<ul>\n<li>Close your eyes and imagine your front door.<\/li>\n<li>Can you actually <em>see<\/em> it in your mind?<\/li>\n<li>Can you tell what color it is? Do you see the color in your imagination?<\/li>\n<li>Can you count the windows?<\/li>\n<li>Can you open the door in your mind and see the inside of the house?<\/li>\n<li>Now ask yourself:<ul>\n<li>Are you <em>looking at an image<\/em> of your front door?<\/li>\n<li>Or are you simply <em>remembering facts<\/em> about your front door?<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Aphantasia is not a memory problem.\nMost people with aphantasia know what things look like.\nThe difference is that they remember without visualizing, much like knowing the capital of France without seeing a map of France.<\/p>\n<h1>Beyond the mind's eye<\/h1>\n<p>During that conversation, I also realized that I don't have a strong mind's nose or a strong mind's ear.\nI can't recall or recreate a specific smell on demand.\nI had never really thought about that before.\nCan other people vividly remember a smell and almost feel it again?\nCan they hear someone's voice in their mind with something close to real clarity?<\/p>\n<p>I really can't.\nBut I do have a very loud mind's voice.\nFor most of the day, there is a strong voice in my head.\nI talk to myself a lot, or rather, I hear my thoughts.\nThey occupy a big part of my mental space.<\/p>\n<h1>Memory without replay<\/h1>\n<p>Not having a mind's eye may be part of why I often struggle to remember certain things unless people give me other cues, signals that help me retrieve the memory.\nFor example, when Bia asks whether I remember a restaurant or some place we went to a while ago, I usually need extra hints.\nWhat else did we do that day? What did we eat? What happened before or after?<\/p>\n<p>That is my experience of memory. \nLess replay, more reconstruction.\nI often get back to a memory through context, sequence and association, not through a vivid sensory scene.<\/p>\n<h1>What research seems to suggest<\/h1>\n<p>Some research<sup id=\"fnref:1\"><a class=\"footnote-ref\" href=\"#fn:1\">1<\/a><\/sup> suggests that people with aphantasia rely more on semantic memory, abstract concepts and verbal reasoning than on mental imagery, visual simulation, or sensory recollection.<\/p>\n<p>That matches my personal experience.\nNot only in my work, but in my general way of thinking, I tend to operate through concepts, facts and relationships between concepts.\nWhile my girlfriend can visualize how a new kitchen will look, I think more about how the workflow in that kitchen will function.<\/p>\n<p>Several studies also suggest that people with aphantasia often have:<\/p>\n<ul>\n<li>less detailed autobiographical memories<\/li>\n<li>less vivid recollection of personal events<\/li>\n<li>reduced ability to mentally relive past experiences<\/li>\n<\/ul>\n<p>I definitely relate to that.\nI notice it when people ask me to tell a story from my past.\nWhen I remember an event, it is often thin. Factual. Not very sensory.\nSometimes it even feels emotionally flatter in the retelling than it probably was in the moment.<\/p>\n<p>There is also some evidence<sup id=\"fnref:2\"><a class=\"footnote-ref\" href=\"#fn:2\">2<\/a><\/sup> that aphantasia can be associated with reduced emotional intensity in certain situations.<\/p>\n<p>That makes intuitive sense to me.\nMental images seem to amplify emotion.\nThere is a lot of research showing that, in many situations, the brain and body respond to imagined scenarios in ways that partially overlap with real ones.\nIf your mental images are vivid, they may have a stronger emotional effect than if they are faint or absent.<\/p>\n<p>I haven't found any concrete research about the following, but I wonder whether the intensity or even the form of love, missing someone, or remembering someone can feel different when you cannot replay that person internally in a vivid sensory way.<\/p>\n<h1>What may become stronger instead<\/h1>\n<p>This part is more speculative, but it still feels true to my experience.\nI do feel that I can hold a conceptual map of a complex system, along with its dependencies and effects, more easily than some people who think more visually.<\/p>\n<p>I don't mean that people with aphantasia are inherently more logical or analytical.\nI only mean that when one mode of inner experience is weaker, other modes may end up doing more of the work.\nIn my case, verbal and conceptual thinking seem to carry a lot.<\/p>\n<p>While looking into this, I found a small but interesting <a href=\"https:\/\/www.reddit.com\/r\/Aphantasia\/comments\/6inlzd\/aphantasiacs_do_you_have_other_cognitive\/?utm_source=chatgpt.com\">Reddit thread of aphantasic people describing their own \"skills\"<\/a>.<\/p>\n<h1>How different minds feel from the inside<\/h1>\n<p>One of the things I keep coming back to is how rarely we talk about our inner lives, about what memory, imagination and thought actually feel like from the inside.\nWe assume other people remember the way we remember, imagine the way we imagine and miss people the way we miss them.\nOften they don't.<\/p>\n<p>That, more than aphantasia itself, is what stayed with me after that conversation with Bia.\nWhat I had treated as a curious quirk may shape the texture of memory, absence and attachment more than I realized.<\/p>\n<p>The seed for this post was planted months ago, when I read <a href=\"https:\/\/aethermug.com\/posts\/my-head-as-a-lake\">My Head as a Lake<\/a> and later <a href=\"https:\/\/aethermug.com\/posts\/a-list-of-introspective-descriptions\">A List of Introspective Descriptions<\/a>. Both stayed with me because they try to describe something we rarely compare directly: what it feels like to have a mind from the inside.\nIf you are curious about this kind of thing, especially the strange ways inner experience can differ from person to person, that list is worth exploring.<\/p>\n<p>Maybe we would understand ourselves and each other, a little better if we asked more often what it actually feels like to be inside someone else's mind.<\/p>\n<div class=\"footnote\">\n<hr>\n<ol>\n<li id=\"fn:1\">\n<p><a href=\"https:\/\/pmc.ncbi.nlm.nih.gov\/articles\/PMC8186241\/\">Behavioral and Neural Signatures of Visual Imagery Vividness Extremes<\/a>&#160;<a class=\"footnote-backref\" href=\"#fnref:1\" title=\"Jump back to footnote 1 in the text\">&#8617;<\/a><\/p>\n<\/li>\n<li id=\"fn:2\">\n<p><a href=\"https:\/\/www.cell.com\/trends\/cognitive-sciences\/pdf\/S1364-6613(24)00034-2.pdf\">Aphantasia and hyperphantasia: exploring imagery vividness extremes (Adam Zeman, Trends in Cognitive Sciences, 2024)<\/a>&#160;<a class=\"footnote-backref\" href=\"#fnref:2\" title=\"Jump back to footnote 2 in the text\">&#8617;<\/a><\/p>\n<\/li>\n<\/ol>\n<\/div>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Mind"}}]},{"title":"A Town Square for my site","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/townsquare\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2026-05-12T00:00:00+01:00","updated":"2026-05-12T00:00:00+01:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2026-05-12:\/blog\/townsquare\/","summary":"<p>A tiny town square at the bottom of my site where visitors can see each other and chat in real time.<\/p>","content":"<p>The internet feels strangely empty, despite all the new content being published everywhere.\nIt is crowded, but lonely.\nI can't really feel the human presence as I used to.\nI miss opening some random forum or public chat and finding other people who might share the same interests.\nI wanted my site to feel more alive. \nSo I decided to build a town square for my site, where serendipity can bring people together and let them chat. <\/p>\n<p>I wanted presence, not a social network.\nSomething lightweight and temporary.\nA small reminder that there are other people here too.<\/p>\n<p>You open the site and see a few other visitors wandering around at the bottom of the page.<br>\nMaybe someone says hello. \nMaybe nobody talks at all.<br>\nEither way, the site feels inhabited.\nIt's a little space on the internet where people can chat, like a small caf\u00e9, or a small town square.<\/p>\n<p>If you scroll down, you will see an orange stick figure. That's you!\n<img alt=\"You\" src=\"https:\/\/cauenapier.com\/images\/you_townsquare.png\"><\/p>\n<p>All the other people online on the site will appear as black or grey figures.\nPeople that are on the same page as you will be in black. \nPeople that are reading other pages will be in gray and if you hover their character you can see which page they are reading.\n<img alt=\"Someone Else Reading\" src=\"https:\/\/cauenapier.com\/images\/someone_else_reading_townsquare.png\"><\/p>\n<p>To identify those tab hoarders, like me, you will see the character sleeping whenever they don't have the tab active.\n<img alt=\"Someone Else Sleeping\" src=\"https:\/\/cauenapier.com\/images\/someone_else_sleeping_townsquare.png\"><\/p>\n<p>You can walk around and chat freely.\nTo walk, use the left and right arrows if you are on a computer, or drag your figure if you are on touch devices.\nTo say anything, click the \ud83d\udcac button, type something, press enter.<\/p>\n<p>This presence functionality is intentionally tiny and forgetful. \nNo accounts, no cookies, no analytics (just a WebSocket connection that broadcasts a single number and the path of the page you're on).\nAnything you type into the chat bubble is sent to people currently on the site and then disappears.<\/p>\n<p>I'm hoping people will discover this functionality and bump into each other.\nMy goal will be reached if at least one meaningful conversation or connection happens through this functionality.<\/p>\n<h2>Update: 2026-06-05<\/h2>\n<p>I changed how the town square handles multiple tabs and page changes.\nBefore, every open tab counted as a separate visitor, so one person with a few tabs open could appear as several stick figures.<\/p>\n<p>Now the site groups tabs from the same browser into one character.\nIf any tab is active, the person appears awake.\nIf all tabs are inactive, they appear asleep after a short delay.<\/p>\n<h2>Update: 2026-06-06<\/h2>\n<p>Some people reached out asking how they could have this town square in their own website, so I'm now working on open-sourcing it.\nIf you are insterested, please reach out. I would love to hear your opinion!<\/p>\n<h2>Update 2026-06-16<\/h2>\n<p>Townsquare was already released. You can read the release <a href=\"https:\/\/cauenapier.com\/blog\/townsquare_release\/\">blog post here<\/a>.\nAnd you can register your own <a href=\"https:\/\/townsquare.cauenapier.com\/\">website here<\/a><\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Making"}},{"@attributes":{"term":"Internet"}},{"@attributes":{"term":"Town Square"}}]},{"title":"Publio. Building a Website Without \u201cBuilding\u201d It","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/publio\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2026-02-28T00:00:00+00:00","updated":"2026-02-28T00:00:00+00:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2026-02-28:\/blog\/publio\/","summary":"<p>A calm, simple AI website builder that lets you create a professional website just by describing it.<\/p>","content":"<p>We can train AI models on a laptop. We can deploy global infrastructure in minutes. But if a consultant, therapist, or small business owner wants a simple, professional website, the process still feels heavier than it should.<\/p>\n<p>Not impossible. Just heavier.<\/p>\n<p>The moment someone decides to create a website, they enter a world of tools they never asked for. Hosting, templates, builders, SEO settings, layout decisions. What started as \u201cI need a website\u201d quietly turns into \u201cI need to learn how to build one.\u201d<\/p>\n<p>Most professionals don\u2019t want that. They don\u2019t want to become designers. They don\u2019t want to compare website builders. They want a clean, structured website that represents who they are and what they do.\nThat tension is what led me to build Publio.<\/p>\n<h2>What Publio Is<\/h2>\n<p>Publio is a conversational AI website builder. \nYou describe your website. It publishes it.<\/p>\n<p>Instead of dragging blocks or configuring settings, you write something like:<\/p>\n<blockquote>\n<p>\u201cI\u2019m a consultant helping startups with positioning. I want a minimal website with an About section, Services and a contact form.\u201d<\/p>\n<\/blockquote>\n<p>And you get a real website. Online. Shareable.<\/p>\n<p>In that sense, Publio is less a traditional no-code website tool and more a simple website creator powered by language. If you can describe what you want, you can create a website with AI, without touching code or dealing with dashboards.<\/p>\n<h2>Why Simplicity Matters<\/h2>\n<p>Most website builders compete on flexibility. More templates. More customization. More control.<\/p>\n<p>Publio does the opposite. It is intentionally opinionated. Structured. Minimal.<\/p>\n<p>The assumption is that most professionals don\u2019t need pixel-level control. They need clarity. They need something that looks professional by default. They need a website without coding that doesn\u2019t require constant decisions.<\/p>\n<p>Constraints remove friction. Fewer choices mean faster progress. And in many cases, speed is what matters.<\/p>\n<h2>Websites in the AI Era<\/h2>\n<p>There\u2019s another reason this matters now.<\/p>\n<p>As AI systems increasingly mediate how people search and discover services, structured websites become more important. Search engines and AI assistants understand clear, well-organized websites better than scattered social posts.<\/p>\n<p>Your website becomes your stable identity layer. The canonical place that explains who you are, what you offer and how to contact you.<\/p>\n<p>Publio lowers the barrier to having that layer.<\/p>\n<h2>The Quiet Value: Independence<\/h2>\n<p>On the surface, Publio generates a straightforward professional website: homepage, services, contact, optional custom domain. \nBut the deeper value is independence.<\/p>\n<p>Not waiting for a developer to change a sentence. Not postponing updates because the interface feels overwhelming. Not feeling locked into a tool you don\u2019t enjoy using.\nThere\u2019s something powerful about being able to say, \u201cI can update my own website,\u201d even if that update is just rewriting a paragraph in a chat.<\/p>\n<p>Publio is still early and intentionally simple.<\/p>\n<p>It doesn\u2019t try to replace complex website builders. It exists for a specific moment: when someone thinks, \u201cI need a website,\u201d and hesitates because it feels like a project.<\/p>\n<p>If creating a website with AI can feel almost invisible, maybe more people actually move forward.<\/p>\n<p>If you\u2019re curious, you can try it at\n<a href=\"https:\/\/publio.site\">https:\/\/publio.site<\/a><\/p>\n<p>And as always, I\u2019m more interested in reducing friction than adding features.<\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Making"}},{"@attributes":{"term":"AI"}}]},{"title":"\u201cJust one more feature\u201d is my new \u201cjust one more turn\u201d","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/just-one-more\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2026-02-10T00:00:00+00:00","updated":"2026-02-10T00:00:00+00:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2026-02-10:\/blog\/just-one-more\/","summary":"<p>I replaced \u201cjust one more turn\u201d with \u201cjust one more feature,\u201d and I\u2019m not sure that\u2019s actually healthier.<\/p>","content":"<p>I stopped playing games without really noticing.<\/p>\n<p>At some point, I realized I wasn\u2019t opening Civilization or Stellaris anymore. Instead, I was spending my evenings building software. What caught my attention wasn\u2019t the change itself, but the language in my head. I started saying things like \u201cjust one more thing\u201d or \u201clet me quickly finish this,\u201d and it immediately reminded me of \u201cjust one more turn.\u201d<\/p>\n<p>Same pattern. Different wrapper.<\/p>\n<p>I enter this tunnel-vision mode when I build. Time disappears. I\u2019m fully focused, calm, almost relaxed. It feels good. It also sometimes pushes aside other responsibilities. My relationship felt it and even my \"actual work\" was impacted. I know I should stop, but there\u2019s always one more fix, one more improvement that feels quick and harmless.<\/p>\n<p>What makes this different from gaming is that it feels legitimate.\nWhen I build, I produce something. There\u2019s an artifact at the end of it. Code exists. A tool exists. It feels useful. There\u2019s much less guilt than when I was gaming, where I knew nothing would remain once I closed the game, apart from this imaginary world in my mind. Building fits much better with the story I tell myself about who I am.<\/p>\n<p>I\u2019ve always seen myself as a builder. My grandfather was a builder. I like creating things, exploring ideas, seeing how far I can push them. Not building makes me feel lazy, like I\u2019m wasting potential. When I stop, I don\u2019t feel rested. I feel useless.<\/p>\n<p>That\u2019s where it starts to get uncomfortable.<\/p>\n<p>A lot of this building avoids harder things. Talking to users. Marketing. Committing to one idea and killing the rest. Facing the possibility that nobody actually cares. As long as I\u2019m building, I\u2019m \u201cbeing productive,\u201d and I don\u2019t have to confront those questions. Motion replaces direction.<\/p>\n<p>The \u201cjust one more feature\u201d loop is almost identical to \u201cjust one more turn.\u201d The difference is moral cover. One is clearly entertainment. The other looks like progress. But the tunnel vision is the same and the voice telling me to pause is the same too.<\/p>\n<p>LLMs and vibe-coding didn\u2019t create this behavior, but they removed a lot of friction from it. It\u2019s easier than ever to explore endlessly, build quickly and never really hit a stopping point. There\u2019s always another direction to try, another idea to prototype. Fewer natural brakes force you to step back and ask where you\u2019re going.<\/p>\n<p>It reminds me of social media. Social media didn\u2019t invent distraction or validation-seeking, it industrialized it. This feels similar, but for builders. Same psychological mechanisms, different audience, much more powerful tools.<\/p>\n<p>If someone says this is just rationalizing procrastination, I think that\u2019s partly true. It <em>is<\/em> still procrastination, but it is wrapped in something productive-looking. It feels better than scrolling or gaming, but I\u2019m no longer sure that means it\u2019s actually moving me forward.<\/p>\n<p>So I\u2019m left with an open question and I don\u2019t have a clean answer yet:\nWhen does productive obsession stop being growth?\nAnd is building without users just another game?<\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Making"}},{"@attributes":{"term":"Mind"}},{"@attributes":{"term":"AI"}}]},{"title":"An Android App for my Obsidian Tasks","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/task-quarry\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2026-01-29T00:00:00+00:00","updated":"2026-01-29T00:00:00+00:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2026-01-29:\/blog\/task-quarry\/","summary":"<p>A simple, straightforward task manager for my Obsidian Vault.<\/p>","content":"<p>For my work vault, I have been experimenting task management with Bases, <a href=\"https:\/\/cauenapier.com\/blog\/tasksinbases\/\">as I previously explained in this post<\/a>.\nIt\u2019s powerful and flexible and it fits my work context well.\nBut for my <strong>personal vault<\/strong>, I've always stuck with the basics: checkboxes and the Tasks plugin.\nIt is simple, quick and lightweight.\nGood enough.<\/p>\n<p>However, I wanted a faster way to glance at my day. \nNo tabs, no digging, no searching across multiple notes or dealing with Dataview queries.\nSince I also use Obsidian for journaling, all the clutter and context-switching started getting in the way.\nManaging tasks there began to feel like I was using the wrong tool.<\/p>\n<p>Plus, I always wanted to develop a mobile app.<\/p>\n<p>So I built Task Quarry. \nA simple, straightforward task manager for my Obsidian Vault.\nIt\u2019s a companion app that scans your vault for tasks and presents them in a clean, Todoist-style interface.<br>\nNo sync. No servers. Your vault stays local and so does your data.<\/p>\n<p>The idea for the name was very simple.\nI was building an app that was parsing a bunch of files in search for tasks.\nDigging through files...\nObsidian is a rock.\nThe two ideas clicked and the name came. \nI am quite happy with it.<\/p>\n<p>This time I haven't really explored for other options. \nSeveral months ago I tried out a similar app.\nBut it was clunky, ugly.\nGiven today's facility to create something new from scratch.\nI allowed myself to code it to myself, the way I wanted.<\/p>\n<p>No data ever leaves your phone.\nYou define where your vault is located.\nThe app scans your vault for tasks.\nIt displays the tasks in the app's view.<\/p>\n<p>Here are some screenshots of the app.<\/p>\n<p>Today's view showing all the tasks that are Due or Scheduled for today.\n<img alt=\"Task Quarry Today's View\" src=\"https:\/\/cauenapier.com\/images\/taskquarry_todayview.jpg\"><\/p>\n<p>Editing a task in the plugin also edits the text in the .md file\n<img alt=\"Task Editing\" src=\"https:\/\/cauenapier.com\/images\/taskquarry_edittask.jpg\"><\/p>\n<p>Notifications to remind you of the day's tasks.\n<img alt=\"Notifications\" src=\"https:\/\/cauenapier.com\/images\/taskquarry_notification.jpg\"><\/p>\n<p>Custom views and custom queries\n<img alt=\"Custom Queries\" src=\"https:\/\/cauenapier.com\/images\/taskquarry_customqueries.jpg\"><\/p>\n<p>I\u2019m still gathering Android beta testers before publishing on the Play Store.\nIf you're an Obsidian user on Android and want to try it out, DM me. I need a few more testers before launch.<\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Making"}},{"@attributes":{"term":"Obsidian"}}]},{"title":"AI Broke the Internet. Weirdos Might Save It","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/the-internet-is-not-quite-dead\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2026-01-27T00:00:00+00:00","updated":"2026-01-27T00:00:00+00:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2026-01-27:\/blog\/the-internet-is-not-quite-dead\/","summary":"<p>Scrolling through AI slop made me nostalgic for the weird, human internet of my teenage years. A rabbit hole into the Indie Web reminded me why blogging matters.<\/p>","content":"<p>Yesterday my girlfriend complained to me about the flood of AI generated videos in her instagram feed.\nHer frustration made me think about how much of what we see online today no longer feels real. \nThat reminded me of something I stumbled on a while ago. \n<a href=\"https:\/\/en.wikipedia.org\/wiki\/Dead_Internet_theory\">The Dead Internet theory<\/a> , which is a \"conspiracy\" theory that the internet is mainly bots creating and managing content.\nWhat makes it a conspiracy theory is the claim that this is all part of a coordinated effort to manipulate people.<\/p>\n<p>Even if the theory might go a bit too far for my taste, it does touch something real.\nThese days, the internet does feel \"deader\" than before.\nThe internet used to feel chaotic, weird, alive. Now it just feels auto-generated.\nYou open social media and it is all there.\nCloned voices, deepfaked faces, physics-defying movement, hands with too many fingers.\nSome are funny, even charming. \nBut others feel subtly manipulative.\nOr worse, deeply unsettling.\nSeveral make me question the future of humanity, or at least the future of the internet.<\/p>\n<p>It is not just social media. AI junk is everywhere now.\nYou can easily spot it on news websites too. Low effort, AI-written articles with clunky phrasing and lack or originality.\nAnd of course, the headlines that are pure click-bait.\nDramatic and vague. <\/p>\n<p>I don't feel like spending much more time surfing<sup id=\"fnref:1\"><a class=\"footnote-ref\" href=\"#fn:1\">1<\/a><\/sup> the internet as I used to. \nIt makes me want to close the browser and do something analog.\nI miss content that is less synthetic, I miss the awkward and inspiring.\nThere\u2019s a slow but growing push to revive a more social, personal internet.\nWith all its weirdness and personality. \nI recently discovered through Robb Knight's post, <a href=\"https:\/\/rknight.me\/blog\/the-internet-is-cool-actually\/\">The Internet Is Cool Actually<\/a>, the <a href=\"https:\/\/goodinternetmagazine.com\/\">Good Internet Magazine<\/a>, which consequently made me fall in a rabbit hole.\nI discovered the <a href=\"https:\/\/indieweb.org\/\">Indie Web<\/a> with its connection of independent and personal websites and many other communities of personal\/indie websites, like <a href=\"https:\/\/32bit.cafe\/\">32bit Cafe<\/a>.\nIt gave me a feeling I hadn\u2019t had in years. \nThat sense of open-ended curiosity and excitement.\nExploring the internet without having an algorithm breathing down your neck.<\/p>\n<p>Somehow, <a href=\"https:\/\/xn--sr8hvo.ws\/random?ref=cauenapier.com\">this random link<\/a> ended up taking over my whole afternoon.\nEach click drops you into someone else's digital corner.\nI spent the next couple of hours exploring personal websites full of side projects, niche interests and blog posts about everything and nothing.\nThis afternoon, I felt like I was 15 again. \nBlogging on my old Blogger site<sup id=\"fnref:2\"><a class=\"footnote-ref\" href=\"#fn:2\">2<\/a><\/sup>, reading friends\u2019 posts, getting lost in rabbit holes, joining conversations in forums.\nThose discoveries reminded me why I started blogging in the first place. \nTo connect, to share, to be human online.\nMake the internet more human again.\nPost, share, connect.\nReach out to the people that you read online.\nLet's keep the heartbeat of the internet.<\/p>\n<div class=\"footnote\">\n<hr>\n<ol>\n<li id=\"fn:1\">\n<p>Now that I think of it, calling it 'surfing the internet' definitely puts a timestamp on you.&#160;<a class=\"footnote-backref\" href=\"#fnref:1\" title=\"Jump back to footnote 1 in the text\">&#8617;<\/a><\/p>\n<\/li>\n<li id=\"fn:2\">\n<p>I wish I had archived it somehow. I've searched all over internet but couldn't find any remains of this old blog. If you know any way to recover it, please reach out!&#160;<a class=\"footnote-backref\" href=\"#fnref:2\" title=\"Jump back to footnote 2 in the text\">&#8617;<\/a><\/p>\n<\/li>\n<\/ol>\n<\/div>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Internet"}},{"@attributes":{"term":"AI"}}]},{"title":"Using Obsidian Bases for Tasks","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/tasksinbases\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2025-08-25T00:00:00+01:00","updated":"2025-08-25T00:00:00+01:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2025-08-25:\/blog\/tasksinbases\/","summary":"<p>WHy and How I switched to Bases for my tasks management in Obsidian<\/p>","content":"<p>I've been using Obsidian's <a href=\"https:\/\/publish.obsidian.md\/tasks\/Introduction\">Task plugin<\/a> for several years already. \nI came to really enjoy it, but there were a couple of things that I wished were different.<\/p>\n<p>The main thing, especially in my work context, was that Tasks were \"only\" a checkbox line with a lot of metadata crammed into them.\nIf you like using tags or other structured info, it gets cluttered quickly.\nI wanted a way to organize and filter my tasks more flexibly.<\/p>\n<p>When Obsidian released the new <a href=\"https:\/\/help.obsidian.md\/bases\"><strong>Bases<\/strong><\/a> feature, I realized I could use it for my tasks too.\nFor the past couple of months, I\u2019ve been gradually replacing the Tasks plugin with a Base-powered system and I\u2019m really happy with the result.<\/p>\n<h2>Why Bases?<\/h2>\n<p>Now, every task can be a self contained note, not just a single line. \nInside it, I can add as much information I want: subtasks, comments, instructions, links to related notes, etc.\nBut more importantly, I can define <strong>custom properties<\/strong> and structure the data however I need.<\/p>\n<p>Bases bring a database-like layer to Obsidian. That means I can create a task structure tailored to my workflow.<\/p>\n<p>For example, I use properties to link my notes to projects, systems, dependecies, etc.\nThis lets me filter tasks based on what project or system they relate to, or see what\u2019s blocked, overdue, or due soon.<\/p>\n<h2>My Task Template<\/h2>\n<p>Here's the frontmatter I currently use for Task template:<\/p>\n<div class=\"highlight has-code-toolbar has-code-lang\" data-lang=\"md\"><div class=\"code-block-toolbar\"><span class=\"code-block-label\">Markdown<\/span><button type=\"button\" class=\"code-copy-btn\" aria-label=\"Copy code to clipboard\">Copy<\/button><\/div><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>---\npriority:\neffort:\ndue_date: &quot;&quot;\nscheduled_date: &quot;&quot;\ncategory: &quot;[[Task.base]]&quot;\nstatus: ToDo\ndepends_on: []\nrelated_project:\nrelated_system:\n<span class=\"gu\">done_date:<\/span>\n<span class=\"gu\">---<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>I can add any fields I want in the future, but this has been good enough for now.<\/p>\n<h2>Task Views in My Base<\/h2>\n<p>I currently have <strong>1 Task Base<\/strong> with <strong>8 different views<\/strong>, used in different places.<\/p>\n<p>For example, in my Daily template, I want to see all tasks that are either:\n- due today\n- scheduled for today\n- or overdue<\/p>\n<p>Here's a sample of the views I use:\n- All\n- Tasks for Daily\n- Overdue\n- Behind Schedule\n- Due in 7 Days\n- Scheduled for 7 Days\n- Due Today\n- Scheduled for Today<\/p>\n<p>For example, the \u201cTasks for Daily\u201d view filters out completed or cancelled tasks and shows everything scheduled\/due today or earlier.<\/p>\n<p><img alt=\"BaseTasksFilter\" src=\"https:\/\/cauenapier.com\/images\/BaseTasksFilter.png\"><\/p>\n<p>And in my Daily note, I just reference that view:<\/p>\n<div class=\"highlight has-code-toolbar has-code-lang\" data-lang=\"md\"><div class=\"code-block-toolbar\"><span class=\"code-block-label\">Markdown<\/span><button type=\"button\" class=\"code-copy-btn\" aria-label=\"Copy code to clipboard\">Copy<\/button><\/div><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"gh\"># Tasks<\/span>\n![[Task.base#Tasks for Daily Template]]\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>It automatically renders a table with the relevant tasks.<\/p>\n<h2>Calculating Task Urgency<\/h2>\n<p>One thing I really liked in the Tasks plugin was the <strong>Urgency<\/strong> score. Which is a dynamic number based on due dates, priority, etc.\nYou can recreate that with a Formula field in Bases and even go beyond what Tasks offered and define the properties and weights you want.<\/p>\n<p>Here\u2019s the formula I\u2019m using to assign an urgency score. Overdue tasks are weighted more heavily:<\/p>\n<div class=\"highlight has-code-toolbar has-code-lang\" data-lang=\"js\"><div class=\"code-block-toolbar\"><span class=\"code-block-label\">JavaScript<\/span><button type=\"button\" class=\"code-copy-btn\" aria-label=\"Copy code to clipboard\">Copy<\/button><\/div><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"p\">(<\/span><span class=\"nx\">IF<\/span><span class=\"p\">(<\/span><span class=\"nx\">priority<\/span><span class=\"p\">.<\/span><span class=\"nx\">isEmpty<\/span><span class=\"p\">(),<\/span><span class=\"mf\">0<\/span><span class=\"p\">,<\/span><span class=\"nx\">priority<\/span><span class=\"o\">*<\/span><span class=\"mf\">2<\/span><span class=\"p\">)<\/span>\n<span class=\"o\">+<\/span>\n<span class=\"mf\">3<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"nx\">IF<\/span><span class=\"p\">(<\/span>\n<span class=\"w\">      <\/span><span class=\"nx\">due_date<\/span><span class=\"p\">.<\/span><span class=\"nx\">isEmpty<\/span><span class=\"p\">(),<\/span>\n<span class=\"w\">      <\/span><span class=\"mf\">0<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">      <\/span><span class=\"nx\">IF<\/span><span class=\"p\">(<\/span>\n<span class=\"w\">        <\/span><span class=\"nx\">today<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"nx\">due_date<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">        <\/span><span class=\"mf\">1<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">        <\/span><span class=\"nx\">IF<\/span><span class=\"p\">(<\/span>\n<span class=\"w\">          <\/span><span class=\"p\">(<\/span><span class=\"nx\">today<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"nx\">due_date<\/span><span class=\"p\">).<\/span><span class=\"nx\">days<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">0<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">          <\/span><span class=\"mf\">2<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mf\">0.2<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"nx\">MIN<\/span><span class=\"p\">((<\/span><span class=\"nx\">today<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"nx\">due_date<\/span><span class=\"p\">).<\/span><span class=\"nx\">days<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mf\">60<\/span><span class=\"p\">),<\/span>\n<span class=\"w\">          <\/span><span class=\"mf\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"w\"> <\/span><span class=\"p\">((<\/span><span class=\"nx\">due_date<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"nx\">today<\/span><span class=\"p\">()).<\/span><span class=\"nx\">days<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mf\">1<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">)<\/span>\n<span class=\"o\">+<\/span>\n<span class=\"nx\">IF<\/span><span class=\"p\">(<\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">scheduled_date<\/span><span class=\"p\">.<\/span><span class=\"nx\">isEmpty<\/span><span class=\"p\">(),<\/span>\n<span class=\"w\">  <\/span><span class=\"mf\">0<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">IF<\/span><span class=\"p\">(<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">today<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"nx\">scheduled_date<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">    <\/span><span class=\"mf\">2<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">IF<\/span><span class=\"p\">(<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">(<\/span><span class=\"nx\">today<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"nx\">scheduled_date<\/span><span class=\"p\">).<\/span><span class=\"nx\">days<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">0<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">      <\/span><span class=\"mf\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mf\">0.2<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"nx\">MIN<\/span><span class=\"p\">((<\/span><span class=\"nx\">today<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"nx\">scheduled_date<\/span><span class=\"p\">).<\/span><span class=\"nx\">days<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mf\">60<\/span><span class=\"p\">),<\/span>\n<span class=\"w\">      <\/span><span class=\"mf\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"w\"> <\/span><span class=\"p\">((<\/span><span class=\"nx\">scheduled_date<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"nx\">today<\/span><span class=\"p\">()).<\/span><span class=\"nx\">days<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mf\">1<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">  <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">)<\/span>\n<span class=\"p\">).<\/span><span class=\"nx\">round<\/span><span class=\"p\">(<\/span><span class=\"mf\">1<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>You can tweak the weights depending on how aggressive you want it to be with deadlines.<\/p>\n<h2>Auto-Populating the Done Date<\/h2>\n<p>One feature I missed from the Tasks plugin was the auto-filled <code>done_date<\/code> when checking off a task.<\/p>\n<p>I created a small custom plugin for this. It's very simple: when the frontmatter <code>status<\/code> becomes <code>Done<\/code>, it sets the <code>done_date<\/code> to today\u2019s date. If you uncheck it, the <code>done_date<\/code> gets cleared.<\/p>\n<p>Here's the plugin:<\/p>\n<p>manifest.json<\/p>\n<div class=\"highlight has-code-toolbar has-code-lang\" data-lang=\"json\"><div class=\"code-block-toolbar\"><span class=\"code-block-label\">JSON<\/span><button type=\"button\" class=\"code-copy-btn\" aria-label=\"Copy code to clipboard\">Copy<\/button><\/div><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span>\n<span class=\"normal\">3<\/span>\n<span class=\"normal\">4<\/span>\n<span class=\"normal\">5<\/span>\n<span class=\"normal\">6<\/span>\n<span class=\"normal\">7<\/span>\n<span class=\"normal\">8<\/span>\n<span class=\"normal\">9<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"p\">{<\/span>\n<span class=\"err\">\u00a0<\/span><span class=\"w\"> <\/span><span class=\"nt\">&quot;id&quot;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;date-when-status-done&quot;<\/span><span class=\"p\">,<\/span>\n<span class=\"err\">\u00a0<\/span><span class=\"w\"> <\/span><span class=\"nt\">&quot;name&quot;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Date When Status Done&quot;<\/span><span class=\"p\">,<\/span>\n<span class=\"err\">\u00a0<\/span><span class=\"w\"> <\/span><span class=\"nt\">&quot;version&quot;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;1.0.1&quot;<\/span><span class=\"p\">,<\/span>\n<span class=\"err\">\u00a0<\/span><span class=\"w\"> <\/span><span class=\"nt\">&quot;minAppVersion&quot;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;1.9.10&quot;<\/span><span class=\"p\">,<\/span>\n<span class=\"err\">\u00a0<\/span><span class=\"w\"> <\/span><span class=\"nt\">&quot;description&quot;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;When frontmatter `status` becomes `Done`, set `done_date` to today&#39;s date.&quot;<\/span><span class=\"p\">,<\/span>\n<span class=\"err\">\u00a0<\/span><span class=\"w\"> <\/span><span class=\"nt\">&quot;author&quot;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;you&quot;<\/span><span class=\"p\">,<\/span>\n<span class=\"err\">\u00a0<\/span><span class=\"w\"> <\/span><span class=\"nt\">&quot;isDesktopOnly&quot;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">false<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>main.js<\/p>\n<div class=\"highlight has-code-toolbar has-code-lang\" data-lang=\"js\"><div class=\"code-block-toolbar\"><span class=\"code-block-label\">JavaScript<\/span><button type=\"button\" class=\"code-copy-btn\" aria-label=\"Copy code to clipboard\">Copy<\/button><\/div><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span>\n<span class=\"normal\">64<\/span>\n<span class=\"normal\">65<\/span>\n<span class=\"normal\">66<\/span>\n<span class=\"normal\">67<\/span>\n<span class=\"normal\">68<\/span>\n<span class=\"normal\">69<\/span>\n<span class=\"normal\">70<\/span>\n<span class=\"normal\">71<\/span>\n<span class=\"normal\">72<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">obsidian<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">require<\/span><span class=\"p\">(<\/span><span class=\"s1\">&#39;obsidian&#39;<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">class<\/span><span class=\"w\"> <\/span><span class=\"nx\">DateWhenStatusDone<\/span><span class=\"w\"> <\/span><span class=\"k\">extends<\/span><span class=\"w\"> <\/span><span class=\"nx\">obsidian<\/span><span class=\"p\">.<\/span><span class=\"nx\">Plugin<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">  <\/span><span class=\"kr\">constructor<\/span><span class=\"p\">(<\/span><span class=\"nx\">app<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">manifest<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">super<\/span><span class=\"p\">(<\/span><span class=\"nx\">app<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">manifest<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">statusProp<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;status&#39;<\/span><span class=\"p\">;<\/span><span class=\"w\">       <\/span><span class=\"c1\">\/\/ watch this frontmatter key<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">doneValue<\/span><span class=\"w\">  <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;Done&#39;<\/span><span class=\"p\">;<\/span><span class=\"w\">         <\/span><span class=\"c1\">\/\/ trigger value<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">stampProp<\/span><span class=\"w\">  <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;done_date&#39;<\/span><span class=\"p\">;<\/span><span class=\"w\">    <\/span><span class=\"c1\">\/\/ field to write\/clear<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">dateFormat<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;YYYY-MM-DD&#39;<\/span><span class=\"p\">;<\/span><span class=\"w\">   <\/span><span class=\"c1\">\/\/ date format<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">lastSeen<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"ow\">new<\/span><span class=\"w\"> <\/span><span class=\"nb\">Map<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">  <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">  <\/span><span class=\"k\">async<\/span><span class=\"w\"> <\/span><span class=\"nx\">onload<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nx\">workspace<\/span><span class=\"p\">.<\/span><span class=\"nx\">onLayoutReady<\/span><span class=\"p\">(()<\/span><span class=\"w\"> <\/span><span class=\"p\">=&gt;<\/span><span class=\"w\"> <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">_scanAll<\/span><span class=\"p\">());<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">registerEvent<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nx\">metadataCache<\/span><span class=\"p\">.<\/span><span class=\"nx\">on<\/span><span class=\"p\">(<\/span><span class=\"s1\">&#39;changed&#39;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">=&gt;<\/span><span class=\"w\"> <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">_handleFile<\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">)));<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">registerEvent<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nx\">vault<\/span><span class=\"p\">.<\/span><span class=\"nx\">on<\/span><span class=\"p\">(<\/span><span class=\"s1\">&#39;modify&#39;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">=&gt;<\/span><span class=\"w\"> <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">_handleFile<\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">)));<\/span>\n<span class=\"w\">  <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">  <\/span><span class=\"nx\">_scanAll<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">files<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nx\">vault<\/span><span class=\"p\">.<\/span><span class=\"nx\">getMarkdownFiles<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">f<\/span><span class=\"w\"> <\/span><span class=\"k\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">files<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">_remember<\/span><span class=\"p\">(<\/span><span class=\"nx\">f<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">  <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">  <\/span><span class=\"nx\">_remember<\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">fm<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">_fm<\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">cur<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">_readStatus<\/span><span class=\"p\">(<\/span><span class=\"nx\">fm<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">lastSeen<\/span><span class=\"p\">.<\/span><span class=\"nx\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">.<\/span><span class=\"nx\">path<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">cur<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">  <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">  <\/span><span class=\"nx\">_fm<\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">cache<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nx\">metadataCache<\/span><span class=\"p\">.<\/span><span class=\"nx\">getFileCache<\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">cache<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">cache<\/span><span class=\"p\">.<\/span><span class=\"nx\">frontmatter<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">?<\/span><span class=\"w\"> <\/span><span class=\"nx\">cache<\/span><span class=\"p\">.<\/span><span class=\"nx\">frontmatter<\/span><span class=\"w\"> <\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{};<\/span>\n<span class=\"w\">  <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">  <\/span><span class=\"nx\">_readStatus<\/span><span class=\"p\">(<\/span><span class=\"nx\">fm<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">v<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">fm<\/span><span class=\"w\"> <\/span><span class=\"o\">?<\/span><span class=\"w\"> <\/span><span class=\"nx\">fm<\/span><span class=\"p\">[<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">statusProp<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">undefined<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nb\">Array<\/span><span class=\"p\">.<\/span><span class=\"nx\">isArray<\/span><span class=\"p\">(<\/span><span class=\"nx\">v<\/span><span class=\"p\">))<\/span><span class=\"w\"> <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"nx\">v<\/span><span class=\"p\">.<\/span><span class=\"nx\">join<\/span><span class=\"p\">(<\/span><span class=\"s1\">&#39;, &#39;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"nx\">v<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">  <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">  <\/span><span class=\"k\">async<\/span><span class=\"w\"> <\/span><span class=\"nx\">_handleFile<\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"ow\">instanceof<\/span><span class=\"w\"> <\/span><span class=\"nx\">obsidian<\/span><span class=\"p\">.<\/span><span class=\"nx\">TFile<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"p\">.<\/span><span class=\"nx\">extension<\/span><span class=\"w\"> <\/span><span class=\"o\">!==<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;md&#39;<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">return<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">fm<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">_fm<\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">path<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"p\">.<\/span><span class=\"nx\">path<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">prev<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">lastSeen<\/span><span class=\"p\">.<\/span><span class=\"nx\">get<\/span><span class=\"p\">(<\/span><span class=\"nx\">path<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">cur<\/span><span class=\"w\">  <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">_readStatus<\/span><span class=\"p\">(<\/span><span class=\"nx\">fm<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">prev<\/span><span class=\"w\"> <\/span><span class=\"o\">===<\/span><span class=\"w\"> <\/span><span class=\"nx\">cur<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">return<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">lastSeen<\/span><span class=\"p\">.<\/span><span class=\"nx\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">path<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">cur<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">isDone<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"ow\">typeof<\/span><span class=\"w\"> <\/span><span class=\"nx\">cur<\/span><span class=\"w\"> <\/span><span class=\"o\">===<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;string&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">cur<\/span><span class=\"p\">.<\/span><span class=\"nx\">trim<\/span><span class=\"p\">().<\/span><span class=\"nx\">toLowerCase<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">===<\/span><span class=\"w\"> <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">doneValue<\/span><span class=\"p\">.<\/span><span class=\"nx\">toLowerCase<\/span><span class=\"p\">();<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">isDone<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">      <\/span><span class=\"c1\">\/\/ Status just became Done \u2192 set today&#39;s date<\/span>\n<span class=\"w\">      <\/span><span class=\"k\">await<\/span><span class=\"w\"> <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nx\">fileManager<\/span><span class=\"p\">.<\/span><span class=\"nx\">processFrontMatter<\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">frontmatter<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">=&gt;<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">m<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"ow\">typeof<\/span><span class=\"w\"> <\/span><span class=\"nb\">window<\/span><span class=\"w\"> <\/span><span class=\"o\">!==<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;undefined&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">moment<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">?<\/span><span class=\"w\"> <\/span><span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">moment<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">null<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">today<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">m<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">m<\/span><span class=\"p\">.<\/span><span class=\"nx\">format<\/span><span class=\"w\"> <\/span><span class=\"o\">?<\/span><span class=\"w\"> <\/span><span class=\"nx\">m<\/span><span class=\"p\">.<\/span><span class=\"nx\">format<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">dateFormat<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"ow\">new<\/span><span class=\"w\"> <\/span><span class=\"nb\">Date<\/span><span class=\"p\">().<\/span><span class=\"nx\">toISOString<\/span><span class=\"p\">().<\/span><span class=\"nx\">slice<\/span><span class=\"p\">(<\/span><span class=\"mf\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mf\">10<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"nx\">frontmatter<\/span><span class=\"p\">[<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">stampProp<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">today<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">});<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span><span class=\"w\"> <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">      <\/span><span class=\"c1\">\/\/ Status is something else \u2192 clear the done_date<\/span>\n<span class=\"w\">      <\/span><span class=\"k\">await<\/span><span class=\"w\"> <\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nx\">fileManager<\/span><span class=\"p\">.<\/span><span class=\"nx\">processFrontMatter<\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">frontmatter<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">=&gt;<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">frontmatter<\/span><span class=\"p\">.<\/span><span class=\"nx\">hasOwnProperty<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">stampProp<\/span><span class=\"p\">))<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">          <\/span><span class=\"ow\">delete<\/span><span class=\"w\"> <\/span><span class=\"nx\">frontmatter<\/span><span class=\"p\">[<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">stampProp<\/span><span class=\"p\">];<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">});<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">  <\/span><span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">exports<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">DateWhenStatusDone<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>To use it:<\/p>\n<ul>\n<li>Drop this into your Vault's <code>.obsidian\/plugins\/<\/code> folder<\/li>\n<li>Enable it in the <strong>Community Plugins<\/strong> section<\/li>\n<\/ul>\n<p>Now, whenever I mark a task as Done, the date is recorded automatically. And if I change it back to something else, it clears the date.<\/p>\n<h2>Final Thoughts<\/h2>\n<p>Switching from the Tasks plugin to Bases didn't take the amount of energy and time I thought it would.\nThe flexibility I gained is more than worth it.\nTasks as notes (with filters, formulas, properties and views) have made my system feel way more organized and adaptable.<\/p>\n<p>It\u2019s not for everyone, but if you\u2019re someone who likes to tinker and tailor your workflow, Bases open up a lot of possibilities.<\/p>\n<p>Let me know if you\u2019re trying something similar or thinking of switching!<\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Obsidian"}},{"@attributes":{"term":"Making"}}]},{"title":"A Meditation Reminder. Not Magic, But It Helps","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/sit-breathe-think\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2025-04-11T00:00:00+01:00","updated":"2025-04-11T00:00:00+01:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2025-04-11:\/blog\/sit-breathe-think\/","summary":"<p>Meditation helped me clear my head during a chaotic week. Here\u2019s what it reminded me about stress, focus and noticing when your brain is out of breath.<\/p>","content":"<p>I don't get why we don't talk more about meditation.\nMeditation has been a constant tool in my life.\nThere were periods when I forgot about it.\nBut I always come back to it.<\/p>\n<p>At the moment I'm onboarding on a new job and the overwhelming flux of new information can be quite stressful or disorienting.<\/p>\n<p>By the end of the first week I was already dealing with a heavy brain fog.\nI was going from one document to another, without really knowing what I was doing.<\/p>\n<p>I then decided to meditate.\nI took a 10-minute guided meditation. \nA very simple one.\nThroughout the entire meditation, I heard and felt my brain burning.\nAll those thoughts were jumping freely in my mind and initially, it felt like the meditation wasn't doing anything.\nBut that's the most common mistake beginners make.\nNot believing the process.\nYou might not notice it at first, but it is working.<\/p>\n<p>By the end, I felt a small sense of relief.\nA bit more clarity.\nMy thoughts were still a bit blurry, but I could make sense of them.\nI could at least plan my next steps better.<\/p>\n<p>Meditation is a habit.\nThis is where its biggest impact lies.\nThis time, a small meditation session gave me some temporary mental clarity.\nBut when you meditate often, you are less likely to be overwhelmed.\nOr at least you can easily recenter and find clarity.\nThat mental clarity and sharpness last longer.\nMeditation becomes one of the most important tools to deal with stress.<\/p>\n<p>This experience reminded me of something important: recognizing when I\u2019m overwhelmed.\nPerhaps one of the most important lessons we all need to learn is to recognize when we're overwhelmed or stressed.\nThe sooner you realize you've crossed the threshold of a healthy, optimal, mental state, the easier it is to return to it.\nMost people go through it without even realizing.\nOr just accepting it and not doing anything.\nNot even noticing that your performance is rapidly deteriorating.\nWaiting until the weekend, a vacation or a burnout.\nBeing overwhelmed, stressed or mentally overloaded is inevitable and you shouldn't try to avoid it.\nThere is no escape from it.\nBeing overwhelmed is as natural as being breathless after a sprint run.\nAnd sometimes you have to run.\nWhen you are breathless, you sit down, breathe deeply and try to slow down your heart.\nWe should do exactly the same, but to slow down our brains.<\/p>\n<p>On a scale from 1 to 10, how clear are your thoughts? 10 being the most focused and centered.\nIf your answer is below 7, I recommend taking a few minutes to meditate.<\/p>\n<p>If you are new to meditation, try <a href=\"https:\/\/www.youtube.com\/watch?v=ZToicYcHIOU\">this one<\/a>.<\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Mind"}}]},{"title":"Three-Body Problem. Book Review","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/threebodyproblem\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2025-01-25T00:00:00+00:00","updated":"2025-01-25T00:00:00+00:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2025-01-25:\/blog\/threebodyproblem\/","summary":"<p>A good short story in the the format of a book<\/p>","content":"<p><img alt=\"Three-Body Problem Book Cover \" src=\"https:\/\/images-na.ssl-images-amazon.com\/images\/S\/compressed.photo.goodreads.com\/books\/1415428227i\/20518872.jpg\"><\/p>\n<p>The book presents an intriguing premise with very interesting ideas and scientific speculation. However, I struggled to connect with the story and the characters.\nI wasn't hooked and found myself rushing to the end, more out of obligation then enjoyment. The narrative lacked the emotional depth needed to draw me in. The character's motivation felt weak and I simply couldn't get invested in their journey.<\/p>\n<p>Unlike Andy Weir's Project Hail Mary, which kept be fully immersed and kept me reading it for hours non-stop, eager to turn each page, this book felt more like an intellectual curiosity rather then an engaging fiction journey.<\/p>\n<p>While the overarching plot is very promising, the writing and the character development fell short. Perhaps, this book could have been an exceptional short story. <\/p>\n<p>Remembering this is just the first of a four-book series left me more exhausted then excited. I had to push myself to finish and will likely turn to the Netflix adaptation rather then continue reading. <\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Review"}}]},{"title":"Digital Overload and Mental Clutter","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/mentalclutter\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2025-01-21T00:00:00+00:00","updated":"2025-01-21T00:00:00+00:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2025-01-21:\/blog\/mentalclutter\/","summary":"<p>Reviewing how we consume digital contant and how it impacts our brain<\/p>","content":"<h1>Mental Noise<\/h1>\n<p>Have you ever noticed the constant noise inside your head?<\/p>\n<p>Lately, I've been paying closer attention to my thoughts. I've always had a lot of noise inside my head. Over time, I developed a few strategies to silence it\u2014running, gaming and meditating. But recently, this task feels a bit more difficult. Meditation became harder. Gaming is just numbing. Running seems to increase the volume of the noise.<\/p>\n<p>Back in my early twenties, my mind was calmer. At least, I could calm it down more easily. Even though I had a lot of energy, I could close my eyes and hear a single thread of my internal voice. It was easy to silence any other thread going around my head. Now, there are thousands and silencing them is tough. Almost impossible. I refuse to think that this is just a natural effect of age. Everything indicates that the fault is the bombardment of information and how I'm dealing with it.<\/p>\n<h1>Digital Overload and Mental Clutter<\/h1>\n<p>I'm always searching for more information. I check HackerNews too often. I'm opening my RSS feed every hour. I'm going through LinkedIn, X or Bluesky searching for some \"relevant\" information. My bookmark list grows, yet I rarely revisit it. I allowed the online world to invade my mental space and it's now chaos. I want to take it back.<\/p>\n<p>Constantly consuming so much information makes me feel like I'm always behind. That I should be doing that last thing I saw online, that I should experiment with X technology. Imagine a garden with multiple stems, but no real tree. All the stems are competing against each other and consuming all energy, causing all of them to die before any leaf gets to feel the sun.<\/p>\n<h1>Digital Detox<\/h1>\n<p>As I was going through this mental investigation, I remembered the book <a href=\"https:\/\/www.goodreads.com\/book\/show\/40672036-digital-minimalism\">Digital Minimalism<\/a> and started reading immediately. Before New Year's Eve, my girlfriend and I decided to do a January Digital Detox. We both needed a break. We cut the noise. No TV, no Social Media, no news.<\/p>\n<p>It lasted two weeks before we both slipped, for reasons outside the scope of this post. But it was enough time for us to notice the difference in our minds after two weeks of less input and noise.<\/p>\n<p>Slowly, my old habits crept back in. Like a tick, I would grab my phone, unlock it and open my browser. All in search of some \"relevant and useful\" information. Something interesting to read or think about. At first, every time I unlocked my phone, I heard a voice saying, 'Why am I doing this?' After a few days, that voice faded away.<\/p>\n<p>The external noise silenced and numbed my headspace. Luckily, there was still a bit of energy left to realize what was happening.<\/p>\n<h1>Taking Control<\/h1>\n<p>Whenever I found something interesting, I'd throw it in a Read-It-Later App or bookmark it, hoping that I would do something with it later. What will I do with all those hoarded bookmarks and articles? Will I even read them? It is a mix of FOMO and some sort of collector's (if not accumulator's) syndrome.<\/p>\n<p>The problem is, I never do anything with it. I'm replacing doing my own things with accumulating others' content. It's like watching others go to the gym while your muscles atrophy - except that it's your brain. You lose your brain power, you lose any momentum you had, you lose your creativity and your will to do anything on your own.<\/p>\n<p>As Cory wrote in his post, <a href=\"https:\/\/www.coryzue.com\/writing\/headspace\/\">\"Headspace is Perishable\"<\/a>. That's it. If you don't take care of it, it goes bad quickly.<\/p>\n<p>For the weeks I didn't consume as much information, I've managed to cultivate my headspace. Once I started neglecting it, it started rotting again. Just like that piece of pizza forgotten in the fridge for a couple of weeks.<\/p>\n<p>For me, It's time to start cleaning up. In the following days I'll be reviewing my triggers and my motivations. I'll limit the number of times I use my phone or browse the internet with no clear go in mind. <\/p>\n<p>At this point, you should already know that most of the apps and platforms are designed to capture your attention<sup id=\"fnref:1\"><a class=\"footnote-ref\" href=\"#fn:1\">1<\/a><\/sup>, invade your headspace. Take control of your digital habits. Set boundaries, be intentional and protect your mental space. Start small: Delete your social media apps, avoid screens in bed. Small steps like these made it easier to reclaim my focus and creativity. Be careful with what and who you let in.<\/p>\n<div class=\"footnote\">\n<hr>\n<ol>\n<li id=\"fn:1\">\n<p>Your attention is what they sell, after all.&#160;<a class=\"footnote-backref\" href=\"#fnref:1\" title=\"Jump back to footnote 1 in the text\">&#8617;<\/a><\/p>\n<\/li>\n<\/ol>\n<\/div>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Mind"}},{"@attributes":{"term":"Internet"}}]},{"title":"Kakizome","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/kakizome\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2025-01-07T00:00:00+00:00","updated":"2025-01-07T00:00:00+00:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2025-01-07:\/blog\/kakizome\/","summary":"<p>The japanese art of writing yearly resolutions<\/p>","content":"<p>One of the things I love the most is discovering traditions from other cultures and adapt them to my life. Recently, I discovered a new one, thanks to <a href=\"https:\/\/harimus.github.io\/\/2025\/01\/02\/kakizome.html\">Dan's post about Kakizome, the Japanese way of new-years resolution<\/a>. This tradition combines the elegance of Japanese calligraphy with the reflective practice of seting intentions for the year ahead.<\/p>\n<p>First, to truly appreciate this tradition, it is essential to understand the role of calligraphy in the Japanese culture. It is a topic on its own to be explored on another moment. In short, the Shodo (\u66f8\u9053) is the name given to the art of writing, where each stroke placed on the paper is carefully executed in a movement that feels almost meditative.<\/p>\n<p>This meditative approach to writing is at the heart of Kakizome (\u66f8\u304d\u521d\u3081). It literally means \"first writing\" and describes the tradition of writing the first calligraphy at the beginning of the year. The traditions vary between regions and families, but it can be roughly summarised in a ritual where you clear your mind, focus on your wishes for the next year and express them on paper. Ideally in a rice paper called Washi or Kami. <\/p>\n<p>As you focus on your wishes for the year starting, this practice transforms intentions into art. Each person carefully chooses an idiom or proverb to become a poetic representation of the sentiment they wish to carry through the year. It could represent an area of focus or an inspiration. For example, some of the common idioms and phrases used for the Kakizome are:<\/p>\n<div style=\"text-align: center; font-size: 2em;\">\n\u5065\u5fc3\u5065\u4f53\n<\/div>\n<div style=\"text-align: center; font-size: 0.75em;\">\nKenshin Kentai: Which can be translated to \"Healthy mind and body\"\n<\/div>\n\n<div style=\"text-align: center; font-size: 2em;\">\n\u5411\u4e0a\u5fc3\n<\/div>\n<div style=\"text-align: center; font-size: 0.75em;\">\nK\u014dj\u014dshin: Means \"Growth\", representing the person's desire for personal or professional growth.\n<\/div>\n\n<div style=\"text-align: center; font-size: 2em;\">\n\u6311\u6226\n<\/div>\n<div style=\"text-align: center; font-size: 0.75em;\">\nCh\u014dsen: Means \"Challenge\". Which represents a desire to take new opportunities and challenges in the new year.\n<\/div>\n\n<div style=\"text-align: center; font-size: 2em;\">\n\u521d\u5fc3\u5fd8\u308b\u3079\u304b\u3089\u305a\n<\/div>\n<div style=\"text-align: center; font-size: 0.75em;\">\nShoshin Wasurubekarazu: It can be translated to \"Never forget your original intention.\"  A reminder to stay true to one's initial goals or purpose.\n<\/div>\n\n<p>These examples highlight the beauty and the depth of kakizome as a tool for reflection and growth. This practice is, in principle, not too different from the traditional western \"New Years Resolution\". But it differs in a very important aspect: It is not a solid milestone, it is a theme. It is not something you aim to achieve and it's done, it is a mindset that will accompany you the whole year. It is a looser, broader, resolution, but it is definitely stronger. <\/p>\n<p>The Kakizome is traditionally burnt during the fire festival Sagichou. But some families, like Dan's mother, prefer to hang the Kakizome near the entrance of the house. This reminder will set your mood and energy every time you leave the house for another day, keeping this yearly theme live at your head every day. <\/p>\n<p>Though I'm starting late this year, I've decided to embrace this tradition myself. I'm still searching for a good idiom or proverb that would perfectly describe my theme for this year, which involves creating more, finishing more. Once I find it, I'll follow the tradition and, trying to remember my childhood days when my friends taught me how to write my name in Katakana and write my own Kakizome to hang at my door. <\/p>\n<p>For the curious, I'm between the following three proverbs below. I've chosen those because this year I want to learn how to better focus my energy into a single effort at a time. Starting less and finishing everything I start. <\/p>\n<div style=\"text-align: center; font-size: 2em;\">\n\u70ba\u305b\u3070\u6210\u308b\n<\/div>\n<div style=\"text-align: center; font-size: 0.75em;\">\nNaseba Naru: \"If you do it, it will be achieved.\"\n<\/div>\n<p>This proverb encourages a proactive attitude and emphasizes the power of taking initiative.<\/p>\n<div style=\"text-align: center; font-size: 2em;\">\n\u7d99\u7d9a\u306f\u529b\u306a\u308a\n<\/div>\n<div style=\"text-align: center; font-size: 0.75em;\">\nKeizoku wa Chikara Nari: \"Continuance is power.\"\n<\/div>\n<p>This idiom conveys strength and clarity, emphasizing that consistent effort leads to great accomplishments and value creation.<\/p>\n<div style=\"text-align: center; font-size: 2em;\">\n\u77f3\u306e\u4e0a\u306b\u3082\u4e09\u5e74\n<\/div>\n<div style=\"text-align: center; font-size: 0.75em;\">\nIshi no Ue ni mo Sannen: \"Three years on a stone.\"\n<\/div>\n<p>This is more subtle and poetic. It means that, even if it takes time, perseverance will yield results. It carries the meaning that patience and perseverance to stick with something at length is required to get a good result. <\/p>\n<p>What theme would you choose to guide your year?<\/p>\n<p>P.s.: I hope this very brief summary of this tradition doesn't bother or insult anyone. Even though I grew up around several Japanese families, I've never experienced that specific tradition. If there is something you believe should be fixed in my text, send me an email.<\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"LinkBlog"}},{"@attributes":{"term":"Mind"}}]},{"title":"Taking Control Of My Digital Memories","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/self-hosted-google-photos\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2024-12-30T00:00:00+00:00","updated":"2024-12-30T00:00:00+00:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2024-12-30:\/blog\/self-hosted-google-photos\/","summary":"<p>Testing a self-hosted Google Photos Alternative, Immich, to take control of my online data<\/p>","content":"<p>I've decided to take control of my digital data and I didn't want to have all my photos under Google's control, or any other company. Even if Google probably already trained some AI with all our photos, it's never too late.<\/p>\n<p>This level of privacy was never a high priority for me and I valued the features that Google Photos provided - searching pictures in a map view, face recognition, smart search, creating shared albums with family and colleagues are some of the features I used a lot.<\/p>\n<p>Lately, however, I've started getting more conscious and concerned about how our digital life is used by companies and started questioning who actually owns the data. With that in mind, I started researching some open-source and self-hosted solution to replace Google Photos and was surprised to see how much the open-source projects have evolved in the past years. I was delighted to find <a href=\"https:\/\/immich.app\/\">Immich<\/a> and see that it already has all functionalities that I loved in Google Photos.<\/p>\n<p>I wasn't ready to spend a lot of money on a commercial NAS or a home-server for hosting the service, so I decided to get a <a href=\"https:\/\/www.raspberrypi.com\/products\/raspberry-pi-5\/\">Raspberry Pi 5 (8GB RAM)<\/a> and the <a href=\"https:\/\/radxa.com\/products\/accessories\/penta-sata-hat\/\">Radxa Penta SATA HAT<\/a>.<\/p>\n<p>For now I've installed 3x1TB SSDs. I kept 1 of those SSDs for applications in general (more about it later) and the other two in RAID1 (mirror) configuration. Keeping the data duplicated gives me some peace of mind in case any of those SSDs fail. I'm also considering making frequent backups and saving it into a cold storage solution online, as I'm trying to follow the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Backup#:~:text=The%203%2D2%2D1%20rule,this%20can%20include%20cloud%20storage%29\">Backup Article<\/a><\/p>\n<p>I've uploaded all my photos, including older pictures from more than 10 years ago that were not in google photos, to my Immich instance and I was very happy with the result. The application looks and feels like Google Photos; The Raspberry handles it very well, even with other applications running.<\/p>\n<p>Not only did Immich meet my feature expectations, but it also offered a cost-effective solution for storing my digital memories. Google Drive charges \u20ac99.99 per year for 1 TB of storage. I paid \u20ac89.63 for each 1TB SSD (WD Red). In one year I would have covered the storage price.\nYou would also need to consider the reliability that storing photos in Google Drive provides - You don't need to worry about a hard drive failing and having to replace it. Having 2x1TB for redundancy would pay off in less than 2 years. However, I'm not even considering privacy and other aspects that are harder to put a price tag on it.<\/p>\n<p>The mobile app (<a href=\"https:\/\/play.google.com\/store\/apps\/details?id=app.alextran.immich\">Android<\/a> and <a href=\"https:\/\/apps.apple.com\/sg\/app\/immich\/id1613945652\">iOS<\/a>) are also quite good and I have nothing to complain so far. it is still a bit behind in some functionalities, but those are not a blocker for me. The tags functionality, for example, are only available in the web version. The most important functionality in my opinion, is the ability to automatically backup all my photos to my server.<\/p>\n<p>Backing up your photos to your server is fairly simple if you want to keep it the server running closed in your network, without access to the internet. However, I wanted to go the extra mile and make it accessible remotely, setting up a custom domain, port forwarding and a dynamic DNS Client. Since I already had my own domain, setting up the rest wasn't too complicated with the help of ChatGPT.<\/p>\n<p>There are, of course, other nerdier benefits. An interesting aspect I discovered is that I can offload the machine learning processes to another machine. For example, in my case, I've pointed it to my desktop pc running a 4080 SUPER, making the heavier processes much faster (Smart Search, Face Detection, Facial Recognition, Video Transcoding). <\/p>\n<p>At the end, this was a very fun project that aligns with my values. By taking control of my data, I can ensure that these precious moments remain accessible and meaningful for years to come, without being exploited by companies or deriving other benefits from what should remain entirely mine.<\/p>\n<p>I want my digital memories to be stored for a very long time and to be able to share those with my kids, grandkids and hopefully great grandkids. There is something special about telling stories and showing those photos and videos. It's also very interesting that a single picture unblocks memories, not only the small instant where the picture was taken, but from several hours and even days around the day the picture was taken. In one second you are looking at a picture and the other you are remembering everything else you did that day, the people you met and the places you've been.<\/p>\n<p>I would encourage everyone to take control and take care of your precious digital memories. <\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Self-hosting"}}]},{"title":"Link Blog","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/linkblog\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2024-12-23T00:00:00+00:00","updated":"2024-12-23T00:00:00+00:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2024-12-23:\/blog\/linkblog\/","summary":"<p>I recently read the <a href=\"https:\/\/simonwillison.net\/2024\/Dec\/22\/link-blog\/\">blog post<\/a> from Simon Willion's about his idea of link blog. I was actually triggered to read by his <a href=\"https:\/\/bsky.app\/profile\/simonwillison.net\/post\/3ldu6jywnos2j\">post on Blueksy<\/a>.<\/p>\n<blockquote>\n<p>\"That\u2019s the purpose of my link blog: it\u2019s an ongoing log of things I\u2019ve found\u2014effectively a combination of public bookmarks \u2026<\/p><\/blockquote>","content":"<p>I recently read the <a href=\"https:\/\/simonwillison.net\/2024\/Dec\/22\/link-blog\/\">blog post<\/a> from Simon Willion's about his idea of link blog. I was actually triggered to read by his <a href=\"https:\/\/bsky.app\/profile\/simonwillison.net\/post\/3ldu6jywnos2j\">post on Blueksy<\/a>.<\/p>\n<blockquote>\n<p>\"That\u2019s the purpose of my link blog: it\u2019s an ongoing log of things I\u2019ve found\u2014effectively a combination of public bookmarks and my own thoughts and commentary on why those things are interesting.\"<\/p>\n<\/blockquote>\n<p>I've been hoarding so many links through bookmarks, Omnivore or Obsidian and rarely getting back to them. The few ones that I've actually read were really interesting, but few have really stuck with me even when I wanted to retain the information.<\/p>\n<p>By doing this process of actually sharing and writing about some of those saved links, I'll probably be getting something useful out of it. For now, I'll keep the setup and the process failry simple. But in the future I might re-start my Telegram Bot for automatically publishing those links with addition to my own comments.<\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"LinkBlog"}},{"@attributes":{"term":"Meta"}}]},{"title":"Using ChatGPT for Personality Test Analysis","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/hoganchatgpt\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2024-11-19T00:00:00+00:00","updated":"2024-11-19T00:00:00+00:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2024-11-19:\/blog\/hoganchatgpt\/","summary":"<p>Surprising results for ChatGPT personality assessment<\/p>","content":"<p>This year I decided to run a detailed personality test through ChatGPT and the results impressed me.\u00a0I was curious about what new insights AI could provide with such data.<\/p>\n<p>The <a href=\"https:\/\/www.hoganassessments.com\/\">Hogan Test<\/a> is a personality assessment used to identify strengths, potential challenges and ideal work environments. At Valispace, this was part of a Leadership Coaching initiative designed to help us better understand our strengths and weaknesses and grow within our roles. The results consist on simple scores, from 1 to 4, for more then a 100 personal characteristics.<\/p>\n<p>The statements were very aligned with what I've been discovering about myself in the past year and closely matched my discussions with colleagues, making me confident that the <a href=\"https:\/\/simonwillison.net\/2024\/Oct\/15\/chatgpt-horoscopes\">Barnum effect<\/a> was not in play. Additionally\u00a0I reviewed my ChatGPT\u00a0<a href=\"https:\/\/openai.com\/index\/memory-and-new-controls-for-chatgpt\/\">\"memories\"<\/a> to make sure there was no previous data that could influence the analysis.<\/p>\n<p>Reflecting on my journey, I realized what I genuinely enjoy, the environments where I thrive and what makes me happy. It took many frustrations, conversations and deep reflection to reach these insights. Revisiting the Hogan Test results with ChatGPT (using the 4o model) after four years and seeing how closely they aligned with my recent self-discoveries, was both surprising and validating.<\/p>\n<blockquote>\n<p>\"This person would excel in <strong>innovative, independent roles<\/strong> where they can explore complex ideas and work without strict oversight.\" \"They may struggle in environments that require a lot of <strong>team collaboration<\/strong>, <strong>rigid adherence to rules<\/strong>, or <strong>social interaction<\/strong> for motivation. They thrive in <strong>analytical<\/strong>, <strong>strategic<\/strong>, or <strong>creative roles<\/strong> that value <strong>independent thought<\/strong> and <strong>risk-taking<\/strong>.\"<\/p>\n<\/blockquote>\n<p>I don't know if this might feel \"superficial\" to a reader who doesn't know me, or if this text is just resonating with my own thoughts and feelings at the moment, but this felt like a spot-on analysis. It made me wonder if I could have reached some of these conclusions earlier if I had gone deeper into these test results. Or maybe I just wasn't ready for it.<\/p>\n<p>This realization made me reflect on my time at Valispace, where I navigated a diverse range of tasks and responsibilities. Though my official role was Head of Customer Success, my responsibilities extended to product work, development, support, technical sales and more. I did many things that I didn't necessarily enjoy because I believed they were important for the company's success\u2014a trait that GPT4o correctly described but wasn't on my radar until recently.<\/p>\n<blockquote>\n<p>\"...your inclination to follow through on tasks and responsibilities, regardless of personal interest, due to a strong sense of doing what\u2019s \u2018right\u2019 or necessary. This aspect of your personality helps you stay committed to solving problems when they\u2019re important.\"<\/p>\n<\/blockquote>\n<p>In such high-paced, high-stakes scenarios, I just went through it all, never really questioning where my \"happy place\" was. Over the past year, various factors pushed me to invest more energy in self-reflection and identify the moments and activities I enjoyed most. Unsurprisingly, my \"happy place\" was where I could be creative and work on complex problems. For example, last year, I really enjoyed digging into the Variant Management problem, talking with customers and engineers and designing potential solutions.<\/p>\n<p>As GPT4o wrote at the end of the analysis:<\/p>\n<blockquote>\n<p>\"A coach would encourage you to seek out roles or projects that allow for <strong>creative problem-solving<\/strong>, such as <strong>strategy<\/strong>, <strong>R&amp;D<\/strong>, or <strong>product development<\/strong>. You thrive where there is room to innovate and experiment.\"<\/p>\n<\/blockquote>\n<p>And this is exactly the path I'm focusing on as I move forward.\u00a0<\/p>\n<p>Regardless of my own personal insights and growth, I encourage everyone to dig deeper every now and then and search for your motivations, triggers and feelings. Chat about it with people that you trust and feel comfortable, but don't forget to try talking with your \"<a href=\"[https:\/\/simonwillison.net\/2024\/Oct\/15\/chatgpt-horoscopes\/#it-might-still-work-for-you](https:\/\/simonwillison.net\/2024\/Oct\/15\/chatgpt-horoscopes\/#it-might-still-work-for-you)\">matrix multiplication mentor<\/a>\" as long as you give enough context and information.<\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"AI"}},{"@attributes":{"term":"Life"}}]},{"title":"Why Clarity Matters: The Case for Being Direct","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/whyclaritymatters\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2024-11-07T00:00:00+00:00","updated":"2024-11-07T00:00:00+00:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2024-11-07:\/blog\/whyclaritymatters\/","summary":"<p>Not being direct about what you want can hold you back.<\/p>","content":"<p>Not being direct about what you want can hold you back. It\u2019s easy to get caught up in worrying about stepping on someone's toes or crossing boundaries, especially if, like me, you value being considerate of others. But I've learned that staying silent about your goals can mean missing opportunities. <\/p>\n<p>In a past experience, there was a clear gap for a role that I really wanted to fill, but I felt it was my boss's responsibility and I didn't want to 'take their job.' I never explicitly communicated my interest in that position, even though I was taking on related tasks and trying to 'help' with those responsibilities. Ultimately, the role was given to someone else. <\/p>\n<p>I didn\u2019t want to seem like I was overstepping or making my managers or colleagues uncomfortable. However, by holding back, I failed to clearly state my own ambitions. I thought I was being respectful, but in reality, I was hiding my intentions and missing out on opportunities.<\/p>\n<p>The truth is, you don\u2019t have to be mean or inconsiderate to be clear. You can express your goals while still respecting those around you. Let people know what you\u2019re aiming for - make it clear that you\u2019re not trying to take anyone's place, but rather that you want to grow alongside them. When people know your intentions, they might just help you get there. Unexpected opportunities often come to those who are transparent about where they want to go.<\/p>\n<p>I\u2019m still learning to find that balance: how to be caring without being vague, how to express what I need without feeling like I\u2019m pushing too much. Being direct isn\u2019t about being harsh; it\u2019s about being clear. And clarity helps everyone grow.<\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Life"}}]},{"title":"Mental Apps","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/mentalapps\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2024-10-20T00:00:00+01:00","updated":"2024-10-20T00:00:00+01:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2024-10-20:\/blog\/mentalapps\/","summary":"<p>How our brains opperates with pre-loaded apps.<\/p>","content":"<p>A mental model I started using sometimes is the concept that our brains, as computers, have a set of \"pre-loaded apps.\" These apps consist of our memories, experiences, values and habits. Some are pre-installed, while others we need to actively load. This collection of apps forms the foundation that determines how we respond to the world around us, especially in moments when we act instinctively.<\/p>\n<p>Some of these apps are more deeply embedded, like values. They act as core code, governing our actions at a deep level. Just like a computer has processes with different priorities, our brain's apps execute with varying importance, depending on the person. For example, someone who seems to effortlessly make healthy choices might just have the \"healthy lifestyle\" app prioritized higher than others. Their brain runs that particular app more actively, influencing their daily decisions.<\/p>\n<p>Some apps are always ready, pre-loaded into memory and others need to be actively loaded. For example, some people already have the \"Google Maps\" of the brain pre-loaded and they know exactly where they are and where to go. Other people have that software installed, but it requires some time and \"taking the wrong turns\" to get it running. And then there are those who simply don't have it installed. Every time you try to remember how to do a specific task at your job, one that doesn't come automatically, you need to load that app. On the other hand, some things are pre-loaded at an even lower level, almost like CPU cache memory.<\/p>\n<p>How these apps get installed or gain higher priorities is still something I haven't completely figured out. But early age education and experiences probably have a big impact. The older you get, the harder it is to update or install new apps, but it's not impossible.<\/p>\n<p>But just as our mental software shapes us, it can also be reprogrammed, for better or worse. The idea of \"Trojan horses\" or \"viruses\" in the context of the brain is a powerful analogy. Marketing, social influences, even addictions can act as mental malware, sneaking into our thought process and shifting our priorities. They implant ideas, subtly or forcefully, until we believe something is incredibly important, sometimes without even questioning why.<\/p>\n<p>It's interesting to realize how much of our behavior is influenced by this pre-loaded and reprogrammed software.<\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Mind"}}]},{"title":"Buy Mindfully","link":{"@attributes":{"href":"https:\/\/cauenapier.com\/blog\/buymindfully\/?utm_source=rss&utm_medium=feed","rel":"alternate"}},"published":"2024-06-16T00:00:00+01:00","updated":"2024-06-16T00:00:00+01:00","author":{"name":"Cau\u00ea Napier"},"id":"tag:cauenapier.com,2024-06-16:\/blog\/buymindfully\/","summary":"<p>Choosing better products and better brands.<\/p>","content":"<p>In Portuguese, we have a saying that translated is something like \"the cheap gets expensive\", which I took as a mantra when buying new things. From smartphones, laptops to clothes and utensils. \nWho hasn't ever bought the cheapest IKEA kitchen utensil and found themselves back at IKEA an year later to replace it?\"<\/p>\n<p>For a couple of years, I had this idea on my Obsidian vault that was initially called \"Product Durability App\". It would be an app for people to find products and brands that were built to last. I also had a personal goal to build and publish something, no matter how simple it was. That goal went through year and year untouched.<\/p>\n<p>This year, however, I saw a <a href=\"https:\/\/x.com\/kepano\/status\/1779929845042188794\">tweet<\/a> (or should we call it \"an x\" now?) from the Obsidian creator. He was showing how he is tracking the products he own in Obsidian and wrote a <a href=\"https:\/\/stephango.com\/buy-wisely\">blog post<\/a> on this site about the choices he makes when purchasing things. That post deeply resonated with me and reignited the idea for that app.<\/p>\n<p>The last boost of energy came through another blog I found by chance. In his personal blog, Duarte writes about different thing and his words just motivated me to build and publish the app, as well as my personal blog that was also sitting in some old forgotten corner of the internet.<\/p>\n<p>Building on this inspiration and crossing the energy treshold, I spent the weekend developing Buy Mindfully. In one weekend I built it, in the following weekend I released it. Learning the whole process of buying a server, connecting to it, pushing changes and deploying it. It was a fun weekend.<\/p>\n<p>I am still figuring out how this app will evolve and if I'll keep working on it. But I would like to keep \"building in public\" and share my experience. <\/p>\n<p>But for now, enough with the history. Let's explore the idea behind this app. Cost Per use. This was the first concept. Think about that IKEA utensil I started with. Imagine it costs 10 euros and you have to change it every year. This utensil has an average cost per use of 10 euros\/year. If instead of saving you 20 euros in the moment of purchase, you bought the more durable and expensive version that utensil that costs 30 euros and would have lasted you 5 years, you would have saved you 20 euros. in the long run. That last product, as more durable option, have a 6 euros\/year of use.<\/p>\n<p>20 euros over 5 years might not be much, but when you consider every purchase you do over the years, the number can get high pretty quickly. Consider that low-end smartphone you bought because you didn't want to spend too much money that broke after the first year. Consider that good looking but cheap jacket you bought that tore apart after 10 times using it.<\/p>\n<p>We have been talking only about personal savings. But now consider the amount of material, energy and time that is put into those products that breaks and get discarded too early. The impact that durable products have in the environment is beyond the simple amount of material it's made of. <\/p>\n<p>However, it's naive to think that expensive products equals good and durable products. Some times, if not most of the times, you are paying for a brand, for an experience. A trendy product might get you likes and looks, but might not last long. Not that you should only prioritise Cost per Use and buy the lasting product that look ugly as hell. What if you could combine Cost Per Use and Cost Per Smile, for example. Buy things that give you joy but also last for long time. <\/p>\n<p>What if, after you bought a long lasting product you grow tired of it? you can just sell it to someone else that will enjoy it as much. It will still be good and can still be used for more time. When we buy product that last and give you joy, you will not only save money, you will be happier and be less wasteful, helping the environment.<\/p>\n<p>For clothing, this idea is linked to the Wardrobe Capsule concept. Where you buy clothes that are atemporal, can go anytime of the year and is not only following this year's trend. Going against the Fast Fashion industry that tries to push you a new style and a new colour every season. A good pair of Jeans, for example, can be more expensive then the average, but can last more than a decade if properly maintained.<\/p>\n<p>This article shouldn't be a manifesto against capitalism. But in today's world companies are incentivised to keep selling and pushing new products as much as possible. They need to keep the cash flowing. So they build new products, release new versions, new colours. But it is hard to sell more then their durable products are still in the hands of their users and they don't want to replace it.\nSome companies have even be accused of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Planned_obsolescence\">Planned Obsolecense<\/a>, when products are intentionally designed to not last for too long, forcing customers to replace the product at a given time. Companies have found that selling cheaper but more frequently can be more profitable. <\/p>\n<p>A good example, that might only resonates to the older audience, is the bulky refrigerator that your grandma had in her house. Those things lasted decades without a problem and could be easily fixed by anyone with an aptitude for mechanics. Most refrigerators today don't last half of that time.<\/p>\n<p>It is not 100% clear for me yet if less durable products are a necessary consequence of new technologies. Is it physically impossible to make an smartphone that is at least half as resilient as the old Nokia 3310? Or are we just not incentivising companies to do so?<\/p>\n<p>I used to see much more repair shops in the streets when I was a kid. Why are them almost gone? Companies are not incentivised to build products that can be easily fixed, as they were hoping for you to buy a new one instead of fixing it. Durable products should also be easy to maintain and fix them. Most people have just accepted that throwing something to away because it stopped working is normal. \"I'll just buy a new one\". \nThis is one of the things that the Right To Repair (link) movement is fighting for. They are putting pressure on governments to pass laws that will force companies to design for maintainability and remove existing blocks and restrictions for maintenance.<\/p>\n<p>The goal with <a href=\"buymindfully.com\">BuyMindfully<\/a> is to evaluate products overtime but, more importantly, evaluate how well companies are building the products. It goes beyond simple ratings on Amazon. It goes deeper into how happy those products make us over time and how long they last. Hopefully we can grow BuyMindfully into a platform were people share the current usage of their products and overtime we are able to highlight and praise companies that are building good lasting products.<\/p>","category":[{"@attributes":{"term":"Blog"}},{"@attributes":{"term":"Making"}}]}]}