<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="https://noeldemartin.com/now/styles.xsl" ?>

<feed xmlns="http://www.w3.org/2005/Atom">
    <title type="text">Noel De Martin [Journal]</title>
    <subtitle type="text">A stream of all my activity</subtitle>
    <updated>2020-01-27T18:25:06+00:00</updated>
    <id>https://noeldemartin.com/now</id>
    <link type="text/html" href="https://noeldemartin.com/now" />
    <link type="application/xml" rel="self" href="https://noeldemartin.com/now/rss.xml" />
    <category term="entrepreneurship" />
    <category term="development" />
    <icon>https://noeldemartin.com/favicon.ico</icon>
    <logo>https://noeldemartin.com/img/myface-small.png</logo>
    <author>
        <name>Noel De Martin</name>
        <email>hey@noeldemartin.com</email>
        <uri>https://noeldemartin.com/</uri>
    </author>
            <entry>
            <title type="text">Commented on "Improving the SolidOS Frontend"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-the-solidos-frontend#comment-5" />
            <id>https://noeldemartin.com/tasks/improving-the-solidos-frontend#comment-5</id>
            <published>2026-06-08T06:23:00+00:00</published>
            <updated>2026-06-08T06:23:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-the-solidos-frontend#comment-5&quot;&gt;Improving the SolidOS Frontend&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Following up from last week, I kept improving the login form. In particular, this week I started looking at some of the things outside of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.figma.com/design/88xQawSSXzfQprEZPaKplZ/Solid-OS&quot;&gt;the design&lt;/a&gt;. It is very common that application designs in Figma are missing many of the edge cases, specially when the task for designers was basically to redesign the entire application (or a huge part of it). But I think they are also very important, and part of what make a great UX. Usually, I would talk it over with the designers, but given that we&#039;re working with an external agency that bills by the hour, I decided to take some initiative and just do it myself. I&#039;m not talking about anything drastic, though, simply adding some loading states to buttons when submitting, and showing errors when something goes wrong.&lt;/p&gt;
&lt;p&gt;However, I spent most of my week &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/SolidOS/solid-ui/pull/787&quot;&gt;migrating to Vite&lt;/a&gt;! On the one hand, that&#039;s great, because I do like Vite a lot more than I like webpack. On the other hand, it&#039;s not going as well as I thought 😅. It&#039;s not like the migration is going wrong per-say, but part of migrating the build system is to make sure that I don&#039;t break any of the existing consumers of the library. But I&#039;m afraid that&#039;s not going to be so easy :(. Basically, the way the &lt;code&gt;solid-ui&lt;/code&gt; library is being bundled and used &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/SolidOS/mashlib/blob/7209297e7290e011e7ca886b17eb613f6061eb93/webpack.config.mjs#L17&quot;&gt;is&lt;/a&gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/jeff-zucker/sol-components/blob/bdf7cf034e9a663d41d94d076fd8c6002091a85c/web/sol-login.js#L690&quot;&gt;not&lt;/a&gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/SolidOS/solid-ui/blob/c59efc04ca8e7a10417cc80d2a53638963739e70/README.md?plain=1#L90&quot;&gt;ideal&lt;/a&gt;, and I&#039;m not sure how much we can improve the situation without introducing breaking changes. Still, it should be &amp;quot;fine&amp;quot; to introduce breaking changes in a new major version... I&#039;ll have to discuss it in the next weekly meeting.&lt;/p&gt;
&lt;p&gt;Finally, this week marks the first month since I joined the project. Looking back, it&#039;s been a bit different from what I expected. My intention was (and still is) to improve the UI. But so far, I&#039;ve spent most of my time fighting against web components, cleaning up the architecture, and tinkering with build systems. Of course, all of that is also very important for the project and should make the UI work a lot easier. But, as I mentioned in my first note, there is a lot of accidental complication going on. Hopefully once I&#039;m done with all of this, I can be a lot faster at working on the UI!&lt;/p&gt;
&lt;p&gt;Here&#039;s this week&#039;s meeting notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidos.solidcommunity.net/public/SolidOS%20team%20meetings/2026/2026_06_03.md&quot;&gt;Wednesday, June 3rd 2026&lt;/a&gt; (Regular weekly meeting)&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving the SolidOS Frontend"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-the-solidos-frontend#comment-4" />
            <id>https://noeldemartin.com/tasks/improving-the-solidos-frontend#comment-4</id>
            <published>2026-06-01T06:43:00+00:00</published>
            <updated>2026-06-01T06:43:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-the-solidos-frontend#comment-4&quot;&gt;Improving the SolidOS Frontend&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;This week, I finally ran the entire SolidOS stack locally!&lt;/p&gt;
&lt;p&gt;SolidOS is made up of many packages, and in fact &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/SolidOS/solidos&quot;&gt;the main SolidOS repository&lt;/a&gt; is nothing more than a bunch of scripts to orchestrate cloning and running them. At some point, we should probably migrate to a monorepo, but even then it&#039;s likely that some package makes more sense in its own repository. This is also a problem I&#039;ve faced in my own work, for example when I am working on an app and I need to change both &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://soukai.js.org/&quot;&gt;Soukai&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://aerogel.js.org/&quot;&gt;Aerogel&lt;/a&gt; code. Recently, I even created &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/vite-plugin-multi-root-workspace&quot;&gt;vite-plugin-multi-root-workspace&lt;/a&gt; to make this easier. But SolidOS is still using webpack, so I won&#039;t be able to use it here.&lt;/p&gt;
&lt;p&gt;Anyways, the reason why I started running this locally is that I opened &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/SolidOS/solid-ui/pull/775&quot;&gt;my first real PR&lt;/a&gt;! There isn&#039;t much more to mention that I didn&#039;t say last week, other than I have been cleaning up the components and finishing the login UI. If anything, I would reiterate that working with Web Components is not being a great experience :(. Last week I mentioned the challenges with ARIA roles and element references, and this week I realized that using a native &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; inside a Web Component &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://web.dev/articles/more-capable-form-controls#form-associated_custom_elements&quot;&gt;is not enough to make it work with forms&lt;/a&gt; 😱. Web Components were supposed to be the &amp;quot;native&amp;quot; way to encapsulate functionality on the web, but so far it&#039;s feeling more restrictive than Vue or React. I&#039;m being forced to reimplement a lot of the things that worked out of the box when using plain HTML 🤷.&lt;/p&gt;
&lt;p&gt;This week, we also discussed how to tackle AI commits in the codebase. NLNet recently introduced a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nlnet.nl/foundation/policies/generativeAI/&quot;&gt;policy on the use of Generative AI&lt;/a&gt;, and it&#039;s not completely clear what we can or cannot do in the project. Or how to even communicate it. In my own work (not SolidOS), I&#039;ve been using the &lt;code&gt;Co-Authored-By&lt;/code&gt; git convention in commits that have been AI-generated, and I also include an AI summary of the work. However, it seems like NLNet requires that we also include the entire prompt history, so that may be a problem. For now, though, I haven&#039;t been using a lot of AI in this project (at least, not to generate code). But once the foundations are laid out and we want to start using the Design System everywhere, this may become an important point of friction.&lt;/p&gt;
&lt;p&gt;Finally, this week we also had a meeting with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://jeff-zucker.solidcommunity.net/profile/card#me&quot;&gt;Jeff&lt;/a&gt; explaining his web components, which were pretty cool and also show what I think Solid should be all about (you can find the video recording of his demo here: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vimeo.com/1195872192&quot;&gt;solid-web-components in data-kitchen&lt;/a&gt;). We also released a new version with milestone 2k (I didn&#039;t do much work here, it was all Timea and Sharon!). You can find notes about these and the weekly meeting here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidos.solidcommunity.net/public/SolidOS%20team%20meetings/2026/2026_05_26.md&quot;&gt;Tuesday, May 26th 2026&lt;/a&gt; (Jeff&#039;s web components showcase)&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidos.solidcommunity.net/public/SolidOS%20team%20meetings/2026/2026_05_27.md&quot;&gt;Wednesday, May 27th 2026&lt;/a&gt; (Regular weekly meeting)&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidos.solidcommunity.net/public/2026/NLnet%20Grant%20Milestone2k.html&quot;&gt;NLnet Grant Milestone 2.k&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Raising an Agent"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/raising-an-agent#comment-4" />
            <id>https://noeldemartin.com/tasks/raising-an-agent#comment-4</id>
            <published>2026-05-31T07:58:00+00:00</published>
            <updated>2026-05-31T07:58:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/raising-an-agent#comment-4&quot;&gt;Raising an Agent&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;A couple of weeks ago I finished working on my Podcast Enhancer, you can see it live at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://podcast-enhancer.noeldemartin.com/&quot;&gt;podcast-enhancer.noeldemartin.com&lt;/a&gt;. I have been using it every day since, and I was so pleased with the result, that I added it to my &lt;a href=&quot;/projects&quot;&gt;/projects&lt;/a&gt; page!&lt;/p&gt;
&lt;p&gt;This update is, once again, not about Ànima. But I learned many things that are going to be very important for Ànima, so consider this a final report on this side-quest. This was my first app 99% written with AI (yeah, I&#039;m still not at 100%, sorry xD). How did it go?&lt;/p&gt;
&lt;p&gt;For the backend part, I&#039;m &lt;em&gt;very&lt;/em&gt; surprised with the results, and I will probably keep working like this &lt;em&gt;under similar circumstances&lt;/em&gt;. But that&#039;s an important nuance. As I mentioned in my last update, it seems like the environment and guardrails are the most important part when working with AI (not so much the models). Turns out, a brand new Laravel app is a great environment for that :). I don&#039;t know if it&#039;s just &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravel.com/ai/boost&quot;&gt;Laravel Boost&lt;/a&gt;, or &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://x.com/taylorotwell/status/2009706915543298337&quot;&gt;Laravel&#039;s brilliant design&lt;/a&gt;, but the code written by LLMs is very similar to what I would write. Of course, I still have to ask for corrections and iterate on some things. But still, I&#039;m ok with the final result.&lt;/p&gt;
&lt;p&gt;But the frontend is a different story. I decided to build it using Vue, and the default modus operandi for LLMs seems to be building a single component for each page and keep bloating it 😱. In the end, I had to do some manual work to lay out the foundations, and be very explicit about which components to build for each feature. I also started using Storybook a lot (you can also &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/podcast-enhancer/&quot;&gt;see it online&lt;/a&gt;), which is nice because this is probably the first project where I&#039;ve used it this thoroughly :). After some more groundwork, I&#039;m also ok with the final result. But I&#039;m not completely sure this was faster than doing it by hand... The design is not that complicated (I made it using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://stitch.withgoogle.com/&quot;&gt;Google Stitch&lt;/a&gt; for inspiration), and it rarely got things right on the first try.&lt;/p&gt;
&lt;p&gt;However, maybe we can attribute that to the fact that I&#039;m still learning how to use AI. In this process, I have created &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noelDeMartin/ai&quot;&gt;noeldemartin/ai&lt;/a&gt;, which is the repository where I&#039;m going to curate my AI skills, commands, and guidelines. One of the reasons to create my own repository is that I&#039;m a bit confused about the nomenclature. Most people talking online seems to call everything &amp;quot;skills&amp;quot;, but then when you start using different LLMs, there are different ways to add capabilities: commands, rules, skills, etc. And every model provider calls them differently. In this repository, I&#039;ve created my own cohesive nomenclature, and some scripts to install them in different AI models. Maybe the most interesting is the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/ai/tree/main/corpus/commands&quot;&gt;commands folder&lt;/a&gt;. This is the one I&#039;ve used to create invocable slash commands, which means that I call these explicitly (instead of the AI using them whenever it feels like it). Some of the more useful have been &lt;code&gt;/ui&lt;/code&gt; and &lt;code&gt;/cleanup&lt;/code&gt; (also, special shoutout to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/remorses/playwriter&quot;&gt;Playwriter&lt;/a&gt;, which made working with UI a lot better).&lt;/p&gt;
&lt;p&gt;And this setup came in handy, because just in the process of making this app I switched tools 3 times! In my last update, I was using OpenCode, but unfortunately it started to degrade with Gemini :/. I&#039;m still not sure why, because I haven&#039;t read any official announcements, but I routinely got &amp;quot;out of capacity&amp;quot; errors when using Gemini in OpenCode, but it worked perfectly fine in Gemini CLI. So that&#039;s what I&#039;ve been using most of the time... Until Google announced last week that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developers.googleblog.com/an-important-update-transitioning-gemini-cli-to-antigravity-cli/&quot;&gt;Gemini CLI is dead&lt;/a&gt;, and we should all switch to Antigravity CLI 🤷. Honestly, I don&#039;t care that much about any of this at this point. As long as I can configure my own commands, I&#039;ll be ok. By the way, I did try Claude Code, and I can&#039;t say I was impressed. Sure, it worked fine, but compared to my annual Google AI Pro subscription, it&#039;s super expensive and it&#039;s not that much better. TLDR, I&#039;ll be keeping my work model agnostic :).&lt;/p&gt;
&lt;p&gt;Finally, now that I&#039;ve deployed all of this and I&#039;m &amp;quot;done&amp;quot; with the app, I have to highlight how awesome Laravel&#039;s ecosystem has been to deploy and serve my app, not just create it. I&#039;m hosting this in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://cloud.laravel.com/&quot;&gt;Laravel Cloud&lt;/a&gt;, and it really is one of the best managed platforms I&#039;ve used. Plus, with all the hibernation and spending limits, it&#039;s not even that expensive! The built-in logs and observability are pretty good, but it gets a lot better with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nightwatch.laravel.com/&quot;&gt;Nightwatch&lt;/a&gt;. All of this combined with the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://cloud.laravel.com/docs/api/cli#tinker&quot;&gt;Cloud &lt;code&gt;tinker&lt;/code&gt; command&lt;/a&gt;, makes managing an app in production as easy as the one running in my machine.&lt;/p&gt;
&lt;p&gt;Will I be able to achieve a similar story for my work with Solid? We&#039;ll see.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving the SolidOS Frontend"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-the-solidos-frontend#comment-3" />
            <id>https://noeldemartin.com/tasks/improving-the-solidos-frontend#comment-3</id>
            <published>2026-05-25T08:05:00+00:00</published>
            <updated>2026-05-25T08:05:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-the-solidos-frontend#comment-3&quot;&gt;Improving the SolidOS Frontend&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Hi again!&lt;/p&gt;
&lt;p&gt;This week I&#039;ve felt a lot more productive than the last. Even though we&#039;ve also had a couple of meetings (links at the end), I&#039;ve started to work on more elaborate components and learned a lot more about Web Components in general. If you&#039;re interested, you can see a summary of this week&#039;s work in this PR: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/SolidOS/solid-ui/pull/761&quot;&gt;Implement reusable primitives&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I started the week with the idea of creating an &amp;quot;Account&amp;quot; component. I have &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/aerogel/blob/main/packages/plugin-local-first/src/components/Account.vue&quot;&gt;a similar component in Aerogel&lt;/a&gt;, and the idea is that this component can be used to show either log in/sign up links, or the user menu. In my apps this makes a lot of sense because they are local-first, but even though SolidOS isn&#039;t, it happens to have the same pattern (because you can open pages without logging in). So that&#039;s nice :).&lt;/p&gt;
&lt;p&gt;It seems like a simple component, but it involves a couple of things that are not so trivial, such as interacting with the authentication system, invoking business logic (login, sign up, logout), and opening overlays (the dropdown user menu). Additionally, another challenge is that I wanted this component to be part of the generic Solid Components, because this is something other apps will definitely need. But after some tinkering, I decided it would make more sense to build smaller reusable components, and the &amp;quot;account&amp;quot; component would be SolidOS-specific (still reusable, though!).&lt;/p&gt;
&lt;p&gt;Maybe the most interesting thing I&#039;ve done this week is the way I&#039;ve implemented the authentication and business logic interaction. Though the truth is that I haven&#039;t 😅. Let me explain. As I mentioned last week, the idea with these generic Solid Components is that they can be used in any project, not just SolidOS, and ideally we want them to be interoperable with other Web Components in the Solid ecosystem. In order to support that, I&#039;ve abstracted away all the interactions with the business logic of SolidOS behind an interface. I&#039;m still not sure how the whole ecosystem will converge on this, given that it&#039;s still an open question, but at least whenever we do, in SolidOS we&#039;ll only need to swap up this interface with a different implementation. An additional benefit here is that I&#039;ve also been able to implement a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://storybook.js.org/&quot;&gt;Storybook&lt;/a&gt; implementation, which allows us to see these components in a nice UI sandbox :).&lt;/p&gt;
&lt;p&gt;Something else relevant this week, although not Solid specific, was implementing the dialogs and overlays. This one is still a work in progress, but honestly, all the headaches I&#039;m having show some of my initial concerns about using Web Components :(. It&#039;s not that difficult to implement a working dropdown with Javascript/CSS, but it is very difficult to make it conform with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/WAI/ARIA/apg/patterns/menubar/&quot;&gt;ARIA specifications&lt;/a&gt; and native APIs such as &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Popover_API&quot;&gt;the Popover API&lt;/a&gt;. In fact, I&#039;ve been looking at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://webawesome.com/docs/components/dropdown/&quot;&gt;Web Awesome&#039;s Dropdown&lt;/a&gt; and it doesn&#039;t 😱. I often use this browser extension called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://chromewebstore.google.com/detail/aria-devtools/dneemiigcbbgbdjlcdjjnianlikimpck&quot;&gt;ARIA Devtools&lt;/a&gt; to check whether an app is built correctly or not, and their dropdowns don&#039;t even show up :/. So yeah, I don&#039;t know... Trying to learn about this talking with some AIs and whatnot, it seems like ARIA roles aren&#039;t really &amp;quot;that important&amp;quot; (at least for dropdowns), as long as the labels and keyboard interactions are configured properly. There&#039;s also the fact that I&#039;m not sure we should be spending that much time building these things from scratch, so this week I&#039;ll try to discuss some alternatives to use 3rd party components. We&#039;ll see how this evolves!&lt;/p&gt;
&lt;p&gt;And that&#039;s about it for this week! Tomorrow (at the time of this writing), we&#039;re having a meeting about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/SolidOS/solid-web-components/&quot;&gt;Jeff&#039;s Web Components&lt;/a&gt;, so feel free to join if you&#039;re interested to participate. The main idea of the meeting is that he explains how those components work, and how we&#039;ll integrate them in SolidOS or what&#039;ll happen with that repository moving forward (as I mentioned, ideally we&#039;ll use it to publish the generic Solid Components). But something I&#039;ll make sure to bring up as well is the interoperability between libraries, and the business logic layer I&#039;ve been abstracting away. The meeting is happening on Tuesday 26th at 18:00 CEST, you can join in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://meet.jit.si/solid-operating-system&quot;&gt;the SolidOS Jitsi room&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This week&#039;s meeting notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidos.solidcommunity.net/public/SolidOS%20team%20meetings/2026/2026_05_18.md&quot;&gt;Monday, May 18th 2026&lt;/a&gt; (Discussion about mobile forms, a11y, and other tecnical topics)&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidos.solidcommunity.net/public/SolidOS%20team%20meetings/2026/2026_05_20.md&quot;&gt;Wednesday, May 20th 2026&lt;/a&gt; (Regular weekly meeting)&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving the SolidOS Frontend"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-the-solidos-frontend#comment-2" />
            <id>https://noeldemartin.com/tasks/improving-the-solidos-frontend#comment-2</id>
            <published>2026-05-18T06:05:00+00:00</published>
            <updated>2026-05-18T06:05:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-the-solidos-frontend#comment-2&quot;&gt;Improving the SolidOS Frontend&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I have been involved with the SolidOS team for a while, because I used to attend every meeting and I&#039;ve kept in touch with most of the people. However, I hadn&#039;t contributed any actual code 😱. But this is definitely going to change, because &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://timea.solidcommunity.net/profile/card#me&quot;&gt;Timea Turdean&lt;/a&gt; has offered me to join &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nlnet.nl/project/SolidOS/&quot;&gt;the NLNet grant&lt;/a&gt;, and I&#039;m really happy to finally be working on a Solid project fulltime :D.&lt;/p&gt;
&lt;p&gt;Now, I&#039;m not sure how long that&#039;s going to last, since I&#039;m technically still open for work and it&#039;s not like what&#039;s left of the grant can support all of us (we&#039;re already 3 people working on it: Timea, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sharonstratsianis.com/&quot;&gt;Sharon&lt;/a&gt;, and me). Nevertheless, it&#039;s really cool that I can spend some time working on one of the most impactful projects in the Solid ecosystem. And &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-4th-solid-symposium#comment-3&quot;&gt;as I mentioned recently&lt;/a&gt;, I really like the way things are going.&lt;/p&gt;
&lt;p&gt;I&#039;ve spent the first week mostly understanding how the various repositories work, and starting to make some proposals for improvements. My main takeaway so far is that the project definitely &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/SolidOS/solid-ui/pull/744#issuecomment-4421683714&quot;&gt;needs some conventions&lt;/a&gt;. The use-case the project is trying to tackle is very complex at its core, given the flexibility of Solid/RDF and its ambitious vision. But, as it often happens in these types of projects, there&#039;s also a lot of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=WSes_PexXcA&quot;&gt;accidental complication&lt;/a&gt; going on (watch that video if you haven&#039;t!). Hopefully, one of the things I can contribute is a way to reduce it.&lt;/p&gt;
&lt;p&gt;On that line, one of the first things we&#039;ve been talking about is how to standardize writing UI. Right now, there are different styles mixed in the codebase, such as using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://lit.dev/&quot;&gt;Lit&lt;/a&gt; or creating DOM nodes with vanilla JS (&lt;code&gt;document.createElement(&#039;div&#039;)&lt;/code&gt;, etc.). After some discussions last week, we&#039;ve decided that we&#039;ll move everything towards Web Components using Lit. In particular, we&#039;re going to have 3 types of components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generic Solid Components (published under the &lt;code&gt;solid-web-components&lt;/code&gt; package)&lt;/li&gt;
&lt;li&gt;SolidOS Design System Components (published under the &lt;code&gt;solid-ui&lt;/code&gt; package)&lt;/li&gt;
&lt;li&gt;Application Components (not published anywhere, used internally to build the frontend)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have already opened a PR with a first draft for the second type of components, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/SolidOS/solid-ui/pull/748&quot;&gt;check it out if you&#039;re curious&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And that&#039;s about it for now! Given that this is going to become my main gig for a while, I may be writing these updates more often than usual. But I don&#039;t think it&#039;ll be more frequent than once a week, so hopefully this won&#039;t become too noisy for people subscribed to the feed.&lt;/p&gt;
&lt;p&gt;In case you&#039;re interested in digging in further, the SolidOS team is also working in the open, so you can check their notes and blog posts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;NLNet milestone updates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidos.solidcommunity.net/public/2025/NLnet%20Grant%20milestone%201a/Milestone1a.html&quot;&gt;Milestone 1a&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidos.solidcommunity.net/public/2025/Milestone1b.html&quot;&gt;Milestone 1b&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidos.solidcommunity.net/public/2026/NlnetGrantMilestone2d-.html&quot;&gt;Milestone 2d&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidos.solidcommunity.net/public/2026/NlnetGrantMilestone2eAnd2j.html&quot;&gt;Milestones 2e and 2j&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Meeting notes from this week:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidos.solidcommunity.net/public/SolidOS%20team%20meetings/2026/2026_05_11.md&quot;&gt;Monday, May 11th 2026&lt;/a&gt; (Introduction and discussion for new contributors, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://mpeters.dev&quot;&gt;Michael&lt;/a&gt; and me)&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidos.solidcommunity.net/public/SolidOS%20team%20meetings/2026/2026_05_12.md&quot;&gt;Tuesday, May 12th 2026&lt;/a&gt; (Discussion about web components and code organisation)&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidos.solidcommunity.net/public/SolidOS%20team%20meetings/2026/2026_05_13.md&quot;&gt;Wednesday, May 13th 2026&lt;/a&gt; (Regular weekly meeting)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Improving the SolidOS Frontend"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-the-solidos-frontend" />
            <id>https://noeldemartin.com/tasks/improving-the-solidos-frontend</id>
            <published>2026-05-18T06:02:00+00:00</published>
            <updated>2026-05-18T06:02:00+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/improving-the-solidos-frontend&quot;&gt;Improving the SolidOS Frontend&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/improving-the-solidos-frontend&quot;&gt;Improving the SolidOS Frontend&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I recently joined the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidos.solidcommunity.net/&quot;&gt;SolidOS&lt;/a&gt; project to improve various aspects of the frontend such as components, styles, design systems, and accessibility. Exactly my cup of tea!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Attending the 4th Solid Symposium"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-the-4th-solid-symposium#comment-4" />
            <id>https://noeldemartin.com/tasks/attending-the-4th-solid-symposium#comment-4</id>
            <published>2026-05-02T08:08:00+00:00</published>
            <updated>2026-05-02T08:08:00+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-4th-solid-symposium#comment-4&quot;&gt;Attending the 4th Solid Symposium&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-4th-solid-symposium#comment-4&quot;&gt;Attending the 4th Solid Symposium&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending the 4th Solid Symposium"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-the-4th-solid-symposium#comment-3" />
            <id>https://noeldemartin.com/tasks/attending-the-4th-solid-symposium#comment-3</id>
            <published>2026-05-02T08:02:00+00:00</published>
            <updated>2026-05-02T08:02:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-4th-solid-symposium#comment-3&quot;&gt;Attending the 4th Solid Symposium&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;And that&#039;s it for this year&#039;s Symposium!&lt;/p&gt;
&lt;p&gt;I really enjoyed this year&#039;s gathering, and even though I didn&#039;t give any presentations, I think it was my favourite Symposium so far :D. In part because we had more people from the community showing up than ever before, but I also enjoyed the conversations a lot, and we touched on some topics that I think are very important (more on that later).&lt;/p&gt;
&lt;p&gt;The day before the conference I joined the Hackathon, as I mentioned in my previous update. What I didn&#039;t mention is that I would be one of the judges :). Most of the participants were new to Solid, but I was surprised by how well they understood Solid with only 2 days of practice. That proves what I&#039;ve always said, &lt;a href=&quot;https://noeldemartin.com/blog/why-solid#the-dx-sucks&quot;&gt;Solid isn&#039;t really that hard&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The next day, the conference kicked off with Nigel Shadbolt&#039;s keynote. It was my first time hearing him speak, and I have to say I really enjoyed his talk and vision on Solid. We also had a keynote by Virginia Balseiro about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://dokie.li/&quot;&gt;dokieli&lt;/a&gt; which I also enjoyed. They announced they&#039;re launching a startup, I hope it works out for them because I really like their project!&lt;/p&gt;
&lt;p&gt;Throughout the rest of the conference, there were also a couple other talks I enjoyed (I&#039;m a big fan of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.muze.nl/&quot;&gt;Muze&lt;/a&gt;&#039;s work). But the best session was, without a doubt, Angelo and Timea&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidos.solidcommunity.net/public/2026/SoSy26London/FromAppsToAutonomy.html&quot;&gt;From Apps to Autonomy: Operating Systems for True Data Ownership&lt;/a&gt;. Their talk perfectly encapsulated what Solid should be, and Angelo&#039;s concept of 5 Levels of Data Ownership is brilliant, I&#039;m sure I&#039;ll be referencing it in the future. And the work Timea has been doing on SolidOS is also impressing, I&#039;m really looking forward to see how the project continues to improve.&lt;/p&gt;
&lt;p&gt;We also had the chance to organize ourselves using a map built on Solid, which Angelo created to organize his own trip; but augmented with location sharing and ACL permissions when he decided to share it with others. It was a great way to see how Solid can already be used in practice, today, to solve real world problems. Keep an eye on the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/@practical-solid&quot;&gt;Practical Solid&lt;/a&gt; channel to learn more about this experiment.&lt;/p&gt;
&lt;p&gt;I&#039;ve been thinking about the conversations I&#039;ve had these last couple of days, and the ideas that have been shared in various presentations. I would say I&#039;ve come up with 2 main takeaways from the conference.&lt;/p&gt;
&lt;p&gt;The first takeaway is that, unfortunately, some people don&#039;t seem to care about interoperability &lt;a href=&quot;https://noeldemartin.com/solid-world-2025&quot;&gt;as much as I do&lt;/a&gt; :(. Let me explain. Many of the demos I saw throughout the conference showed what is, to me, one of the worst anti-patterns in Solid Applications: storing data in .json files 😱. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/introducing-vault-end-to-end-encrypted-storage-built-into-your-pod/10449/4&quot;&gt;I have discussed this ad nauseam in the Solid Forum&lt;/a&gt;, but I was very disappointed to see it happening at the Symposium as well. Furthermore, it seems like the work going on with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/w3c/lws-protocol/&quot;&gt;LWS&lt;/a&gt; is gearing towards making RDF support optional, which would be catastrophic in my opinion. I guess everyone is entitled to their opinion, but I honestly think that Solid without interoperability is pointless. One of the core tenets of Solid is to decouple data from applications, but as Angelo said in his presentation, &amp;quot;What is it worth if the data lives in your Pod, but you can’t do anything with it outside of apps?&amp;quot;.&lt;/p&gt;
&lt;p&gt;The second takeaway, or rather reflection, is about sustainability. I have also talked about &lt;a href=&quot;https://noeldemartin.com/blog/the-end-of-the-chapter#the-business-of-solid&quot;&gt;Solid Business Models&lt;/a&gt; before, and I don&#039;t think my opinion has changed much since. But given my recent conversations, I have some more things to say.&lt;/p&gt;
&lt;p&gt;First of all, I do believe that a business based on Solid &lt;em&gt;can&lt;/em&gt; be sustainable if the protocol reaches a critical mass (we&#039;re not there yet), but it&#039;ll be very difficult to get &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Unicorn_%28finance%29&quot;&gt;a unicorn&lt;/a&gt;. Though I have to say, that&#039;s not a bug, it&#039;s a feature. It&#039;s perfectly possible to have a rich ecosystem of small to medium companies, and avoiding centralized power is the point of Solid.&lt;/p&gt;
&lt;p&gt;Secondly, I talked about what&#039;s keeping the ecosystem from creating startups based on Solid. And I think the role we&#039;re lacking the most in the community is entrepreneurs. And yes, I know I call myself and entrepreneur because I have been involved with the startup ecosystem for a while. But the honest truth is that I&#039;m not an entrepreneur, I&#039;m a developer (at most, I&#039;m a failed entrepreneur 😅). During my trips to and from the conference, I was listening to a podcast about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.theverge.com/podcast/917029/software-brain-ai-backlash-databases-automation&quot;&gt;Software Brain&lt;/a&gt;, and I think it perfectly encapsulates why we&#039;re struggling to get Solid to work. Most people in the community &lt;em&gt;get&lt;/em&gt; Solid, and see their value. But society at large doesn&#039;t, in fact most people don&#039;t even care about software that much. But people does care about having control on their life, and everyone&#039;s heard some horror stories about privacy or algorithmic manipulation. So we need to bridge the gap between these two views of the world, and I think the only ones who can do that are &lt;em&gt;real&lt;/em&gt; entrepreneurs (whatever that means).&lt;/p&gt;
&lt;p&gt;Anyhow, that&#039;s it from me! Again, I really enjoyed this year&#039;s Symposium and I&#039;m looking forward to keep working with Solid myself :).&lt;/p&gt;
&lt;p&gt;As soon as I&#039;m done publishing this, I&#039;m heading out to spend the day in London with my partner. We&#039;ve made some bookings to visit the Sherlock Holmes museum (at 221b Baker Street!) and have an Afternoon Tea. It should be fun!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending the 4th Solid Symposium"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-the-4th-solid-symposium#comment-2" />
            <id>https://noeldemartin.com/tasks/attending-the-4th-solid-symposium#comment-2</id>
            <published>2026-04-24T09:23:00+00:00</published>
            <updated>2026-04-24T09:23:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-4th-solid-symposium#comment-2&quot;&gt;Attending the 4th Solid Symposium&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;This year, I am very much looking forward to attending the Symposium, given my &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-16&quot;&gt;revived enthusiasm for Solid&lt;/a&gt;. Also, I&#039;ll get to meet some people I&#039;ve never met in person before, like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://angelo.veltens.org/profile/card#me&quot;&gt;Angelo&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://jeff-zucker.solidcommunity.net/profile/card#me&quot;&gt;Jeff&lt;/a&gt;. As well as meeting with others I&#039;ve already met. Even &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://timbl.solidcommunity.net/profile/card#me&quot;&gt;Tim&lt;/a&gt; will be there!&lt;/p&gt;
&lt;p&gt;This time, I&#039;m not giving any talks, though. But I&#039;ve been part of the Programme Committee, so I&#039;ve been eyeing the talks coming through. I&#039;ll also join the second day of the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.eventbrite.co.uk/e/solid26-preview-building-personal-apps-and-ai-agents-tickets-1986060301826&quot;&gt;Solid Hackathon&lt;/a&gt;, and I&#039;ll be sure to show up for the drinks on the 29th at the Mikkeller Brewpub. All in all, it should be a fun couple of days!&lt;/p&gt;
&lt;p&gt;However, this turned out to coincide with the start of my job hunt, because I am once again looking for a job. You would think it&#039;s a good thing to attend a tech conference whilst looking for a job... But &lt;a href=&quot;https://noeldemartin.com/blog/the-soul-crushing-reality-of-job-seeking#the-passion-lie&quot;&gt;I haven&#039;t had much success finding a job related to Solid in the past&lt;/a&gt;, and I don&#039;t have any reason to believe that it&#039;ll be different this time.&lt;/p&gt;
&lt;p&gt;The truth is that, when it comes to my career, I haven&#039;t been in the best place for the last couple of years. I&#039;m starting to believe that &lt;a href=&quot;https://noeldemartin.com/blog/the-end-of-the-chapter#farewell-moodle-hq&quot;&gt;leaving Moodle&lt;/a&gt; was a mistake 😅. But the reality is that I wasn&#039;t completely happy there either, as I explained in that blog post. So I suppose I&#039;ll have to continue struggling 🤷. To be fair, &lt;a href=&quot;https://noeldemartin.com/blog/10-years-as-a-software-developer#2020-the-right-bus&quot;&gt;it took me almost 2 years (and 3 applications)&lt;/a&gt; to get a job at Moodle. Maybe I just haven&#039;t been patient enough, and certainly I haven&#039;t dedicated as much time to job seeking as I should have. I&#039;m fortunate enough to have savings that will last me a few months, so this time I&#039;ll try to enjoy the downtime, and hopefully my next job will be more rewarding.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Attending the 4th Solid Symposium"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-the-4th-solid-symposium" />
            <id>https://noeldemartin.com/tasks/attending-the-4th-solid-symposium</id>
            <published>2026-04-24T09:20:00+00:00</published>
            <updated>2026-04-24T09:20:00+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-4th-solid-symposium&quot;&gt;Attending the 4th Solid Symposium&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-4th-solid-symposium&quot;&gt;Attending the 4th Solid Symposium&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Another year, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sosy2026.eu/index.html&quot;&gt;another symposium&lt;/a&gt;! This year, it&#039;s held in London, England. I&#039;ll be around from April 29th to May 2nd.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Raising an Agent"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/raising-an-agent#comment-3" />
            <id>https://noeldemartin.com/tasks/raising-an-agent#comment-3</id>
            <published>2026-04-16T18:58:00+00:00</published>
            <updated>2026-04-16T18:58:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/raising-an-agent#comment-3&quot;&gt;Raising an Agent&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;For the last couple of weeks, I&#039;ve taken a detour from the main focus of this task (working on Ànima). But I thought I&#039;d share an update anyways, because it&#039;s still related to my end goal (making my own AI toolkit). TLDR, today&#039;s update is all about how I&#039;m using AI for coding. Feel free to skip if you just care about Ànima updates :).&lt;/p&gt;
&lt;p&gt;So, last month I watched &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/live/cucIWpAenro?si=Wc9FedEXk4NRFuJ2&amp;amp;t=28719&quot;&gt;Taylor&#039;s Laracon EU presentation&lt;/a&gt;. He talked through Laravel&#039;s AI philosophy, the tooling they&#039;ve been working on, and the upcoming avalanche of non-developers into the Laravel ecosystem. As always, the presentation was awesome and it inspired me a lot. In particular, he did a demo at the end that orchestrates all the pieces in the Laravel ecosystem (Cloud, Nightwatch, Boost, etc.) to detect and fix a bug without human interaction (besides &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://x.com/laravelphp/status/2029618382774096260&quot;&gt;answering a phone call from his Openclaw&lt;/a&gt; :O). Now, how much of that demo was staged or over-hyped, I don&#039;t know. But the fact remains that I liked it, and it is a goal worth shooting for in my own work.&lt;/p&gt;
&lt;p&gt;In order to learn more about the reality of AI in Laravel, I decided to start working on a new project. Initially, it was going to be a throw-away weekend idea. But it&#039;s going so well, that I&#039;m probably going to release it as a real app! However, it has nothing to do with Solid, and it certainly doesn&#039;t live up to &lt;a href=&quot;https://noeldemartin.com/blog/software-ideals-in-the-age-of-ai&quot;&gt;my software ideals&lt;/a&gt;. But that doesn&#039;t mean it&#039;s not useful :). In short, it&#039;s a &amp;quot;podcasts enhancer&amp;quot; (name TBD). I listen to a lot of podcasts, but some of them ramble too much. Like the proverbial book that should have been a blog post. So this application lets you augment RSS feeds. You give it a feed, and it sends it back with transcriptions, summaries, and chapter timestamps. I have already been using it myself in production, and it works! If this sounds like something you would like to use, let me know. The live version is going to be invite-only for now, given that this requires a real server-side and cannot be hosted as a simple PWA.&lt;/p&gt;
&lt;p&gt;Anyhow, that experience taught me a lot. Not only is Laravel delightful to use as a developer, it also make AI a lot better. This reinforces my opinion that, if I&#039;m going to succeed as a developer and in creating my own AI toolkit, the guardrails and the environment are probably the most important piece (which is great news for &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework&quot;&gt;all the other work I&#039;ve been doing&lt;/a&gt;!). The frontend part isn&#039;t as nice, though. But for this particular app, that&#039;s the least important part and it&#039;s good enough.&lt;/p&gt;
&lt;p&gt;Reflecting on how I&#039;ve been working these days, I came up with 4 levels of software development:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Caveman Programming&lt;/strong&gt;: This is what I&#039;ve been doing most of my life, which is coding without AI at all. But it&#039;s sadly going to disappear, and nowadays I only do this when I&#039;m trying to learn something (such as my recent experiments &lt;a href=&quot;https://noeldemartin.com/tasks/learning-react&quot;&gt;learning React&lt;/a&gt;). I do miss the craftsmanship and flow that went into it, but at this point I can&#039;t justify doing this anymore. And the next level is often as satisfying anyways.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AI-assisted Programming&lt;/strong&gt;: This is what I&#039;m spending most of my time doing. Basically, I use a code editor with inline suggestions (Cursor) and the built-in chat for quick tasks. I still &amp;quot;write&amp;quot; most of the code. Some people would also call this Caveman Programming, but personally I don&#039;t think we&#039;re at a point where we can stop writing code yet. Or at least, not in the projects I&#039;m working on (more on that later). To be honest, I&#039;m grateful that&#039;s the case, because I really like writing code. And the day I stop doing it will be a sad day. But it is definitely coming.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Vibe-engineering&lt;/strong&gt;: This is how I&#039;ve been building the podcasts enhancer, and other apps without as much success. I am aware of the codebase and architecture, and I do review every single line of code. But I don&#039;t write any of it. The reason I&#039;m not doing this in all my projects is that I&#039;m not happy with the code produced by LLMs. I know a lot of people will disagree with that, but from my own experience I have seen that AI produces wildly different results depending on the environment. With a fresh new Laravel project, and Laravel&#039;s opinionated patterns, they are pretty good. But in older projects, or in codebases that aren&#039;t well architected, AI still sucks. And I&#039;m not saying this for lack of trying, I have tested this approach countless times for the last few months, but most of the time I still think I&#039;m faster writing it myself. In some projects, though, I am slowly transitioning into this (such as &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-16&quot;&gt;the Soukai rewrite&lt;/a&gt;). I am convinced that with the right guardrails, skills, and environment, this will be the way to go. So I&#039;m probably going to be doing a lot more of this in the future.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Vibe-coding&lt;/strong&gt;: And finally, what everybody is talking about, vibe coding. At this level, I don&#039;t even look at the code. But I haven&#039;t been as successful here. I built a couple of apps that were decent enough to be useful, like an &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/indexeddb-inspector&quot;&gt;IndexedDB inspector&lt;/a&gt; or a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/manga-reader&quot;&gt;Manga Reader&lt;/a&gt;. But we&#039;re still very far from making this a viable option to build real software. Still, it is the goal I&#039;ll am for if I ever give Ànima this capability.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There are also other considerations to keep in mind, such as which models to use. Though to be honest, I don&#039;t see a big difference between all the frontier models. Sadly, local models aren&#039;t there yet, but I&#039;m sure some day they will. Interestingly, what seems to have the greatest impact on the outcome is the harness. For example, I pay for an AI Pro Google subscription, and I&#039;ve been testing Gemini 3.1 in different environments. Surprisingly, the worst one seems to be their official Gemini CLI 😅. It often takes ages to complete tasks, whereas using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://opencode.ai/&quot;&gt;OpenCode&lt;/a&gt; results are much faster. Ànima is, at its core, an AI harness. So it&#039;ll be interesting to see how far I can take it.&lt;/p&gt;
&lt;p&gt;Finally, I have experimented with some techniques such as spec-driven development, ralph loops, or cloud agents. But most of those didn&#039;t turn out great, or weren&#039;t significantly better than just telling OpenCode to build something small but significant. Although I do use plan mode sometimes.&lt;/p&gt;
&lt;p&gt;And that&#039;s about it! I may be forgetting some things, but in general that&#039;s a pretty good summary of my current state of AI. Is it going to change drastically in the next few months? Honestly, I don&#039;t think so. But it will definitely change in the upcoming years. Hopefully, by the time I&#039;m done with this task, I&#039;ll be able to do my best work using my favourite stack, my own tooling, and even local models.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Raising an Agent"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/raising-an-agent#comment-2" />
            <id>https://noeldemartin.com/tasks/raising-an-agent#comment-2</id>
            <published>2026-03-18T16:55:00+00:00</published>
            <updated>2026-03-18T16:55:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/raising-an-agent#comment-2&quot;&gt;Raising an Agent&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Lately, it seems like AI is everything, everywhere, all at once (online). &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nolanlawson.com/2026/02/07/we-mourn-our-craft/&quot;&gt;I don&#039;t like it either&lt;/a&gt;, but after much resisting I think it&#039;s time to embrace it. However, I&#039;ll do it in my own terms!&lt;/p&gt;
&lt;p&gt;Now, I don&#039;t know how far I&#039;ll take this, because the goal is obviously open-ended. But this time, I&#039;ve decided to start the task a little differently: I already have the first version online 🤯. It&#039;s still very early, and nothing more than a prototype, but if you&#039;re keen to see how it&#039;s going, check it out: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://anima.noeldemartin.com&quot;&gt;anima.noeldemartin.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, what is Ànima?&lt;/p&gt;
&lt;p&gt;Right now, Ànima is just an interface to chat with different AI models, using your Solid account. It&#039;ll store the conversations in your POD, and give the models access to your entire storage. Make sure not to expose it to models you don&#039;t trust! In fact, I don&#039;t recommend using it with a real POD yet... so maybe just point it to a development POD if you&#039;re curious.&lt;/p&gt;
&lt;p&gt;At the same time, this is what Ànima doesn&#039;t do (yet):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Write to your POD (it is read-only).&lt;/li&gt;
&lt;li&gt;Communicate outside of the browser or the AI model (it can&#039;t leak your information).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All in all, it should be relatively safe to play with. Ideally, something like this would be used mostly with local models. But there&#039;s nothing stopping you from connecting it to 3rd party providers.&lt;/p&gt;
&lt;p&gt;However, this is only the beginning :). I do intend to make it an agent eventually (meaning, it should be capable of performing long-running tasks), and communicate with the outside world. I&#039;d also like to make it capable of creating apps (using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://aerogel.js.org&quot;&gt;Aerogel&lt;/a&gt;, of course). But other than that, I&#039;m not sure where I&#039;ll take it.&lt;/p&gt;
&lt;p&gt;Something cool I&#039;ve been thinking about is that this could solve &lt;a href=&quot;https://noeldemartin.com/blog/why-solid#lack-of-pod-providers-in-b2c&quot;&gt;the biggest problem in the Solid ecosystem&lt;/a&gt; (in my opinion). The current version is a simple SPA, which means that everything is happening in the browser. But ideally, I&#039;d like to install this on a server or a personal computer. The more I think about it, the more I&#039;m convinced that this is the perfect use-case for a Solid POD. Imagine a Solid POD that is easy to install anywhere, and comes with an AI assistant built-in that is private by default. Yes, this sounds a lot like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/DesignIssues/Charlie.html&quot;&gt;Charlie&lt;/a&gt; :).&lt;/p&gt;
&lt;p&gt;Now, let&#039;s talk a bit about technology choices.&lt;/p&gt;
&lt;p&gt;Initially, I was very excited to start using Laravel again, because this was going to be primarily a server-side thing. But then the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravel.com/docs/13.x/ai-sdk&quot;&gt;Laravel AI SDK&lt;/a&gt; came out, and it didn&#039;t support local models :/. They have added them since, but the support is still limited and by that point I had already moved on. Instead, I started using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ai-sdk.dev/&quot;&gt;Vercel&#039;s AI SDK&lt;/a&gt;. And so far, it&#039;s going great. I&#039;ve been able to release the app as an SPA, which hadn&#039;t even crossed my mind. I&#039;m pretty sure some upcoming features will need to live outside of the browser, but it&#039;s very cool that this was possible!&lt;/p&gt;
&lt;p&gt;In order to manage the server-side stuff, I also started playing with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://tauri.app/&quot;&gt;Tauri&lt;/a&gt;. Yes, when I say &amp;quot;server-side&amp;quot;, I also mean a personal computer. The idea is that you should be able to install Ànima in your own computer, without knowing anything about servers or CLIs. As I was working on this, Tauri became a bit overwhelming soon, with builds that take 30 minutes and 8GB+ of disk space (in build assets, not the final artifact). After some research, I came across &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://blackboard.sh/electrobun/docs/&quot;&gt;Electrobun&lt;/a&gt;, which is a very new project that looks promising. I still haven&#039;t done much of the native stuff; but I don&#039;t think I&#039;ll need to, given that this app is basically a wrapper for a node server.&lt;/p&gt;
&lt;p&gt;Other than these two, I don&#039;t think there is anything else too different from apps I&#039;ve built before. I&#039;m back to using Vue for the frontend, I am using Aerogel and Soukai for most of the Solid stuff, and I&#039;m playing with all of Vite&#039;s new tooling (oxlint, oxfmt, etc.). Maybe something worth mentioning is Bun and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://elysiajs.com/&quot;&gt;ElysiaJS&lt;/a&gt;. I hadn&#039;t used Bun a lot in the past, and I have to say it&#039;s pretty nice. It even helped me pinpoint a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/inrupt/solid-client-authn-js/pull/4201&quot;&gt;bunch&lt;/a&gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/inrupt/solid-client-authn-js/pull/4207&quot;&gt;of&lt;/a&gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/inrupt/solid-client-authn-js/pull/4208&quot;&gt;bugs&lt;/a&gt; in Inrupt&#039;s auth library. And I was very excited about ElysiaJS at the beginning, but now that I&#039;ve used it for a while I&#039;m more lukewarm. The type safety seems very nice, but it&#039;s a bit quirky to work with. In any case, I&#039;m only using it as a transport layer between the frontend and the backend, but most of the communication is pure Typescript (that&#039;s how I managed to deploy it as a plain SPA).&lt;/p&gt;
&lt;p&gt;So yeah, that&#039;s it, I&#039;m building an Agent! If you have some thoughts about this, definitely let me know.&lt;/p&gt;
&lt;p&gt;PS: In case you&#039;re wondering, yes, I do listen to Amp&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ampcode.com/podcast&quot;&gt;Raising an agent&lt;/a&gt; podcast. That&#039;s where I got the idea for naming this task :).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Raising an Agent"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/raising-an-agent" />
            <id>https://noeldemartin.com/tasks/raising-an-agent</id>
            <published>2026-03-18T16:54:00+00:00</published>
            <updated>2026-03-18T16:54:00+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/raising-an-agent&quot;&gt;Raising an Agent&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/raising-an-agent&quot;&gt;Raising an Agent&lt;/a&gt;&lt;/p&gt;&lt;p&gt;There are many things going on with AI, but &lt;a href=&quot;https://noeldemartin.com/blog/software-ideals-in-the-age-of-ai&quot;&gt;I don&#039;t love all of them&lt;/a&gt;. In this task, I&#039;m creating my own AI toolkit. We&#039;ll see how far I take it!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Learning React"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-react#comment-5" />
            <id>https://noeldemartin.com/tasks/learning-react#comment-5</id>
            <published>2026-02-28T10:40:32+00:00</published>
            <updated>2026-02-28T10:40:32+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/learning-react#comment-5&quot;&gt;Learning React&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/learning-react#comment-5&quot;&gt;Learning React&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Learning React"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-react#comment-4" />
            <id>https://noeldemartin.com/tasks/learning-react#comment-4</id>
            <published>2026-02-28T10:38:12+00:00</published>
            <updated>2026-02-28T10:38:12+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/learning-react#comment-4&quot;&gt;Learning React&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Last month, I finished the second part of the course and started writing an update for this journal... But I ended up scrapping it, because it was turning out very negative, and I promised I was done with that in my last entry.&lt;/p&gt;
&lt;p&gt;Well, I just finished the course, and I&#039;ll have to publish an update because I want to be done with the task. But I don&#039;t want to be disingenuous, so beware, it&#039;s going to be negative 😅.&lt;/p&gt;
&lt;p&gt;I don&#039;t want to repeat what I said last time, but I will emphasize a couple of points. The first one is that, indeed, the course was &lt;em&gt;too easy&lt;/em&gt;. I had also been using CSS for years before I took &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css&quot;&gt;Josh&#039;s CSS course&lt;/a&gt;, but I learned a ton and many of the exercises were challenging. But that wasn&#039;t the case in this course. Even though Josh&#039;s content is really great, and I still love his teaching style, the course became a bit of a slog. Suffice to say, I&#039;m glad to be done with it :/.&lt;/p&gt;
&lt;p&gt;And the second point, which is probably the most relevant, is that I don&#039;t think Josh has ever worked with anything other than React. So the whole premise that this course is also right for &amp;quot;Angular/Vue&amp;quot; developers is completely flawed. I still think this course is awesome for beginners, maybe even for experienced developers who don&#039;t have a ton of frontend experience. But if you&#039;re already comfortable with any of the other modern frontend frameworks, you&#039;re better off just reading &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/react/&quot;&gt;Josh&#039;s blog&lt;/a&gt; to get &amp;quot;the hang of React&amp;quot; (I haven&#039;t found the joy, yet).&lt;/p&gt;
&lt;p&gt;Now, I suppose I should also share my opinion about some of the new concepts I did learn. Such as React Server Components. Well, what can I say, I don&#039;t like them either 🙈. In particular, I think the way in which server code and client code is mixed up in React is awful. To make things even more confusing, React &amp;quot;Client&amp;quot; Components are also rendered on the server! And I want to clarify, I don&#039;t mean &amp;quot;confusing&amp;quot; because I don&#039;t understand how they work. Yes, Josh is awesome and everything he explains in the course is crystal clear. I just don&#039;t like the design choices made in React.&lt;/p&gt;
&lt;p&gt;I&#039;ve also been working with React a lot more since my last update, mainly on my day job (I don&#039;t use it for side-projects anymore). One of the most annoying things in React is the lack of global state. Everything has to be a damn hook, and the whole reactivity system is very counter-intuitive. I did find a library using global state, called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/timolins/react-hot-toast&quot;&gt;react-hot-toast&lt;/a&gt;, and that one is pretty cool. If you want to render a toast, you only need to import a function, and call it. Imagine that! But 99% of React libraries, require you to use hooks and deal with React&#039;s reactivity mess.&lt;/p&gt;
&lt;p&gt;Anyhow, to end on a positive note, I&#039;ll say that I still have a module left in the course: the Layout Animations bonus module. And I&#039;m really looking forward to that one! In fact, I&#039;ve also been taking Josh&#039;s new &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://whimsy.joshwcomeau.com/&quot;&gt;Whimsical Animations&lt;/a&gt; course, and I&#039;m enjoying it a lot.&lt;/p&gt;
&lt;p&gt;However, none of those have anything to do with React (thankfully), so I&#039;ll consider this task done.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework#comment-16" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework#comment-16</id>
            <published>2026-02-14T12:10:22+00:00</published>
            <updated>2026-02-14T12:10:22+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-16&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;It&#039;s been a few months since I updated this task, but today I finally have something to share.&lt;/p&gt;
&lt;p&gt;If you&#039;ve been following my work, feel free to skip this paragraph, but TLDR last year wasn&#039;t my best. At the end of 2024, &lt;a href=&quot;https://noeldemartin.com/blog/the-end-of-the-chapter#the-plan&quot;&gt;I quit my job with the intention to work on Solid full-time&lt;/a&gt; (and that blog post was quoted in Tim&#039;s latest book, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://thisisforeveryone.timbl.com/&quot;&gt;This Is For Everyone&lt;/a&gt;!). But 2025 wasn&#039;t great. I spent the first few months fumbling, and ultimately &lt;a href=&quot;https://noeldemartin.com/blog/the-soul-crushing-reality-of-job-seeking#the-nlnet-fiasco&quot;&gt;I didn&#039;t secure any funding&lt;/a&gt;. What&#039;s worse, I wasted ~7 months waiting for an answer instead of being proactive making something on my own. I also failed at getting a job related to Solid or anything like it. Suffice to say, I got burned out from Solid. So I &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz&quot;&gt;dabbled with other technologies&lt;/a&gt;, and started reconsidering what to do with my side-projects.&lt;/p&gt;
&lt;p&gt;However, at the end of 2025 I found myself looking back on the past few years, and realized that the most happy I&#039;d been with my side-projects was when I &lt;a href=&quot;https://noeldemartin.com/blog/working-in-the-open-when-no-one-is-looking#what-is-it-for&quot;&gt;just followed my curiosity&lt;/a&gt;. I also noticed that, after years of seeking, I hadn&#039;t find anything that came even close to Solid to realize &lt;a href=&quot;https://noeldemartin.com/blog/software-ideals-in-the-age-of-ai&quot;&gt;My Software Ideals&lt;/a&gt;. So I made a decision for 2026. This year, I&#039;m back on the Solid horse! But this time, I&#039;m back to my pre-2025 attitude. I&#039;ll be working on it just to scratch my own itch, not with any aspirations of making a living.&lt;/p&gt;
&lt;p&gt;But there is something else that happened at the end of 2025. Many people cite that period as &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://x.com/aarondfrancis/status/2009104656627351675&quot;&gt;the inflection point for AI&lt;/a&gt;. I&#039;m not 100% there, but I do agree that AI is getting better by the day, and it is already useful to me in many ways (just not enough to make me stop looking at the code 😅). With that landscape, I also wondered if it made sense to keep working on Solid or Aerogel, which prompted me to write my recent blog post on Software Ideals. And I came to the conclusion that indeed, it&#039;s still relevant (maybe more than ever), and I&#039;ll keep working on this. If anything, if I were to believe the hype, I should be able to take advantage of these new capabilities to do things I could never have done before.&lt;/p&gt;
&lt;p&gt;And that&#039;s why, at the beginning of 2026 🥁... I started rewriting &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://soukai.js.org/&quot;&gt;Soukai&lt;/a&gt; from scratch!! Wait, what!? Let me explain.&lt;/p&gt;
&lt;p&gt;So, I created Soukai in 2018, before I even knew that Solid existed. Since then, I have been evolving it to support many new paradigms: RDF, Solid, CRDTs, etc. And I did all of those as &amp;quot;optional&amp;quot; features. Some even in a separate package, like &lt;code&gt;soukai-solid&lt;/code&gt;. But at this point, I have decided to go all-in, and it&#039;s time to remove all the unnecessary abstractions. And it&#039;s not simply a rewrite for its own sake. As I mentioned a few months ago, working on a Shows Tracker really stretched the current implementation, and I was unable to realize that vision. For this rewrite, I&#039;ve been thinking about some architectural improvements that should make that a lot more manageable. My experiments with other technologies will also bear fruit, because I really enjoyed Jazz&#039;s DX and I&#039;m going to borrow from that.&lt;/p&gt;
&lt;p&gt;Actually, at the time of this writing, I have already rewritten most of it! Initially, I tried to rely on AI, because all that excitement at the end of the year made me believe that maybe a rewrite wouldn&#039;t be a task beyond AI models anymore. However, it hasn&#039;t been as smooth as that, so I&#039;ve had to do a good amount of coding myself. But it has definitely speed me up!&lt;/p&gt;
&lt;p&gt;If you&#039;re curious to see what this new version looks like, I have already migrated my Ramen application. You can find it in the &lt;code&gt;soukai-bis&lt;/code&gt; branch, and you can see all the changes that were necessary (at the application layer) in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/ramen/commit/5096dbb1e4938b7b4b458451ef9027f90543ea6f&quot;&gt;this commit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now, I still have to rewrite some functionality specific to CRDTs and syncing, as well as migrating all the Aerogel stuff. But so far, it&#039;s looking good, and I&#039;m excited about Solid again!&lt;/p&gt;
&lt;p&gt;PS: I&#039;m also going to start a brand new project, closely related with this task and Solid, but much more AI-focused. Stay tuned ;).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Housekeeping 2026"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping-2026#comment-4" />
            <id>https://noeldemartin.com/tasks/housekeeping-2026#comment-4</id>
            <published>2026-02-12T19:55:00+00:00</published>
            <updated>2026-02-12T19:55:00+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-2026#comment-4&quot;&gt;Housekeeping 2026&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-2026#comment-4&quot;&gt;Housekeeping 2026&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Housekeeping 2026"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping-2026#comment-3" />
            <id>https://noeldemartin.com/tasks/housekeeping-2026#comment-3</id>
            <published>2026-02-12T19:53:00+00:00</published>
            <updated>2026-02-12T19:53:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-2026#comment-3&quot;&gt;Housekeeping 2026&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Well, and that&#039;s it for this year&#039;s housekeeping! As always, I don&#039;t particularly look forward to doing these, but I&#039;m always glad I did them :).&lt;/p&gt;
&lt;p&gt;First of all, I upgraded &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server&quot;&gt;my self-hosted Nextcloud instance&lt;/a&gt;. This is often the one I dread upgrading the most, because it is somewhat the most sensitive... and yet, this year was the easiest :). It was so easy, in fact, that I spent some more time tinkering with Nextcloud, and I realized that I had made a grave mistake 😱. Turns out that my server was configured in the Helsinki region, whilst my Storage Box was in the Nuremberg region... And wouldn&#039;t you know it, moving them both to Helsinki has made my Nextcloud A LOT faster. To the point that browsing the folders in the web is almost as fast as browsing them in my computer :D. I thought Nextcloud was slow, but turns out it was my fault 🙈. Something interesting to mention is that I couldn&#039;t actually move the Storage Box from one region to another, but it was easy to just get a new one and &lt;code&gt;rsync&lt;/code&gt; the entire volume. Yes, all 352GB of it. And everything worked out without a glitch, amazing. I also changed from a WebDAV mount to SMB/CIFS, which is apparently faster. But I&#039;m sure most of the gains come from the shorter physical distance that the bytes have to travel.&lt;/p&gt;
&lt;p&gt;The second thing I did was upgrade Statamic to v6, but this one didn&#039;t turn out so well 😅. In fact, my website has been half broken for almost a week :/ (let me know if something&#039;s still broken!). I documented my issues in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/statamic/cms/discussions/13856&quot;&gt;a github discussions thread&lt;/a&gt;, and with some help from the Discord community I&#039;ve been able to remediate most problems. Still, I&#039;m not super happy with the way things turned out... My &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-202425#comment-4&quot;&gt;first impressions with Statamic&lt;/a&gt; were great, but I didn&#039;t like this experience a bit. I just upgraded the site for &amp;quot;security&amp;quot;, I certainly didn&#039;t want any new features or improvements. But I found myself with a broken site and struggling to make sense of it. The funny thing is that my site is super simple, it&#039;s just a bunch of markdown files and some PHP/JS sprinkles. Maybe at some point I&#039;ll have to rethink the architecture. For now, though, it seems like things are back on track. Also, I want to give a shout out to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nightwatch.laravel.com/&quot;&gt;Laravel Nightwatch&lt;/a&gt;, because it&#039;s been awesome for detecting and solving these issues. I don&#039;t know how anyone can have websites without something like this!&lt;/p&gt;
&lt;p&gt;Finally, I&#039;ve been using Omarchy as my main desktop environment for a couple of weeks, and... it&#039;s awesome! It &lt;em&gt;is&lt;/em&gt; opinionated, which is good for some things and bad for others. For example, it seems like DHH doesn&#039;t ever have more than one user per computer, because as soon as you try to create a second account everything breaks 😅. But I was able to make it work after some tinkering. Other than that, though, it&#039;s pretty cool. I can&#039;t say that I loved anything in particular (I&#039;m not super entranced with Hyprland, though it&#039;s nice), but I really love the customization and ownership. I feel like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=d23jFJmcaMI&quot;&gt;I could change anything&lt;/a&gt;, and that&#039;s awesome. It reminds me a lot of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/105170756902130347&quot;&gt;the experience I had with VSCode&lt;/a&gt;, but now for the entire OS. So far, I haven&#039;t had any issues with drivers or the environment, fingers crossed 🤞 (I had to use &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://distrobox.it/&quot;&gt;distrobox&lt;/a&gt; for some playwright stuff though). If you&#039;re curious about some of my configurations, check out &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/env/tree/main/omarchy&quot;&gt;my env repository&lt;/a&gt;. I&#039;m sure it&#039;s going to change a lot in the following months/years.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "Software Ideals in the Age of AI"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/software-ideals-in-the-age-of-ai" />
            <id>https://noeldemartin.com/blog/software-ideals-in-the-age-of-ai</id>
            <published>2026-02-03T17:02:00+00:00</published>
            <updated>2026-02-03T17:02:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/software-ideals-in-the-age-of-ai&quot;&gt;Software Ideals in the Age of AI&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/software-ideals-in-the-age-of-ai&quot;&gt;Software Ideals in the Age of AI&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Housekeeping 2026"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping-2026#comment-2" />
            <id>https://noeldemartin.com/tasks/housekeeping-2026#comment-2</id>
            <published>2026-01-24T08:57:00+00:00</published>
            <updated>2026-01-24T08:57:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-2026#comment-2&quot;&gt;Housekeeping 2026&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve decided to follow &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://world.hey.com/dhh/it-s-a-beelink-baby-243fdaf1&quot;&gt;DHH&#039;s playbook&lt;/a&gt;, so I bought a Beelink SER5. I have been working on an Asus TUF laptop for ~5 years, and before that I also worked mostly on a laptop. It&#039;s been almost 8 years since I&#039;ve had a desktop PC 😱. But it isn&#039;t as bad as it sounds, because I do have a screen and a mouse/keyboard, so most of the time I&#039;m using the laptop as a desktop PC 😅. Still, it is very annoying to constantly plug it in and out, and moving the laptop around. So I&#039;m excited for this :). Regarding specs, it &amp;quot;only&amp;quot; has 24GB RAM and it&#039;s not the best of the bunch. But honestly, it&#039;s been years since I&#039;ve cared about these things. I&#039;m currently running on 16GB RAM, and honestly I don&#039;t have any performance issues. It&#039;s funny, because I love computers and software; but I couldn&#039;t care less about RAMs, CPUS, or any of the specs. I guess I&#039;m mostly a software guy :).&lt;/p&gt;
&lt;p&gt;I&#039;m also going to give Omarchy a try. I have been using Ubuntu for ~15 years, and I haven&#039;t touched windows since. I also have never owned an Apple device, so changing my OS could be very impactful. But the truth is that I don&#039;t have anything fancy, and the reason I haven&#039;t tried any other distributions yet is because Ubuntu has been &amp;quot;good enough&amp;quot;. However, I&#039;ve always been curious, and I&#039;ve been tempted more than once to try Debian or Arch. What really excites me about Omarchy, besides the fact that I like DHH&#039;s taste, is that it seems to be super configurable. So I&#039;m looking forward to not switching again for the next 15 years. We&#039;ll see how it pans out!&lt;/p&gt;
&lt;p&gt;Other than that, I&#039;ll also use this task to go over some of my self-hosting setup. I&#039;ve already talked about this in many of my other tasks, but TLDR here&#039;s everything I am self-hosting at the moment:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/mastodon&quot;&gt;Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/nextcloud&quot;&gt;Nextcloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://noeldemartin.com&quot;&gt;noeldemartin.com&lt;/a&gt; (this site!)&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://proxy.noeldemartin.com&quot;&gt;proxy.noeldemartin.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vocab.noeldemartin.com&quot;&gt;vocab.noeldemartin.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noelDeMartin/lss&quot;&gt;LSS&lt;/a&gt; (a Laravel Solid Server that uses Nextcloud for Storage)&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/rem&quot;&gt;Rem&lt;/a&gt; (I&#039;m probably going to remove this)&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/jazz-store&quot;&gt;Jazz Store&lt;/a&gt; (I&#039;m also going to remove this)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And the tools I&#039;m using to orchestrate and manage all of this are &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/kanjuro&quot;&gt;kanjuro&lt;/a&gt; (docker), &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noelDeMartin/rireki&quot;&gt;rireki&lt;/a&gt; (backups), and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noelDeMartin/nginx-agora&quot;&gt;nginx-agora&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Housekeeping 2026"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping-2026" />
            <id>https://noeldemartin.com/tasks/housekeeping-2026</id>
            <published>2026-01-24T08:55:00+00:00</published>
            <updated>2026-01-24T08:55:00+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-2026&quot;&gt;Housekeeping 2026&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-2026&quot;&gt;Housekeeping 2026&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Once a year, I go through some chores. This time, I&#039;m looking at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://omarchy.org/&quot;&gt;Omarchy&lt;/a&gt; and reviewing my self-hosting infrastructure.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Making a Shows Tracker with Jazz"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz#comment-5" />
            <id>https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz#comment-5</id>
            <published>2025-12-13T09:08:00+00:00</published>
            <updated>2025-12-13T09:08:00+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz#comment-5&quot;&gt;Making a Shows Tracker with Jazz&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz#comment-5&quot;&gt;Making a Shows Tracker with Jazz&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Shows Tracker with Jazz"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz#comment-4" />
            <id>https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz#comment-4</id>
            <published>2025-12-13T09:06:00+00:00</published>
            <updated>2025-12-13T09:06:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz#comment-4&quot;&gt;Making a Shows Tracker with Jazz&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Turns out I was a bit &lt;em&gt;too quick&lt;/em&gt; in publishing my last update on Jazz, because indeed I was using it in production... but I hadn&#039;t used it enough to find some of the problems. Now that I have, Jazz is not looking so good anymore 😅. Or rather, I don&#039;t think it&#039;s looking good &lt;em&gt;for my use-case&lt;/em&gt; (I still think it&#039;s very cool!).&lt;/p&gt;
&lt;p&gt;So, what&#039;s the main problem? Turns out, Jazz and I weren&#039;t on the same page. When I started working on this app, the architecture I had in mind was the same I&#039;ve been working on in my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://aerogel.js.org/&quot;&gt;Aerogel framework&lt;/a&gt;. Which in short is &amp;quot;a local-first app that syncs with your Solid POD&amp;quot;. Of course, Jazz doesn&#039;t support Solid, so I was building &amp;quot;a local-first app that syncs with my self-hosted sync server&amp;quot;. But turns out, what Jazz wants me to build is &amp;quot;a collaborative app that syncs&amp;quot;. It seems like a very subtle difference, so let me clarify what this means.&lt;/p&gt;
&lt;p&gt;The way I am implementing this in Aerogel is that once you connect to a POD, all your data is downloaded to your device. Then, whenever you make changes, these are uploaded to the POD (and subsequently downloaded by any other device that is connected). In Jazz, instead, the only thing that syncs is &lt;em&gt;the data you are currently using in the app&lt;/em&gt;. Turns out that a Jazz store is not a single CRDT, but a collection of connected CRDTs (or Co-values, as they call them). And so, the only data that syncs is the CRDTs you&#039;re &amp;quot;subcribed to&amp;quot;. There also isn&#039;t a way to track a global &amp;quot;sync status&amp;quot;, which complicates the UI I would like to build (in Aerogel, I have a status dot displaying whether you&#039;re fully synced or you have some local changes).&lt;/p&gt;
&lt;p&gt;This makes a lot of sense for collaborative applications. But in my use-case, this isn&#039;t great. What this means in practice is that whenever I logged into a new device, I would get the list of shows in my collection (because I was listing them in the home screen). And that was available offline, so I got the impression that everything was working. But then I discovered that opening a show that I hadn&#039;t opened in that device, it would be empty! That happens because, as I&#039;ve mentioned, in Jazz the only data that syncs is the one you&#039;re using, not the entire store.&lt;/p&gt;
&lt;p&gt;I mentioned before that the Discord community had been very helpful. For this particular issue, I got confirmation that it was working as intended (my approach was refered to as &amp;quot;sync the world&amp;quot;, which Jazz doesn&#039;t support). The only suggested workaround was to subscribe to all the data manually. But when I tried, I ran into the same performance issues I had seen in my own approach. And nobody seemed to have any further solutions after that 🤷.&lt;/p&gt;
&lt;p&gt;And there is yet another problem with Jazz. I am using the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://jazz.tools/docs/react/core-concepts/sync-and-storage#self-hosting-your-sync-server&quot;&gt;&lt;code&gt;jazz-run&lt;/code&gt; cli&lt;/a&gt; for my self-hosted server, and I hadn&#039;t paid much attention to it, but you&#039;ll notice that it doesn&#039;t mention anything about authentication. That&#039;s actually a separate service, which I configured using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.better-auth.com/&quot;&gt;Better Auth&lt;/a&gt;. And I got the impression that it was safe because I&#039;m configuring my app so that only signed up users can connect:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-jsx&quot;&gt;&amp;lt;JazzReactProvider
    sync=@{{
        peer: `wss://${MY_SELF_HOSTED_SYNC_SERVER}`,
        when: &#039;signedUp&#039;,
    }}
&amp;gt;
    &amp;lt;App /&amp;gt;
&amp;lt;/JazzReactProvider&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But then, it dawned on me... What&#039;s keeping other people from creating an app using my self-hosted server for syncing, using their own authentication mechanism (or no authentication at all)? Turns out, nothing 😅. I also asked about this in the Discord community, and the solution I got was to restrict the allowed origins at a network level :/. Which of course, should work in the Web, but is very easy to work around in a mobile app or even using a proxy server.&lt;/p&gt;
&lt;p&gt;Now, none of these two problems are impossible to solve. The syncing/performance issue can probably be worked around using Jazz in a clever way. And the sync server could be guarded implementing a hand-shake before initiating the websocket connection. But this shows me that, clearly, Jazz and I aren&#039;t on the same page. The whole point of using Jazz was to forget about the syncing mechanism, and focus on building my app. But it doesn&#039;t seem like that&#039;s going to happen. If I&#039;m going to have to tinker with syncing and performance woes, I&#039;d much rather go back to working on my framework (and get interoperability back)!&lt;/p&gt;
&lt;p&gt;So I think that marks the end of this experiment. I still think Jazz is very cool, and I&#039;d recommend it if you&#039;re building a collaborative app or you don&#039;t mind the limitations I have mentioned. The DX really is magical, and using Jazz has raised the bar for what I&#039;d like Aerogel to become (though I&#039;m not sure it ever will).&lt;/p&gt;
&lt;p&gt;Though I have to wonder, maybe I&#039;m being too idealistic? If you&#039;re reading this, I&#039;m curious to hear what you think :). &lt;a href=&quot;mailto:{{contact:email}}?subject=Jazz!&quot;&gt;Shoot me an email&lt;/a&gt; and let me know.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Learning React"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-react#comment-3" />
            <id>https://noeldemartin.com/tasks/learning-react#comment-3</id>
            <published>2025-12-11T19:23:00+00:00</published>
            <updated>2025-12-11T19:23:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/learning-react#comment-3&quot;&gt;Learning React&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I have just finished the first 2 modules and the first project, and let me tell you... I&#039;m going to rant 😅. If you&#039;re not in the mood for that, you may want to skip today&#039;s update. TLDR, Josh is still awesome, but I just don&#039;t like React (and I don&#039;t know if I ever will). But it seems like I&#039;m going to be spending a lot of time working with React, so I may as well get this out of my system and accept that it is what it is.&lt;/p&gt;
&lt;p&gt;Here&#039;s the long version:&lt;/p&gt;
&lt;p&gt;The first 2 modules and the first project are actually the &amp;quot;Basic Package&amp;quot; of the course. So you could say I have &amp;quot;finished&amp;quot; the course, and I haven&#039;t changed my mind about React. If anything, it&#039;s gotten worse. Again, this is not Josh&#039;s fault! I still love his content, and it&#039;s thanks to him that I&#039;m actually enjoying the course despite the incoming rant. But I just can&#039;t stand React.&lt;/p&gt;
&lt;p&gt;If you haven&#039;t, take a look at this website: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://component-party.dev/?f=react-vue3&quot;&gt;Component Party&lt;/a&gt;. You can find a comparison of different situations solved with Vue and React. I struggle to find a single example where I&#039;d prefer to use React (and by the way, if for some twisted reason you actually like JSX, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vuejs.org/guide/extras/render-function.html#jsx-tsx&quot;&gt;you can also use it in Vue&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Now, I understand that nothing is perfect, and software development is nothing but making trade-offs. The problem is, that I don&#039;t agree with any of the trade-offs made in React! Years ago, Evan You (the creator of Vue &amp;amp; Vite) talked about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=ANtSWq-zI0s&quot;&gt;Seeking the Balance in Framework Design&lt;/a&gt;. In his talk, he goes into some of the common trade-offs found in frontend frameworks. And even though he tries to give an objective view where &amp;quot;all the decisions are valid&amp;quot;, I think he fails at that. To me, this presentation is the perfect example of why Vue is better in almost every single way.&lt;/p&gt;
&lt;p&gt;To his credit, Josh actually tackles many of the controverises with React, such as the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://mccarroll.dev/blog/svelte&quot;&gt;React vs Svelte&lt;/a&gt; meme, or the JSX vs template conundrum. But he gives the same arguments I have already heard a thousand times. Basically, it boils down to these two: React is &amp;quot;just JavaScript&amp;quot;, and he doesn&#039;t like &amp;quot;magic frameworks&amp;quot;.&lt;/p&gt;
&lt;h4&gt;React is &amp;quot;just JavaScript&amp;quot;&lt;/h4&gt;
&lt;p&gt;This is probably the most common argument I&#039;ve heard in defense of React, and I&#039;ll be blunt here: it&#039;s complete bullshit. I know JavaScript, I&#039;ve even come to &lt;em&gt;like&lt;/em&gt; JavaScript. And yet, I&#039;m constantly running into surprises with React.&lt;/p&gt;
&lt;p&gt;And there&#039;s no better example than hooks, the beating heart of React. I linked to this in my previous update, but if you haven&#039;t seen it yet, I suggest that you read the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://react.dev/reference/rules/rules-of-hooks&quot;&gt;Rules of Hooks&lt;/a&gt; in the official documentation. The very first rule says that you can&#039;t use hooks inside of something as essential to the language as conditionals or loops. And it doesn&#039;t get better from there. Sorry, I thought React was &amp;quot;just JavaScript&amp;quot;?&lt;/p&gt;
&lt;p&gt;But I understand why this idea is used as a selling point for React (even though it is a lie). Because it builds on top of an even bigger idea that you also often hear React developers say: &amp;quot;Just use the platform&amp;quot;. You know what&#039;s the platform? Even more essential to the Web than JavaScript? HTML!! And yet, this isn&#039;t valid React code:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;h1 class=&amp;quot;title&amp;quot;&amp;gt;Hello&amp;lt;/h1&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/react/pulp-fiction-meme.jpg&quot; alt=&quot;Pulp Fiction meme of Samuel L. Jackson pointing with a gun saying &amp;quot;make me write className one more god damn time&amp;quot;&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;&amp;quot;Magic&amp;quot; is bad&lt;/h4&gt;
&lt;p&gt;So yeah, we&#039;ve already established that React is not &amp;quot;just JavaScript&amp;quot;. But something else that&#039;s commonly used against other frameworks like Vue or Svelte is that they are &amp;quot;too magical&amp;quot;. Josh even goes as far as using Ruby on Rails as an example of something to avoid 😱.&lt;/p&gt;
&lt;p&gt;But what even is &amp;quot;magic&amp;quot;? Or rather, what&#039;s the difference between &amp;quot;magic&amp;quot; and encapsulation or tooling? I would say that React is pretty magical itself, given all the stupid rules for hooks, and the fact that JSX is not even valid JavaScript.&lt;/p&gt;
&lt;p&gt;This is what Josh has to say about why React is better than these &amp;quot;magical frameworks&amp;quot;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The React way has a steeper learning curve and it can feel a lot more high-friction, but now that I understand it, I never feel like I get lost in the woods. And that&#039;s part of what makes React so nice to use.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Well, you know what? I also went through a phase of learning the ins and outs of Laravel (a framework very similar to Ruby on Rails), and nowadays I don&#039;t get &amp;quot;lost in the woods&amp;quot; either. So if you have to go through a &amp;quot;steep learning curve&amp;quot; anyways, why does it matter if something is &amp;quot;magic&amp;quot; or not?&lt;/p&gt;
&lt;p&gt;To me, the only difference between &amp;quot;magic&amp;quot; and encapsulation or tooling is that &amp;quot;magic&amp;quot; is a mechanism you don&#039;t understand. For example, Active Record is pretty magical, and it&#039;s also often used as an example of a bad practice. But it&#039;s one of my favorite patterns, and given that I understand it (I&#039;ve even built &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://soukai.js.org/&quot;&gt;my own Active Record library&lt;/a&gt;), I don&#039;t get &amp;quot;lost in the woods&amp;quot;.&lt;/p&gt;
&lt;h4&gt;The Joy of React&lt;/h4&gt;
&lt;p&gt;So, let&#039;s be honest here. People who prefer React over Vue/Svelte just like it better. And you know what? That&#039;s ok! It is a perfectly good argument. And ultimately, that may be the reason why I prefer Vue myself. I just feel more joy using it than React. But don&#039;t tell me that it&#039;s &amp;quot;just JavaScript&amp;quot; or &amp;quot;not magical&amp;quot;.&lt;/p&gt;
&lt;p&gt;When I started taking the course, I mentioned that I was looking forward to see why Josh thought React was so wonderful. Because I enjoy his courses, and I really respect his opinion. However, at some point in the course he mentions why React is so &amp;quot;joyful&amp;quot;, and I have to say that I&#039;m a bit disappointed. Basically, he compares it to Backbone and jQuery, and says how wonderful it is to build applications in a declarative manner, without having to fiddle with the DOM yourself. But that is true of all modern frontend frameworks, not React alone.&lt;/p&gt;
&lt;p&gt;Maybe you are thinking that this should&#039;ve been obvious before starting the course. But believe it or not, I actually read the FAQs, and there is one answering the question &amp;quot;Is this course right for me?&amp;quot; that says that the course is also for &amp;quot;Angular/Vue developers who just can&#039;t get the hang of React&amp;quot; 🤷.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Anyways, I hope I&#039;ve gotten everything out of my system now, and I can focus on enjoying the rest of the course :). Despite what I said, I want to clarify that I still like the course, and I don&#039;t think it&#039;s been a waste of money. Once again, I&#039;ll say that Josh is awesome and I love his courses. The entertainment value alone is worth it. But I can already confirm it&#039;s not going to make me love React.&lt;/p&gt;
&lt;p&gt;I&#039;ll end this with yet another quote from the course, and one I agree with 100%:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When learning a new technology, it&#039;s natural to try and squeeze it into a familiar shape. But I promise you, you&#039;ll have a much better time learning to swim with the current, rather than trying to fight against it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;PS: To add a final nail to React&#039;s coffin, did you hear about last week&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=QLK9G5zyU-Q&quot;&gt;React2Shell debacle&lt;/a&gt;? I haven&#039;t gotten into Server Components yet, but that&#039;s yet another reason to avoid them! Not that this bug itself is a problem (it should be fixed by now), but the fact that this can happen with a &amp;quot;frontend&amp;quot; framework... yeah, isn&#039;t great.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Shows Tracker with Jazz"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz#comment-3" />
            <id>https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz#comment-3</id>
            <published>2025-11-29T10:22:00+00:00</published>
            <updated>2025-11-29T10:22:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz#comment-3&quot;&gt;Making a Shows Tracker with Jazz&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;It hasn&#039;t even been a month since my last update, and here I am writing about how I am already using my Shows Tracker made with Jazz in production. Yes, you&#039;ve read that right, &lt;em&gt;in production&lt;/em&gt;. So TLDR, Jazz is very cool and life really is better using React :/.&lt;/p&gt;
&lt;p&gt;Here&#039;s the long version:&lt;/p&gt;
&lt;p&gt;First of all, I&#039;ll have to resolve the tension I created in my last update: React or Svelte? Well, after having looked into it, I decided to go with React. First for the obvious reasons: it would be nice for once to use what the cool kids are using (sorry, even I felt the cringe writing that). But also, after reading the documentation and lurking in their Discord, it&#039;s pretty clear that React is the most well supported. I actually discovered &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://jazz.tools/docs/react/upgrade/0-15-0#major-breaking-changes&quot;&gt;there was a Vue version before&lt;/a&gt;, and you can even use it with VanillaJS. So I&#039;m pretty confident that I could use Jazz in my Vue apps if I wanted to. But for now, I&#039;m sticking with React.&lt;/p&gt;
&lt;p&gt;(Also, in case you missed it, I&#039;m &lt;a href=&quot;https://noeldemartin.com/tasks/learning-react&quot;&gt;taking React more seriously&lt;/a&gt; given that I&#039;ll be using it in my day job as well).&lt;/p&gt;
&lt;p&gt;The truth is that I&#039;ve felt a real improvement using React and Jazz. Let alone the fact that I&#039;m writing this update in a month (after struggling for months using Vue/Solid), the output produced by LLMs is also a lot better. I have also been playing with Cursor&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://cursor.com/blog/composer&quot;&gt;Composer model&lt;/a&gt;, and I really like it. Of course, I still can&#039;t get AI to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/shows-tracker-jazz/blob/main/.cursor/commands/sort-imports.md&quot;&gt;sort imports reliably&lt;/a&gt;, but it &lt;em&gt;is&lt;/em&gt; getting better.&lt;/p&gt;
&lt;p&gt;So yeah, I&#039;m pretty happy with the way things are going. Although I&#039;m also a bit sad that I won&#039;t be able to use my favorite tools. But if I look at it objectively, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://shows.acast.com/akimbo/episodes/ignoresunkcosts&quot;&gt;ignore sunk costs&lt;/a&gt;, this is better.&lt;/p&gt;
&lt;p&gt;It&#039;s not all sunshine and roses, though. My main gripe with Jazz is, of course, interoperability. I was already worried about this in my last update, but having learned more about it, I&#039;m even more worried. If you read &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://jazz.tools/docs/react/reference/faq#will-jazz-be-around-long-term&quot;&gt;their FAQs&lt;/a&gt;, you&#039;ll notice a very appealing sentence: &amp;quot;We&#039;re designing the protocol as an open specification&amp;quot;. The problem with that is... that I&#039;m not convinced it&#039;s true 😅. I haven&#039;t been able to find anything about this &amp;quot;open specification&amp;quot; outside of that sentence, and even asking in the Discord community (which has been super helpful otherwise), nobody knew anything about it.&lt;/p&gt;
&lt;p&gt;Other than that, I had a few bumps setting up a sync server and the authentication, but in the end it turned out very simple (you can check out the source &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/jazz-store&quot;&gt;in GitHub&lt;/a&gt;). The documentation is also a bit short, and I had to dig through source code and tinker to understand a couple of things. But as I said, the Discord community is very helpful, and I guess this is to be expected when learning a new technology (not all documentations can be as good as Laravel or Vue&#039;s!).&lt;/p&gt;
&lt;p&gt;In summary, my initial hypotheses are proving to be true. Jazz is really cool, and the DX is great (I&#039;d even say &lt;em&gt;magical&lt;/em&gt;). Life is a lot easier if you are using React. And there is still nothing that comes close to Solid in terms of vision and values.&lt;/p&gt;
&lt;p&gt;So, where does that leave me?&lt;/p&gt;
&lt;p&gt;For now, I&#039;ll continue working on the app. I am using it in production, but if you &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/shows-tracker-jazz/&quot;&gt;give it a try&lt;/a&gt; you&#039;ll realize that it&#039;s still very rough. The UI in particular sucks (specially in Mobile), since I&#039;ve mostly vibe-coded it without paying much attention. But I&#039;m quite happy with the data model and the architecture. After I spend some time on the project, I may even call it a &amp;quot;real app&amp;quot;, not just a Personal App :). I also have some ideas to take advantage of Jazz in my Solid Apps, thus having the best of both worlds. But I still have to decide how much time I want to dedicate to Solid with the way things are going.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Learning React"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-react#comment-2" />
            <id>https://noeldemartin.com/tasks/learning-react#comment-2</id>
            <published>2025-11-26T19:20:00+00:00</published>
            <updated>2025-11-26T19:20:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/learning-react#comment-2&quot;&gt;Learning React&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;This task is a bit of a hyperbole, like the one where &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css&quot;&gt;I learned CSS&lt;/a&gt;, because technically I already know React. In fact, I used it fulltime for close to a year at a previous job. But the truth is that I still don&#039;t like it 😅. Or to be more exact, I still don&#039;t like it &lt;em&gt;as much as Vue&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;But! I do like it more than Angular, and I worked with Angular fulltime for almost 5 years at my last job. So I can certainly work with tools that are not my favorite (In fact, &lt;a href=&quot;https://noeldemartin.com/blog/finding-opportunities-that-fit-your-values&quot;&gt;I don&#039;t even think tools are that important&lt;/a&gt;). And I&#039;m certainly looking forward to taking another one of Josh&#039;s courses :D.&lt;/p&gt;
&lt;p&gt;Maybe you&#039;re wondering, why now? Well, there are a couple of reasons why I&#039;ve decided to finally take React seriously.&lt;/p&gt;
&lt;p&gt;The first one is that &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz&quot;&gt;I recently started using it in my side-projects&lt;/a&gt;, and I&#039;ve had a much better experience than I had 6 years ago. There are still plenty of things I dislike about React, like JSX&#039;s conditionals and loops, &lt;code&gt;className&lt;/code&gt;, &lt;code&gt;useCallback&lt;/code&gt;, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://react.dev/reference/rules/rules-of-hooks&quot;&gt;all the idiosyncracies with hooks&lt;/a&gt; (just to name a few). But this time, I&#039;ve felt a real improvement around &lt;em&gt;tooling&lt;/em&gt;. I don&#039;t know if that&#039;s because LLMs are more attuned to React, or &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ui.shadcn.com/&quot;&gt;shadcn&lt;/a&gt; is that much better than &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.shadcn-vue.com/&quot;&gt;the Vue port&lt;/a&gt; (probably both). But I can sincerely say that things have been a lot easier than using Vue. Even though &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://joshcollinsworth.com/blog/self-fulfilling-prophecy-of-react&quot;&gt;React isn’t great at anything except being popular&lt;/a&gt;, it seems like the ecosystem really plays a critical role.&lt;/p&gt;
&lt;p&gt;And the second one is, of course, the job market. About 8 months ago, &lt;a href=&quot;https://noeldemartin.com/blog/the-soul-crushing-reality-of-job-seeking#what-now&quot;&gt;I started job seeking again&lt;/a&gt;, and I could see that React is more dominant than ever. I did get a job using Vue, but that hasn&#039;t ultimately worked out and I&#039;m changing jobs in a couple of weeks. Can you guess which framework I&#039;ll be using at my new job?&lt;/p&gt;
&lt;p&gt;Anyways, even if it doesn&#039;t seem like it, I&#039;m actually looking forward to diving into React. I&#039;m not sure how often I&#039;ll be updating this task, because I feel like I already have a pretty good grasp. But there are a couple of things I haven&#039;t played with, like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://react.dev/reference/rsc/server-components&quot;&gt;Server Components&lt;/a&gt; or &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nextjs.org/&quot;&gt;Next.js&lt;/a&gt;. So at the very least, I&#039;ll make sure to share my first impressions with those.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Learning React"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-react" />
            <id>https://noeldemartin.com/tasks/learning-react</id>
            <published>2025-11-26T19:15:00+00:00</published>
            <updated>2025-11-26T19:15:00+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/learning-react&quot;&gt;Learning React&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/learning-react&quot;&gt;Learning React&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I&#039;ve been avoiding it since 2019, but I cannot run away anymore: I&#039;m learning React.&lt;/p&gt;
&lt;p&gt;My favourite frontend framework is still Vue, and I doubt that&#039;s going to change. But if anyone can make me enjoy React, that&#039;s Josh W. Comeau&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joyofreact.com/&quot;&gt;The Joy of React&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Shows Tracker with Jazz"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz#comment-2" />
            <id>https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz#comment-2</id>
            <published>2025-10-31T16:21:00+00:00</published>
            <updated>2025-10-31T16:21:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz#comment-2&quot;&gt;Making a Shows Tracker with Jazz&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;So yeah, this won&#039;t be a Solid App 😅. I&#039;ve already talked about &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-14&quot;&gt;why I&#039;m leaving Solid aside (for the time being)&lt;/a&gt;; but TLDR I&#039;m facing some performance issues with my current tooling, and I don&#039;t have the time nor motivation to solve them. Instead, I&#039;ve decided to build this one app with a different stack. It should serve both to solve my current problem, and to see how other ecosystems are doing.&lt;/p&gt;
&lt;p&gt;Now, when I started to think about this, there were other contenders to choose from. The first one was &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nextgraph.org/&quot;&gt;NextGraph&lt;/a&gt;, given that it has first-class support for RDF, and I&#039;ve been following the project for a couple of years. However, looking at the documentation and resources, it doesn&#039;t seem to be ready yet. It would be fine if I just wanted to tinker with it, but I&#039;m actually trying to build a &amp;quot;real app&amp;quot; here, and the point of not using Solid is to make my life easier. So I&#039;m looking for a more mature solution.&lt;/p&gt;
&lt;p&gt;Another project I considered was &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.convex.dev/&quot;&gt;Convex&lt;/a&gt;, which seems promising and I&#039;ve seen it recommended a couple of times. Unfortunately, it doesn&#039;t seem ideal for local-first apps, and I&#039;m not willing to give that up. Apparently, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://stack.convex.dev/automerge-and-convex&quot;&gt;it can be used with Automerge&lt;/a&gt;, but that seems more like an idea than something anyone is working on for real.&lt;/p&gt;
&lt;p&gt;So, Jazz it is. The main thing that caught my attention is their focus on developer experience. Honestly, it&#039;s very similar to what I&#039;m trying to achieve with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://aerogel.js.org/&quot;&gt;Aerogel&lt;/a&gt;: help people make local-first apps without having to think about any of the technical details. They don&#039;t even mention &amp;quot;CRDTs&amp;quot; in the landing page! Also, their whole approach to defining schemas is very &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://zod.dev/&quot;&gt;Zod&lt;/a&gt;-centric, and I&#039;ve had a great experience working with Zod so far.&lt;/p&gt;
&lt;p&gt;But it&#039;s not all sunshine and roses. By using Jazz, I&#039;ll have to sacrifice &lt;a href=&quot;https://noeldemartin.com/slides/local-first-solid-and-everything-in-between?slide=19&quot;&gt;one of my most revered ideals&lt;/a&gt;: Interoperability 😱. We&#039;ll see how it goes, but given this limitation I don&#039;t think I&#039;ll be working with Jazz a lot in the future, even if I like it. I&#039;m also not looking forward to managing yet another service, but I&#039;m totally going to self-host the backend (or &amp;quot;sync engine&amp;quot;, as they call it). Thanks to that, I may be able to get something done with Solid... But for now, that&#039;s completely outside of the scope. The biggest bummer here is that I wanted to eventually bring this functionality to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/media-kraken/&quot;&gt;Media Kraken&lt;/a&gt;, and finally make honor to its name (it&#039;s called Media Kraken, not Movie Kraken). But that will have to wait. I just want to get my Shows Tracker done, and take a break from having to developing my own tooling.&lt;/p&gt;
&lt;p&gt;On that note, though, there is yet another impediment... They don&#039;t have Vue support 😱😱. So I&#039;m at a crossroads now. Should I use React, and see what life is like on the main stage? (even though I&#039;ve used React before, and I don&#039;t like it). Or should I give Svelte a try, which I&#039;ve been wanting to do for a while? Honestly, I don&#039;t know. Maybe this will be the first part of my experimentation, to try a bit with both and see how things go.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Making a Shows Tracker with Jazz"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz" />
            <id>https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz</id>
            <published>2025-10-31T16:20:00+00:00</published>
            <updated>2025-10-31T16:20:00+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz&quot;&gt;Making a Shows Tracker with Jazz&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-shows-tracker-with-jazz&quot;&gt;Making a Shows Tracker with Jazz&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I have been following the local-first ecosystem for a while, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://jazz.tools/&quot;&gt;Jazz&lt;/a&gt; has piqued my interest. I&#039;m taking a further look by making an actual app, a Shows Tracker.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework#comment-15" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework#comment-15</id>
            <published>2025-10-31T16:13:00+00:00</published>
            <updated>2025-10-31T16:13:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-15&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;It has taken longer than I expected, but I&#039;m finally done with my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://calories.noeldemartin.com/&quot;&gt;Calories Tracker&lt;/a&gt;. Before I get into that, though, there&#039;s a couple of things I want to mention.&lt;/p&gt;
&lt;p&gt;First, in case you missed it, I joined the Local-first community meetup to talk about Solid. It was fun! &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/live/GDQMLt3oqio?t=246s&quot;&gt;You can find the recording in Youtube&lt;/a&gt;. If you&#039;ve seen my other talks, there&#039;s probably nothing new here. But one slide in particular is interesting, because I came up with &lt;a href=&quot;https://noeldemartin.com/slides/local-first-solid-and-everything-in-between?slide=19&quot; target=&quot;_blank&quot;&gt;My 3 ideals for software&lt;/a&gt;. I&#039;ve had these in my mind for a while, but it was helpful to write them down. Eventually, I would like to write a blog post about this as well. But I&#039;m still starved for time, so that will have to wait.&lt;/p&gt;
&lt;p&gt;Second, Tim&#039;s new book came out: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://thisisforeveryone.timbl.com&quot;&gt;This Is For Everyone&lt;/a&gt;. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/this-is-for-everyone/9987&quot;&gt;I shared my thoughts in the Solid Forum&lt;/a&gt;, but TLDR I really liked it. I was also very surprised to find that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/115181321769573463&quot;&gt;this very blog is quoted in the book&lt;/a&gt; :D.&lt;/p&gt;
&lt;p&gt;And third, it is Halloween! As a big movie buff, this is one of my favourite seasons of the year, because I watch Halloween movies non-stop. Though my definition of a &amp;quot;Halloween movie&amp;quot; is a bit loose, and anything that contains enough blood or is kind of dark, meets the bar. In any case, I&#039;m writing this because I updated &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/media-kraken/&quot;&gt;Media Kraken&lt;/a&gt; with some recommendations; and I also added a couple of easter eggs. If you also enjoy Halloween movies, check them out. And if there&#039;s any you like that I have missed, let me know :).&lt;/p&gt;
&lt;p&gt;Ok, back to Aerogel. If we look at the timeline, I have been working on this Calories Tracker for almost 3 months. Which given my trajectory of year-long projects is not bad, but this was supposed to be &amp;quot;a quick one&amp;quot;. However, I&#039;m happy to say that Aerogel and Solid have &lt;em&gt;not&lt;/em&gt; been one of the blockers. Indeed, I can say Aerogel is living up to its goal, because I didn&#039;t have to think about Solid or RDF at all :D. Of course, there have been some bugs here and there; but for the most part I&#039;ve been spending more time struggling with the UI and calorie tracking idiosyncrasies. If you&#039;re curious, check it out. But it &lt;em&gt;is&lt;/em&gt; a personal app, so you won&#039;t find it as intuitive and polished as my other apps. Eventually, I would also like to make a video about it. But again, I don&#039;t have much time affluence at the moment.&lt;/p&gt;
&lt;p&gt;I&#039;ve also continued experimenting with AI, and I can&#039;t say my opinion has changed much. It is very useful for some things, decent for making UI, and a complete waste of time for advanced functionality. Something I&#039;ve been playing with since my last update is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html&quot;&gt;spec-driven development&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://cursor.com/docs/context/rules&quot;&gt;Agent rules&lt;/a&gt;, but those have been somewhat underwhelming because the AI is prone to blatantly ignore some of the instructions :/. Apparently, this is a known problem called &amp;quot;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.aihero.dev/what-is-the-context-window#the-lost-in-the-middle-problem&quot;&gt;Lost in the middle&lt;/a&gt;&amp;quot;. I&#039;ll continue exploring this, but I have to say that I agree with most of the things mentioned in this video: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=0ZUkQF6boNg&quot;&gt;AI Coding Sucks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Finally, it&#039;s been a while since I talked about tooling, so here&#039;s an update.&lt;/p&gt;
&lt;p&gt;Some months ago, I started using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://pnpm.io/&quot;&gt;pnpm&lt;/a&gt;, and it really is awesome. I&#039;m quite reticent to adding abstraction layers, that&#039;s why I never used yarn or any of the other package managers on top of npm... But trying pnpm was the right choice, because it works really well and it&#039;s giving me very few headaches. Unfortunately, I haven&#039;t been able to migrate the main Aerogel repository yet (because I tried, and it didn&#039;t work 😅), but I&#039;m sure I&#039;ll do it one of these days.&lt;/p&gt;
&lt;p&gt;I also started using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://reka-ui.com/&quot;&gt;Reka UI&lt;/a&gt;, but my experience hasn&#039;t been great so far. The performance isn&#039;t great, and whenever I&#039;ve had to debug something, I&#039;ve realized that it adds a lot of intermediate components... Not sure if that&#039;s why the performance isn&#039;t great, but it certainly makes it harder to debug. I&#039;ve also been using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://primevue.org/&quot;&gt;PrimeVue&lt;/a&gt; at work, but it isn&#039;t much better. You may recall that I was using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://headlessui.com/&quot;&gt;Headless UI&lt;/a&gt;, but the Vue version is pretty much abandoned, so that isn&#039;t an option either. Honestly, I still love Vue and it&#039;s my favourite front-end framework (although I haven&#039;t tried Svelte), but this is the sort of stuff that makes people choose React. The ecosystem is, without a doubt, much better. Though to be fair, I still have to find a single component framework that I like; because my experience with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ionicframework.com&quot;&gt;Ionic&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://getbootstrap.com/&quot;&gt;Bootstrap&lt;/a&gt; wasn&#039;t great either. Maybe &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fluxui.dev/&quot;&gt;Flux&lt;/a&gt; would be the one, but alas, I&#039;m not doing much Laravel these days.&lt;/p&gt;
&lt;p&gt;Some other tool I&#039;ve been playing with recently is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://zod.dev/&quot;&gt;Zod&lt;/a&gt;. This one would also go into the &amp;quot;awesome&amp;quot; category, and I&#039;m loving it. I&#039;ve been slowly getting more into advanced Typescript patterns, and Zod is the perfect addition to such a codebase. If I had the time, I would refactor Soukai to use Zod in the schema definition — and maybe some day I will — but for now I&#039;m just using it sparingly.&lt;/p&gt;
&lt;p&gt;Finally, I&#039;ve also been doing some testing, and I&#039;m sad to say that I&#039;m not so happy with Cypress these days. It&#039;s crashing more than usual, and I&#039;m finding ever more weird bugs and workarounds. Recently though, I&#039;ve been using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://playwright.dev/&quot;&gt;Playwright&lt;/a&gt; in other projects, and it seems a lot more reliable. In a perfect world, I would also migrate all my tests to Playwright.&lt;/p&gt;
&lt;p&gt;And that&#039;s mostly it for today&#039;s update!&lt;/p&gt;
&lt;p&gt;Regarding this task&#039;s progress... It doesn&#039;t seem like I&#039;m going to release Aerogel anytime soon. To be honest, what I lack the most at the moment is motivation and time. Technically, Aerogel already exists, and I&#039;m using it in my projects. But it still needs some polish (and documentation) before an official release. However, I don&#039;t see a reason to work on that at the moment. For now, I&#039;ll keep tinkering with Personal Apps and we&#039;ll see how that goes. I guess this task will remain open until I finally release it, or decide that it&#039;s not going to happen.&lt;/p&gt;
&lt;p&gt;On that note, I mentioned before how the Shows Tracker was getting out of hand, and I was facing some serious performance issues. In order to solve my own use-case, I have decided to dip my toes in a different ecosystem, so I&#039;ll build that one with a different stack. Hopefully, I won&#039;t face any performance issues. It&#039;ll also be nice to experience other frameworks and ecosystems to get some inspiration. We&#039;ll see how that goes.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Presented "Local-First, Solid, and Everything in Between"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://www.youtube.com/live/GDQMLt3oqio?t=246s" />
            <id>https://www.youtube.com/live/GDQMLt3oqio?t=246s</id>
            <published>2025-09-30T11:00:00+00:00</published>
            <updated>2025-09-30T11:00:00+00:00</updated>
            <summary type="html">
                Presented &lt;a href=&quot;https://www.youtube.com/live/GDQMLt3oqio?t=246s&quot;&gt;Local-First, Solid, and Everything in Between&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I&#039;m giving a talk at LoFi.so: &lt;a href=&quot;https://www.youtube.com/live/GDQMLt3oqio?t=246s&quot;&gt;Local-First, Solid, and Everything in Between&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework#comment-14" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework#comment-14</id>
            <published>2025-08-10T07:08:00+00:00</published>
            <updated>2025-08-10T07:08:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-14&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Hey!&lt;/p&gt;
&lt;p&gt;Yes, I&#039;m still alive. I can&#039;t believe it&#039;s been more than 2 months since my last update 🙈. But the truth is that I don&#039;t have much to share about this task :/. Still, I&#039;m going on holidays next week, and I have a couple of things worth mentioning, so I thought it was time for an update.&lt;/p&gt;
&lt;p&gt;First of all, in case you missed it, I published a video going through the making of an entire Aerogel app :D. That was fun, and I&#039;m quite happy with how Aerogel is coming up. There isn&#039;t really anything new in that video that I haven&#039;t already mentioned before; but it&#039;s a good summary of what I&#039;ve got so far. If you&#039;re interested, check it out: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=Xtxwbz7LrfU&quot;&gt;Pocket is going away... Let&#039;s build a replacement with Solid!&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Other than that, I&#039;ve quietly continued working on my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/shows-tracker?tab=readme-ov-file#-shows-tracker&quot;&gt;Shows Tracker&lt;/a&gt; app. And I have &amp;quot;finished&amp;quot; the first version, but I have some bad news :(.&lt;/p&gt;
&lt;p&gt;Everything was going pretty well at the beginning. I was happy &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/shows-tracker?tab=readme-ov-file#wait-a-second-did-you-say-vibe-coding-how-much-did-the-ai-write&quot;&gt;Vibe Coding away&lt;/a&gt;, and it seemed like Aerogel was finally complete enough to make an app without worrying too much about the framework. But then, I loaded my actual shows collection, and everything slowed down to a crawl 😅. I was already aware of some of the limitations with my current approach, as I wrote in &lt;a href=&quot;https://noeldemartin.com/downloads/nlnet/aerogel.pdf&quot;&gt;my proposal to NLNet&lt;/a&gt; (check out the &amp;quot;Technical Challenges&amp;quot; section). And this use-case showed me that I was right.&lt;/p&gt;
&lt;p&gt;So far, I haven&#039;t built any &amp;quot;data-intensive&amp;quot; Solid application. At the time of this writing, I have 2811 movies in Media Kraken, 1159 tasks in Focus, and 118 recipes in Umai. But working with shows is a whole other level... One Piece alone has more than 1000 episodes, and I have 281 shows in my collection! (mind you, many of those are &amp;quot;want to watch&amp;quot;, I haven&#039;t seen that many... yet). And it&#039;s not just the amount of data, but the fact that it&#039;s also interconnected, with episodes pointing to seasons, seasons pointing to shows, individual watch actions for each episode, etc.&lt;/p&gt;
&lt;p&gt;Now, let me recognize that, really, this isn&#039;t data-intensive either. All of this data won&#039;t take more than a couple of MB in my Pod, and I can&#039;t really say that I have a data-intensive application until I have maybe millions of documents. But the thing is, that &lt;em&gt;with my current approach&lt;/em&gt; this &lt;em&gt;is&lt;/em&gt; data-intensive. And this isn&#039;t the first time that I&#039;m facing a similar situation. When I started working on Media Kraken, I spent a bunch of time &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-8&quot;&gt;refactoring model serialization&lt;/a&gt;, and when I worked on Umai, I &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-6&quot;&gt;made it truly local-first&lt;/a&gt;. So maybe the solution to my current problems is just one big refactor away.&lt;/p&gt;
&lt;p&gt;But things are diffrent now. I don&#039;t have a 4-day workweek anymore, which leaves me very little time for side projects. And to be honest, the whole &lt;a href=&quot;https://noeldemartin.com/blog/the-soul-crushing-reality-of-job-seeking#the-nlnet-fiasco&quot;&gt;NLNet fiasco&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/%40noeldemartin/114745305327263276&quot;&gt;subsequent developments&lt;/a&gt; have left me very unmotivated. So now, more than ever, I&#039;m scratching my own itch. And I&#039;m not sure that all this complexity is paying off. After all, I&#039;ve been working on this for 6 years now, and I&#039;m still only using my own apps (and I can&#039;t say I&#039;m excited about any other Solid apps).&lt;/p&gt;
&lt;p&gt;So yeah, I don&#039;t know... I have some soul-searching to do. I&#039;m still excited about Solid&#039;s vision and ideals, and I still agree with most of the things I wrote in &lt;a href=&quot;https://noeldemartin.com/blog/why-solid&quot;&gt;my reasons to use Solid&lt;/a&gt;. But I just don&#039;t have the time or motivation to go through one of those dips again. At least, not right now.&lt;/p&gt;
&lt;p&gt;Then, what are the next steps for this task? I still want a Shows Tracker very badly, but I&#039;ll leave that aside for now, and focus on finishing some other of my Personal Apps. Namely, my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/calories-tracker&quot;&gt;Calories Tracker&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/diogenes-reader&quot;&gt;Diogenes Reader&lt;/a&gt;. Those should be easy enough to work with, and I&#039;ll continue exploring the woes and wonders of making apps in this AI-age.&lt;/p&gt;
&lt;p&gt;Until next time, whenever that may be!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "The Problems With Modals, and How to Solve Them"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/the-problems-with-modals-and-how-to-solve-them" />
            <id>https://noeldemartin.com/blog/the-problems-with-modals-and-how-to-solve-them</id>
            <published>2025-08-04T15:28:00+00:00</published>
            <updated>2025-08-04T15:28:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/the-problems-with-modals-and-how-to-solve-them&quot;&gt;The Problems With Modals, and How to Solve Them&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/the-problems-with-modals-and-how-to-solve-them&quot;&gt;The Problems With Modals, and How to Solve Them&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework#comment-13" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework#comment-13</id>
            <published>2025-05-31T07:42:12+00:00</published>
            <updated>2025-05-31T07:42:12+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-13&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;It finally happened, the new and improved version of Focus is live and ready for production! Check it out at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://focus.noeldemartin.com&quot;&gt;focus.noeldemartin.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The most relevant difference you will notice from the beta is, of course, the landing page. About a year ago, I took Jack McDade&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://radicaldesigncourse.com/&quot;&gt;Radical Design Course&lt;/a&gt;, and I realized that landing pages in my apps were... well, not great. This time, I decided to kick it up a notch and give people some reasons to use the app. I wasn&#039;t doing this before because my apps are &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://rosano.hmm.garden/01evv3hq1ak4b6ng1jzppx5n2j&quot;&gt;doorless&lt;/a&gt;. It&#039;s so easy to start using them, I thought, that the product would speak for itself. But that isn&#039;t how things work, and it doesn&#039;t hurt to &amp;quot;sell&amp;quot; the app a bit. It&#039;s also quite fun to make landing pages, and once again, even though I&#039;m not a designer, I enjoy these things.&lt;/p&gt;
&lt;p&gt;Other than that, there isn&#039;t much else that you wouldn&#039;t have seen before. Overall, I&#039;m quite happy with the result, and I&#039;ve been using it in production myself for months. Like always, though, there are a couple of things I&#039;m still not completely happy with.&lt;/p&gt;
&lt;p&gt;One of them is animations. Ever since &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-19&quot;&gt;working on Umai&lt;/a&gt;, I haven&#039;t been completely happy with the way I coded my animations. This time, I explored a bit more options, and created &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/vivant/&quot;&gt;Vivant&lt;/a&gt;. But I&#039;m not convinced yet that this is The Way, and a few months ago &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://motion.dev/blog/introducing-motion-for-vue&quot;&gt;Motion for Vue&lt;/a&gt; came out. So I&#039;m looking forward to continue experimenting with this in the future. And in particular, I&#039;m looking forward to taking Josh W. Comeau&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://whimsy.joshwcomeau.com/&quot;&gt;Whimsical Animations Course&lt;/a&gt;. If it&#039;s half as good as his &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css&quot;&gt;CSS course&lt;/a&gt;, it&#039;ll solve all my problems with animations.&lt;/p&gt;
&lt;p&gt;Something else I&#039;m wary of is the synchronisation mechanism. As I said, I&#039;ve been using the app for months and it&#039;s working fine. But every now and then, some issue comes up, and it isn&#039;t super easy to debug. Fortunately, what worries me is not that I&#039;m going to lose anyone&#039;s data, but it often &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/issues/18#issuecomment-2922660744&quot;&gt;duplicates data&lt;/a&gt;, and the performance isn&#039;t great. The performance is not something I can improve too much given the limitations of Solid, but the duplicates and bugs are completely my fault. Still, I have finally encapsulated this logic in an external package (Aerogel), so it should get a lot better which each app I built. In the same way that Soukai has been improving, and it&#039;s been a while since I found any important bugs.&lt;/p&gt;
&lt;p&gt;So yes, Focus is done, but what about this task? Long story short, I&#039;m not closing it yet 😅. &lt;em&gt;Technically&lt;/em&gt;, the framework has been released and it&#039;s stable (you can create an app yourself doing &lt;code&gt;npm create aerogel my-project&lt;/code&gt;). But I still haven&#039;t written any documentation, and there are still a couple of things I want to do before releasing the framework officially. And one of them, is Vibe Coding a bit 🙈. Wait, Vibe Coding!? Let&#039;s rewind a bit.&lt;/p&gt;
&lt;p&gt;If you&#039;ve only been reading this task, you may have missed &lt;a href=&quot;https://noeldemartin.com/solid-symposium-2025&quot;&gt;my presentation at the Solid Symposium last month&lt;/a&gt;, and a couple of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/114522294478215946&quot;&gt;links I shared in social media&lt;/a&gt;. TLDR, the programming world is changing, and even though I&#039;m not an AI maximalist (nor an AI doomer), I do think it is going to affect the way we make apps in the future. And I think Solid could play an important role in this new world. How cool would it be that every application made with AI happens to work with each other out of the box? And what if these applications also happen to give users ownership of their data and privacy by default? Of course, that&#039;s what would happen if they use Solid. Unfortunately, most of them are built with React and some old fashioned database like Supabase. So I think we&#039;re at a crucial point in shaping what the future of apps will look like.&lt;/p&gt;
&lt;p&gt;Sadly, I won&#039;t be able to do much about it :(. I already talked about &lt;a href=&quot;https://noeldemartin.com/blog/the-soul-crushing-reality-of-job-seeking#the-nlnet-fiasco&quot;&gt;my struggles to secure funding for my work&lt;/a&gt;, and so I&#039;m back to working on this on the side. And I don&#039;t even have a 4-day workweek anymore. So yeah, I&#039;ll continue moving at a glacial pace over here. It is what it is.&lt;/p&gt;
&lt;p&gt;In any case, my idea for now is to continue exploring how to build apps in the new age of software, and I want to make Aerogel a great companion for anyone who wants to do it as well (even &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://maggieappleton.com/home-cooked-software&quot;&gt;barefoot developers&lt;/a&gt;!). If nothing else, it should empower me to keep making &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/shows-tracker?tab=readme-ov-file#what-is-a-personal-app&quot;&gt;personal apps&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Attending the 3rd Solid Symposium"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium#comment-5" />
            <id>https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium#comment-5</id>
            <published>2025-04-29T11:02:21+00:00</published>
            <updated>2025-04-29T11:02:21+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium#comment-5&quot;&gt;Attending the 3rd Solid Symposium&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium#comment-5&quot;&gt;Attending the 3rd Solid Symposium&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending the 3rd Solid Symposium"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium#comment-4" />
            <id>https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium#comment-4</id>
            <published>2025-04-29T10:56:12+00:00</published>
            <updated>2025-04-29T10:56:12+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium#comment-4&quot;&gt;Attending the 3rd Solid Symposium&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just finished uploading a recording of my talk, you can find it in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/@noeldemartin&quot;&gt;my Youtube channel&lt;/a&gt; (and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://spectra.video/c/noeldemartin/&quot;&gt;PeerTube&lt;/a&gt; ;D).&lt;/p&gt;
&lt;p&gt;I would have done it yesterday, but as you may know, we suffered &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/2025_European_power_outage&quot;&gt;a massive power outage in Spain&lt;/a&gt; 😱. It was gone at 12:30am, and in my case I didn&#039;t have it back until 2am. The funny thing is that we still don&#039;t know what caused it 😅. Was it a technical failure? a cyber attack? aliens? Who knows. In any case, it&#039;s amazing that something like this can even happen. What&#039;s more astonishing to me, having great weather conditions in Spain, is that almost nobody has solar panels nor any other way of generating electricity autonomously. So the grid goes down, and we&#039;re back to the stone age. Hopefully this will be a wake up call to change that. Once again, we face the issues of centralization.&lt;/p&gt;
&lt;p&gt;In any case, that&#039;s enough rambling. Now that I&#039;m done with the recording, this task is complete.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending the 3rd Solid Symposium"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium#comment-3" />
            <id>https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium#comment-3</id>
            <published>2025-04-26T07:31:00+00:00</published>
            <updated>2025-04-26T07:31:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium#comment-3&quot;&gt;Attending the 3rd Solid Symposium&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;m back home from the Symposium, and I&#039;m very glad that I made it this year, because I really enjoyed it :D.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium#comment-3&quot;&gt;Last year&lt;/a&gt;, I mentioned that I was left &amp;quot;drunk with excitement&amp;quot; after the conference, and this year I&#039;m certainly in a similar situation. However, last year&#039;s excitement fueled my failed attempt at working on Solid full-time, so I&#039;m tempering my expectations this time around 😅. All in all, I did get some ideas for things to work on, and even though I&#039;m not sure how much time I&#039;ll be able to spend, I&#039;m looking forward to exploring them.&lt;/p&gt;
&lt;p&gt;In the first day, I attended the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sosy2025.pages.dev/solid-together/&quot;&gt;Solid Together&lt;/a&gt; session, and all the talks were great. Sébastien from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://activitypods.org/&quot;&gt;ActivityPods&lt;/a&gt; shared some lessons learned from building social apps with Solid, which was interesting because it was almost the same idea as my talk! However, we see app development from completely different perspectives, so you&#039;ll notice that our tips are very different. But that&#039;s part of the point of Solid, depending on your use-case you&#039;ll have very different concerns. In any case, I agree with most of the points he made, and even though we&#039;re on different parts of the app-development spectrum, I found them very insightful.&lt;/p&gt;
&lt;p&gt;Next up, we had a talk from Michel from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solidcouch&quot;&gt;Solid Couch&lt;/a&gt;. Also very focused on Social apps, but he made I point I really enjoyed about distinguishing from &amp;quot;Asocial Networks&amp;quot; focused on content generation and online interactions (Twitter, Youtube, Mastodon, etc.) and &amp;quot;Real Social Networks&amp;quot; focused on human interactions and collaboration (Meetup, Welcome to my place, etc.).&lt;/p&gt;
&lt;p&gt;Then, we heard from Philippe from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidbench.dev&quot;&gt;Solid Bench&lt;/a&gt;. I wasn&#039;t familiar with the project, but I was very impressed by it and I really like it. It&#039;s a really good example of where Solid excels, and he even talked about managing groceries in your POD, which is totally my cup of tea!&lt;/p&gt;
&lt;p&gt;Finally, Niko from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nextgraph.org/&quot;&gt;NextGraph&lt;/a&gt;, who had also been facilitating the session, talked about his project. I was already familiar with it, but it may have been new for most people in the room. It&#039;s a very different approach to data ownership from Solid, but I do like most of their ideals and eventually it should support Solid as well thanks to a collaboration with ActivityPods.&lt;/p&gt;
&lt;p&gt;So that was a packed morning!&lt;/p&gt;
&lt;p&gt;The rest of the day I spend it talking with people and watching more talks. Something interesting about this conference is that, apparently, it was also about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/FAIR_data&quot;&gt;FAIR&lt;/a&gt; (which I didn&#039;t know before attending). But it was interesting to see what people who isn&#039;t familiar with Solid think of the ecosystem.&lt;/p&gt;
&lt;p&gt;Unfortunately, my networking was cut short because I didn&#039;t get a ticket to attend the conference dinner, and apparently everyone else did. So by 5pm there was nobody else around and I just called it a day. I guess that&#039;s what happens when you&#039;re on a tight budget 😅.&lt;/p&gt;
&lt;p&gt;On the second day, I participated in the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sosy2025.eu/Sessions/Solid-development/&quot;&gt;Solid Development&lt;/a&gt; session. I really enjoyed &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://docs.google.com/presentation/d/1fvo7Dftfr_EifuCjJxs2ihL5ih1iJ-PnCk2IRCPaXDQ/mobilepresent?slide=id.g349a921c9ee_0_0&quot;&gt;Maarten&#039;s talk&lt;/a&gt; about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/comunica/incremunica&quot;&gt;Incremunica&lt;/a&gt;, a library to query data across PODs.&lt;/p&gt;
&lt;p&gt;Then, I gave my talk, which I think went very well and sparked some ideas both in the audience and myself. I plan on uploading a recording in the coming days, so if you missed it, rest assured, you&#039;ll be able to watch it :).&lt;/p&gt;
&lt;p&gt;And finally, we had a talk from the team behind &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://jouw.id&quot;&gt;jouw.id&lt;/a&gt;. I really like their approach to making Solid work for everyone, not just techies, and their balanced approach between Solid purity and practicality. However, they don&#039;t allow using their app against self hosted PODs (yet). So I&#039;m looking forward to that before giving it a try.&lt;/p&gt;
&lt;p&gt;And that&#039;s about it! As I said, I got some ideas that I may be working on, and I still have to upload a recording on my talk. So I&#039;ll wait until I do that to close this task. But otherwise, that&#039;s a wrap.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Presented "Solid Unleashed"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://www.youtube.com/watch?v=7pfUw_t6rCk" />
            <id>https://www.youtube.com/watch?v=7pfUw_t6rCk</id>
            <published>2025-04-25T10:00:00+00:00</published>
            <updated>2025-04-25T10:00:00+00:00</updated>
            <summary type="html">
                Presented &lt;a href=&quot;https://www.youtube.com/watch?v=7pfUw_t6rCk&quot;&gt;Solid Unleashed&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I&#039;m giving a talk at Solid Symposium: &lt;a href=&quot;https://www.youtube.com/watch?v=7pfUw_t6rCk&quot;&gt;Solid Unleashed&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending the 3rd Solid Symposium"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium#comment-2" />
            <id>https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium#comment-2</id>
            <published>2025-04-22T06:47:22+00:00</published>
            <updated>2025-04-22T06:47:22+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium#comment-2&quot;&gt;Attending the 3rd Solid Symposium&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I wasn&#039;t completely sure if I&#039;d be attending this year&#039;s Symposium, given my recent &lt;a href=&quot;https://noeldemartin.com/blog/the-soul-crushing-reality-of-job-seeking#the-nlnet-fiasco&quot;&gt;frustrations with NLNet&lt;/a&gt; and the subsequent decision to forego the idea of working with Solid full-time.&lt;/p&gt;
&lt;p&gt;However! The guys at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.muze.nl/&quot;&gt;Muze&lt;/a&gt;, who are organizing this year&#039;s conference, reached out and have been very supportive. Thanks to their encouragement and support, I&#039;ll be there!&lt;/p&gt;
&lt;p&gt;What&#039;s more, I&#039;m also giving a talk that I&#039;m calling &amp;quot;Solid Unleashed&amp;quot; (as a wink to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.wetaworkshop.com/tours/auckland&quot;&gt;Wētā Workshop Unleashed&lt;/a&gt; :D). It works out perfectly, because it will be a nice way to close this period of working with Solid full-time before going back to side-projects. In the presentation, I&#039;ll share some tips to make Solid Apps, and talk about what I hope will be the future of Solid App development. Or at least, my future with Solid as a side-project.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Attending the 3rd Solid Symposium"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium" />
            <id>https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium</id>
            <published>2025-04-22T06:45:32+00:00</published>
            <updated>2025-04-22T06:45:32+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium&quot;&gt;Attending the 3rd Solid Symposium&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-3rd-solid-symposium&quot;&gt;Attending the 3rd Solid Symposium&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This year, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sosy2025.eu/&quot;&gt;the Symposium&lt;/a&gt; is held on Leiden, the Netherlands, on April 24th and 25th. Say hi if you&#039;re around!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework#comment-12" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework#comment-12</id>
            <published>2025-04-02T06:51:45+00:00</published>
            <updated>2025-04-02T06:51:45+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-12&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Hi there! If you&#039;re reading this, chances are that you already know, but in case you don&#039;t... I finally heard back from NLNet, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/114116126924436827&quot;&gt;I didn&#039;t get the grant&lt;/a&gt; :(. I wrote all about it in a recent blog post, make sure to read it if you want to learn more: &lt;a href=&quot;https://noeldemartin.com/blog/the-soul-crushing-reality-of-job-seeking&quot;&gt;The Soul-Crushing Reality of Job Seeking&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So yeah, the title says it all, I&#039;m back on the job hunt 😅. I&#039;ve applied to more offers than ever (17 since publishing that post 😱), and indeed the market is not at its best. Still, I can&#039;t complain, because I have some opportunities in motion and it&#039;s very likely that I&#039;m back to work in May. However, my predictions were totally on point, because none of the opportunities are Solid-related, and most of them came through networking (meaning, people who already knew who I am). Unfortunately, that means that my work in Solid will be relegated to side-projects again, and I&#039;ll probably spend even less time than before because I doubt I&#039;ll be able to get a 4-day workweek. Such is life 🤷.&lt;/p&gt;
&lt;p&gt;On a brighter note, I did finish working on schema migrations and interoperability! Yesterday &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=EAFHV7dIx8c&quot;&gt;I published a video&lt;/a&gt; going over it, but TLDR: Focus now works with multiple schemas, and is backwards compatible with the legacy version which I haven&#039;t touched in 5 years :D. I also released &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai/blob/main/CHANGELOG.md#v060---2025-03-31&quot;&gt;a new version of Soukai&lt;/a&gt;, so you can start doing similar things in your apps.&lt;/p&gt;
&lt;p&gt;Something else I&#039;ve done is modernize the tooling for all my packages! The setup I was using before was &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-4&quot;&gt;4 years old&lt;/a&gt;, which translates to decades in JavaScript land. And I&#039;m very happy with the new approach, because I&#039;m using Vite for everything, which removes a lot of headaches. I also dropped CommonJS, with newer versions of Node supporting ESM and most of the ecosystem moving towards &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://antfu.me/posts/move-on-to-esm-only&quot;&gt;ESM-only&lt;/a&gt;. I did try to use AI to assist me in the process, but I have to say that it still isn&#039;t there :/. Now we have &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Vibe_coding&quot;&gt;Vibe-coding&lt;/a&gt; and many other ways of replacing the fun parts of programming, but I&#039;m still stuck with my dependency hell! Hopefully this new unified setup will make it better :).&lt;/p&gt;
&lt;p&gt;But I still have some more updating to do. When it comes to Aerogel, there are still a couple of things I&#039;d like to upgrade, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TailwindCSS v4&lt;/li&gt;
&lt;li&gt;Vue, Vue Router, and Vue i18n&lt;/li&gt;
&lt;li&gt;ESLint --&amp;gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://oxc.rs/docs/guide/usage/linter.html#linter-oxlint&quot;&gt;Oxlint&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;Headless UI --&amp;gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://reka-ui.com/&quot;&gt;Reka UI&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;Cypress --&amp;gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://playwright.dev/&quot;&gt;Playwright&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;Histoire --&amp;gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://storybook.js.org/&quot;&gt;Storybook&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;Vivant --&amp;gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://motion.dev/blog/introducing-motion-for-vue&quot;&gt;Motion for Vue&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.shadcn-vue.com/&quot;&gt;shadcn/vue&lt;/a&gt;?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&#039;s obviously a huge list, and I&#039;m not sure how far I&#039;ll take it. But now that I won&#039;t be working on this full-time, and it&#039;s become pretty clear that I&#039;m not going to make a living from this, I&#039;m in no rush any longer 😅. Today, more than ever, I&#039;m scratching my own itch.&lt;/p&gt;
&lt;p&gt;On that note, I have been using Focus in production for a couple of weeks, and it&#039;s very close to being done :D. I still come across some syncing issues now and then, but hopefully I&#039;ll be able to polish them without too much effort. At this point, the only things keeping me from releasing the app are the library upgrades I mentioned, doing a performance review, and doing some final polishing. Who knows, maybe by the end of the month I&#039;ll be done. Or maybe it&#039;ll take another year.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "The Soul-Crushing Reality of Job Seeking"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/the-soul-crushing-reality-of-job-seeking" />
            <id>https://noeldemartin.com/blog/the-soul-crushing-reality-of-job-seeking</id>
            <published>2025-03-12T15:06:00+00:00</published>
            <updated>2025-03-12T15:06:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/the-soul-crushing-reality-of-job-seeking&quot;&gt;The Soul-Crushing Reality of Job Seeking&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/the-soul-crushing-reality-of-job-seeking&quot;&gt;The Soul-Crushing Reality of Job Seeking&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework#comment-11" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework#comment-11</id>
            <published>2025-03-04T10:45:12+00:00</published>
            <updated>2025-03-04T10:45:12+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-11&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Well well well, I can&#039;t believe it&#039;s been almost 8 months since I updated this task 😱. However, I have been doing some related work, and I&#039;ve shared a handful of personal updates. If you want to get the full recount, make sure to read through the tasks I&#039;ve completed in between: &lt;a href=&quot;https://noeldemartin.com/tasks/taking-a-sabbatical&quot;&gt;Taking a Sabbatical&lt;/a&gt;, &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-202425&quot;&gt;Housekeeping 2024/25&lt;/a&gt;, and &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2025&quot;&gt;Attending FOSDEM 2025&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;TLDR:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I built my own Solid Server from scratch (and have been using it in production for weeks!): &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://lss.noeldemartin.com/&quot;&gt;LSS&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I extracted Focus animations into my own new animations library: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/vivant/&quot;&gt;Vivant&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I applied for &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nlnet.nl/news/2024/20240601-call.html&quot;&gt;NLNet&#039;s October call&lt;/a&gt; (I&#039;m STILL waiting for a decision, but at least I&#039;ve been selected for the 2nd round).&lt;/li&gt;
&lt;li&gt;I played with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/ramen/blob/main/docs/activitypods.md&quot;&gt;ActivityPods support&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I was included in the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nlnet.nl/project/SolidDataModules/&quot;&gt;Solid Data Modules NLNet grant&lt;/a&gt; to work on data migration for Soukai/Aerogel.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This last point is obviously the most relevant to this task, as I&#039;ve been able to work on this full-time for most of February :D. Also, I recently presented at Solid World talking about &lt;a href=&quot;https://noeldemartin.com/solid-world-2025&quot; target=&quot;_blank&quot;&gt;Interoperable Serendipity&lt;/a&gt;, you may want to catch the recording once it&#039;s available.&lt;/p&gt;
&lt;p&gt;Initially, &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-202425#comment-3&quot;&gt;I was very enthusiastic&lt;/a&gt; about working on my projects full-time. And I still am, these have been the most fun weeks I&#039;ve had at work in years. But I quickly realized I wasn&#039;t going to be as productive as I dreamed. It seems I can&#039;t escape &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Parkinson%27s_law#First_meaning&quot;&gt;Parkinson&#039;s Law&lt;/a&gt; either (though I&#039;ll keep striving!). Regardless, these weeks have been very productive, and that&#039;s why I decided it was time to write an update.&lt;/p&gt;
&lt;p&gt;In a nutshell, I&#039;ve been working on Cloud synchronization and data migration. That may seem small for a month&#039;s worth of work, but honestly, these tasks&#039; complexity have reminded me a lot to &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-7&quot;&gt;the CRDTs rabbithole from Umai&lt;/a&gt;. And that took me... &lt;em&gt;checks notes&lt;/em&gt; ... 7 months 😱! So I think solving most of that in 4-ish weeks is a tremendous achievement :D. What I&#039;ve done, basically, is implementing CRDT resolution for containers (which I completely forgot about 😅), schema migrations and updates for Soukai Solid Models, and resumability/persistence for Aerogel Jobs.&lt;/p&gt;
&lt;p&gt;That first point, CRDT resolution for containers, is not as simple as it may seem. Sure, I had already implemented CRDT resolution for plain documents, but turns out that containers have some particular challenges. For example, the &lt;code&gt;ldp:contains&lt;/code&gt; triples are managed by the Server using the &lt;code&gt;SolidEngine&lt;/code&gt;, and thus aren&#039;t tracked by CRDT operations. But they are tracked in local storage, using the &lt;code&gt;IndexedDBEngine&lt;/code&gt;. All this CRDT/Cloud synchronization stuff is constantly growing in complexity, but I&#039;m extremely grateful for my test suites, because I&#039;ve been able to catch a lot of regressions and I&#039;m confident that it&#039;s somewhat robust (I&#039;m sure I&#039;ll find tons of bugs when people start using it in unexpected ways, though, but that&#039;s to be expected 🥁).&lt;/p&gt;
&lt;p&gt;Schema migrations and updates have been the meat of this month&#039;s work, and what that NLNet milestone is all about. I talked about the importance of translating between schemas in my Interoperable Serendipity presentation, but TLDR I learned about this idea of &amp;quot;lenses&amp;quot; in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.inkandswitch.com/cambria/&quot;&gt;project Cambria&lt;/a&gt;, and I believe this is essential for Solid&#039;s success. Initially, I didn&#039;t expect to take this as far as implementing lenses. And technically I haven&#039;t, but I got a lot closer than I expected. The initial idea was to implement tools to migrate existing data in Solid PODs using Solid Focus v1 to the new schema, but I came up with an approach that ultimately allows me to support the older schema without migrating any of the data :D. I still implemented the migration script, because I don&#039;t think the older schema is any good (it&#039;s not following many best-practices, since it was the first Solid app I made). But it&#039;s super cool that I won&#039;t force any users to migrate if they don&#039;t want to :). And I&#039;m sure this will be very useful in the future if I ever tackle real lenses.&lt;/p&gt;
&lt;p&gt;Now, the work here is not finished. Most of the code is, but part of working on these things &amp;quot;for real&amp;quot; involves writing documentation and creating additional materials. For example, I plan on adding a new video to my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/playlist?list=PLA3GcuMVHSbzxnR45Gzu2w7QuKs247tE5&quot;&gt;Rebuilding Solid Focus with Aerogel series&lt;/a&gt;, and I&#039;ll also document how to use these new capabilities in Soukai. There&#039;s also a good amount of heavy lifting that Aerogel is doing, not just Soukai. But given that I still haven&#039;t started documenting anything in Aerogel, I&#039;m not sure if I&#039;ll do it just for this. To be honest, though, there&#039;s not much to document (that&#039;s the point of Aerogel!). Ideally, you&#039;ll only need to call these two methods:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;Cloud.registerSchemaMigration(Task, TaskSchema);

await Cloud.migrate();
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finally, Aerogel Jobs are something that has sort-of creeped up on me, since I didn&#039;t plan to work on them initially. But this is the sort of thing I have the luxury to spend time on now that I&#039;m working full-time. Essentially, jobs are long-running processes that may be processed in the background. I already have a similar concept in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/media-kraken/&quot;&gt;Media Kraken&lt;/a&gt;, when you import a collection of movies you can see a progress dialog and you get a summary at the end. However, that process is not resumable nor persisted. That means that if you reload the application in the middle, all the progress will be lost. Which is not much of an issue for that task, but it definitely would for schema migrations. So I used the opportunity to generalize this idea, and now it&#039;s technically possible for any job to be resumable and persistent. Although so far I only support it for migrations, I may also add it to synchronization and backups (connecting to a Solid account after having being using the app from local storage). In the future, I can also see these running on worker threads (I already tried that in Media Kraken, but &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/inrupt/solid-client-authn-js/issues/1657#issuecomment-916688273&quot;&gt;there were some limitations&lt;/a&gt;), or even in a server (for example, to fetch RSS entries, etc.).&lt;/p&gt;
&lt;p&gt;And that&#039;s about it for this lengthy update, hopefully I&#039;ll soon be done with all the hairy stuff and the only thing left before releasing will be some final tweaks and an overall review. Personally, I&#039;m going to start using Focus v2 in production right after I publish this update!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Presented "Interoperable Serendipity"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://www.youtube.com/watch?v=KN9OWj_XdkY" />
            <id>https://www.youtube.com/watch?v=KN9OWj_XdkY</id>
            <published>2025-02-24T11:00:00+00:00</published>
            <updated>2025-02-24T11:00:00+00:00</updated>
            <summary type="html">
                Presented &lt;a href=&quot;https://www.youtube.com/watch?v=KN9OWj_XdkY&quot;&gt;Interoperable Serendipity&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I&#039;m giving a talk at Solid World: &lt;a href=&quot;https://www.youtube.com/watch?v=KN9OWj_XdkY&quot;&gt;Interoperable Serendipity&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Completed "Attending FOSDEM 2025"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2025#comment-4" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2025#comment-4</id>
            <published>2025-02-03T09:36:33+00:00</published>
            <updated>2025-02-03T09:36:33+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2025#comment-4&quot;&gt;Attending FOSDEM 2025&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2025#comment-4&quot;&gt;Attending FOSDEM 2025&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending FOSDEM 2025"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2025#comment-3" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2025#comment-3</id>
            <published>2025-02-03T09:35:21+00:00</published>
            <updated>2025-02-03T09:35:21+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2025#comment-3&quot;&gt;Attending FOSDEM 2025&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Once again, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://iruntheinternet.com/lulzdump/images/its-a-trap-pun-its-a-wrap-admiral-ackbar-star-wars-1363199217Z.jpg&quot;&gt;it&#039;s a wrap&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Like always, I really enjoyed this year&#039;s FOSDEM. But in some ways, this one has been extra-special to me. More on this later.&lt;/p&gt;
&lt;p&gt;As I anticipated, I didn&#039;t watch as many talks as I&#039;d like. I&#039;ll have some catching up to do with the recordings. But I did attend a bunch. I really enjoy this mix of styles and interests at FOSDEM. You can find great speakers with flawless presentation skills, geeks talking about their projects in excruciating technical detail, and everything in between (with no offense to the geeks, I&#039;d probably put myself on this category with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://archive.fosdem.org/2023/schedule/event/sovcloud_from_zero_to_hero_with_solid/&quot;&gt;my talk&lt;/a&gt;). Knowledge exchange at its peak.&lt;/p&gt;
&lt;p&gt;One of my favourite talks this year was John O&#039;Nolan&#039;s (ghost.org&#039;s founder) &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-4673-networked-journalism-bringing-long-form-publishing-to-the-fediverse/&quot;&gt;Networked Journalism: Bringing long-form publishing to the Fediverse&lt;/a&gt;. I particularly liked one of the ending statements: &amp;quot;If the product isn&#039;t great, being open doesn&#039;t matter&amp;quot;. Yes! More design thinking in open source, please!&lt;/p&gt;
&lt;p&gt;I also really enjoyed &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-5128-today-s-fediverse-a-good-start-but-there-s-more-to-do/&quot;&gt;Today&#039;s fediverse: a good start, but there&#039;s more to do&lt;/a&gt;, by the two ActivityPub spec editors (Christine Lemmer-Webber and Jessica Tallon). And Terence Eden&#039;s talk on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://gitlab.com/edent/activity-bot&quot;&gt;ActivityBot&lt;/a&gt;, which unfortunately wasn&#039;t recorded (but TLDR, it&#039;s an ActivityPub server for bots written in a single PHP file :O). It was also fun to hear about the awesome work that NLNet has been doing, and will do, in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-6508-next-generation-internet-2025-where-next-/&quot;&gt;Next Generation Internet 2025: where next?&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We even had a couple of Solid talks! Sébastien Rosset talked about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://activitypods.org/&quot;&gt;ActivityPods&lt;/a&gt; (not recorded either), and Michiel de Jong talked about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-5107-solid-local-first-and-the-ultimate-bookkeeping-system/&quot;&gt;Solid, Local-First, and The Ultimate Bookkeeping System&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This last point is one of the reasons why I think this year&#039;s conference has felt different to me. I&#039;ve been attending FOSDEM since 2019, but this was the first time that we&#039;ve had multiple people from Solid attending. In a way, it was reminiscent of &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium&quot;&gt;last year&#039;s Solid Symposium&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Which brings me to my biggest takeaway of the conference. As you may know, &lt;a href=&quot;https://noeldemartin.com/blog/the-end-of-the-chapter&quot;&gt;I quit my job some months ago&lt;/a&gt;, and I was planning to get back to work in January. But it&#039;s already February, and I still haven&#039;t got a response for my NLNet grant application from October. So I&#039;ve been a bit in limbo for the last month. Doing some &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-202425&quot;&gt;housekeeping&lt;/a&gt;, and even dipping my toes back in the job market. But I realized things aren&#039;t great, and it&#039;s more difficult than ever to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://x.com/NoelDeMartin/status/1880143958497783948&quot;&gt;find good opportunities without networking&lt;/a&gt;. So networking I did, and Lo and behold, my worries are over! (for now). One of the people I spoke with was &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://michielbdejong.com/&quot;&gt;Michiel de Jong&lt;/a&gt;. After sharing my worries, he was gracious enough to negotiate an extension to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nlnet.nl/project/SolidDataModules/&quot;&gt;one of his active grants&lt;/a&gt;, and include me into a new milestone! We still have to formalize it, and it&#039;s not a whole grant, but this means that I&#039;ll be covered until I get a response for my grant application :D. What&#039;s even better, I&#039;ll be able to work on Aerogel, so in practice I can get started with my plans :). No more job searching for me!&lt;/p&gt;
&lt;p&gt;So yeah, that&#039;s great news. When I look back to this year&#039;s FOSDEM, I think I will see it as an inflection point in my career. I still have to secure the full grant 🤞, but it seems like my plans are starting to take shape. It remains to be seen if the project takes off, which is the real challenge!&lt;/p&gt;
&lt;p&gt;As I type this, I&#039;m 5 hours away from boarding the flight back home. As is becoming tradition, I plan to visit &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://duckduckgo.com/?q=tonton+garby&quot;&gt;my favourite sandwich shop&lt;/a&gt;, roam the streets for a bit, and spend the rest of the morning coding away at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://muntpunt.be/&quot;&gt;Muntpunt Library&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending FOSDEM 2025"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2025#comment-2" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2025#comment-2</id>
            <published>2025-01-27T10:51:21+00:00</published>
            <updated>2025-01-27T10:51:21+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2025#comment-2&quot;&gt;Attending FOSDEM 2025&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;m not giving any talks this year, but it seems like many people I know are attending so it should be fun! It&#039;s also the 25th anniversary, and my fifth time attending.&lt;/p&gt;
&lt;p&gt;As always, I&#039;m not completely sure what I&#039;ll be doing; other than attending some talks, roaming the ULB campus, and eating mini-waffles. But there&#039;s a couple of things I&#039;ll do for sure. For example, it seems like this year we&#039;ll finally have &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/anyone-attending-fosdem-lets-meet-to-talk-about-solid/1143/25&quot;&gt;a proper Solid meetup&lt;/a&gt;. There are also a couple of talks I&#039;m very excited about, and I&#039;d be remiss if I don&#039;t at least pass through the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/track/design/&quot;&gt;Open Source Design&lt;/a&gt; devroom.&lt;/p&gt;
&lt;p&gt;Something I&#039;m not very good at, though, is speaking with people I don&#039;t already know :/. It&#039;s a common saying that &amp;quot;the hallway track&amp;quot; is one of the highlights of the conference. But I can&#039;t say I&#039;ve experienced much of it... Sure, I go through the stands, and ask a question or two. But I don&#039;t really interact with many new people in the conference. I&#039;ve met some people at fringe events like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://archive.fosdem.org/2019/beerevent/&quot;&gt;the beer event&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://offdem.net/&quot;&gt;OFFDEM&lt;/a&gt;, or &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://bytenight.brussels/&quot;&gt;Bytenight&lt;/a&gt;. But I can&#039;t say I&#039;ve actually met anyone &lt;em&gt;at&lt;/em&gt; the conference. I guess I simply &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://rss.com/podcasts/focaterra/1599390/&quot;&gt;suck at notworking&lt;/a&gt; 🤷.&lt;/p&gt;
&lt;p&gt;In any case, it should be fun either way! Honestly, it&#039;s just fun for me to be there and watch the talks :D. Here&#039;s a tentative schedule of things I may attend:&lt;/p&gt;
&lt;h4&gt;Friday&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://caldarium.be&quot;&gt;Caldarium&lt;/a&gt; - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://offdem.net/&quot;&gt;OFFDEM&lt;/a&gt; Launch Party&lt;/li&gt;
&lt;li&gt;À La Mort Subite - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://lu.ma/7a0p68nw&quot;&gt;ATProto meetup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delirium Café - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/practical/beer/&quot;&gt;Unofficial beer event&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Saturday&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;11:00-12:00 @ H.3242 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-6615-offering-paid-services-contract-work-saas-from-first-steps-bof/&quot;&gt;Offering paid services (contract work, SaaS) - from first steps BOF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;11:35-12:00 @ UB5.230 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-5320-build-a-great-business-on-open-source-without-selling-your-soul/&quot;&gt;Build a Great Business on Open Source without Selling Your Soul&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:00-14:00 @ AW1.121 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-6561-ngi-zero-network-meetup-bof/&quot;&gt;NGI Zero network meetup BOF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:15-13:25 @ H.1308 (Rolin) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-4922-nextgraph-build-collaborative-local-first-and-decentralized-apps/&quot;&gt;NextGraph : Build collaborative, local-first and decentralized apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;15:00-15:30 @ H.3242 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-6742-at-protocol-developer-meet-and-greet/&quot;&gt;AT Protocol developer meet and greet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;15:00-15:50 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-6540-the-selfish-contributor-revisited/&quot;&gt;The Selfish Contributor Revisited&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;15:05-15:30 @ UB5.230 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-5498-from-side-projects-to-sustainable-open-source/&quot;&gt;From Side Projects to Sustainable Open Source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;15:30-15:45 @ H.2215 (Ferrer) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-5052-immich-self-hosted-photo-and-video-management-solution/&quot;&gt;Immich: Self-hosted photo and video management solution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;15:50-16:05 @ H.2215 (Ferrer) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-5630-celebrating-open-standards-how-podcasting-2-0-shaped-the-future-of-podcasting/&quot;&gt;Celebrating Open Standards: How Podcasting 2.0 Shaped the Future of Podcasting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;16:00-16:10 @ UA2.118 (Henriot) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-6622-funkwhale-presentation-to-audio-federation/&quot;&gt;Funkwhale presentation : to audio federation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;16:10-16:20 @ UA2.118 (Henriot) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-5049-elk-a-nimble-client-for-mastodon/&quot;&gt;Elk: A Nimble Client for Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;17:00-17:30 @ UA2.118 (Henriot) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-4531-fediscovery-improving-search-and-discovery-on-the-fediverse/&quot;&gt;Fediscovery: Improving Search and Discovery on the Fediverse&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;17:30-17:40 @ UA2.118 (Henriot) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-5128-today-s-fediverse-a-good-start-but-there-s-more-to-do/&quot;&gt;Today&#039;s fediverse: a good start, but there&#039;s more to do&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;18:30-19:00 @ UA2.118 (Henriot) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-4673-networked-journalism-bringing-long-form-publishing-to-the-fediverse/&quot;&gt;Networked Journalism: Bringing long-form publishing to the Fediverse&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Evening @ Hackerspace Brussels (HSBXL)- &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://bytenight.brussels/&quot;&gt;Bytenight&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Sunday&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;09:00-09:25 @ K.3.201 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-6075-top-accessibility-errors-found-in-open-source-through-automated-testing/&quot;&gt;Top Accessibility Errors Found in Open Source Through Automated Testing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;09:00-09:50 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-5495-what-floss-means-in-the-ai-world/&quot;&gt;What FLOSS Means in the AI World&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;09:00-09:50 @ K.1.105 (La Fontaine) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-6508-next-generation-internet-2025-where-next-/&quot;&gt;Next Generation Internet 2025: where next?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;09:30-09:55 @ K.3.201 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-5561-solving-the-world-s-localization-problems/&quot;&gt;Solving the world’s (localization) problems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;09:50-10:20 @ K.3.601 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-5552-building-sustainability-a-case-study-in-funding-diversification-for-decidim/&quot;&gt;Building Sustainability: A Case Study in Funding Diversification for Decidim&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;10:00-10:30 @ UB5.230 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-6519-jsr-from-private-ownership-to-open-governance/&quot;&gt;JSR: from private ownership to open governance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;10:30-11:00 @ AW1.126 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-5970-are-current-standards-enough-towards-verifiable-credentials-with-expressive-zero-knowledge-query/&quot;&gt;Are current standards enough? Towards Verifiable Credentials with expressive zero knowledge query&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;11:00-11:30 @ UB5.230 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-4233-privacy-first-architecture-alternatives-to-gdpr-popup-and-local-first/&quot;&gt;Privacy-first architecture: alternatives to GDPR popup and local-first&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;11:00-11:50 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-6370-early-screening-of-zemarmot-animation-film-work-in-progress-with-live-music/&quot;&gt;Early Screening of &amp;quot;ZeMarmot&amp;quot; animation film (work-in-progress) with live music&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;12:00-13:00 @ AW1.121 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-6617-social-web-bof/&quot;&gt;Social Web BOF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;12:50-13:05 @ H.2215 (Ferrer) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-4990-how-to-write-a-killer-readme/&quot;&gt;How to Write a Killer README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:00-13:30 @ K.4.201 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-6236-matrix-state-of-the-union/&quot;&gt;Matrix State of the Union&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:00-14:00 @ AW1.121 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-6560-nlnet-office-hour/&quot;&gt;NLnet office hour&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:30-13:55 @ K.3.201 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-4876-thunderbird-building-a-cross-platform-scalable-open-source-design-system/&quot;&gt;Thunderbird: Building a Cross-Platform, Scalable Open-Source Design System&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;14:00-14:25 @ K.3.201 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-4832-cli-design-for-designers-and-developers/&quot;&gt;CLI Design for Designers and Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;14:10-14:25 @ H.2215 (Ferrer) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-5107-solid-local-first-and-the-ultimate-bookkeeping-system/&quot;&gt;Solid, Local-First, and The Ultimate Bookkeeping System&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;15:00-15:25 @ K.3.201 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-5322-piracy-and-open-source-reimagining-creativity/&quot;&gt;Piracy, and Open Source: Reimagining Creativity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;16:00-16:50 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-5084-how-we-are-defending-software-freedom-against-apple-at-the-eu-s-highest-court/&quot;&gt;How we are defending Software Freedom against Apple at the EU&#039;s highest court&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;17:50-18:15 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-6713-closing-fosdem-2025/&quot;&gt;Closing FOSDEM 2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Maybe I went a bit overboard this year with the bookmarks 😅. Well, in any case, this list will also serve me to watch recordings of the talks I miss :).&lt;/p&gt;
&lt;p&gt;It would be fun to meet someone who actually reads this journal, so if you do come say hi!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Attending FOSDEM 2025"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2025" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2025</id>
            <published>2025-01-27T09:10:35+00:00</published>
            <updated>2025-01-27T09:10:35+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2025&quot;&gt;Attending FOSDEM 2025&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2025&quot;&gt;Attending FOSDEM 2025&lt;/a&gt;&lt;/p&gt;&lt;p&gt;New year, new &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org&quot;&gt;FOSDEM&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Happening in Brussels on February 1st and 2nd. Let me know if you&#039;re around, and let&#039;s meet up.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Housekeeping 2024/25"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping-202425#comment-5" />
            <id>https://noeldemartin.com/tasks/housekeeping-202425#comment-5</id>
            <published>2025-01-27T08:56:00+00:00</published>
            <updated>2025-01-27T08:56:00+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-202425#comment-5&quot;&gt;Housekeeping 2024/25&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-202425#comment-5&quot;&gt;Housekeeping 2024/25&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Housekeeping 2024/25"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping-202425#comment-4" />
            <id>https://noeldemartin.com/tasks/housekeeping-202425#comment-4</id>
            <published>2025-01-27T08:55:40+00:00</published>
            <updated>2025-01-27T08:55:40+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-202425#comment-4&quot;&gt;Housekeeping 2024/25&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Well, in the last update I mentioned you may be hearing from me once a week. And here we are, two weeks later 😅. I&#039;ve been tinkering away for these two weeks, even though I got a cold and wasn&#039;t as productive, but the reason why I didn&#039;t write last week is that I wasn&#039;t finished with my main task: Rewriting this whole website from scratch! I&#039;ve wanted to do it for a while, but I never had the time for it.&lt;/p&gt;
&lt;p&gt;One of the reasons why I hadn&#039;t updated yet is that my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nova.laravel.com/&quot;&gt;Nova&lt;/a&gt; license didn&#039;t support new Laravel versions :/. I bought mine &lt;a href=&quot;/tasks/brushing-up-noeldemartincom#comment-4&quot;&gt;6 years ago&lt;/a&gt;, and I&#039;ve been very happy with it... But honestly, I don&#039;t fancy paying 79$ (today, and every year!). Specially given that I don&#039;t want any new features. &lt;a href=&quot;/blog/what-technology-wants#subscriptions&quot;&gt;I&#039;ve rambled about subscriptions before&lt;/a&gt;, and even though this didn&#039;t look like one... it totally is. So yeah, I decided to ditch Nova in favor of... 🥁 &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://statamic.com/&quot;&gt;Statamic&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;I&#039;ve known about Statamic for a while, but I didn&#039;t start paying it any attention until I took Jack McDade&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://radicaldesigncourse.com/&quot;&gt;Radical Design&lt;/a&gt; course. It&#039;s not like the course has anything to do with it, but I liked his style so much that I decided to dig into his other projects. And I have to say, I love Statamic :D. It&#039;s a great CMS, with the full power of Laravel under the hood. And all the APIs and documentation are as good as any official Laravel package. But they do have the Jack McDade signature, which is nice. Like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://statamic.dev/globals#blueprints-are-optional&quot;&gt;funny comments throughout the documentation&lt;/a&gt;, or quirky design easter eggs (hover over that toucan in the homepage!). Also, they have a generous free tier for single-user websites. So it was the perfect choice.&lt;/p&gt;
&lt;p&gt;I also moved away from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://stimulus.hotwired.dev/&quot;&gt;StimulusJS&lt;/a&gt;, which I decided to try upon release but I haven&#039;t been super enthusiastic about. Instead, I started using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://alpinejs.dev/&quot;&gt;AlpineJS&lt;/a&gt;. I&#039;ve been following &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://notesonwork.com/&quot;&gt;Caleb&#039;s work&lt;/a&gt; for years, and he&#039;s one of my favourite developers. But I was sad that I wasn&#039;t using any of his libraries... until now! Honestly, I haven&#039;t used it enough to have a strong opinion, but the few JS sprinkles I&#039;ve written have been pretty straightforward :).&lt;/p&gt;
&lt;p&gt;Finally, something else I wanted to do with my website, was open source it. Which of course, I couldn&#039;t quite do with Nova. But I also wanted to move blog posts to a more contribution-friendly format, such as markdown files. And &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://statamic.dev/stache&quot;&gt;Statamic supports it out of the box&lt;/a&gt;! I don&#039;t expect anyone to actually contribute, but it&#039;s always nice to make things in accessible formats. And hey, it&#039;d be nice if I get some typo fixed every now and then.&lt;/p&gt;
&lt;p&gt;If you&#039;re curious to dig into any of this, I&#039;m happy to say that this site is now open source! You can head to GitHub and take a look: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/noeldemartin.com&quot;&gt;github.com/noeldemartin/noeldemartin.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Besides working on the website, I also did a couple other things. Mostly related to migrating out of the Digital Ocean droplet. And I think it&#039;s important that I mention an interaction I had online. When I talked about not upgrading my mastodon server for 6 years, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@angelo@social.veltens.org/113822701097773423&quot;&gt;I was rightfully called out for being irresponsible&lt;/a&gt;. I wasn&#039;t trying to promote this mindset, but I shouldn&#039;t have been so nonchalant about it. The real reason why I hadn&#039;t updated in so long is that I was afraid :(. I&#039;ve had bad experiences in the past when system upgrades broke my applications, and I was forced to spend some time either reverting the upgrade, or fixing my apps. But that&#039;s no excuse, and I will certainly try to do better from now on.&lt;/p&gt;
&lt;p&gt;Something I&#039;ve already been doing to improve that situation is moving all my projects to Docker, with the architecture I previously referred to as &amp;quot;headless&amp;quot;. I&#039;ve created a tool for this called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/kanjuro&quot;&gt;Kanjuro&lt;/a&gt; (if you want to get the reference, you&#039;ll have to watch &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.imdb.com/title/tt1748278/&quot;&gt;Scabbard Samurai&lt;/a&gt; :D). Most of my traumatic experiences happened because of dependency hell and PHP versions, but I haven&#039;t had any problems with this containerized approach, so it should be fine. I also started configuring &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.digitalocean.com/community/tutorials/how-to-keep-ubuntu-20-04-servers-updated&quot;&gt;unattended upgrades&lt;/a&gt;, and I&#039;ll make sure that things stay up to date.&lt;/p&gt;
&lt;p&gt;So yeah, maintenance burden sucks, and it&#039;s definitely the worst part of self-hosting and working in open source. But it&#039;s part of the deal, so I may as well suck it up and get my act together. Thanks Angelo for bringing it up!&lt;/p&gt;
&lt;p&gt;Now that we&#039;ve got that out of the way, I&#039;m happy to say that I only have one service running on that legacy Digital Ocean droplet. &lt;a href=&quot;/tasks/configuring-a-self-hosted-solid-pod-server&quot;&gt;My personal Solid POD&lt;/a&gt;. And yes, it is running a very outdated &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/nodeSolidServer/node-solid-server/releases/tag/v5.2.2&quot;&gt;NSS 5.2.2&lt;/a&gt; server 🙈. The good news is that this really is something I&#039;m only using myself, and it doesn&#039;t interact with other servers or has anyone else&#039;s data like Mastodon. Regardless, I want to migrate it as well.&lt;/p&gt;
&lt;p&gt;For a long time, I was thinking I would just set up a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/CommunitySolidServer/CommunitySolidServer&quot;&gt;CSS&lt;/a&gt; instance. But I&#039;ve decided to keep pushing &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noelDeMartin/lss&quot;&gt;LSS&lt;/a&gt; for my own usage. I&#039;ve been using Media Kraken exclusively with it for a couple of weeks, and the experience has been great :D. I&#039;m already using Umai elsewhere (with the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidcommunity.net/&quot;&gt;Solid Community POD&lt;/a&gt;), so the only one left is Solid Focus. Which is a perfect segway to the next thing I&#039;ll work on: getting the Focus revamp out of the door! I still haven&#039;t heard from NLNet, so I&#039;m not sure how much I&#039;ll work on Aerogel or not. But in any case, I&#039;ll do this as part of &lt;a href=&quot;/tasks/making-a-web-application-framework&quot;&gt;the other task I already have ongoing&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So that&#039;s it for this task! Enough housekeeping, time to start working on some real stuff.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Housekeeping 2024/25"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping-202425#comment-3" />
            <id>https://noeldemartin.com/tasks/housekeeping-202425#comment-3</id>
            <published>2025-01-13T08:32:38+00:00</published>
            <updated>2025-01-13T08:32:38+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-202425#comment-3&quot;&gt;Housekeeping 2024/25&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;You may be surprised to be hearing from me so soon, just a week after my last update... And I am too! But I have done &lt;em&gt;so many things&lt;/em&gt; since last week, that I had to write an update. Is this what working full time on my own stuff looks like? 🤩&lt;/p&gt;
&lt;p&gt;Realistically, I don&#039;t it&#039;ll always be like this, because many of the things I&#039;ve done weren&#039;t too big. But yes, I&#039;m definitely more productive working on something for five days a week than one (surpise!). Actually, something &lt;a href=&quot;https://noeldemartin.com/blog/the-end-of-the-chapter#farewell-moodle-hq&quot;&gt;I used to do at Moodle&lt;/a&gt; was writing weeknotes. Inspired by &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://dougbelshaw.com/blog/2025/01/12/weeknote-02-2025/&quot;&gt;Doug Belshaw&lt;/a&gt;, I would write an interal weeknote summarising what I worked on that week. That resulted in a 125-page PDF when I left 😱.&lt;/p&gt;
&lt;p&gt;So yeah, I like the idea of writing weeknotes if my work pace warrants it. But don&#039;t worry, if I end up doing that, I&#039;ll probably highlight the most interesting bits to make it easier to consume. For example, here&#039;s what I worked on this week:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Upgraded my Mastodon server:&lt;/strong&gt; Last time I did this was &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/100787777601675592&quot;&gt;6 years ago&lt;/a&gt; 🙈. This type of experience is why I like so much the idea of &amp;quot;finished software&amp;quot;, and it is remarkable that I&#039;ve been able to pull it off on a federated environment. I guess that&#039;s what happens when software relies on open protocols :D. But yeah, in any case, it was due for an upgrade. And it was a lot easier than I expected. Besides upgrading, I also moved the instance for Digital Ocean to Hetzner, and I hope by the end of the year I can drop the Digital Ocean droplet altogether.&lt;/p&gt;
&lt;p&gt;Some interesting notes about the upgrade is that my biggest issue self-hosting Mastodon seems to be related with storage capacity. You may be surprised to hear that, because how much data can an instance-of-one generate? Well, a lot, it turns out. This happens because &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mastodon/mastodon/issues/15195&quot;&gt;Mastodon caches remote assets from other accounts&lt;/a&gt; in the server :/. That includes avatars, banners, and even emojis! (I had 1.3GB of custom emojis, for god&#039;s sake). However, thanks to the magic of Open Source and self-hosting, I&#039;ve been able to just remove those with a script. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ricard.dev/improving-mastodons-disk-usage/&quot;&gt;Recent versions have also improved a lot&lt;/a&gt;, but there are still some things you can&#039;t do out of the box.&lt;/p&gt;
&lt;p&gt;In any case, if you&#039;re curious to learn more about how I configured my Mastodon instance, you can check it out in the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/mastodon&quot;&gt;noeldemartin/mastodon&lt;/a&gt; repo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Brushed up on Rireki:&lt;/strong&gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noelDeMartin/rireki&quot;&gt;Rireki&lt;/a&gt; is a little python program I wrote years ago to take care of my backups. It&#039;s been working pretty well, so I implemented a new feature to automate cleaning up old backups (which I had been doing by hand).&lt;/p&gt;
&lt;p&gt;I also used this opportunity to give &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.cursor.com/&quot;&gt;Cursor&lt;/a&gt; a try. I&#039;m &lt;em&gt;very&lt;/em&gt; late to the party, because this is the first time I&#039;ve used AI for coding. I&#039;m still not sure whether I like it or not, but I have to say in this context it was very useful because I am quite rusty on Python. However, I am convinced that at some point AI will be an essential tool in my developer&#039;s toolkit. And I think the ecosystem is mature enough to start dipping my toes in the water.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Brushed up on Freedom Calculator:&lt;/strong&gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://freedom-calculator.noeldemartin.com/&quot;&gt;Freedom Calculator&lt;/a&gt; is an app I made a while ago to calculate my economical runway and whatnot (which today is more relevant than ever for me!). This week, I added a new option to indicate how much I earn as well, thus calculating &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/FIRE_movement&quot;&gt;how long until retirement&lt;/a&gt;. I don&#039;t 100% subscribe to the FIRE philosophy, but I think it&#039;s useful to at least be aware of your current trajectory. As you may imagine, my current trajectory is to go broke, given that I have 0 income at the moment 😅.&lt;/p&gt;
&lt;p&gt;This also gave me the opportunity to try yet another new tool, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://playwright.dev/&quot;&gt;Playwright&lt;/a&gt;. I&#039;ve been a fan of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.cypress.io/&quot;&gt;Cypress&lt;/a&gt; for a long time, but I&#039;ve heard many people rave about Playwright. And the nail in the coffin was the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://2024.stateofjs.com/en-US/libraries/#tier_list&quot;&gt;State of JavaScript survey results&lt;/a&gt;, where Playwright came out in S-tier whilst Cypress fell to B-tier. My first impressions of Playwright are mixed. On the one hand, I prefer Cypress API (I don&#039;t have to await &lt;em&gt;every single command&lt;/em&gt;) and experience (you can actually see the app running). On the other hand, everything worked flawlesly and I could even implement &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://playwright.dev/docs/test-snapshots&quot;&gt;snapshot tests&lt;/a&gt; in CI. I&#039;m also doing this with Cypress, but I didn&#039;t manage to make it work &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/blob/6a7844a73bb47b8684790ebf4663cddc0eefd520/package.json#L13&quot;&gt;without resorting to Docker&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Started using LSS in production:&lt;/strong&gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noelDeMartin/lss&quot;&gt;LSS&lt;/a&gt; is still very experimental, but given that I&#039;m trying to move away from old infrastructure, and I&#039;m still using &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server&quot;&gt;an ancient POD&lt;/a&gt;, I thought I&#039;d give it a try. And so far, it&#039;s working great! I moved my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/media-kraken/&quot;&gt;Media Kraken&lt;/a&gt; collection to Nextcloud, and it&#039;s awesome to see that I can use the app whilst interacting with the Turtle documents using the full power of Nextcloud (editing files from disk, versioning history, etc).&lt;/p&gt;
&lt;p&gt;I still don&#039;t plan on opening this up for everyone any time soon. But if you&#039;re curious to try it yourself, let me know and maybe I will create an account for you :).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Started applying to jobs:&lt;/strong&gt; Yes, I know. It&#039;s sad that a week into my full time work as an independent developer I&#039;m already applying to jobs :/. But as I mentioned recently, it doesn&#039;t seem like I&#039;m getting the NLNet grant anytime soon (if ever), and I&#039;m burning savings at the moment. So I started exploring the market, and I found a couple of opportunities that are pretty awesome. I don&#039;t think I&#039;ll be giving too many details about this until I settle on one opportunity, so for now just know that yes, I&#039;m job hunting 😅.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Housekeeping 2024/25"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping-202425#comment-2" />
            <id>https://noeldemartin.com/tasks/housekeeping-202425#comment-2</id>
            <published>2025-01-06T07:52:09+00:00</published>
            <updated>2025-01-06T07:52:09+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-202425#comment-2&quot;&gt;Housekeeping 2024/25&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Well, hello 2025!&lt;/p&gt;
&lt;p&gt;After spending a couple of weeks back home, I&#039;m ready to &amp;quot;go back to work&amp;quot;. Whatever that means in my situation! So far, I&#039;ve been mostly in holiday mode. But the holiday mode I seem to enjoy the most, which is not moving around too much and going out sporadically. Tons of time affluence :D.&lt;/p&gt;
&lt;p&gt;One of the main things I&#039;ve done, of course, is my New Year Resolutions for 2025. I do them every year, and even though I know they are not sacred, they are very helpful to keep me on the right track. This year&#039;s themes have been mostly the same as always: improve my health, learn Japanese, etc. But there are two important additions. One of them is obvious, sorting out what to do with my life (career-wise). And the other one is to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://aaronfrancis.com/2024/what-if-you-tried-hard-dac139a5&quot;&gt;Try Hard&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was inspired to do this by reading &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://aaronfrancis.com/2024/year-in-review-2024-ebfbb78c&quot;&gt;Aaron Francis&#039; 2024 restrospective&lt;/a&gt;. I&#039;ve always had an aversion to the idea of &amp;quot;working hard&amp;quot;, because I equate it with &amp;quot;working a lot of hours&amp;quot;. I&#039;d much prefer to work smart in 8 hours/day, 5 days/week. But reading Aaron&#039;s writing, I realized there&#039;s another way to look at that. Working hard can also mean to take risks, to be ambitious. And I can&#039;t say I&#039;ve done a lot of that (even though I&#039;ve &lt;a href=&quot;https://noeldemartin.com/blog/the-end-of-the-chapter&quot;&gt;quit my job&lt;/a&gt; &lt;a href=&quot;https://noeldemartin.com/blog/10-years-as-a-software-developer#2014-entrepreneurship&quot;&gt;twice&lt;/a&gt; to try and make a living on my own...). What I&#039;ve failed to do, in my opinion, is iterate fast enough. The problem is that &lt;a href=&quot;https://noeldemartin.com/blog/the-curse-of-being-a-developer&quot;&gt;I enjoy programming too much&lt;/a&gt;, and I can spend weeks or even months coding away and feeling productive. But if I want to succeed, I need three changes in mindset: iterate faster (setting more ambitious deadlines), measuring more (doing user research, tracking how a project is doing after launch), and doing marketing (sharing my projects outside my bubble, making landing pages, thinking about SEO and distribution, etc). The last one will probably be the most challenging. We&#039;ll see if I manage!&lt;/p&gt;
&lt;p&gt;Other than that, I also fixed a bunch of bugs on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://umai.noeldemartin.com/&quot;&gt;Umai&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/media-kraken/&quot;&gt;Media Kraken&lt;/a&gt;, I investigated &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/CommunitySolidServer/CommunitySolidServer/issues/1972&quot;&gt;an issue with CSS 7.1.3&lt;/a&gt;, I started using my own recipe in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ramen.noeldemartin.com/&quot;&gt;Ramen&lt;/a&gt;, and even released a whole new feature for Umai: Cook Mode! This one is important, because eventually that&#039;s what I&#039;d like my work to be like. I&#039;ve spent a lot of time building tools, and tinkering with Solid&#039;s idiosyncrasies. But in reality, what I want to do is build apps and experiences. It was nice to see that I was able to implement a whole new feature (that wasn&#039;t trivial) in a couple of days! Though I realize that if I&#039;m going to focus on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://aerogel.js.org/&quot;&gt;Aerogel&lt;/a&gt;, I won&#039;t do a lot of that in a while 😅. But that&#039;s still my end goal.&lt;/p&gt;
&lt;p&gt;Talking about Aeorgel, as &lt;a href=&quot;https://noeldemartin.com/tasks/taking-a-sabbatical#comment-7&quot;&gt;I mentioned recently&lt;/a&gt;, I still haven&#039;t got a response for my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nlnet.nl/&quot;&gt;NLNet&lt;/a&gt; application for funding. But I did get an update, and they told me I&#039;ll have to wait until January or early February to know if I&#039;ve passed the first round (and there are two rounds) :/. I applied in October, so that means if I end up getting the grant it&#039;ll happen &lt;em&gt;at least&lt;/em&gt; 5 months after my submission 😱. I understand they are busy and whatnot, but honestly, that doesn&#039;t look good... I&#039;ve been unemployed for 3 months, and even though I still have some savings, I&#039;m starting to reconsider if this full-time Solid thing was a good idea. My intention was to have an answer by now, and if I did get the grant, test the waters for a year and see how it goes. But I don&#039;t think it&#039;s viable to make a living off my Solid projects without some initial help. So, much to my chagrin, I&#039;m going to start exploring other options :(. On that note, if you know about some company or job openings where I could fit, please let me know. Also, it&#039;ll be interesting to see how to job hunt in this AI-powered environment. I&#039;ve long known that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://x.com/NoelDeMartin/status/1796552524889260287&quot;&gt;the best jobs are not to be found on job boards&lt;/a&gt;. And now, that may be more true than ever.&lt;/p&gt;
&lt;p&gt;And that&#039;s mostly it for today&#039;s update! But I&#039;m not done with the task, because I still have one important thing to do: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/113597653731736608&quot;&gt;Upgrade my Mastodon server&lt;/a&gt; 😱.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Housekeeping 2024/25"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping-202425" />
            <id>https://noeldemartin.com/tasks/housekeeping-202425</id>
            <published>2024-12-27T07:12:11+00:00</published>
            <updated>2024-12-27T07:12:11+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-202425&quot;&gt;Housekeeping 2024/25&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-202425&quot;&gt;Housekeeping 2024/25&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Once in a while, I batch some chores I&#039;ve been neglecting. And this liminal moment between years and &lt;a href=&quot;https://noeldemartin.com/blog/the-end-of-the-chapter&quot;&gt;jobs&lt;/a&gt; is the perfect time to do it.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Taking a Sabbatical"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/taking-a-sabbatical#comment-8" />
            <id>https://noeldemartin.com/tasks/taking-a-sabbatical#comment-8</id>
            <published>2024-12-23T08:56:50+00:00</published>
            <updated>2024-12-23T08:56:50+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/taking-a-sabbatical#comment-8&quot;&gt;Taking a Sabbatical&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/taking-a-sabbatical#comment-8&quot;&gt;Taking a Sabbatical&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Taking a Sabbatical"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/taking-a-sabbatical#comment-7" />
            <id>https://noeldemartin.com/tasks/taking-a-sabbatical#comment-7</id>
            <published>2024-12-23T08:54:42+00:00</published>
            <updated>2024-12-23T08:54:42+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/taking-a-sabbatical#comment-7&quot;&gt;Taking a Sabbatical&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;After 103 days, 34 cities, and 9 countries... I&#039;m finally back home 🥳.&lt;/p&gt;
&lt;p&gt;This trip has definitely been &lt;em&gt;something&lt;/em&gt;, and even though &lt;a href=&quot;https://noeldemartin.com/tasks/taking-a-sabbatical#comment-4&quot;&gt;I would have ended it after the first month&lt;/a&gt;, I&#039;m glad I pulled through. It&#039;ll be an experience I treasure for the rest of my life.&lt;/p&gt;
&lt;p&gt;I&#039;m dividing this last update into 3 sections: Life Stuff, Tech Stuff, and Conclusion.&lt;/p&gt;
&lt;h4&gt;Life Stuff&lt;/h4&gt;
&lt;p&gt;Last time, I wrote from China. And man, was it a country that surprised me. I&#039;ve traveled quite a bit in my life, even before this sabbatical frenzy. But it had been years (if not decades) since I&#039;ve been this surprised by a country. My impression of China can be summarized with this Willian Gibson&#039;s quote &amp;quot;The future has arrived — it’s just not evenly distributed yet&amp;quot;.&lt;/p&gt;
&lt;p&gt;Since &lt;a href=&quot;https://noeldemartin.com/blog/10-years-as-a-software-developer#2012-seizing-the-opportunity&quot;&gt;I spent 5 months in Taiwan in 2012&lt;/a&gt;, and I&#039;ve spoken with others who&#039;ve visited China before, I thought I knew what I was getting myself into. But I totally wasn&#039;t. Everything is a lot more advanced than I expected: almost all vehicles are electric, everything works with mobile applications (WeChat &amp;amp; AliPay), there&#039;s connectivity everywhere, many buildings and malls are super modern, etc. Just to share an example, we had to use WeChat to use a washing machine... and we got a push notification when the laundry was finished!&lt;/p&gt;
&lt;p&gt;Of course, not everywhere is like that. Shanghai was definitely more advanced than Beijing. But even in Beijing, you can pay (and order!) in most restaurants using a mobile application (which, thank god, has automated english translations). For the most part, everything worked seamlessly. And it was really cool to live in an environment where I felt like &lt;a href=&quot;https://noeldemartin.com/blog/skeuomorphic-software&quot;&gt;interoperability was a reality&lt;/a&gt;, both in hardware and software. I felt like I was living in the future, and there are many things I&#039;ll miss about China.&lt;/p&gt;
&lt;p&gt;And yet, there were also some things I definitely didn&#039;t enjoy... Like the surveillance :/. Having cameras everywhere is one thing, but this is the only country where I&#039;ve been regularly asked to show my passport just in order to board a train, or enter a crowded street. And there were a couple of &amp;quot;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=x0YGZPycMEU&quot;&gt;computer says no&lt;/a&gt;&amp;quot; situations.&lt;/p&gt;
&lt;p&gt;And don&#039;t get me started on the network restrictions... I already knew about Google &amp;amp; company being blocked (and to certain extent, I even like it!). But it&#039;s not just them. In fact, it seemed like a website being available was more the exception rather than the rule :/. Wikipedia, DuckDuckGo, Feedly, Telegram, BlueSky, Discord, etc. All of them blocked (&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.reddit.com/r/China/comments/v8fv0p/why_is_github_so_slow_in_china_recently/&quot;&gt;even GitHub&lt;/a&gt;!). Funnily enough, though, my personal website and self-hosted Nextcloud instance worked... And my self-hosted Mastodon server was the only social network I could use!&lt;/p&gt;
&lt;p&gt;Of course, eventually I ended up using a VPN to bypass all these restrictions 😅. But it wasn&#039;t straightforward to find one that worked either. As much as I would have loved to rely on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.tunnelbear.com/&quot;&gt;TunnelBear&lt;/a&gt; (because come on, how cute is that bear?), &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://letsvpn.world/?hl=en&quot;&gt;LetsVPN&lt;/a&gt; was the only one I found working reliably. But I didn&#039;t manage to get it working on my laptop, so I was limited to using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://bridges.torproject.org/&quot;&gt;Tor with private bridges&lt;/a&gt; for a couple of weeks.&lt;/p&gt;
&lt;p&gt;I was also surprised to see such few foreigners around. Even when visiting tourist hot spots, most people seemed to be Chinese coming from other regions. Furthermore, seeking online information didn&#039;t produce many results unless we searched in Chinese. Even some information on Google Maps is straight up wrong. For example, on our last day we wanted to store our luggage in some lockers. Searching online, it seemed like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.reddit.com/r/travelchina/comments/1d65pwh/comment/l6qblxu/&quot;&gt;there just weren&#039;t many lockers in China&lt;/a&gt;. But it ocurred to me to browse AliPay&#039;s mini-apps, and lo an behold, there was an app just for this purpose, called LuggaGo. We could find hundreds of lockers, most of them operated with the phone, and you could even see how many spaces were available from the app.&lt;/p&gt;
&lt;p&gt;Finally, we concluded our trip by coming back to Europe in one of the best airline companies I&#039;ve ever used, Hainan Airlines. Even their &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=GwUD0awD06E&quot;&gt;safety instructions video&lt;/a&gt; was awesome! We actually landed in Rome, and made our way back home on land. But I&#039;ve already visited Italy and France many times before, so I don&#039;t have many news to share there :).&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;Pictures&lt;/summary&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/shanghai-battery-packs.jpg&quot; alt=&quot;Mobile battery packs for rental in the middle of the street.&quot;&gt;
&lt;figcaption&gt;
Yet another example of China&#039;s modernity, rental battery packs in the middle of the street. Which you rent using a QR code, of course.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/shanghai-bike-battery-packs.jpg&quot; alt=&quot;A motorbike carrying a portable battery pack station.&quot;&gt;
&lt;figcaption&gt;
... and you can find these everywhere. Like attached to a bike anywhere in the street.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/beijing-great-wall-cat.jpg&quot; alt=&quot;A cat atop the Great Wall of China.&quot;&gt;
&lt;figcaption&gt;
Yep, even atop the Great Wall of China you can find cats :).
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/beijing-maliandao-tea-market.jpg&quot; alt=&quot;Statue of a man drinking tea.&quot;&gt;
&lt;figcaption&gt;
A &lt;a href=&quot;https://en.wikipedia.org/wiki/Lu_Yu&quot; target=&quot;_blank&quot;&gt;Lu Yu&lt;/a&gt; statue outside a Tea Mall in Beijing&#039;s Maliandao street. You read that right, &lt;em&gt;a tea mall&lt;/em&gt;. 3 floors full of tea shops. One of my favourite places of the trip :D.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/home-gaiwan.jpg&quot; alt=&quot;A Gaiwan tea set in my desk.&quot;&gt;
&lt;figcaption&gt;
Finally back home, I&#039;m looking forward to using my new Gaiwan set whilst I work. If you don&#039;t know what that is, check out &lt;a href=&quot;https://notesonwork.transistor.fm/episodes/how-to-drink-tea&quot; target=&quot;_blank&quot;&gt;how to drink tea&lt;/a&gt;.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/home-hobbit-hole.jpg&quot; alt=&quot;A Christmas hobbit hole figurine.&quot;&gt;
&lt;figcaption&gt;
This year&#039;s Christmas decorations will feature a Christmas hobbit hole from the &lt;a href=&quot;https://www.wetaworkshop.com/&quot; target=&quot;_blank&quot;&gt;Wētā Workshop&lt;/a&gt;, next to a &lt;a href=&quot;https://en.wikipedia.org/wiki/Gr%C3%BDla&quot; target=&quot;_blank&quot;&gt;Grýla&lt;/a&gt; statue from Iceland.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/details&gt;
&lt;h4&gt;Tech Stuff&lt;/h4&gt;
&lt;p&gt;Following up from my last update, I finished adding ActivityPods support to my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ramen.noeldemartin.com&quot;&gt;Ramen&lt;/a&gt; app. I didn&#039;t end up implementing everything, such as ActivityPub&#039;s inbox/outbox, because I think that&#039;s too far from Solid&#039;s concerns (and hopefully, it won&#039;t be a requirement in the future). But for the most part, it works.&lt;/p&gt;
&lt;p&gt;I&#039;ll be completely honest here, I was somewhat let down :(. I had high hopes for this project, given that it was heralded as &amp;quot;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/inrupts-data-wallet/7836/10#:~:text=I%20have%20high%20hopes%20for%20activitypods%2C%20which%20is%20currently%20the%20most%20actively%20developed%20open%20source%20Solid%20project&quot;&gt;the most actively developed open source Solid project&lt;/a&gt;&amp;quot;, I&#039;m super excited about the fediverse, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://activitypods.org/specs/solid&quot;&gt;their official compatibility report&lt;/a&gt; painted a very hopeful picture. However, the experience I&#039;ve had working with the platform has been very different.&lt;/p&gt;
&lt;p&gt;I found many incompatibilities that weren&#039;t listed on their documentation, such as using Turtle or creating documents with multiple subjects (things that are the bread and butter for any Solid developer). Some of these I would even say were misleading, because the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://activitypods.org/specs/solid&quot;&gt;section about formats&lt;/a&gt; in their docs clearly says &amp;quot;We support both JSON-LD and Turtle format&amp;quot;. I&#039;m also not a big fan of the architecture. For example, they rely on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://prefix.cc/&quot;&gt;prefix.cc&lt;/a&gt; to validate (and enforce!) vocabularies, they assume client applications have a backend component (mines don&#039;t), and working with localhost or private networks is impossible because they rely on external services such as &lt;code&gt;prefix.cc&lt;/code&gt; (which was an issue in my case, given that I was often working offline or with connectivity issues).&lt;/p&gt;
&lt;p&gt;What I can say, though, is that my interactions with the ActivityPods team have been excellent, and they have been very helpful in solving my doubts and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/integrating-activitypub-within-solid-specs/8355&quot;&gt;sharing their expertise with the community&lt;/a&gt;. I also think it&#039;s natural that this happens, because ActivityPods is definitely a fediverse-first project, and they&#039;re still working on the Solid compatibility. I don&#039;t think my current opinion of the project matters too much either, given that I probably tried it too early. They &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nlnet.nl/project/ActivityPods/&quot;&gt;have finantial support&lt;/a&gt;, and many of the issues I raised are things they are aware of. So I&#039;m looking forward to see how it evolves, and overall I&#039;m still excited about it :).&lt;/p&gt;
&lt;p&gt;If you care to learn more about the specifics, you can check out my entire report: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/ramen/blob/main/docs/activitypods.md&quot;&gt;ActivityPods Compatibility Report&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since I had to deploy yet another live server for this, I also used the opportunity to continue exploring my &amp;quot;&lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-2023#comment-3:~:text=I%20came%20up%20with%20is%20basically%20a%20Docker%2Ddriven%20architecture%2C%20with%20something%20I%27m%20calling%20%22headless%22%20deploys%2C%20and%20served%20with%20nginx%2Dagora.&quot;&gt;headless architecture&lt;/a&gt;&amp;quot;. I may write something about this in my blog at some point, but if you&#039;re curious about it, check out &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/rem/&quot;&gt;the source code&lt;/a&gt;. Basically, I have &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/rem/blob/main/.github/workflows/dockerhub.yml&quot;&gt;one script that publishes a Docker image to DockerHub&lt;/a&gt;, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/rem/blob/main/.github/workflows/headless.yml&quot;&gt;another that mirrors the docker-compose config and folders into a &lt;code&gt;headless&lt;/code&gt; branch&lt;/a&gt;. With this, I can deploy my applications in the server by cloning the &lt;code&gt;headless&lt;/code&gt; branch, and exposing it to the internet alongside other services using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noelDeMartin/nginx-agora&quot;&gt;nginx-agora&lt;/a&gt;. Which should make switching servers in the future very easy.&lt;/p&gt;
&lt;p&gt;Finally, as a last minute addition, I created a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://spectra.video/c/noeldemartin/&quot;&gt;Peertube channel&lt;/a&gt; where I&#039;ll be uploading my videos (the same I&#039;ve been uploading to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/;40noeldemartin&quot;&gt;my Youtube channel&lt;/a&gt;). I don&#039;t particularly enjoy the UX of Peertube, but I think it&#039;s really cool that it&#039;s part of the fediverse and it is completely interoperable :D. For example, I&#039;m following the &lt;code&gt;#solid&lt;/code&gt; tag in the fediverse, and I can see when &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://angelo.veltens.org&quot;&gt;Angelo&lt;/a&gt; releases one of his &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://tube.tchncs.de/c/practical_solid/videos&quot;&gt;Practical Solid videos&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;At the beginning, I said that this would be &amp;quot;a simulation for my retirement&amp;quot;. But I have to confess that I&#039;ve failed miserably 😅. Or at least I hope so, I wouldn&#039;t want my retirement to look anything like this!&lt;/p&gt;
&lt;p&gt;I like traveling, and I like having new experiences. But I don&#039;t like feeling like a tourist, and that&#039;s basically what I&#039;ve done for the last 3 months :/. I also don&#039;t like traveling &lt;em&gt;too much&lt;/em&gt;, and in these last 3 months we&#039;ve changed city every 2.79 days on average 😱. If anything, this trip has made me realize how much I enjoy my usual routine, even when working on a 9 to 5 job.&lt;/p&gt;
&lt;p&gt;But before I continue, there is something I have to address. You may be wondering, if I dislike this frantic lifestyle so much, why didn&#039;t we slow down? Well, they key here is in the &amp;quot;we&amp;quot;. I didn&#039;t travel alone, and my girlfriend enjoyed it tremendously. At no moment did she force me to do any of this (nor is she forcing me to write this xD), and multiple times I had the chance to stay somewhere by myself to meet her later on. But I made the conscious choice to follow her pace, even if &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Comfort_zone&quot;&gt;I wasn&#039;t completely confortable with it&lt;/a&gt;, because I agree with her that we probably won&#039;t have the opportunity to do this again.&lt;/p&gt;
&lt;p&gt;So yeah, nice experiment, I&#039;m glad I did. But I hope I never have to go through that again. I&#039;m still going to have holidays, of course. And I&#039;m perfectly fine with doing this for shorter periods of time. But even if I had the chance to live like this fulltime, I don&#039;t think I&#039;d want to. On the other hand, I look forward to continue experimenting with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://kadavy.net/blog/posts/mini-lives/&quot;&gt;mini-lives&lt;/a&gt; in the future.&lt;/p&gt;
&lt;p&gt;Also, it&#039;s not like I completely slacked off! I couldn&#039;t focus as much as I&#039;d like, and I didn&#039;t work on any big projects. But this gave me the chance to work on small proofs of concepts and experiment. That is something I hope to continue doing in the future. Sometimes I focus so much on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid&quot;&gt;years long projects&lt;/a&gt;, that I forget to take a breath and explore other things.&lt;/p&gt;
&lt;p&gt;Here&#039;s a summary of everything I did during the trip:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I built a Solid Server from scratch: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noelDeMartin/lss&quot;&gt;LSS&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I submitted 3 proposals for &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nlnet.nl/news/2024/20240601-call.html&quot;&gt;NLNet&#039;s October call&lt;/a&gt; (I&#039;m still waiting to hear back from them, btw 😅).&lt;/li&gt;
&lt;li&gt;I explored new tooling and folder structure for my packages, and implemented my own animations library: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/vivant/&quot;&gt;Vivant&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I played with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://notebooklm.google.com/&quot;&gt;NotebookLM&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.rss.style/&quot;&gt;RSS stylesheets&lt;/a&gt;, publishing my first (and maybe last) &lt;a href=&quot;https://noeldemartin.com/podcast/feed.xml&quot; target=&quot;_blank&quot;&gt;podcast episode&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I learned more about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solid.github.io/data-interoperability-panel/specification/&quot;&gt;SAI&lt;/a&gt;, and added &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/ramen/blob/main/docs/activitypods.md&quot;&gt;ActivityPods support&lt;/a&gt; to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ramen.noeldemartin.com&quot;&gt;Ramen&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Not bad!&lt;/p&gt;
&lt;p&gt;What I &lt;em&gt;haven&#039;t&lt;/em&gt; done, though, is figure out what to do with my life :/. Regardless, I think that&#039;s enough of taking it easy. I&#039;ll be enjoying Christmas and New Year like normal holidays, but in January I should be back to work. Stay tuned!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Taking a Sabbatical"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/taking-a-sabbatical#comment-6" />
            <id>https://noeldemartin.com/tasks/taking-a-sabbatical#comment-6</id>
            <published>2024-11-30T02:09:03+00:00</published>
            <updated>2024-11-30T02:09:03+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/taking-a-sabbatical#comment-6&quot;&gt;Taking a Sabbatical&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today, I&#039;m writing from Shanghai, China.&lt;/p&gt;
&lt;p&gt;If you read my previous update, you may be thinking that I came here from Vietnam. But actually, I just got back from New Zealand! I haven&#039;t made much progress on the tech stuff, but the trip is coming to an end soon, and it was nice to get some change of airs.&lt;/p&gt;
&lt;h4&gt;Life Stuff&lt;/h4&gt;
&lt;p&gt;Something I didn&#039;t mention before is how much I&#039;ve enjoyed traveling on land. Since we landed in Singapore, we&#039;ve been moving around on bus, train, and taxi (or TukTuk). If you&#039;re curious about the itinerary, make sure to check today&#039;s pictures. Obviously, we flew to New Zealand. But first, let&#039;s backtrack to my previous update: Vietnam.&lt;/p&gt;
&lt;p&gt;We spent about 2 weeks in Vietnam, and it was pretty cool. There were more motorbikes than in any other country I&#039;ve been, but contrary to my expectations, it wasn&#039;t too difficult to move around. Sure, it&#039;s very chaotic and there are hundreds of bikes passing by as you cross the street. But they are used to it, and if you keep a constant pace and don&#039;t do anything weird, it&#039;s actually pretty safe. I definitely suffered the traffic a lot more in other countries, specially in Cambodia.&lt;/p&gt;
&lt;p&gt;One of the highlights in Saigon was visiting &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/C%E1%BB%A7_Chi_tunnels&quot;&gt;Cu Chi tunnels&lt;/a&gt;. They reminded me a lot of Hardcore History&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.dancarlin.com/product/hardcore-history-62-supernova-in-the-east-i/&quot;&gt;Supernova in the East&lt;/a&gt;, even though those tunnels have nothing to do with the time period covered in the series.&lt;/p&gt;
&lt;p&gt;Eventually, we moved towards Hanoi riding what is apparently &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.lonelyplanet.com/articles/worlds-most-amazing-train-journeys&quot;&gt;one of the world&#039;s most amazing train journeys&lt;/a&gt; (Vietnam&#039;s Reunification Express). We didn&#039;t take the whole trip at once though (which is about 34 hours long). We stopped in Hoi An, Dong Hoi, and Ninh Binh; and saw lantern boats, caves, and yes, more temples! 😅&lt;/p&gt;
&lt;p&gt;Then, it was time to leave South East Asia behind, and we flew to New Zealand. This may seem out of left field, but we had been considering it for a while. We figured that we won&#039;t be repeating a trip like this any time soon, and this was a unique opportunity to visit one of the world&#039;s most remote places (specially from Spain!). Plus, as you may know, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/media-kraken/viewer?c=https%3A%2F%2Fdata.noeldemartin.com%2Ffavorite-movies%2F&quot;&gt;I&#039;m a big Lord of The Rings fan&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Our first day in NZ, I got to meet &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sive.rs/&quot;&gt;Derek Sivers&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sive.rs/rats&quot;&gt;his cute pet rats&lt;/a&gt;. It was awesome meeting him in person, and he gave us some great travel tips. The first of which I wasn&#039;t too keen on following: Renting a car 😱. Now, he wasn&#039;t the first person to mention it, but the problem here is that I hate driving (I HATE driving). So I was trying to find any excuse to avoid it. But I finally relented, and it was the right choice. I still don&#039;t like driving (and to be honest, my partner did most of it), but NZ really is a country that&#039;s best experienced with your own transportation.&lt;/p&gt;
&lt;p&gt;What followed were 2 of the most frantic weeks in the trip 😅. If I had been complaining about lack of time affluence before, I barely spent 4 hours in side projects in NZ. Having our own vehicle, we weren&#039;t as limited as before; and exploring NZ lends itself to moving around a lot more. We rarely spent time in cities. I also didn&#039;t spend much time reading nor listening to podcasts, it really feels like I was 100% on holiday mode for these 2 weeks. Still, they were 2 of the weeks I&#039;ve enjoyed the most in the whole trip :D.&lt;/p&gt;
&lt;p&gt;We followed the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://web.archive.org/web/20170719161327/http://www.nzfrenzy.com/&quot;&gt;NZ Frenzy Guide&lt;/a&gt; as a baseline. It&#039;s a bit outdated, but overall it&#039;s pretty good and I&#039;m sure our experience without it would have been a lot worse. Even though we only visited the North island, we weren&#039;t able to see everything we would&#039;ve liked. There is so much cool stuff in New Zealand!&lt;/p&gt;
&lt;p&gt;One of my favorite things when traveling is meeting the wildlife, and there is plenty in NZ. We met Cows, Sheep, Tuis, Pukekos, Black Swans, Glowworms, Sea Lions, etc. We even &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.kiwihouse.org.nz/&quot;&gt;saw kiwis up close&lt;/a&gt;! And the nature is stunning, as you may imagine. I particularly enjoyed many of the geothermal oddities, and doing the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.tongarirocrossing.org.nz/&quot;&gt;Tongariro Alpine Crossing&lt;/a&gt; (which passes right by &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Mount_Ngauruhoe&quot;&gt;Mount Doom&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Talking about Mount Doom... Yeah, LOTR. For once, I&#039;m justified in associating my travels with movies xD. We visited as many LOTR filming locations as we could, and the best one was definitely &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.hobbitontours.com/&quot;&gt;Hobbiton&lt;/a&gt;. Apparently, the set was destroyed after filming the LOTR trilogy, but rebuilt permanently for The Hobbit trilogy and it&#039;s now one of the most popular spots in NZ (for tourists, I&#039;m sure). We also visited the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.wetaworkshop.com/&quot;&gt;Wētā Workshop&lt;/a&gt;, who&#039;ve won multiple oscars for their work in the movies. We got to see some behind the scenes of the movie-making process; even some original props like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=WByTgV-_354&quot;&gt;the geisha robot from Ghost in the Shell&lt;/a&gt; and Sauron&#039;s armor 🤩.&lt;/p&gt;
&lt;p&gt;Now, we&#039;re back to Asia. In what is probably the region&#039;s most interesting country, China. We&#039;re only spending two weeks here, but I already have some anecdotes to share. You&#039;ll have to wait for the next update though, stay tuned!&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;Pictures&lt;/summary&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/singapore-malaysia-thailand.jpg&quot; alt=&quot;Screenshot of map itinerary in Singapore, Malaysia, and Thailand.&quot;&gt;
&lt;figcaption&gt;
Itinerary in Singapore, Malaysia, and Thailand.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/cambodia-vietnam.jpg&quot; alt=&quot;Screenshot of map itinerary in Cambodia and Vietnam.&quot;&gt;
&lt;figcaption&gt;
Itinerary in Cambodia and Vietnam.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/vietnam-bicycle.jpg&quot; alt=&quot;A bicycle carrying many fruits for sale.&quot;&gt;
&lt;figcaption&gt;
Indeed, they have a lot of bikes in Vietnam. Both motor and human-powered!
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/vietnam-mobile-helmet.jpg&quot; alt=&quot;A motorbike with a phone stand that has a mini-helmet.&quot;&gt;
&lt;figcaption&gt;
In Vietnam, most people wore a helmet. Even mobile phones did!
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/wellington-seals.jpg&quot; alt=&quot;Myself walking amongst some cute Sea Lions.&quot;&gt;
&lt;figcaption&gt;
Walking amongst Sea Lions in a colony near Wellington.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/kauri-forest.jpg&quot; alt=&quot;A disinfecting area in the entrance to a Kauri forest.&quot;&gt;
&lt;figcaption&gt;
Everything in new Zealand is very well taken care of thanks to the DoC (Department of Conservation). Like this &lt;a href=&quot;https://en.wikipedia.org/wiki/Agathis_australis&quot; target=&quot;_blank&quot;&gt;Kauri&lt;/a&gt; forest in the middle of &lt;a href=&quot;https://en.wikipedia.org/wiki/309_Road&quot; target=&quot;_blank&quot;&gt;road 309&lt;/a&gt;. Even &lt;a href=&quot;https://www.doc.govt.nz/&quot; target=&quot;_blank&quot;&gt;their websites&lt;/a&gt; are nice!
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/gandalf.jpg&quot; alt=&quot;Statue of Gandalf the Grey.&quot;&gt;
&lt;figcaption&gt;
&quot;All we have to decide is what to do with the time that is given us&quot; — Gandalf
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/weta-troll.jpg&quot; alt=&quot;Myself with a troll behind.&quot;&gt;
&lt;figcaption&gt;
Trolls at the doors of the Wētā Workshop!
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/hobbiton.jpg&quot; alt=&quot;Hobbiton&quot;&gt;
&lt;figcaption&gt;
How amazing is that this is real? We could also get into the &lt;a href=&quot;https://www.hobbitontours.com/discover/the-green-dragon-inn/&quot; target=&quot;_blank&quot;&gt;Green Dragon Inn&lt;/a&gt; to have some drinks, which was awesome.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/new-zealand-christmas.jpg&quot; alt=&quot;A Christmas postcards featuring barbacues and ice-cream.&quot;&gt;
&lt;figcaption&gt;
We&#039;re starting to see Christmas decorations everywhere, though it&#039;s funny how in New Zealand Christmas is Barbecue season!
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/details&gt;
&lt;h4&gt;Tech Stuff&lt;/h4&gt;
&lt;p&gt;This month, I haven&#039;t spent a lot of time on tech stuff, but I have a couple of things to mention.&lt;/p&gt;
&lt;p&gt;First, I&#039;ve been playing with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://notebooklm.google.com/&quot;&gt;NotebookLM&lt;/a&gt;. Yes, I&#039;m also feeling AI fatigue (I was feeling it before the term was coined), so I&#039;ve been quite slow at adopting AI tools. But this one picked my interest, which is funny because not many people in my circles is talking about it. If it weren&#039;t for &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://rss.com/podcasts/focaterra/1700236/&quot;&gt;Foc a Terra&lt;/a&gt;, I may not even know that it exists. But I gave it a try, and it&#039;s looking very promising. I&#039;m exploring it in two areas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Making my content more accessible.&lt;/p&gt;
&lt;p&gt;If you&#039;re reading this, you know that I ramble a lot on these notes (I&#039;m amazed that anyone even reads them). But &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://quoteinvestigator.com/2012/04/28/shorter-letter&quot;&gt;it would be too much work to make them shorter&lt;/a&gt;. The idea of converting them into a short podcast was enticing, so I tried to generate a podcast with &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid&quot;&gt;my notes on building Umai&lt;/a&gt;, and I have to say I&#039;m quite happy with the outcome.&lt;/p&gt;
&lt;p&gt;Of course, it wasn&#039;t without hallucinations, and I went through 40+ iterations. To be fair though, the problem was more that they weren&#039;t saying what I wanted them to say, rather than conveying wrong information. I can see a world in which I create these podcasts, and add some commentary of my own to correct mistakes and mention anything that was left out. But there is definitely value in this approach, and it goes further than simple summarizing. For example, they talk about CRDTs being like tiny chefs that keep your recipes in check, and ended the podcast with &amp;quot;Umai shows us that Solid is a vision worth striving for. A vision where we can all have our cake and eat it too. And have the recipe for it. Securely stored in our POD.&amp;quot;. I couldn&#039;t have said it better myself!&lt;/p&gt;
&lt;p&gt;Going through this, I also experimented with hosting my own podcast and generating the RSS feed from scratch. It was easier than I expected, and I also learned about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.rss.style/&quot;&gt;RSS styles&lt;/a&gt; which are pretty neat. If you&#039;re curious to listen to the episode, you can plug this in your favorite podcast app (or click to listen in the browser): &lt;a href=&quot;https://noeldemartin.com/podcast/feed.xml&quot; target=&quot;_blank&quot;&gt;noeldemartin.com/podcast/feed.xml&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Consuming other&#039;s content.&lt;/p&gt;
&lt;p&gt;This one is more tricky, because I&#039;m wary of consuming content through AI summaries. If anything, my experience trying to create one from my own content has confirmed that they hallucinate, and they leave interesting stuff out. But the truth is that there is some content that I&#039;m never going to consume anyways, so I may as well get the AI summary and dig into anything I find interesting myself. For example, I have thousands of articles in my Read Later list, and I have hundreds of books I would like to have read. I struggle to fit reading time in my schedule, but I listen to a lot of podcasts.&lt;/p&gt;
&lt;p&gt;The only trouble I envision is that they could become repetitive and formulaic. Even though I was floored by the first podcasts it generated, after a few iterations I&#039;m starting to see the patterns. Hopefully, generating them from content that I haven&#039;t written will make them more interesting.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Something else I&#039;ve been playing with is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://activitypods.org/&quot;&gt;ActivityPods&lt;/a&gt;. I&#039;ve known about the project for a while, and it is apparently &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/inrupts-data-wallet/7836/10#:~:text=I%20have%20high%20hopes%20for%20activitypods%2C%20which%20is%20currently%20the%20most%20actively%20developed%20open%20source%20Solid%20project&quot;&gt;the most actively developed open source Solid project&lt;/a&gt;. I refrained from using it because it wasn&#039;t compatible with Solid yet. However, taking another look at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://activitypods.org/specs/solid&quot;&gt;their documentation on Solid compatibility&lt;/a&gt;, it seemed like it was pretty close to supporting everything I need in my apps. So I decided to take a stab at it.&lt;/p&gt;
&lt;p&gt;You&#039;ll have to wait for my next update for a final report, because I&#039;m still tinkering with it. But my initial impression is that it isn&#039;t as close as I thought :(. I&#039;m not familiar with the internals of the project, so I can&#039;t know how difficult it will be to bridge the gap. But I can say that in its current form, it&#039;s still very far from being a spec-compliant Solid POD. And it&#039;s not just about &amp;quot;being spec-compliant&amp;quot;, I tried to make my apps work with their server, even if I had to write code specific to their implementation (which I&#039;m very much against). But I found countless roadblocks. Just to name a few: Inrupt&#039;s auth library doesn&#039;t work, using SAI is not optional, documents can only contain triples with the same subject, Turtle support is subpar, etc.&lt;/p&gt;
&lt;p&gt;To their credit, I&#039;ll say that they intend to fix these problems, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/srosset81&quot;&gt;Sébastien&lt;/a&gt; has been helping me triage them. But as things stand, I don&#039;t think my apps are going to work with ActivityPods anytime soon. However, with a lot of hacking, I did manage to get my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ramen.noeldemartin.com/&quot;&gt;Ramen&lt;/a&gt; app working. I&#039;m still unsure if I&#039;ll add these hacks to the codebase, because it&#039;s just too much, and it&#039;d be a lot more work to get any of my &amp;quot;real&amp;quot; apps working. But this also gave me a chance to finally look at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solid.github.io/data-interoperability-panel/specification/&quot;&gt;SAI&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&#039;ve also been aware of SAI for a long time (years, even). But I hadn&#039;t taken a look for a couple of reasons. First of all, like most specs in the ecosystem, it&#039;s still a draft. The same is true for &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solid.github.io/type-indexes/&quot;&gt;type indexes&lt;/a&gt; though, and I&#039;m using them. The crucial difference is that SAI is not a client-client standard, so it needs server-side support in order to work. And when it comes to adopting bleeding edge features, I&#039;m usually quite conservative. I think of it like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/css/browser-support/&quot;&gt;using new CSS properties according to browser support&lt;/a&gt;. And at this point, almost no Solid servers support SAI.&lt;/p&gt;
&lt;p&gt;But I &lt;em&gt;am&lt;/em&gt; interested, so I used the opportunity to take a look. And the first impressions weren&#039;t great either 😅. In fact, I can only say that I started reading the spec, and it was so filled with jargon that I had to leave it aside and just duplicate what &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://docs.activitypods.org/tutorials/create-your-first-social-app/&quot;&gt;the sample ActivityPods app&lt;/a&gt; was doing 🙈. To be fair, I couldn&#039;t spend a lot of time looking at these things the last couple of weeks, I&#039;ll probably get it once I spend some more time going through the spec and other resources. But this wasn&#039;t my experience reading other specs in the past. &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid&quot;&gt;When I first learned about Solid&lt;/a&gt;, I read through the RDF, Turtle, LDP, and SPARQL specs; and found them pretty easy to grasp. Of course, as I kept working on Solid I got more nuance, and realized that I was making some wrong assumptions. But that didn&#039;t stop me from getting started. This reminds me a lot of Lea Verou&#039;s concept of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=g92XUzc1OHY&quot;&gt;use case complexity curve&lt;/a&gt;. If we ever get SAI standardized and supported by most servers, which I hope we do, I also hope that it doesn&#039;t become yet another barrier for newcomers.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Taking a Sabbatical"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/taking-a-sabbatical#comment-5" />
            <id>https://noeldemartin.com/tasks/taking-a-sabbatical#comment-5</id>
            <published>2024-10-30T02:35:20+00:00</published>
            <updated>2024-10-30T02:35:20+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/taking-a-sabbatical#comment-5&quot;&gt;Taking a Sabbatical&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Hi again!&lt;/p&gt;
&lt;p&gt;I&#039;m now writing from Saigon, Vietnam. I have managed to slow down a bit since my last update, but overall I feel mostly the same way. TLDR: I&#039;m enjoying it, but also I can&#039;t wait to get back home.&lt;/p&gt;
&lt;h4&gt;Life Stuff&lt;/h4&gt;
&lt;p&gt;I won&#039;t spend too much time talking about it again, but yeah I still lack time affluence and I&#039;m tired of the nomadic lifestyle. The good news is that we&#039;re past the half-way point now, and it&#039;s not like I&#039;m being tortured or anything 😅. I&#039;ll do my best to enjoy the time we have left, and try to squeeze some time to tinker here and there.&lt;/p&gt;
&lt;p&gt;In my last update we were in Thailand, and we had just said goodbye to Moo Deng. Since then, we&#039;ve visited more of Thailand, went through Cambodia, and we&#039;ve just arrived to Vietnam.&lt;/p&gt;
&lt;p&gt;Thailand was awesome, probably my favourite country so far. After Bangkok, we went to Chiang Mai and I really enjoyed this part of the trip. We continued visiting a lot of temples, and Chiang Mai in particular had tons of them. I really like Asian temples, they are so colorful and quirky. They always remind me of Gantz&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://gantz.fandom.com/wiki/Buddhist_Temple_Alien_Mission&quot;&gt;Buddhist Temple Alien Mission&lt;/a&gt;, and I think some statue will try to kill me 🤣. But I&#039;m starting to feel a bit of &amp;quot;temple overload&amp;quot;, they are starting to look the same to me :/. I guess that&#039;s normal when you experience too much of something (although I never seem to get tired of Japan or cats).&lt;/p&gt;
&lt;p&gt;I also managed to do some co-working :D. I had been to a couple of meetups before, but similar to &lt;a href=&quot;https://noeldemartin.com/tasks/working-from-japan#comment-3&quot;&gt;my experience in Japan&lt;/a&gt;, they weren&#039;t great. But then, I realized there is another website I can use to find cool people: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nownownow.com&quot;&gt;nownownow.com&lt;/a&gt;! Through that, I learned about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://hackamai.com/&quot;&gt;Hackamai&lt;/a&gt;, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://x.com/naz_avo/status/1844236913483579659/&quot;&gt;I had a great time&lt;/a&gt;. You can read more about it in the &amp;quot;Tech Stuff&amp;quot; section. Unfortunately, I could only join a single day because, again, we left Chiang Mai too soon :(. Oh well, that&#039;s life.&lt;/p&gt;
&lt;p&gt;After Thailand, we went to Cambodia. I noticed some stark differences right away. For example, there were a lot of &amp;quot;Tuk Tuks&amp;quot; that consisted of a carriage strapped to a motorbike. I am amazed at the resourcefulness of people in some contexts, I would never have thought that a meager motorbike was able to carry so much load (see pics below).&lt;/p&gt;
&lt;p&gt;Something else that surprised me was how money works. They use both their own currency, Riels, and American dollars. But Riels are so worthless, that they serve as small change (1000 Riels are worth 0.25 cents :/). They don&#039;t even use coins, and it&#039;s not uncommon to pay or receive change in mixed currencies. Which is interesting, because you can see the price in both currencies everywhere (even in electronic displays and receipts, I can&#039;t imagine what types of headaches this has caused engineers 😅).&lt;/p&gt;
&lt;p&gt;Other than that, temples also had a different vibe. We visited &amp;quot;the largest religious structure in the world&amp;quot;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Angkor_Wat&quot;&gt;Angkor Wat&lt;/a&gt;. These reminded me a lot of Indiana Jones, and we even visited a temple were the first Tom Raider movie was filmed: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Ta_Prohm&quot;&gt;Ta Prohm&lt;/a&gt;. Is it weird that everything reminds me of movies and manga?&lt;/p&gt;
&lt;p&gt;On that note, visiting the cinema was also a new experience. Every country seems to have some peculiarities. What striked me the most in Thailand and Cambodia was that they play the national anthem with a short &amp;quot;ad&amp;quot; about the royalty :/. In Cambodia, people even stand up during the anthem. Sadly, what doesn&#039;t seem to change in any country is that they play tons of ads before the movie. I still can&#039;t believe they managed to insert ads in a paid experience like this, and people doesn&#039;t riot... thank god for &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.phenomena-experience.com/&quot;&gt;Phenomena Experience&lt;/a&gt; in Barcelona. By the way, I really enjoyed watching &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.imdb.com/title/tt17526714&quot;&gt;The Substance&lt;/a&gt;. I particularly enjoyed it because I hadn&#039;t seen any trailers, and the way the plot unfolds was a pleasant surprise. I can&#039;t say the same about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.imdb.com/title/tt29623480/&quot;&gt;The Wild Robot&lt;/a&gt;, which I also enjoyed but the trailer gave away pretty much the entire movie. If only you could go to the cinema just to watch a movie!&lt;/p&gt;
&lt;p&gt;Anyhow, after that we moved to Vietnam. So far I&#039;m enjoying it as well, it&#039;s funny how just after crossing the border we started seeing those traditional Vietnamese hats. We&#039;ve barely been here for a couple of days, so I&#039;ll leave my impressions on Vietnam for the next update.&lt;/p&gt;
&lt;p&gt;Here&#039;s some more pics:&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;Pictures&lt;/summary&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/thailand-traffic.jpg&quot; alt=&quot;4 people riding on a motorcycle (2 kids, 2 adults)&quot;&gt;
&lt;figcaption&gt;
&lt;p&gt;The traffic is &lt;em&gt;nuts&lt;/em&gt; in Thailand.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/cambodia-traffic.jpg&quot; alt=&quot;a man and a dog riding on a motorcycle, the dog seems to be driving&quot;&gt;
&lt;figcaption&gt;
&lt;p&gt;It isn&#039;t better in Cambodia :/. Hey, at least someone is wearing a helmet!&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/cambodia-tuktuk.jpg&quot; alt=&quot;A huge container full of watermelons attached to a motorbike&quot;&gt;
&lt;figcaption&gt;
&lt;p&gt;This is what most Tuk Tuks are like in Cambodia. As you can see, they&#039;re not only used to transport people. And this isn&#039;t even the heaviest I&#039;ve seen.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/yaowarat-cat.jpg&quot; alt=&quot;A cat wearing a vest on top of a market stall&quot;&gt;
&lt;figcaption&gt;
&lt;p&gt;A friendly cat tending to customers in &lt;a href=&quot;https://en.wikipedia.org/wiki/Chinatown,_Bangkok&quot; target=&quot;_blank&quot;&gt;Yaowarat&lt;/a&gt;. There are actually &lt;em&gt;a lot&lt;/em&gt; of cats in Thailand, another reason why I liked it so much.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/lamphun-temple.jpg&quot; alt=&quot;Thousands of lanterns hanging from cables&quot;&gt;
&lt;figcaption&gt;
&lt;p&gt;We were lucky to visit the &lt;a href=&quot;https://en.wikipedia.org/wiki/Wat_Phra_That_Hariphunchai&quot; target=&quot;_blank&quot;&gt;Wat Phra That Hariphunchai&lt;/a&gt; temple in Lamphun during the &lt;a href=&quot;https://www.nationthailand.com/life/travel/40042267&quot; target=&quot;_blank&quot;&gt;100,000 Lantern Festival&lt;/a&gt;.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/wukong-shrine.jpg&quot; alt=&quot;A mural with humanoid monkeys doing various things like meditating and riding on yellow clouds&quot;&gt;
&lt;figcaption&gt;
&lt;p&gt;This &lt;a href=&quot;https://maps.app.goo.gl/WeWJPVZhFtgVny3h6&quot; target=&quot;_blank&quot;&gt;Sun Wukong Shrine&lt;/a&gt; reminded me of... Dragon Ball, obviously.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/taprohm-temple.jpg&quot; alt=&quot;A giant tree growing on the ruins of a temple&quot;&gt;
&lt;figcaption&gt;
&lt;p&gt;Part of the appeal from Ta Prohm temple is that it has been overrun by nature.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/details&gt;
&lt;h4&gt;Tech Stuff&lt;/h4&gt;
&lt;p&gt;Last time, I mentioned that I was working on some more examples for my animations library, Vivant. And well, this month... I&#039;ve almost exclusively been doing that 😅. Originally, I intended to use this time to work on small proofs of concept, but this one got a bit out of hand.&lt;/p&gt;
&lt;p&gt;In my defense, I&#039;ll say that I used the opportunity to also do a proof of concept for a new way to build packages. For most of my libraries, I&#039;m still relying on Rollup and some scripts I wrote 3 years ago. But I&#039;ve learned a lot since then, and the ecosystem has also changed. This time, I tried using Deno and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://jsr.io/&quot;&gt;jsr.io&lt;/a&gt;, because &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=swXWUfufu2w&quot;&gt;their vision is really compelling&lt;/a&gt;. Unfortunately, we&#039;re not there yet :/. I gave it five minutes, but I started seeing isoteric errors I didn&#039;t understand (&amp;quot;has no exported member default export&amp;quot;!?). Then, in less than five minutes, I set it up with Vite and it worked :D. Now I&#039;m using Vite for everything: development, publishing libraries, building apps, running tests, etc. I can&#039;t wait to migrate everything to this new setup!&lt;/p&gt;
&lt;p&gt;The thing that took most of my time, though, was implementing the animations themselves (and also spending some time trying to make the playground pretty 😅). But I&#039;m super happy with the results. Even if it&#039;s just a proof of concept, the animations are pretty cool, and I&#039;m very happy with the way the project is structured and the code itself. I can also sleep well at night knowing that this proof of concept is &amp;quot;Done&amp;quot;. I&#039;ll continue making animations for sure, but I believe this is a solid base I can build upon. If you&#039;re curious to see the animations, or the repository, check it out here: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/vivant/&quot;&gt;Vivant Playground&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are also a couple more things I&#039;d like to talk about. First of all, it was great to find &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://hackamai.com/&quot;&gt;Hackamai&lt;/a&gt;. I really like all the people I met there, and hopefully I&#039;ll be able to attend more events from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://hacka.network/&quot;&gt;the Hacka* network&lt;/a&gt;. But I&#039;m also feeling some dissonance with this community. There is some obsession with growth hacking, and no small amount of the conversations revolve around search rankings, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.submitjuice.com/&quot;&gt;backlinking&lt;/a&gt;, &amp;quot;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://x.com/marc_louvion/status/1848344738409193644&quot;&gt;printing money&lt;/a&gt;&amp;quot;, and many other things I despise. But the truth is that it would probably do me some good to learn more of that 😅. I mentioned before how I don&#039;t do any analytics on my sites, and frankly, I don&#039;t spend much time doing &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://seths.blog/tim/&quot;&gt;marketing&lt;/a&gt; and spreading the word. My only virtue in that department is that &lt;a href=&quot;https://noeldemartin.com/blog/open-productivity&quot;&gt;I work in the open&lt;/a&gt;, and thanks to that some people hear about me. But if I ever want to make a living as an indie developer, I&#039;ll have to improve my game.&lt;/p&gt;
&lt;p&gt;Finally, I was surprised by Dan Abramov&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=F1sJW6nTP6E&quot;&gt;Web Without Walls&lt;/a&gt;. The talk is awesome, and he explains some of the reasons why I care about Solid and other decentralized projects. He talks about Bluesky and the AT protocol, but for 90% of the things he&#039;s saying, he could as well be talking about Solid. I especially like that this is happening &amp;quot;in the mainstream&amp;quot;, in a React conference, and by one of the most beloved React developers. However, there are also some things I don&#039;t like so much. I expanded upon this in a social media thread, and got some responses (including from Dan himself!). If you&#039;re keen to learn more, check these out:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://x.com/NoelDeMartin/status/1851078323927126365&quot;&gt;Thread on Twitter/X about Web Without Walls&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/113388200331689466&quot;&gt;Thread on Mastodon about Web Without Walls&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://bsky.app/profile/noeldemartin.com/post/3l7mj5glqey25&quot;&gt;Thread on Bluesky about Web Without Walls&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Taking a Sabbatical"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/taking-a-sabbatical#comment-4" />
            <id>https://noeldemartin.com/tasks/taking-a-sabbatical#comment-4</id>
            <published>2024-10-04T03:14:30+00:00</published>
            <updated>2024-10-04T03:14:30+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/taking-a-sabbatical#comment-4&quot;&gt;Taking a Sabbatical&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;m entering the 3rd month of my sabbatical, and I can officially say that I&#039;m growing tired of it 😅. I know, I know. A guy complaining that he has too much free time, give me a break. But that isn&#039;t the problem. This is the first time I&#039;ve been living as a &amp;quot;Digital Nomad&amp;quot;, and I don&#039;t like it :(. It&#039;s fine for a couple of weeks, but I&#039;ve been traveling for almost a month now, and I miss a lot of my routines. That&#039;s not to say that I&#039;m not enjoying it as well. But I&#039;m certain that this is not something I&#039;d like to do in the long term... at least not like I&#039;m doing it now.&lt;/p&gt;
&lt;h2&gt;Life Stuff&lt;/h2&gt;
&lt;p&gt;As I mentioned in the last update, we landed on Singapore on September 6th. I&#039;m now writing from Pattaya (Thailand), and we traveled here on land (buses, trains, etc.). Crossing Malaysia, and stopping along the way. So far, we&#039;ve been to 8 cities. Which isn&#039;t a lot compared to other times we&#039;ve travelled, but our lifestyles have been quite hectic. In fact, the only period I&#039;ve felt &amp;quot;at home&amp;quot; was the 7 days we spent on an Airbnb in Kuala Lumpur.&lt;/p&gt;
&lt;p&gt;Again, I want to emphasize that I&#039;m enjoying the trip (even though you may not feel it from my writing 😅). The trouble is that I&#039;m experiencing an overload of stimulus. I miss the quiet times at home, I miss cooking my own meals, and yes, I miss &amp;quot;wasting time&amp;quot; watching TV Shows and movies. One of the most worrying things is that I can see how my health is deteriorating :(. Again, like in &lt;a href=&quot;https://noeldemartin.com/tasks/working-from-japan#comment-3&quot;&gt;my trip to Japan&lt;/a&gt;, I&#039;m finding it difficult to find non-animal sources of protein (or healthy options in general). And I haven&#039;t been working out nearly as much as I should.&lt;/p&gt;
&lt;p&gt;But if I had to pinpoint the root of all evil, that would be my lack of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=nd8NLGBYp3U&quot;&gt;time affluence&lt;/a&gt;. Again, &lt;a href=&quot;https://noeldemartin.com/tasks/working-from-japan#comment-4&quot;&gt;the same as in Japan&lt;/a&gt;! Which is totally self-imposed, so I&#039;ll have to make an effort to slow down and avoid the temptation to &amp;quot;go out and do things&amp;quot;.&lt;/p&gt;
&lt;p&gt;Anyways, that&#039;s it for my ramblings, sorry that you had to read that.&lt;/p&gt;
&lt;p&gt;So, we landed on Singapore. Besides being quite modern and extravagant (maybe some would call it &amp;quot;artificial&amp;quot;?), I really liked the mixture of cultures. Other cities I visited had similar vibes (Barcelona, without going too far), but Singapore really felt like a melting pot of different cultures. Unfortunately, we only spent a single day, so I&#039;m looking forward to going back at some point.&lt;/p&gt;
&lt;p&gt;Malaysia surprised me in a couple of ways. I didn&#039;t expect most people to speak English (which shows how little I knew about their history). And overall, it was very easy-going. I was also surprised at the number of malls (also in Thailand). We definitely don&#039;t have as many in Europe, and I don&#039;t remember seeing so many in Taiwan 10 years ago. In some ways, I like malls, for all the obvious reasons. And I love going to the cinema. But I also despise the consumerism and blandness of it all. Unfortunately, we end up going more often than I would like for their convenience and ubiquity. We&#039;ve also visited a lot of temples, food markets, and other attractions. One of the highlights of the trip has been visiting some &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/BOH_Plantations&quot;&gt;tea plantations in Cameron Highlands&lt;/a&gt; (did you know that tea plants live hundreds of years and are harvested all year long? There are even thousand years old in China :O).&lt;/p&gt;
&lt;p&gt;In Thailand, in contrast, cash is king and English skills are more of a rarity. But I also enjoy the quirkyness and novelty of a different culture (though I&#039;m not melding in their daily life as much as I&#039;d like). As expected, there are a lot of TukTuks around (there is even an &amp;quot;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=co.muvmi.passenger&quot;&gt;Uber for TukTuks&lt;/a&gt;!&amp;quot;). And I&#039;m feasting on coconuts and mangoes (again, probably not too healthy 😅). We also attended &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sabiengcooking.com/class/&quot;&gt;a cooking class&lt;/a&gt; and learned to make a Sour &amp;amp; Spicy soup, which I&#039;ll certainly try to replicate at home (though I&#039;m not sure I&#039;ll find the right ingredients).&lt;/p&gt;
&lt;p&gt;Finally... &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Durian&quot;&gt;Durians&lt;/a&gt;. They are everywhere, and despite having travelled to other Asian countries in the past, I almost didn&#039;t know of their existence. I&#039;m sorry to say that I don&#039;t like them, but people around here seem to love them.&lt;/p&gt;
&lt;p&gt;And that&#039;s mostly it for the life updates! Here&#039;s some pictures from the trip:&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;Pictures&lt;/summary&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/singapore-chicken.jpg&quot; alt=&quot;A chicken in the streets of Singapore&quot;&gt;
&lt;figcaption&gt;
&lt;p&gt;There were chickens roaming in the streets of Singapore, which was funny in contrast with the otherwise modern landscape.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/beanie-seats.jpg&quot; alt=&quot;Beanie seats&quot;&gt;
&lt;figcaption&gt;
&lt;p&gt;We watched &lt;a href=&quot;https://www.imdb.com/title/tt2049403/&quot; target=&quot;_blank&quot;&gt;Beetlejuice Beetlejuice&lt;/a&gt; in Malaysia&#039;s Beanie seats, which was a fun experience (&lt;a href=&quot;https://www.sayaiday.com/2014/10/tgv-beanie-movie.html&quot; target=&quot;_blank&quot;&gt;not my picture&lt;/a&gt; though, the ones we made weren&#039;t good 😅).&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/perak-cave-temple.jpg&quot; alt=&quot;Perak Cave Temple&quot;&gt;
&lt;figcaption&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Sam_Poh_Tong_Temple&quot; target=&quot;_blank&quot;&gt;Perak Cave Temple&lt;/a&gt; (or Sam Poh Tong Temple). A cave with many Buddha statues and paintings. Probably my favourite temple so far, even though it&#039;s not super well-known. (By the way, can you spot the dog? :D)&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/face-peanuts.jpg&quot; alt=&quot;A bag of peanuts resembling my website logo&quot;&gt;
&lt;figcaption&gt;
&lt;p&gt;I found the peanuts brand resembling my website&#039;s logo that &lt;a href=&quot;https://mastodon.online/@rosano/110285917330021729&quot; target=&quot;_blank&quot;&gt;Rosano mentioned last year&lt;/a&gt; :D.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/sabbatical/meeting-moo-deng.jpg&quot; alt=&quot;Meeting Moo Deng&quot;&gt;
&lt;figcaption&gt;
&lt;p&gt;This is the first time I&#039;ve met a meme in real life, &lt;a href=&quot;https://knowyourmeme.com/memes/moo-deng-the-baby-hippo&quot; target=&quot;_blank&quot;&gt;Moo Deng the Hippo&lt;/a&gt;. There were hoards of visitors, and it was a weekday at 8am!&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/details&gt;
&lt;h2&gt;Tech Stuff&lt;/h2&gt;
&lt;p&gt;This month, I&#039;ve been pretty consistent spending an hour or two in front on the computer every day. Unfortunately, I don&#039;t think I&#039;ve done a single day of full-time work, so I haven&#039;t practiced too much &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Flow_(psychology)&quot;&gt;flow&lt;/a&gt; and I miss it tremendously :(. Again, it&#039;s mostly self-imposed and I&#039;ll have to make an effort to slow down. Now I see what they mean about the dangers of having too much freedom!&lt;/p&gt;
&lt;p&gt;Ironically, something that I&#039;ve been doing a lot is reading. What years of routines and timeboxing didn&#039;t accomplish, commuting has. I&#039;ve spent a lot of time in transit, so I&#039;ve been catching up with books and articles from my lists.&lt;/p&gt;
&lt;p&gt;I&#039;ve also managed to get some things done. First of all, I finally submitted my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nlnet.nl/&quot;&gt;proposal for NLNet&lt;/a&gt;! I initially planned to apply for the deadline of December 1st. But after getting some tips from previous grantees (shout-out to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://framapiaf.org/@srosset&quot;&gt;Sébastien&lt;/a&gt; from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://activitypods.org/&quot;&gt;ActivityPods&lt;/a&gt; and Niko from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nextgraph.org/&quot;&gt;NextGraph&lt;/a&gt;), it seems like it was more sensible to do it now if I plan to start working in January. I submitted 3 proposals, even though I only intend to work on one, because I&#039;m keen to hear what they have to say about the different ideas. They are essentially &lt;a href=&quot;https://noeldemartin.com/blog/the-end-of-the-chapter#the-plan&quot;&gt;the ones I talked about in my blog post&lt;/a&gt;, but more fleshed out.&lt;/p&gt;
&lt;p&gt;There&#039;s also been some developments in the world of Solid, and I&#039;ve been &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/inrupts-data-wallet/7836&quot;&gt;participating in the discussion&lt;/a&gt; (TLDR; Inrupt released a Wallet Application they claim to be compatible with Solid, but I don&#039;t think it has anything to do with Solid and it&#039;s actually a proprietary solution). It really is a bummer, and I don&#039;t like to be the portent of negativity. That&#039;s why I was mostly neutral, if not positive, in &lt;a href=&quot;https://noeldemartin.com/blog/why-solid#inrupt&quot;&gt;my previous commentary on Inrupt&lt;/a&gt;. But this crossed the line, because it was misleading to people who may not be too familiar with Solid (even if not on purpose). So I thought it was important to speak out.&lt;/p&gt;
&lt;p&gt;Finally, I also kept tinkering with some things related to Focus. I did &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/commit/e6b42ac197141513026b42db1139db2f809f1a0e&quot;&gt;some improvements&lt;/a&gt; here and there, but mostly I&#039;ve continued playing with Vivant. It&#039;s still a proof of concept, and I don&#039;t have much to share yet, but I&#039;m very excited about it. I love working with animations/UI, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/blog/how-i-built-my-blog-v2/#aside-svg-animations&quot;&gt;Josh Comeau announced he&#039;ll be working on an animations course&lt;/a&gt;; so it&#039;ll be the perfect excuse to learn more about animations. In particular, I&#039;ve been trying to recreate &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.framer.com/motion/layout-animations/#shared-layout-animations&quot;&gt;Shared Layout animations&lt;/a&gt; from Framer Motion, and I&#039;ve seen how they can become very complicated very quickly. Making these from scratch involves doing some math, but thankfully this is not my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://upcommons.upc.edu/handle/2099.1/23874&quot;&gt;first&lt;/a&gt; &lt;a href=&quot;https://noeldemartin.com/projects/beastmasters&quot;&gt;rodeo&lt;/a&gt;. So yeah, I don&#039;t know if this is going to lead anywhere, but it&#039;s a ton of fun. I guess that&#039;s the perfect thing to be doing in a sabbatical :).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Taking a Sabbatical"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/taking-a-sabbatical#comment-3" />
            <id>https://noeldemartin.com/tasks/taking-a-sabbatical#comment-3</id>
            <published>2024-09-04T08:25:10+00:00</published>
            <updated>2024-09-04T08:25:10+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/taking-a-sabbatical#comment-3&quot;&gt;Taking a Sabbatical&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;It&#039;s been a month since I started the sabbatical, and so far it&#039;s going well. Being August, and the first month of the sabbatical, it felt like holidays as usual. But I&#039;m happy to say that I&#039;ve also been doing some coding, and I haven&#039;t been completely afk.&lt;/p&gt;
&lt;p&gt;My intention is stil to blend the two, but I&#039;ve decided that I&#039;ll separate these updates in Life stuff and Tech stuff. That way, if you&#039;re only interested in the tech stuff, you can skip all the ramblings about my personal life.&lt;/p&gt;
&lt;h4&gt;Life Stuff&lt;/h4&gt;
&lt;p&gt;As I&#039;m writing this, I&#039;m still in Spain. But the preparations are made to leave for Singapore on September 6th (this Friday). I&#039;ll be spending a couple of days there before moving to Malaysia; and so far, I don&#039;t have any plans beyond that.&lt;/p&gt;
&lt;p&gt;This past month has been pretty chill overall. I spent some time at home, did some mini-trips around Catalonia, and went camping for a week in Asturias.&lt;/p&gt;
&lt;p&gt;That last one was interesting, because it was my first time camping by myself (I actually did it with my partner, but I mean without parents). It&#039;s something I&#039;ve wanted to do for a while, but for one reason or another we always stayed in hotels or &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.alberguescaminosantiago.com/&quot;&gt;albergues&lt;/a&gt;. I&#039;m very attracted to this type of lifestyle, because I do agree that we have &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://peterattiamd.com/michaeleaster/&quot;&gt;a comfort crisis&lt;/a&gt;. I also started reading &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://markmanson.net/books/subtle-art&quot;&gt;The Subtle Art of Not Giving a Fuck&lt;/a&gt;, which has been excellent so far. So camping and doing the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Camino_de_Santiago&quot;&gt;Camino de Santiago&lt;/a&gt; have been very valuable experiences. But always that I&#039;ve done these, it&#039;s been completely divorced from my work because I never bring my laptop along. I guess the real test will begin in Asia, because this time I intend to do it, and it&#039;ll be for an extended period of time.&lt;/p&gt;
&lt;p&gt;Right now, I&#039;m going through a mix of excitement and anxiety. Excitement because I&#039;ve been looking forward to this for a long time, and anxiety because I worry too much about the future and &amp;quot;planning stuff&amp;quot;. But whenever I think about it, I realize I have a priviledged life without any real problems. I have to learn to live more in the present!&lt;/p&gt;
&lt;h4&gt;Tech Stuff&lt;/h4&gt;
&lt;p&gt;Whenever I thought about my sabbatical in the past, I assumed I&#039;d have infinite time to do everything in my TODO list. But of course, that didn&#039;t happen. In fact, I&#039;ve realized something. When you say you&#039;re in a sabbatical, everyone around you also assumes you have all the time in the world, and they don&#039;t respect your time as much. However, if you say you&#039;re self-employed (even if you aren&#039;t earning a single cent), people take your &amp;quot;work time&amp;quot; more seriously. So maybe this whole sabbatical thing was a mistake 😅. But I still think it&#039;s an experiment worth pursuing, we&#039;ll see how it goes.&lt;/p&gt;
&lt;p&gt;All of that to say, that I no longer have any hopes of making any real progress in this sabbatical :/. But not to sound too grim, I found something better: building Proofs of Concept (or &amp;quot;Spikes&amp;quot; as some call them). There are many ideas I&#039;ve had in mind for ages, but never started because the task seemed too daunting. But this month, I gave a couple of them a chance and I was pleasantly surprised.&lt;/p&gt;
&lt;p&gt;One of those has been &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/113005202062248847&quot;&gt;building a Solid Server from scratch&lt;/a&gt;. This is obviously not something I&#039;ll complete in the sabbatical. In fact, &lt;a href=&quot;https://noeldemartin.com/blog/the-end-of-the-chapter#the-plan&quot;&gt;it&#039;s one of my ideas for a full-time project&lt;/a&gt;. But following the spirit of doing whatever I feel like, I just started typing away. And &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/112973165563565020&quot;&gt;I got it working in a single day&lt;/a&gt;. I&#039;m not sure how far I&#039;ll take this, but I&#039;m very excited about it and I may continue tinkering with it during these months.&lt;/p&gt;
&lt;p&gt;Something else I worked on was animations. For a while, I&#039;ve heard from many people I admire that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.framer.com/motion/&quot;&gt;Framer Motion&lt;/a&gt; is one of the few reasons why they aren&#039;t using Vue (such as &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://x.com/JoshWComeau/status/1567559618062082048&quot;&gt;Josh Comeau&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://x.com/adamwathan/status/1690044392533372949&quot;&gt;Adam Wathan&lt;/a&gt;). And since I started taking &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://animations.dev&quot;&gt;Emil Kowalski&#039;s course on animations&lt;/a&gt;, I decided it was a good time to start playing with this. So I created a library (for now a folder in a project) called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/tree/aerogel/src/vivant&quot;&gt;Vivant&lt;/a&gt;. Again, this is not something I will finish in the sabbatical (or maybe ever), but it was fun to start tinkering. Ironically, it wasn&#039;t as easy as implementing a Solid Server from scratch, but I&#039;ve already implemented a couple of animations in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://focus.noeldemartin.com/&quot;&gt;Focus&lt;/a&gt; and it seems to be working well:&lt;/p&gt;
&lt;a href=&quot;https://noeldemartin.com/videos/vivant-focus.mp4&quot; target=&quot;_blank&quot;&gt;
    &lt;video autoplay loop&gt;
        &lt;source src=&quot;/videos/vivant-focus.mp4&quot; type=&quot;video/mp4&quot;&gt;
    &lt;/video&gt;
&lt;/a&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Taking a Sabbatical"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/taking-a-sabbatical#comment-2" />
            <id>https://noeldemartin.com/tasks/taking-a-sabbatical#comment-2</id>
            <published>2024-08-01T13:10:07+00:00</published>
            <updated>2024-08-01T13:10:07+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/taking-a-sabbatical#comment-2&quot;&gt;Taking a Sabbatical&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;The point of the sabbatical is that I don&#039;t have any goals, but I&#039;ll use this task to share my experience. Similar to what I did in &lt;a href=&quot;https://noeldemartin.com/tasks/working-from-japan&quot;&gt;my recent trip to Japan&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In a way, this will be a simulation for my retirement (which is definitely decades away 😅). In my recent mini-life in japan, I divided my trip into 2 distinct chunks: 3 weeks working remotely, and 3 weeks on holidays. This time, I intend to blend the two, and see what my life is like when I don&#039;t have to work for a living. Honestly, I don&#039;t think I&#039;ll be on holiday mode all the time, because I do enjoy my work and I don&#039;t like the idea of spending months without programming. But I also won&#039;t be traveling alone, and both of us will be unemployed, so I&#039;m sure that will skew our tendencies.&lt;/p&gt;
&lt;p&gt;The current plan is to spend most of August in Spain, which is usually a time where most people around here is on holidays, and fly to Asia in early September. We don&#039;t have many plans beyond that, and we&#039;ll probably fly to wherever is more convenient. So far, Singapore seems like a good starting point.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Taking a Sabbatical"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/taking-a-sabbatical" />
            <id>https://noeldemartin.com/tasks/taking-a-sabbatical</id>
            <published>2024-08-01T13:09:45+00:00</published>
            <updated>2024-08-01T13:09:45+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/taking-a-sabbatical&quot;&gt;Taking a Sabbatical&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/taking-a-sabbatical&quot;&gt;Taking a Sabbatical&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For the first time in a while, &lt;a href=&quot;/blog/the-end-of-the-chapter&quot;&gt;I&#039;m unemployed&lt;/a&gt; and taking some time off. I may be working on side-projects more than ever; or afk for months. During this time, I&#039;ll probably be traveling in Asia. I&#039;ll be back to work in January 2025.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "The End of The Chapter"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/the-end-of-the-chapter" />
            <id>https://noeldemartin.com/blog/the-end-of-the-chapter</id>
            <published>2024-08-01T13:00:00+00:00</published>
            <updated>2024-08-01T13:00:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/the-end-of-the-chapter&quot;&gt;The End of The Chapter&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/the-end-of-the-chapter&quot;&gt;The End of The Chapter&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework#comment-10" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework#comment-10</id>
            <published>2024-07-15T11:50:52+00:00</published>
            <updated>2024-07-15T11:50:52+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-10&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;It&#039;s only been two weeks since my last update, but I&#039;m already done with the beta! TLDR, you can peek at the new version in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://focus.noeldemartin.com&quot;&gt;focus.noeldemartin.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Turns out it didn&#039;t need as much work as I thought, even though it required chasing a bug that involved &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.android.com/tools/adb#connect-to-a-device-over-wi-fi&quot;&gt;debugging and Android device over Wifi&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/utils/commit/369ec16c5fa546a6a2e7512501add6b0e5b1a3ac&quot;&gt;dealing with proxies&lt;/a&gt; 😅. Also, it&#039;s not like I&#039;m done with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-utils/commit/30aceafb9d58f505d02a146d8e81f2e3a041b92f&quot;&gt;bundling woes&lt;/a&gt; (I&#039;m not sure I&#039;m ever getting rid of those :/). But it&#039;s ready now!&lt;/p&gt;
&lt;p&gt;I haven&#039;t been working on this rebuild for too long, but for some reason it feels very similar to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/issues/1&quot;&gt;when I pre-released Umai&lt;/a&gt;. I guess it&#039;s just the thrill of releasing new stuff :). This time, though, I have some things up my sleeve before the final release.&lt;/p&gt;
&lt;p&gt;Even though it&#039;s &amp;quot;just a rebuild&amp;quot;, I&#039;m very excited about this one. Not only because I feel it&#039;s better in terms of functionality (I understand Solid a lot better now!), I also redesigned the UI from scratch. In the previous version, I used &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vuetifyjs.com&quot;&gt;Vuetify&lt;/a&gt;; and I didn&#039;t think much about the design at all. But this time I have, and the result is a lot less cluttered and clean. I worry a bit that all my apps end up looking the same, but I think I&#039;ve managed to give them a unique personality for the most part.&lt;/p&gt;
&lt;p&gt;Now that the beta is out the door, the question remains when will I release the final version. You can learn more about what&#039;s left in the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/issues/15&quot;&gt;Beta Feedback&lt;/a&gt; issue (and leave some feedback!), but the short answer is that I don&#039;t know. I&#039;m posting a life update in my blog early next month, but honestly I don&#039;t think I&#039;ll be releasing the app this year 😱. You&#039;ll learn why in the blog post, but that leaves plenty of time to live with the beta myself, and make sure that it&#039;s ready once I finally release it to the world.&lt;/p&gt;
&lt;p&gt;Anyways, if you want to learn more about the new version, I also uploaded a new video to Youtube with some more technical details and new Aerogel features: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=pDK6oQ6igLg&quot;&gt;Rebuilding Solid Focus with Aerogel | Routing and UI&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework#comment-9" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework#comment-9</id>
            <published>2024-06-29T06:40:10+00:00</published>
            <updated>2024-06-29T06:40:10+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-9&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Ok, so the cycle finished yesterday and this is where things stand:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/hillchart-2024-06-29.png&quot; alt=&quot;Hill Chart 29th June 2024&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As always, I haven&#039;t finished everything; but I can say I am mostly done with UI! There are still a couple of screens I have to tweak, but it&#039;s mostly a chore at this point. I would consider the branding and style of the app completed. Furthermore, I&#039;ve also implemented a couple of new features that weren&#039;t available in the old version of the app, such as global search and custom workspace colors.&lt;/p&gt;
&lt;p&gt;So, what is left, and what are the next steps?&lt;/p&gt;
&lt;p&gt;Even though most of the main work is done, I still have to work on some edge-cases. For example, in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://umai.noeldemartin.com&quot;&gt;Umai&lt;/a&gt; I let users choose where they want to store their recipes, and I wanted to do the same in Focus. But it&#039;s more tricky, because each workspace and list is a separate container. This also complicates the synchronization, I haven&#039;t completely finished the &lt;em&gt;secret landing page&lt;/em&gt;, and I haven&#039;t even started looking at migrating data from the legacy app 😱. Finally, I also have some &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://moodle.org/mod/forum/discuss.php?d=459794#p1846521:~:text=Warm%20thanks%3A,your%20next%20adventure!%20%F0%9F%98%98&quot;&gt;important news&lt;/a&gt; I&#039;ll talk about next month that will probably have an impact on this task.&lt;/p&gt;
&lt;p&gt;With all that, I&#039;ve realized the release is farther away than I thought... So I&#039;ll do something in between. Similar to what I did with the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/issues/1&quot;&gt;Umai Beta&lt;/a&gt;, I&#039;ll release a beta of the new version for early feedback and testing. But this time, I think I&#039;ll be more aggresive on the &amp;quot;beta&amp;quot; thing, and I don&#039;t think I&#039;ll call it &amp;quot;production ready&amp;quot; as I did for Umai. Still, I&#039;ll probably use it for production myself, but I won&#039;t recommend it.&lt;/p&gt;
&lt;p&gt;And that about covers my plans for the next month. You should hear from me again by the end of July / early August, and I&#039;m very excited to finally share what I&#039;ve been working on in 2024 :).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "Why Solid?"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/why-solid" />
            <id>https://noeldemartin.com/blog/why-solid</id>
            <published>2024-06-24T13:00:00+00:00</published>
            <updated>2024-06-24T13:00:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/why-solid&quot;&gt;Why Solid?&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/why-solid&quot;&gt;Why Solid?&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Completed "Attending the 2nd Solid Symposium"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium#comment-5" />
            <id>https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium#comment-5</id>
            <published>2024-05-17T12:42:21+00:00</published>
            <updated>2024-05-17T12:42:21+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium#comment-5&quot;&gt;Attending the 2nd Solid Symposium&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium#comment-5&quot;&gt;Attending the 2nd Solid Symposium&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending the 2nd Solid Symposium"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium#comment-4" />
            <id>https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium#comment-4</id>
            <published>2024-05-17T12:42:08+00:00</published>
            <updated>2024-05-17T12:42:08+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium#comment-4&quot;&gt;Attending the 2nd Solid Symposium&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Hey!&lt;/p&gt;
&lt;p&gt;I just uploaded the recording of my second talk, so I can officially say that I&#039;m done with this task. If you want to watch the recordings, you can find them in my Youtube channel:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://youtu.be/ghGmveKKe5Y&quot;&gt;Thoughts on Solid Developer Experience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://youtu.be/vYQmGeaQt8E&quot;&gt;Solid CRDTs in Practice&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See you at the Symposium next year! (maybe)&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework#comment-8" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework#comment-8</id>
            <published>2024-05-10T14:40:39+00:00</published>
            <updated>2024-05-10T14:40:39+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-8&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve been leaving this task on the side for some weeks, but today I&#039;m back. And I intend to be &lt;em&gt;almost&lt;/em&gt; finished with the rebuilt by the end of the cycle (more on that later).&lt;/p&gt;
&lt;p&gt;Now, it&#039;s not like I&#039;ve been doing nothing. In fact, I&#039;ve been tinkering with the UI a lot; and I decided on the style I&#039;m going to use. But it wasn&#039;t easy to get there, because I&#039;ve been struggling with an issue that has been on the back of my mind for a while.&lt;/p&gt;
&lt;p&gt;Basically, I really like the idea of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://rosano.hmm.garden/01evv3hq1ak4b6ng1jzppx5n2j&quot;&gt;doorless apps&lt;/a&gt;. That&#039;s one of the reasons why mine don&#039;t have intricate landing pages. People can start using them right away, without even creating an account, so I haven&#039;t spent any time trying to convince anyone. The barrier to entry is so low, I figured, that everyone landing on the apps would just start using them. However, I&#039;ve always been aware of how uninviting that is. There are some doorless apps like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://excalidraw.com/&quot;&gt;excalidraw&lt;/a&gt; that make it immediately obvious. But that&#039;s not the case with the current design of my apps.&lt;/p&gt;
&lt;p&gt;So when I started thinking on the landing page for this one, I had two options. Either go full doorless and drop people on some empty state, or make a &amp;quot;real&amp;quot; landing page. As fate would have it, I started taking Jack McDade&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://radicaldesigncourse.com/&quot;&gt;Radical Design Course&lt;/a&gt; in the middle of making this decision. And after some experiments, I&#039;ve decided to make a real landing page. I&#039;m very excited to share it with everyone, but I don&#039;t think I&#039;ll show it until I release the final version 🤫. For now, I&#039;ll only say that I&#039;ve been using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/lllyasviel/Fooocus&quot;&gt;Fooocus&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://penpot.app/&quot;&gt;Penpot&lt;/a&gt;, and it will be radically different from any of my other apps.&lt;/p&gt;
&lt;p&gt;If I don&#039;t add some structure to this, though, this process of tinkering with UI can drag on indefinitely. So today I&#039;m kicking of the next cycle. It will end on June 28th, and my idea is to have the app completely finished by then. However, there are some things I&#039;ll still need to do before releasing it, such as migrating data from the legacy version. Because of that, this doesn&#039;t mean that I&#039;ll release the app by then. But it should take me much closer to the finish line.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending the 2nd Solid Symposium"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium#comment-3" />
            <id>https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium#comment-3</id>
            <published>2024-05-04T13:16:40+00:00</published>
            <updated>2024-05-04T13:16:40+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium#comment-3&quot;&gt;Attending the 2nd Solid Symposium&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;The Symposium is officially over, and if I had to compress my experience to a single sentence I would say that I got drunk on excitement.&lt;/p&gt;
&lt;p&gt;Yes, I also had a couple of beers (we were in Belgium, after all). But the conversations were a lot more stimulating than the alcohol. It was awesome meeting so many people from the Solid community, old and new, and discuss about all sort of topics. Here&#039;s a list of some things I talked about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Students as ideal potential members of the Solid community (and teachers as the best way to reach them).&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nlnet.nl/&quot;&gt;NLNet&lt;/a&gt; (as ever, they seem to be funding a lot of projects from the community).&lt;/li&gt;
&lt;li&gt;Adding more social aspects to my apps (both for people who enjoy sharing their movie-watching/cooking habits, and to create network effects).&lt;/li&gt;
&lt;li&gt;A Solid Pod acting as a proxy for file-based cloud providers (Nextcloud, Google Drive, Dropbox, etc.).&lt;/li&gt;
&lt;li&gt;Local-first interoperability (different apps working together with the local data).&lt;/li&gt;
&lt;li&gt;DefinitelyShaped (I&#039;ll let you guess what that means).&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&#039;ve never been as excited about Solid as I am now. We still have some &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/112370779671779713&quot;&gt;important problems to overcome&lt;/a&gt;, but I think most of us at the Symposium were aligned with the direction we want to take. So I&#039;m hopeful for the future.&lt;/p&gt;
&lt;p&gt;Also, I did enjoy the talks and learned a thing or two! In particular, I really enjoyed the second part of the Real Time Solid session. I first shared my very simple, yet effective, approach to making CRDTs work with Solid. And then, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/gsvarovsky&quot;&gt;George&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://invisible.college/@toomim&quot;&gt;Michael&lt;/a&gt; took it up a notch with their real hardcore CRDTs, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://m-ld.org/&quot;&gt;m-ld&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://braid.org/&quot;&gt;Braid&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And that would be it for this task, but as I mentioned I plan on releasing a recording of my talks for the people who couldn&#039;t attend. I should get that done within the next couple of weeks.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Presented "Solid CRDTs in Practice"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://www.youtube.com/watch?v=vYQmGeaQt8E" />
            <id>https://www.youtube.com/watch?v=vYQmGeaQt8E</id>
            <published>2024-05-03T10:00:00+00:00</published>
            <updated>2024-05-03T10:00:00+00:00</updated>
            <summary type="html">
                Presented &lt;a href=&quot;https://www.youtube.com/watch?v=vYQmGeaQt8E&quot;&gt;Solid CRDTs in Practice&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I&#039;m giving a talk at Solid Symposium: &lt;a href=&quot;https://www.youtube.com/watch?v=vYQmGeaQt8E&quot;&gt;Solid CRDTs in Practice&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Presented "Thoughts on Solid Developer Experience"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://www.youtube.com/watch?v=ghGmveKKe5Y" />
            <id>https://www.youtube.com/watch?v=ghGmveKKe5Y</id>
            <published>2024-05-02T10:00:00+00:00</published>
            <updated>2024-05-02T10:00:00+00:00</updated>
            <summary type="html">
                Presented &lt;a href=&quot;https://www.youtube.com/watch?v=ghGmveKKe5Y&quot;&gt;Thoughts on Solid Developer Experience&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I&#039;m giving a talk at Solid Symposium: &lt;a href=&quot;https://www.youtube.com/watch?v=ghGmveKKe5Y&quot;&gt;Thoughts on Solid Developer Experience&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending the 2nd Solid Symposium"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium#comment-2" />
            <id>https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium#comment-2</id>
            <published>2024-04-26T05:25:40+00:00</published>
            <updated>2024-04-26T05:25:40+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium#comment-2&quot;&gt;Attending the 2nd Solid Symposium&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Yes, it&#039;s finally happening. My first Solid conference!&lt;/p&gt;
&lt;p&gt;This is something I&#039;ve been looking forward for a long time. I&#039;ve attended some Solid-adjacent events, like local meetups or &lt;a href=&quot;https://noeldemartin.com/fosdem&quot; target=&quot;_blank&quot;&gt;presenting at FOSDEM&lt;/a&gt;. But I have never been to a conference exclusive to Solid (not that there are many that I&#039;m aware of). However, I&#039;m trying to keep my expectations in check because I already &lt;a href=&quot;https://noeldemartin.com/tasks/attending-laracon-eu&quot;&gt;had a bittersweet experience with a Laravel conference&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The main thing I&#039;m looking forward to, honestly, is meeting people. This is not always the case; when I attend FOSDEM I&#039;m very much looking forward to the presentations themselves. But I guess I&#039;ve been into Solid for so long that I don&#039;t think anything will be revealing to me. I&#039;m looking forward to being suprised, though!&lt;/p&gt;
&lt;p&gt;Something else I&#039;m excited about, of course, is to present my own talks. I&#039;m actually giving two: one about Developer Experience, and once about CRDTs.&lt;/p&gt;
&lt;p&gt;I&#039;ve always been interested about DX, and I believe it is one of the most important things to get right if we want Solid to ever pick up. I worry that my presentation ended up too specific to my own tooling, but I always mention it in passing so it&#039;s nice to finally dedicate a presentation to everything I&#039;ve been building under the hood. And I&#039;m looking forward to see what people think, because it seems like the approach I&#039;m taking is very much outside of most Solid developers zeitgeist. But I feel like it&#039;s the norm for the developer communities I admire when it comes to DX, like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravel.com/&quot;&gt;Laravel&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://rubyonrails.org/&quot;&gt;Rails&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&#039;m also very interested in CRDTs and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://inkandswitch.com/local-first/&quot;&gt;local-first software&lt;/a&gt;, but that&#039;s something more recent that I stumbled upon trying to solve my problems with Solid. In particular, I&#039;m focusing this talk and my work on making it work &lt;em&gt;in practice&lt;/em&gt;. A lot of the work happening in Solid is very theoretical or experimental, but again, if we ever want Solid to pick up we need to make things that people can use. So I&#039;m excited to share my views on this, and how I solved it in my own apps.&lt;/p&gt;
&lt;p&gt;Unfortunately, the presentations are not going to be recorded. So I&#039;ll have to miss the ones I can&#039;t attend. But fear not, I will record mine after the conference :).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Attending the 2nd Solid Symposium"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium" />
            <id>https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium</id>
            <published>2024-04-26T05:21:21+00:00</published>
            <updated>2024-04-26T05:21:21+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium&quot;&gt;Attending the 2nd Solid Symposium&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/attending-the-2nd-solid-symposium&quot;&gt;Attending the 2nd Solid Symposium&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This year, I&#039;m attending my first ever Solid conference. And I&#039;m also giving a couple of talks!&lt;/p&gt;
&lt;p&gt;The &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://events.vito.be/sosy2024&quot;&gt;2nd Solid Symposium&lt;/a&gt; is happening in Leuven, Belgium, the 2nd &amp;amp; 3rd of May.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Learning CSS"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-css#comment-11" />
            <id>https://noeldemartin.com/tasks/learning-css#comment-11</id>
            <published>2024-04-22T14:30:07+00:00</published>
            <updated>2024-04-22T14:30:07+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css#comment-11&quot;&gt;Learning CSS&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css#comment-11&quot;&gt;Learning CSS&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Learning CSS"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-css#comment-10" />
            <id>https://noeldemartin.com/tasks/learning-css#comment-10</id>
            <published>2024-04-22T14:29:36+00:00</published>
            <updated>2024-04-22T14:29:36+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css#comment-10&quot;&gt;Learning CSS&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I can&#039;t believe I started this course in 2022. But after almost a year and a half, I&#039;m done!&lt;/p&gt;
&lt;p&gt;I haven&#039;t dedicated a lot of time every week, but I&#039;ve been pretty consistent in dedicating 1 hour/week. In total I would say it took me around 60~70 hours. Which is a lot of content, and all of it engaging! You could certainly do it faster, but I&#039;m glad I took my time to go through the lessons at my own pace and absorb the concepts properly.&lt;/p&gt;
&lt;p&gt;I don&#039;t have much to say about the last module other than it was a bunch of small fun things. Design tips, colors, shadows, mobile UX, etc. The name of the module says it all, actually: Little Big Details.&lt;/p&gt;
&lt;p&gt;Now, after having finished the course, I can say it without reservation: this is the best course I&#039;ve ever taken, and I think it should be mandatory for anyone working in the frontend. Sure, you can get by without this knowledge (like I did for 10 years), but if you&#039;re dedicating even 5% of your time to CSS, I&#039;d say &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://xkcd.com/1205/&quot;&gt;it&#039;s totally worth it&lt;/a&gt;. Also, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/NoelDeMartin/status/1325352909966626816&quot;&gt;like the best courses do&lt;/a&gt;, it changed my mindset; and I don&#039;t think I&#039;ll ever see CSS the same way again.&lt;/p&gt;
&lt;p&gt;And I don&#039;t think I&#039;m really done with it, either, because there is a bunch of links and extra content I still have to explore. Not to mention reading more of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/&quot;&gt;Josh&#039;s blog posts&lt;/a&gt;. Nevertheless, I&#039;ll close this task because otherwise I&#039;d never be done. Though it&#039;s also left me wanting more. Not about CSS exactly; I&#039;m not saying the course should be even longer. But I still want to learn more about making my apps more fun, more whimsical, and more engaging. And I&#039;ve already started working on that.&lt;/p&gt;
&lt;p&gt;One the one hand, I recently started Jack McDade&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://radicaldesigncourse.com&quot;&gt;Radical Design Course&lt;/a&gt;. I&#039;ve actually watched all the videos already, and I enjoyed them a lot! But I&#039;m still in the process of applying the lessons learned. You&#039;ll probably see the fruits of my labour when I publish my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=awaaSorMYhk&quot;&gt;Solid Focus Rebuild&lt;/a&gt;. I&#039;m not going to do a full review for this course though, but my TLDR is that it&#039;s also a great course and I recommend that you watch &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=XxwBNOku1bo&quot;&gt;this video on curation&lt;/a&gt; if you&#039;re interested. One drawback I&#039;d mention is that it&#039;s mostly focused on landing pages, and I&#039;m more interested in application UI. But it&#039;s already inspired me to do something interesting with my apps, which I&#039;m looking forward to share with everyone. And many of the concepts taught can be applied to any type of design work.&lt;/p&gt;
&lt;p&gt;On the other hand, I also started Emil Kowalski&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://animations.dev/&quot;&gt;Animations on the web&lt;/a&gt; course. But I can&#039;t say much about this one, given that it&#039;s still being built 😅. The contents from the first module are very similar to what I already learned about animations in Josh&#039;s course, so I&#039;m sure the upcoming modules will be a lot more revealing.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework#comment-7" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework#comment-7</id>
            <published>2024-03-03T08:52:53+00:00</published>
            <updated>2024-03-03T08:52:53+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-7&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;This week was the end of the cycle, and TLDR this is how things stand:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/hillchart-2024-03-03.png&quot; alt=&quot;Hill Chart 3rd March 2024&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Looking back at the evolution of the chart, it started really well because in a couple of weeks I had most things from the &amp;quot;Workspaces &amp;amp; Lists&amp;quot; and &amp;quot;Tasks CRUD&amp;quot; scopes done. But then came Solid! I thought it&#039;d be easy, because I &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid&quot;&gt;had already done all the CRDT stuff in Umai&lt;/a&gt;. But I didn&#039;t anticipate how much the different data structure would affect it.&lt;/p&gt;
&lt;p&gt;Umai&#039;s data structure is quite straight-forward; there is a container with Recipes and that&#039;s it. But Solid Focus has a hierarchy of nested containers, with Tasks within. So it was a bit of a hassle to adapt, but the good news is that all of this should be a lot more robust now. In fact, I&#039;m pretty sure it&#039;ll help Umai&#039;s interoperability as well, because it&#039;ll be able to support multiple Recipe containers.&lt;/p&gt;
&lt;p&gt;All in all, though, I&#039;m happy with the outcome of these 6 weeks. I don&#039;t think I have complicated things necessarily, and I still managed to create some new abstractions with elegant APIs. If you want to learn more about the current status and my development workflow, I published a new video in my Youtube channel: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://youtu.be/awaaSorMYhk&quot;&gt;Rebuilding Solid Focus with Aerogel | Basic functionality&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&#039;m really enjoying making these videos, so expect more. I&#039;m aware the quality could be better, but I don&#039;t want to spend a lot of time on that at the moment. Although this time I think I actually did it &lt;em&gt;too quickly&lt;/em&gt;, because just after publishing I realized there were a couple of cool things I hadn&#039;t mentioned 😅. Such as &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/blob/dc93766770f5aecb46ecf4d55c2902d4495f81fc/src/pages/index.ts#L10&quot;&gt;Route Model bindings&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/blob/dc93766770f5aecb46ecf4d55c2902d4495f81fc/src/services/Workspaces.state.ts#L14&quot;&gt;computed Model refs&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/blob/dc93766770f5aecb46ecf4d55c2902d4495f81fc/src/services/index.ts#L6&quot;&gt;global getters&lt;/a&gt;, etc. On the flip side, that made it a shorter video so it probably makes it more appealing to some people.&lt;/p&gt;
&lt;p&gt;Now, having done that, I think the foundations are laid out. Although there is certainly a lot more left: UI/UX, data migration and interoperability, advanced features, etc. I&#039;m still optimistic that it shouldn&#039;t take too long, but at the end of the month &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Camino_de_Santiago&quot;&gt;I&#039;ll be afk for a couple of weeks&lt;/a&gt;; so I&#039;m refraining from starting a new cycle now. I&#039;ll use the cooldown period to clean up a couple on things, and hopefully by next month I&#039;ll be kicking off the next (and final?) cycle for the rebuild.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Learning CSS"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-css#comment-9" />
            <id>https://noeldemartin.com/tasks/learning-css#comment-9</id>
            <published>2024-02-24T07:53:21+00:00</published>
            <updated>2024-02-24T07:53:21+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css#comment-9&quot;&gt;Learning CSS&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;And here we are, one module away from the last!&lt;/p&gt;
&lt;p&gt;As I anticipated, this one about animations was great. One of the things I&#039;ve always aspired to do with my apps is to make them enjoyable and fun. Or as Josh puts it, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=Z2d9rw9RwyE&quot;&gt;more whimsical&lt;/a&gt;. This module was all about that.&lt;/p&gt;
&lt;p&gt;It is one of the modules I&#039;ve enjoyed the most, but ironically it&#039;s also one of the modules where I&#039;ve learned the least new &amp;quot;features&amp;quot;. I was already familiar with mostly everything introduced, but it has been very interesting to learn about Josh&#039;s explanations of how and why to use animations. For example, I&#039;ve always used &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://cubic-bezier.com&quot;&gt;timing functions&lt;/a&gt; almost at random (or not at all); but Josh lays down a theory of when to use which and what to consider. I also got some terminology for things I&#039;ve been doing but didn&#039;t have a name for, like Orchestration. And I learned about the importance of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/animation/a-friendly-introduction-to-spring-physics/&quot;&gt;Spring physics&lt;/a&gt; and the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/react/animating-the-unanimatable/&quot;&gt;FLIP technique&lt;/a&gt; (now I know why &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/adamwathan/status/1628216739921027072&quot;&gt;I&#039;ve heard so much talk&lt;/a&gt; about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.framer.com/motion/&quot;&gt;Framer Motion&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;But there is also something bittersweet about this lesson. There was a lot of &amp;quot;this is beyond the scope of this course&amp;quot;, specially for the parts I was more interested about. Which is understandable, given that this is a course about CSS and not animations specifically. But that makes me hope, maybe some day we&#039;ll be able to see a course of his about animations? That would be awesome!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Attending FOSDEM 2024"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2024#comment-4" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2024#comment-4</id>
            <published>2024-02-05T11:23:26+00:00</published>
            <updated>2024-02-05T11:23:26+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2024#comment-4&quot;&gt;Attending FOSDEM 2024&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2024#comment-4&quot;&gt;Attending FOSDEM 2024&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending FOSDEM 2024"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2024#comment-3" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2024#comment-3</id>
            <published>2024-02-05T11:23:09+00:00</published>
            <updated>2024-02-05T11:23:09+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2024#comment-3&quot;&gt;Attending FOSDEM 2024&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Once again, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://iruntheinternet.com/lulzdump/images/its-a-trap-pun-its-a-wrap-admiral-ackbar-star-wars-1363199217Z.jpg&quot;&gt;it&#039;s a wrap&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This year I didn&#039;t attend as many talks as other years (I&#039;ll have to catch up on the recordings), but one of the few I enjoyed the most wasn&#039;t even listed in my previous update. And that was &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-2741-take-your-foss-project-from-surviving-to-thriving/&quot;&gt;Take Your FOSS Project From Surviving To Thriving&lt;/a&gt;, from the Thunderbird team. Just the day before, I attended the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://oxygen.offdem.net/pub/tetraoxygen-launch-party-at-caldarium&quot;&gt;OFFDEM Launch Party&lt;/a&gt;, and I was talking about the importance of having a path towards sustainability for Open Source projects (or any projects, really). I see many living off grants or, even worse, free labor. Which is fine at the beginning; but I think that&#039;s a very dangerous situation when a project has got some traction, or it has been going for a while. And that&#039;s exactly the main point of the talk. So if you&#039;re keen to learn more about this, check it out.&lt;/p&gt;
&lt;p&gt;Another one of my highlights was, as expected, the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/track/open-source-design/&quot;&gt;Open Source Design devroom&lt;/a&gt;. I&#039;ve come to enjoy Penpot&#039;s talks a lot (I also attended &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://penpotfest.org/&quot;&gt;Penpot FEST&lt;/a&gt; back in July), and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-3509-penpot-2-0-is-here-/&quot;&gt;this year&#039;s talk&lt;/a&gt; was no exception. In particular, I was very happy to hear about applying a declarative vs imperative approach to Design. I think the Penpot team are doing a great job, and I&#039;m very inspired with their mission to bring Developers and Designers together.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-2167-moodle-empowering-educators-to-improve-our-world/&quot;&gt;My own lightning talk about Moodle&lt;/a&gt; went well, and I was suprised with a round of applause in the middle of it. This happened after bringing up that this was the first talk about Moodle in the 24 years of FOSDEM (which is, concidentally, as old as Moodle itself). So I guess a lot of people are already familiar with Moodle, but it seems like its Open Source nature and everything else we&#039;re doing is not as well known. Hopefully, this will inspire others to talk more about Moodle in FOSDEM!&lt;/p&gt;
&lt;p&gt;Besides attending the talks, I also met a couple of interesting people. In particular, I had many talks with and about the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nlnet.nl&quot;&gt;NLnet Foundation&lt;/a&gt;. I was already familiar with them and some of the projects they&#039;ve funded, but I realized they&#039;ve done a lot more than I thought (I learned they even &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nlnet.nl/project/Mastodon/&quot;&gt;funded Mastodon&lt;/a&gt;!). It was interesting to hear they opinion about the Solid ecosystem and where it&#039;s going, and I&#039;ve finally got my hands on some &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/111867255069959661&quot;&gt;Solid stickers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Finally, this year I was able to end the trip with a visit to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://duckduckgo.com/?q=tonton+garby&quot;&gt;my favourite sandwich shop&lt;/a&gt;; and I can confirm it&#039;s still as delightful as ever. Mission accomplished!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending FOSDEM 2024"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2024#comment-2" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2024#comment-2</id>
            <published>2024-01-26T10:30:39+00:00</published>
            <updated>2024-01-26T10:30:39+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2024#comment-2&quot;&gt;Attending FOSDEM 2024&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;This will be my 4th time attending FOSDEM; I was there in &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem&quot;&gt;2019&lt;/a&gt;, &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2020&quot;&gt;2020&lt;/a&gt;, and &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2023&quot;&gt;2023&lt;/a&gt; (2021 and 2022 editions were held online). And I can definitely say I love this conference :D. Last year was also my first time presenting, and the experience was great. I&#039;m in awe at how well the conference is run, given it&#039;s magnitude. And the fact that it&#039;s run by volunteers is even more impressive.&lt;/p&gt;
&lt;p&gt;I actually haven&#039;t made much noise online, but I&#039;m also presenting this year. However, it&#039;s just &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-2167-moodle-empowering-educators-to-improve-our-world/&quot;&gt;a 5-minute lightning talk about Moodle&lt;/a&gt;, so I didn&#039;t think it&#039;d be of interest to most people who already know me. In fact, the point is to make &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://moodle.com&quot;&gt;Moodle&lt;/a&gt; known to people who are not familiar with it. In my little bubble I think that everybody already knows it, but my conversations with some attendees over the years showed me otherwise.&lt;/p&gt;
&lt;p&gt;As always, I&#039;ve gone through the schedule to see which talks I&#039;m more keen to attend. And sure enough, many of them are overlapping. At least this will serve me as a reminder to watch the recordings later on. Overall it&#039;s looking good, but I do miss the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://archive.fosdem.org/2020/schedule/track/decentralized_internet_and_privacy/&quot;&gt;Decentralized Internet and Privacy devroom&lt;/a&gt; and I can&#039;t help but notice the absence of anything mentioning the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidproject.org/&quot;&gt;Solid Protocol&lt;/a&gt; :(.&lt;/p&gt;
&lt;p&gt;I may also attend some &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://offdem.net/&quot;&gt;OFFDEM&lt;/a&gt; sessions, but so far I haven&#039;t been able to find a schedule so I&#039;m not sure how that will turn out.&lt;/p&gt;
&lt;h4&gt;Friday&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Afternoon / Evening @ Delirium Café - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/practical/beer/&quot;&gt;Unofficial beer event&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Saturday&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;11:30-12:00 @ H.1301 (Cornil) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-2722-your-web-app-is-taking-up-too-much-ram-let-s-fix-it-/&quot;&gt;Your web app is taking up too much RAM. Let&#039;s fix it!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:40-14:10 @ H.1301 (Cornil) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-2779-staying-ahead-of-the-game-javascript-security/&quot;&gt;Staying Ahead of the Game: JavaScript Security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;15:00-15:25 @ AW1.126 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-2728-thunderbird-why-visual-change-is-good/&quot;&gt;Thunderbird: Why Visual Change Is Good&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;15:15-15:45 @ AW1.120 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-2558-sustainable-open-source-development/&quot;&gt;Sustainable Open Source Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;16:10-16:50 @ H.1301 (Cornil) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-2832-messageformat-the-future-of-i18n-on-the-web/&quot;&gt;MessageFormat: The future of i18n on the web&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;17:00-17:25 @ AW1.126 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-3326-web-accessibility-for-open-source-privacy-security-tools/&quot;&gt;Web-accessibility for open-source privacy &amp;amp; security tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;17:30-17:35 @ AW1.120 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-2167-moodle-empowering-educators-to-improve-our-world/&quot;&gt;Moodle: Empowering educators to improve our world&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;17:45-17:50 @ AW1.120 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-3312-what-can-digital-open-source-projects-do-to-reduce-our-environmental-footprint/&quot;&gt;What can digital open source projects do to reduce our environmental footprint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;18:30-18:55 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-2332-magic-and-software/&quot;&gt;Magic and Software&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;18:30-18:55 @ AW1.126 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-3509-penpot-2-0-is-here-/&quot;&gt;Penpot 2.0 is here!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Evening @ Hackerspace Brussels (HSBXL)- &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://bytenight.brussels/&quot;&gt;ByteNight&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Sunday&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;09:05-09:35 @ UD2.208 (Decroly) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-2964-streamlining-developer-experience-the-power-of-ci-cd-standardization-and-interoperability/&quot;&gt;Streamlining Developer Experience: The Power of CI/CD Standardization and Interoperability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;10:00-10:30 @ H.2214 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-2003-better-than-loading-fast-is-loading-instantly-/&quot;&gt;Better than loading fast… is loading instantly!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;10:00-10:50 @ K.1.105 (La Fontaine) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-1931-you-too-could-have-made-curl-/&quot;&gt;You too could have made curl!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;10:00-10:50 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-3345-opening-up-communication-silos-with-matrix-2-0-and-the-eu-digital-markets-act/&quot;&gt;Opening up communication silos with Matrix 2.0 and the EU Digital Markets Act&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;10:50-11:20 @ K.3.201 &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-1906-lessons-learnt-as-a-translation-contributor-the-past-4-years/&quot;&gt;Lessons learnt as a translation contributor the past 4 years&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;10:35-11:05 @ UD2.208 (Decroly) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-2968-performance-testing-and-why-even-the-imperfect-one-is-important/&quot;&gt;Performance testing and why even the imperfect one is important&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;11:10-11:40 @ UD2.208 (Decroly) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-1805-squash-the-flakes-how-to-minimize-the-impact-of-flaky-tests/&quot;&gt;squash the flakes! - how to minimize the impact of flaky tests&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:15-13:45 @ H.1309 (Van Rijn) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-3285-the-matrix-state-of-the-union/&quot;&gt;The Matrix State of the Union&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:30-13:45 @ H.1302 (Depage) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-2357-diving-into-pdf-js-the-advantages-of-the-web-platform/&quot;&gt;Diving into PDF.js: the advantages of the web platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:45-14:15 @ H.1309 (Van Rijn) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-3157-interoperability-matrix/&quot;&gt;Interoperability &amp;amp; Matrix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;15:00-15:50 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-3362-open-source-for-sustainable-and-long-lasting-phones/&quot;&gt;Open Source for Sustainable and Long lasting Phones&lt;/a&gt; (Fairphone)&lt;/li&gt;
&lt;li&gt;16:30-17:00 @ UD2.208 (Decroly) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2024/schedule/event/fosdem-2024-3029-are-project-tests-enough-for-automated-dependency-updates-a-case-study-of-262-java-projects-on-github/&quot;&gt;Are Project Tests Enough for Automated Dependency Updates? A Case Study of 262 Java Projects on Github&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Attending FOSDEM 2024"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2024" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2024</id>
            <published>2024-01-26T10:24:42+00:00</published>
            <updated>2024-01-26T10:24:42+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2024&quot;&gt;Attending FOSDEM 2024&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2024&quot;&gt;Attending FOSDEM 2024&lt;/a&gt;&lt;/p&gt;&lt;p&gt;As is becoming a tradition, I&#039;m attending this year&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/&quot;&gt;FOSDEM&lt;/a&gt; in Brussels, on February 3 &amp;amp; 4. Let me know if you&#039;re also around and want to meet up!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework#comment-6" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework#comment-6</id>
            <published>2024-01-12T11:44:36+00:00</published>
            <updated>2024-01-12T11:44:36+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-6&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Hello, 2024!&lt;/p&gt;
&lt;p&gt;I&#039;m back from the holiday break, and I&#039;m ready to get back on the horse. Some years, I&#039;ve used this season to advance on my side-projects as well. But this time I made a pledge of not going near a keyboard (for programming purposes). So I&#039;ve spend it mostly watching &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.imdb.com/title/tt0112922/&quot;&gt;movies&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.imdb.com/title/tt9764386/&quot;&gt;TV shows&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://store.steampowered.com/app/1332010/Stray/&quot;&gt;playing&lt;/a&gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://store.steampowered.com/app/601150/Devil_May_Cry_5/&quot;&gt;games&lt;/a&gt;, and visiting the land of the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Icelandic_Christmas_folklore#Yule_Lads&quot;&gt;Yule Lads&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Right before the break though, I made an end of year gift for Solid developers: 🎁 &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/cypress-solid&quot;&gt;cypress-solid&lt;/a&gt;. You may want to check that out!&lt;/p&gt;
&lt;p&gt;Anyhow, now that I&#039;m done with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/105525557154075833&quot;&gt;all of new year&#039;s chores&lt;/a&gt;, I&#039;m ready to get on with this task. And after some thought, I&#039;ve decided that revamping &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/solid-focus/&quot;&gt;Solid Focus&lt;/a&gt; will be the next and final step. Admitedly, that will be cheating a bit, because I won&#039;t be releasing the framework after that (as in making an official announcement that it&#039;s &amp;quot;ready&amp;quot;). But I&#039;ve had enough of &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid&quot;&gt;multi-year tasks&lt;/a&gt;, so I&#039;ll tackle the branding and documentation of the framework in a separate task. I will consider the framework&#039;s first draft done after I have a real app built with it.&lt;/p&gt;
&lt;p&gt;Something I&#039;ve noticed looking back at 2023 is that I haven&#039;t been doing &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/0.3-chapter-01#six-week-cycles&quot;&gt;Shape Up cycles&lt;/a&gt; as of late. But I found them very useful for getting things done when tasks were running too long, so that&#039;s how I&#039;ll approach this revamp.&lt;/p&gt;
&lt;p&gt;I&#039;m kicking off a cycle today, and it should be done by March 1st. The scope for this cycle is to rebuild Solid Focus, from scratch, using AerogelJS. And yes, I mean a feature-complete rebuild. &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager&quot;&gt;It took me about 7 months&lt;/a&gt; to build the previous version, but I&#039;m a lot more experienced with Solid now, and the point of the framework is that it should allow me to be faster. So this should be a good stress-test. The framework is not finished, however, specially the offline-first approach which I&#039;ll want to add and is novel to Solid Focus. Because of that, I also don&#039;t want to be too optimistic, and I&#039;m leaving some things out of the scope. In particular, I won&#039;t be tackling any of the data migration or branding improvements. Both of which I&#039;ll definitely look into before re-releasing the revamped app.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Learning CSS"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-css#comment-8" />
            <id>https://noeldemartin.com/tasks/learning-css#comment-8</id>
            <published>2023-12-22T16:08:15+00:00</published>
            <updated>2023-12-22T16:08:15+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css#comment-8&quot;&gt;Learning CSS&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I didn&#039;t think I&#039;d be posting any more updates this year, but I finished the Grid module just in the nick of time!&lt;/p&gt;
&lt;p&gt;At first, this module seemed shorter than usual. But when I got &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/css-for-js-workshop-7&quot;&gt;to the workshop&lt;/a&gt;, I realized I was wrong. It&#039;s definitely been one of the longest workshops of the course, but I cannot say I&#039;ve enjoyed it tremendously. In fact, I don&#039;t think I have enjoyed any of the workshops too much. They are quite good nonetheless, but compared to the enjoyment of taking the lessons, they fall to average. I think the reason why I don&#039;t like them too much is that I feel like I have to do a lot of work for something I don&#039;t care too much about. And being forced to use Styled Components and React doesn&#039;t help, because I still don&#039;t like them :/. But I have to recognize that some times, it&#039;s necessary to roll up your sleeves and do the work to solidify the concepts learned. Though I enjoy the small exercises in lessons a lot more, and I&#039;m thankful the entire course is not like this.&lt;/p&gt;
&lt;p&gt;Anyhow, besides the slog of a workshop, I also enjoyed this lesson overall. I haven&#039;t been using grid much, and as is becoming tradition in this course, I noticed how little I knew about it. But this time, I&#039;m not sure I&#039;ll be using this too much, because I feel like I can do mostly everything with Flex. Though I&#039;m sure there will be some situations where grid will come in handy. If you want to learn about it yourself, Josh recently published a blog post going over the basic concepts: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/css/interactive-guide-to-grid/&quot;&gt;An Interactive Guide to CSS Grid&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And that&#039;s mostly everything I have to say about grid, but in the periphery of taking this module I read a couple of his posts I&#039;d like to mention:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/css/pixel-perfection/&quot;&gt;Chasing the Pixel-Perfect Dream&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/career/effective-collaboration/&quot;&gt;Effective Collaboration with Product and Design&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first one tackles exactly the point I mentioned in my last update about pixel-perfection. Other than learning pure CSS, these are the things that are making this course so interesting to me. I am a developer who enjoys design, but unfortunately I don&#039;t do as much of it as I&#039;d like. And learning about things like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/adamwathan/status/1715403911106879554&quot;&gt;designing on top of a screenshot&lt;/a&gt; is golden. The second one tackles collaboration with designers, and I&#039;ve always thought that the work I&#039;ve enjoyed the most in my carreer has been working alongside designers. I hope I can do a lot more of that in the future.&lt;/p&gt;
&lt;p&gt;When I started this task I wouldn&#039;t have believed &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/NoelDeMartin/status/1726665113099534669&quot;&gt;I&#039;d still be working on it a year later&lt;/a&gt;. In the course FAQs Josh mentions that it should take an average of 40 hours to complete, and so far I&#039;ve spent more than 50. But if anything, I have to say that&#039;s a good thing, because I&#039;m still enjoying it like the first day. What&#039;s even more amazing, is that the last two modules could be the ones I enjoy the most: Animations and Little Big Details. And they also seem to be some of the longer ones! So there is still plenty of juice to squeeze.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework#comment-5" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework#comment-5</id>
            <published>2023-12-10T08:50:31+00:00</published>
            <updated>2023-12-10T08:50:31+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-5&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;It is done! We have a full-fledged* Solid App built with AerogelJS: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ramen.noeldemartin.com/&quot;&gt;Ramen&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;(* Well, maybe saying &amp;quot;full-fledged&amp;quot; is stretching it a bit, it&#039;s a very simple app 😅️)&lt;/p&gt;
&lt;p&gt;It has taken a bit longer than I expected for a couple of reasons, but overall I&#039;m quite happy with the end result. If you&#039;re curious, I suggest that you go straight to the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/ramen&quot;&gt;source code&lt;/a&gt;, because the UI is exactly the same as before.&lt;/p&gt;
&lt;p&gt;One of the reasons for the delay has been &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://seths.blog/2005/03/dont_shave_that/&quot;&gt;yak shaving&lt;/a&gt;. Or maybe said differently, over engineering. &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-2023&quot;&gt;I&#039;ve talked about this before&lt;/a&gt; (it&#039;s actually a recurring theme of this journal), but I think I&#039;ve got a new twist on it. I&#039;ve realized that the source of all my misfortunes is my tendency to DCDD (&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nobackend.org/2013/05/welcome-to-noBackend.html&quot;&gt;Dream Code&lt;/a&gt; Driven Development, I just made that up).&lt;/p&gt;
&lt;p&gt;For example, let&#039;s take a look at one of the integration tests for Ramen:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;it(&#039;Teaches Ramen&#039;, () =&amp;gt; {
    // Arrange
    cy.intercept(&#039;PATCH&#039;, cssPodUrl(&#039;/cookbook/juns-ramen&#039;)).as(&#039;learnRamen&#039;);

    cy.createSolidDocument(
        &#039;/settings/privateTypeIndex&#039;,
        &#039;privateTypeIndex.ttl&#039;,
    );
    cy.updateSolidDocument(
        &#039;/settings/privateTypeIndex&#039;,
        &#039;register-cookbook.sparql&#039;,
        { cookbookId: &#039;#cookbook&#039; },
    );
    cy.updateSolidDocument(&#039;/profile/card&#039;, &#039;register-type-index.sparql&#039;);
    cy.createSolidContainer(&#039;/cookbook/&#039;, &#039;Cookbook&#039;);

    cy.ariaInput(&#039;Login url&#039;).clear().type(`${cssUrl()}{enter}`);
    cy.cssLogin();

    // Act
    cy.see(&amp;quot;You don&#039;t know how to make Ramen&amp;quot;);
    cy.matchImageSnapshot();
    cy.press(&#039;Teach me&#039;);

    // Assert
    cy.see(&#039;You know how to make Ramen!&#039;);
    cy.see(`Your Ramen recipe is at ${cssPodUrl(&#039;/cookbook/juns-ramen#it&#039;)}`);

    cy.get(&#039;@learnRamen&#039;).its(&#039;response.statusCode&#039;).should(&#039;eq&#039;, 201);
    cy.fixture(&#039;learn-ramen.sparql&#039;).then((sparql) =&amp;gt; {
        cy.get(&#039;@learnRamen&#039;).its(&#039;request.body&#039;).should(&#039;be.sparql&#039;, sparql);
    });
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This test is quite short, but there are a lot of things going on: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://jestjs.io/docs/snapshot-testing&quot;&gt;Snapshot Testing&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/WAI/standards-guidelines/aria/&quot;&gt;Accessibility Testing&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/CommunitySolidServer/CommunitySolidServer&quot;&gt;Solid CRUD Testing&lt;/a&gt;, etc. It is indeed encapsulating a lot of complexity, but you wouldn&#039;t say that the code itself &lt;em&gt;is&lt;/em&gt; complex. This is what I mean with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=zKyv-IGvgGE&amp;amp;t=1037s&quot;&gt;conceptual compression&lt;/a&gt;. And this is the type of code I consider &lt;a href=&quot;https://noeldemartin.com/blog/10-years-as-a-software-developer#2-write-good-code&quot;&gt;good code&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The problem, of course, is that reaching that point takes a lot of effort. This is now &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/ramen/blob/f41add1f29dac86b306a7aac109205cc6185f5bc/cypress/e2e/cookbook.cy.ts#L36..L61&quot;&gt;real code&lt;/a&gt;, but getting there was not straightforward. And I wonder about the alternatives. Surfacing all that complexity to the end user? Doing less? I&#039;m in favour of the latter, but certainly not the former. Although I realize there is such a thing as overdoing it, and I have a tendency to compress too early. This is something I&#039;ve known for a while, but I recently read a blog post that may finally get me to improve: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://world.hey.com/jason/live-with-it-for-a-while-a9191f5f&quot;&gt;Live with it for a while&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So yeah, my over engineering afflictions are still ongoing. But I have a renewed resolve to alleviate them by doing less and living with &amp;quot;bad code&amp;quot; for a while.&lt;/p&gt;
&lt;p&gt;However, this time I cannot attribute all the delays to my over engineering. It seems like I&#039;ve also started to feel a bit of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nolanlawson.com/2017/03/05/what-it-feels-like-to-be-an-open-source-maintainer/&quot;&gt;maintenance burden&lt;/a&gt;. Nothing like the author of that post, but for a couple of weeks it seemed like I wasn&#039;t making any progress. And after some reflection, I realized I had spent too much time doing reactive work; things people asked of me or caused by some external dependency.&lt;/p&gt;
&lt;p&gt;Not that it was all bad, though, many good things came out of those: giving feedback for &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://rdfjs.dev/&quot;&gt;rdfjs.dev&lt;/a&gt;, giving feedback for &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/pondersource/soukai-solid-utils&quot;&gt;soukai-solid-utils&lt;/a&gt;, participating in the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid-contrib/practitioners/blob/main/meetings/2023-11-10.md&quot;&gt;Solid Practitioners&lt;/a&gt; group, etc. Although I probably spent more time on some of them than I should (of my own volition by the way, I&#039;m not saying that anybody coerced me into contributing). But there was one particularly nasty task of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/aerogel/commit/295a894bf18ef6c653e7296f8a56dc93ff238acb&quot;&gt;rewriting all my CSS testing helpers&lt;/a&gt; because &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/CommunitySolidServer/CommunitySolidServer/commit/a47f5236ef651dd8eaeb344fd83c7ef82f9730ac&quot;&gt;the account management architecture changed completely in 7.0.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I suppose those are the cost of doing business though, and I&#039;m aware this is nothing compared to what popular repository maintainers must go through. For the most part, I still feel like &lt;a href=&quot;https://noeldemartin.com/blog/working-in-the-open-when-no-one-is-looking&quot;&gt;no one is looking&lt;/a&gt;, but I get &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/aerogel/issues/1&quot;&gt;some interactions&lt;/a&gt; from time to time. And I&#039;m still torn on whether that&#039;s a good thing or a bad thing. One the one hand, I like the fact that I can be left to my own devices and just enjoy the work that I do. On the other hand, it would be nice that my work is useful to more people. But as Naval says, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://youtu.be/3J0CKZLsF-s?si=RmFZ5_DUWWTP1F5z&amp;amp;t=104&quot;&gt;it&#039;s better to be anonymous and rich than to be poor and famous&lt;/a&gt;. And being a popular open source maintainer certainly takes you down the path of &amp;quot;poor and famous&amp;quot;. So I&#039;m fine being anonymous and well off for the time being.&lt;/p&gt;
&lt;p&gt;Now that I&#039;m done with the fundamentals of the framework, and I have proved that I can make a &amp;quot;real app&amp;quot; with it, the next step is to actually start doing something useful. I have two possibilities at the moment: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/issues/10&quot;&gt;migrating Solid Focus&lt;/a&gt; (which I&#039;ll probably rewrite from scratch) or migrating &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/media-kraken/&quot;&gt;Media Kraken&lt;/a&gt; and implement &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/issues/5&quot;&gt;TV Shows tracking&lt;/a&gt;. As much as I&#039;d like to do the latter, it&#039;s more likely that I do the former, because Solid Focus was my first Solid App and it is the one in more need of a facelift.&lt;/p&gt;
&lt;p&gt;Whatever I decide, I won&#039;t have any updates until January so I hope you enjoy the end of the year and have a chance to spend it with the ones you love. As for me, I can&#039;t wait to do &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/%40noeldemartin/105525557154075833&quot;&gt;my end of year ritual&lt;/a&gt; and I&#039;m looking forward to yet another lap around the sun in this hunk of stone.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "Skeuomorphic Software"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/skeuomorphic-software" />
            <id>https://noeldemartin.com/blog/skeuomorphic-software</id>
            <published>2023-11-28T06:00:00+00:00</published>
            <updated>2023-11-28T06:00:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/skeuomorphic-software&quot;&gt;Skeuomorphic Software&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/skeuomorphic-software&quot;&gt;Skeuomorphic Software&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Learning CSS"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-css#comment-7" />
            <id>https://noeldemartin.com/tasks/learning-css#comment-7</id>
            <published>2023-10-18T14:03:44+00:00</published>
            <updated>2023-10-18T14:03:44+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css#comment-7&quot;&gt;Learning CSS&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Hi there!&lt;/p&gt;
&lt;p&gt;With all the summer holidays and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://web.archive.org/web/20230830022710/https://moodlemoot.org/&quot;&gt;various other things&lt;/a&gt; going on, it took me a bit more time to go through this module. But now it&#039;s done! This one was all about Typography and Images. Even though it may seem trivial at first, there&#039;s actually a lot of nuance.&lt;/p&gt;
&lt;p&gt;First of all, I must confess my relation with these. And the truth is that it&#039;s almost non-existent 😅️. When it comes to fonts, most of the time I use the default from the system. If anything, when an app deserves its own branding, I choose a single font and use it everywhere (for example, I&#039;m using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/JulietaUla/Montserrat&quot;&gt;Montserrat&lt;/a&gt; for &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/media-kraken/&quot;&gt;Media Kraken&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/Fonthausen/Livvic&quot;&gt;Livvic&lt;/a&gt; for &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://umai.noeldemartin.com/&quot;&gt;Umai&lt;/a&gt;). I do take advantage of font weights and sizes to add some variety, but that&#039;s as far as I go. My approach to images is not much better. I usually have a single image that is big enough for most screens, and that&#039;s it.&lt;/p&gt;
&lt;p&gt;I was well aware, even before taking this module, that I have a lot to improve here. But the thing is that for the types of products I work on, these things are an after-thought. As has been made clear with the content in this module, doing these properly takes a lot of time and dedication. And quite honestly, in my list of priorities, these are at the bottom. Still, I appreciate their importance, and I&#039;ve learned a thing or two in these lessons that I&#039;ll be able to apply right away.&lt;/p&gt;
&lt;p&gt;One of the first lessons of the module makes a great point that hadn&#039;t downed on me. The exact same website is very likely to look different in different devices (even if the screen has the same resolution). Which is obvious if you think about it, there are differences in browsers, operative systems, etc. But I had this idea of &amp;quot;pixel-perfect design&amp;quot;, and how websites should be implemented that way. Many things in this course so far have reaffirmed it, like &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css#comment-5&quot;&gt;the attention to detail&lt;/a&gt; I mentioned in previous entries. But other things like fluid design, and the rendering quirks introduced in this module, make me think otherwise. In reality, the way designs should be implemented is with specific rules, rather than pixels. For example, if something should have a given margin, it shouldn&#039;t be in order to make look exactly as you see it in your design tool. It should be to conform to a certain layout (like the popular &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://duckduckgo.com/?q=12-column+grid&quot;&gt;12-column grid&lt;/a&gt;), or align to other elements in the UI. Other than that, content should flow freely through the screen, and grow or shrink depending on its contents.&lt;/p&gt;
&lt;p&gt;Other than getting conceptual insights, I also learned about a couple of specifics. I was already aware of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fonts.google.com/&quot;&gt;Google Fonts&lt;/a&gt; and similar websites, but I had been downloading and configuring them by hand to remove the dependency with Google. Turns out there are some tools out there, like this &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://gwfh.mranftl.com/fonts&quot;&gt;google-webfonts-helper&lt;/a&gt;, that make the process seamless. I also found about a couple of CSS features I didn&#039;t even know existed, like the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/%40font-face/font-display&quot;&gt;font-display&lt;/a&gt; property to configure font loading strategies, the concept of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/TR/css-text-3/#line-breaking&quot;&gt;line break opportunities&lt;/a&gt; to understand how text wraps, the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture&quot;&gt;&lt;code&gt;&amp;lt;picture&amp;gt;&lt;/code&gt;&lt;/a&gt; element to control multiple image sources, etc. I was also glad to see one of my biggest pet peeves mentioned: using the optional line length for text readability (50 to 75 characters per line). I learned about it in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.refactoringui.com/&quot;&gt;Refactoring UI&lt;/a&gt;, and ever since I noticed it, I haven&#039;t been able to make any UI without following that rule of thumb.&lt;/p&gt;
&lt;p&gt;There is still a lot more I have to learn on the topic of Typography and Images, but this module was definitely a good overview of everything that is important. I&#039;ll be sure to revisit it in the future if I ever want to go more in depth.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework#comment-4" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework#comment-4</id>
            <published>2023-10-07T09:29:04+00:00</published>
            <updated>2023-10-07T09:29:04+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-4&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Summer is over (kind of), and I&#039;m back in the saddle.&lt;/p&gt;
&lt;p&gt;I did continue working on this during &lt;a href=&quot;https://noeldemartin.com/tasks/working-from-japan&quot;&gt;my stay in Japan&lt;/a&gt;, but I wasn&#039;t trying to get anything done. And to be honest, that&#039;s been my mindset for this task since I started it. But I think it&#039;s time to start setting some goals into my sight.&lt;/p&gt;
&lt;p&gt;Some of the things I&#039;ve been doing were productive though. For example, I finally added &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://aerogel.js.org/playground/offline&quot;&gt;Offline First&lt;/a&gt; functionality to the framework, and it was easy to extract from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;htps://umai.noeldemartin.com/&quot;&gt;Umai&lt;/a&gt;. Other things I&#039;ve been doing haven&#039;t been so fun; in particular all the jazz with bundling, versioning, and taming Node&#039;s dependency hell. There&#039;s been a lot of talk about AIs &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=N-kgb1QtSnU&quot;&gt;taking our jobs&lt;/a&gt; as programmers, though I don&#039;t think that&#039;s happening any time soon. But if anything actually happens, I hope that is AIs taking care of all of this mess. One can only hope.&lt;/p&gt;
&lt;p&gt;Anyhow, to wrap up this exploration phase I&#039;ve prepared a demo that I think encompasses what the framework is all about. If you still weren&#039;t sure what the heck I&#039;m trying to do, this should make it clear. And I thought the best way to do the demo was on video. You can find it in my Youtube channel: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=JXyCH_S9efk&quot;&gt;Aerogel Sneak Peek&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The process of making the video was in itself interesting, because it&#039;s the first time I do something like this. It&#039;s not like I&#039;m going to become a Youtuber or anything, but I always enjoy watching &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=wXaC0YvDgIo&amp;amp;list=PL9wALaIpe0Py6E_oHCgTrD6FvFETwJLlx&quot;&gt;videos of developers going through code&lt;/a&gt;. So I thought it would be fun to give it a shot myself. I&#039;m not 100% happy with the result, but I also think the point of doing this is to get it done quickly, so it&#039;s fine that it turned out a bit rough. If you&#039;re curious about the tooling, I used &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://obsproject.com/&quot;&gt;OBS&lt;/a&gt; for recording the video/camera, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.olivevideoeditor.org/&quot;&gt;Olive&lt;/a&gt; for editing. Honestly, it was a lot easier than I expected. And if I want to improve anything about this in the future, it&#039;s more related with my presentation skills than video editing or recording. Special shoutout to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.betterdevscreencasts.com/&quot;&gt;Better Dev Screencasts&lt;/a&gt; though. Simon is awesome, and even though I didn&#039;t spend almost any time on my setup, it was still useful.&lt;/p&gt;
&lt;p&gt;Now that that&#039;s done, my next goal will be to start writing real apps using the framework. There are still many things I haven&#039;t finished in the framework itself, but it&#039;s better to start using it rather than waiting for it to be perfect. And the best place to get started is rewriting &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ramen.noeldemartin.com/&quot;&gt;Ramen&lt;/a&gt;. Ideally, the UI will stay the same, because one of my goals with this framework is to empower bespoke UIs. We&#039;ll see how that goes!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Presented "Moodle App Testing: Then and Now"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://www.youtube.com/watch?v=LYDFpaDv27o" />
            <id>https://www.youtube.com/watch?v=LYDFpaDv27o</id>
            <published>2023-09-21T10:30:00+00:00</published>
            <updated>2023-09-21T10:30:00+00:00</updated>
            <summary type="html">
                Presented &lt;a href=&quot;https://www.youtube.com/watch?v=LYDFpaDv27o&quot;&gt;Moodle App Testing: Then and Now&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I&#039;m giving a talk at MoodleMoot Global 2023: &lt;a href=&quot;https://www.youtube.com/watch?v=LYDFpaDv27o&quot;&gt;Moodle App Testing: Then and Now&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Completed "Working from Japan"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/working-from-japan#comment-5" />
            <id>https://noeldemartin.com/tasks/working-from-japan#comment-5</id>
            <published>2023-09-01T14:09:48+00:00</published>
            <updated>2023-09-01T14:09:48+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/working-from-japan#comment-5&quot;&gt;Working from Japan&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/working-from-japan#comment-5&quot;&gt;Working from Japan&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Working from Japan"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/working-from-japan#comment-4" />
            <id>https://noeldemartin.com/tasks/working-from-japan#comment-4</id>
            <published>2023-09-01T13:44:20+00:00</published>
            <updated>2023-09-01T13:44:20+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/working-from-japan#comment-4&quot;&gt;Working from Japan&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Hey, I&#039;m back in Barcelona.&lt;/p&gt;
&lt;p&gt;I don&#039;t have as much to say this time, but I want to mention the contrast with the first part of my trip. As I anticipated, the last 3 weeks were quite hectic. Which is not to say they weren&#039;t fun, but I think it&#039;s ironic that I felt more time affluence whilst working than on holidays 😅️.&lt;/p&gt;
&lt;p&gt;To be fair though, I did visit and experience a lot more things in these 3 weeks; but honestly I&#039;m not sure that means it was better. Specially the last week, which I spent entirely in Tokyo and the days were a bit repetitive. Still, I love Japan, so even that last week was great and I&#039;ll miss it.&lt;/p&gt;
&lt;p&gt;However, even coming to this realization, I&#039;m not sure if I&#039;ll change my habits. In part because it&#039;s not just my decision to make (I wasn&#039;t traveling alone on this second phase). But also because I&#039;m not sure there is a workaround to &amp;quot;taking things slowly&amp;quot; without resulting in huge economical detriment. Or radically changing my lifestyle. With that I don&#039;t mean that I was living a lavish life in Japan; the main finantial issue with prolonging &amp;quot;mini-lives&amp;quot; is that I still have a life to maintain back at home. So I&#039;m essentially paying rent twice (which is a huge privilege to be able to do). And I don&#039;t see how to fix that without going full nomad. For now, short mini-lives will have to do.&lt;/p&gt;
&lt;p&gt;This time I won&#039;t leave you with a list of highlights; instead I&#039;ll link to this &lt;a href=&quot;/japan-tips&quot;&gt;list of tips I wrote&lt;/a&gt; and leave you with some pictures:&lt;/p&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/japan/observation-deck.jpg&quot; alt=&quot;Observation deck&quot;&gt;
&lt;figcaption&gt;
This is an observation deck I often visited to do some exercise :D.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/japan/sendai-daikannon.jpg&quot; alt=&quot;Sendai Daikannon&quot;&gt;
&lt;figcaption&gt;
The &lt;a href=&quot;https://en.wikipedia.org/wiki/Sendai_Daikannon&quot; target=&quot;_blank&quot;&gt;Sendai Daikannon&lt;/a&gt;, a 92m statue.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/japan/ramen-shrine.jpg&quot; alt=&quot;Ramen Shrine&quot;&gt;
&lt;figcaption&gt;
Ramen Shrine in &lt;a href=&quot;https://en.wikipedia.org/wiki/Kitakata%2C_Fukushima&quot; target=&quot;_blank&quot;&gt;Kitakata&lt;/a&gt;.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/japan/jump-shop.jpg&quot; alt=&quot;Jump Shop&quot;&gt;
&lt;figcaption&gt;
Luffy statue in &lt;a href=&quot;https://www.shonenjump.com/j/jumpshop/&quot; target=&quot;_blank&quot;&gt;Jump Shop&lt;/a&gt;.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/japan/shinjuku-cat.jpg&quot; alt=&quot;Shinjuku Cat&quot;&gt;
&lt;figcaption&gt;
3D cat in &lt;a href=&quot;https://en.wikipedia.org/wiki/Shinjuku&quot; target=&quot;_blank&quot;&gt;Shinjuku&lt;/a&gt;.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/japan/tashirojima.jpg&quot; alt=&quot;Tashirojima&quot;&gt;
&lt;figcaption&gt;
Cats of &lt;a href=&quot;https://en.wikipedia.org/wiki/Tashirojima&quot; target=&quot;_blank&quot;&gt;Tashirojima&lt;/a&gt;, cat island.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/japan/tashirojima-2.jpg&quot; alt=&quot;Tashirojima 2&quot;&gt;
&lt;figcaption&gt;
More cats of Tashirojima (ok, I&#039;ll stop with the cats).
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/tasks/japan/shonen-jump.jpg&quot; alt=&quot;Weekly Shonen Jump No. 30, 1990&quot;&gt;
&lt;figcaption&gt;
&lt;a href=&quot;https://comicvine.gamespot.com/weekly-shonen-jump-1116-no-30-1990/4000-541602/&quot; target=&quot;_blank&quot;&gt;Weekly Shonen Jump Number 30 from 1990&lt;/a&gt;, released on the week I was born. It&#039;s crazy that I could buy it for just 400¥ (~3€) 🤯️.
&lt;/figcaption&gt;
&lt;/figure&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Working from Japan"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/working-from-japan#comment-3" />
            <id>https://noeldemartin.com/tasks/working-from-japan#comment-3</id>
            <published>2023-08-03T10:01:34+00:00</published>
            <updated>2023-08-03T10:01:34+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/working-from-japan#comment-3&quot;&gt;Working from Japan&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I&#039;m finishing the work portion of my stay in the land of the samurai, and so far it&#039;s been a great experience. So great, in fact, that I&#039;m starting to question whether I should be doing this more often rather than plain holidays. More on that later.&lt;/p&gt;
&lt;p&gt;First of all, work itself went well. The time difference was noticeable (+7 hours from Spain), but I was already used to working in a semi-asynchronous fashion; so that hasn&#039;t been much of a problem. The only relevant difference is that I had to cram all the real-time interactions into a couple of hours, and skip some meetings. Otherwise, it has been pretty much work as usual. I&#039;ve been &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.airbnb.com/rooms/18245625&quot;&gt;renting a room through Airbnb&lt;/a&gt;, and I haven&#039;t had any issues with the Internet connection or any of the facilities. Even though I was worried about working in a &amp;quot;shared workspace&amp;quot; (I don&#039;t like working in coffee shops), it was pretty good overall. And I could retire to my room for some private work time and video calls.&lt;/p&gt;
&lt;p&gt;I also tried to connect with local communities, but I wasn&#039;t so successful at that. I attended a couple of meetups: one &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.meetup.com/start-up-mentor/events/294236109/&quot;&gt;about startups&lt;/a&gt;, and one &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.meetup.com/language-and-cultural-exchange/events/295042326/&quot;&gt;about language exchange&lt;/a&gt;. They were fun, but honestly, a bit lackluster. There weren&#039;t many attendees, around 10 people each (although I&#039;m probably spoiled because meetups in Barcelona are huge). I also struggled to find topics of interest, as you can tell by the second meetup. But most importantly, I did not meet many locals. Most of the people attending were from other countries, and even though some of them were currently living in Japan, it was rare that anyone had been here more than a couple of years. Which again, shouldn&#039;t surprise me given that I didn&#039;t attend any meetups in Japanese (although, again, I have to say in Barcelona I&#039;ve attended many &amp;quot;English speaking&amp;quot; meetups with local attendees, such as myself). In any case, they were fun and I&#039;m glad I attended, but there is certainly a lot more I&#039;d like to explore about the local scene. Maybe next time!&lt;/p&gt;
&lt;p&gt;Ironically, I&#039;ve been &amp;quot;commuting&amp;quot; more often than usual. Not to go to work, but I&#039;ve been traveling in weekends and some weekdays. Which has given me the chance to finally read &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/People/Berners-Lee/Weaving/Overview.html&quot;&gt;Weaving The Web&lt;/a&gt;. Something I&#039;ve noticed being here is that I have a lot more &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=nd8NLGBYp3U&quot;&gt;time affluence&lt;/a&gt;. It&#039;s funny, because it&#039;s not like I have a lot more responsibilities back home. But the fact that I&#039;ve been letting my schedule open meant that I have been doing things in the spur of the moment (believe it or not, I&#039;ve even been bored at times 😱️). Maybe one takeaway from this is that I should reconsider my tendency to have a daily routine and make use of timeboxing so much.&lt;/p&gt;
&lt;p&gt;Finally, I don&#039;t want to get much into life stuff, but I&#039;ll share a couple of things. I&#039;m not vegetarian, but I try to reduce my consumption of animal protein. Well, that has been near impossible here :/. I haven&#039;t been eating out often, but even going to the supermarket, vegetable sources of protein are almost non existent. In Spain, I rely heavily on legumes (chickpeas, lentils, beans, etc.), but here the only viable option is tofu. Sure, you have a wide selection of tofu; but honestly all taste the same to me. And given that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://umai.noeldemartin.com/viewer?url=https%3A%2F%2Fnoeldemartin.solidcommunity.net%2Fcookbook%2Fpublic&quot;&gt;I enjoy cooking&lt;/a&gt;, it wasn&#039;t great to always use the same ingredient. Vegetables and fruits are very good though, but something else I found distracting is the heavy use of plastics. I&#039;m not zero-waste either, but I have reduced my use of single-use plastics considerably. And that has also been a challenge in Japan. In fact, it&#039;s a lot worse than in Spain because they&#039;ll often do things like selling an individual banana inside of a plastic bag :/. To be fair though, it wasn&#039;t immediately obvious how to reduce my plastic consumption in Spain; and eventually I achieved it because I don&#039;t go to the supermarket anymore. But here in Japan, I haven&#039;t been able to avoid it as much. Other than those, life is good :). I&#039;ve been able to do mostly everything I would do in my daily life back in Spain, and even though I haven&#039;t signed up for a gym, I&#039;ve managed to do some exercise around the neighbourhood (I brought some elastic bands that came in handy).&lt;/p&gt;
&lt;p&gt;Now, is having mini-lives better than holidays? Honestly, what I&#039;m enjoying from the experience has nothing to do with work itself. I could be doing the same thing on holidays, but it seems like my lifestyle when I&#039;m in &amp;quot;holiday mode&amp;quot; basically means visiting things every day (usually tourist attractions), and not staying more than a couple of days in the same city. Which in a way is understandable, because I want to maximize the little time I have in another country to experience as much as possible. But I&#039;ve found that mini-lives allow to take things more slowly, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=yDn_zwQjhfQ&quot;&gt;seep into the culture&lt;/a&gt;. It also reduces my consumerism tendencies, which I despise but often fall prey to. So I think I&#039;ll be doing this again. Although it&#039;s definitely not a wise financial decision; we&#039;ll see!&lt;/p&gt;
&lt;p&gt;I said this wouldn&#039;t become a travel blog, but I&#039;d be remiss if I didn&#039;t at least mention some of the highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=gmIwxqdwgrI&quot;&gt;Ramen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Nakano_Broadway&quot;&gt;Nakano Broadway&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Nihon-ji&quot;&gt;Nihon-ji Temple&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Don_Quijote_(store)&quot;&gt;Don Quijote (store)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.raumen.co.jp/english/&quot;&gt;More Ramen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://museum.toei-anim.co.jp/&quot;&gt;Toei Animation Museum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Sumidagawa_Fireworks_Festival&quot;&gt;Hanabi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tomorrow I&#039;m starting my holidays, so don&#039;t expect much for the next update. But I&#039;ll leave this open in case I find something interesting to share.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Learning CSS"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-css#comment-6" />
            <id>https://noeldemartin.com/tasks/learning-css#comment-6</id>
            <published>2023-07-26T09:51:20+00:00</published>
            <updated>2023-07-26T09:51:20+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css#comment-6&quot;&gt;Learning CSS&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;After almost 3 months, I&#039;m finally done with Module 5: Responsive and Behavioural CSS. I&#039;ve dedicated the same time as usual (1 hour a week), so I guess that means this module was longer. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/css-for-js-workshop-5&quot;&gt;The workshop&lt;/a&gt; was specially challenging, since it took me like 3 to 4 hours to complete.&lt;/p&gt;
&lt;p&gt;The lessons were interesting and touched on a topic I&#039;m very fond of. But this time I was already familiar with most of the concepts, as I&#039;ve always kept responsiveness in mind. Although something I don&#039;t think much about is fluid design. Essentially, responsive means that you have different styles depending on the breakpoints, whilst fluid means that values scale with the size of the viewport. Both have their pros and cons, and Josh gives some compelling arguments to use both as necessary.&lt;/p&gt;
&lt;p&gt;This module also introduced CSS variables, which reminded me of something I forgot to mention in previous updates. One way to think about CSS is as a collection of algorithms; the layout algorithms. And you can see properties as the arguments to these algorithms. For example, even though the &lt;code&gt;width&lt;/code&gt; property has the same name, it can have completely different behaviours on a &lt;code&gt;display: block&lt;/code&gt; or a &lt;code&gt;display: flex&lt;/code&gt; element. Using this mental model, CSS variables and all their quirks are a lot easier to understand. You can learn more about that idea in this post: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/css/understanding-layout-algorithms/&quot;&gt;Understanding Layout Algorithms&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In summary, overall I enjoyed this module as well. But this time, there was something I didn&#039;t like: the code stack :/. In module 3, I learned about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://styled-components.com/&quot;&gt;Styled Components&lt;/a&gt; and it was fun to learn something new. But now it&#039;s starting to become annoying, since working with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://tailwindcss.com/&quot;&gt;TailwindCSS&lt;/a&gt; is a lot easier (not to mention React vs Vue). It was annoying to the point that completing the workshop felt more like a fight against the tools than learning CSS. Hopefully, it won&#039;t be much of an issue for the remainder of the course.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework#comment-3" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework#comment-3</id>
            <published>2023-07-01T06:07:48+00:00</published>
            <updated>2023-07-01T06:07:48+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-3&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I haven&#039;t reached any important milestones yet, but it&#039;s been a month since I started working on this so I thought I&#039;ll give a short update on how things are going.&lt;/p&gt;
&lt;p&gt;One of the new things I&#039;m trying with this project is using a mono-repo. I have seen this in other frameworks, so I thought I&#039;d give it a try and so far it&#039;s working great. I could have used some tools such as &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://lerna.js.org/&quot;&gt;Lerna&lt;/a&gt; or &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://turbo.build/repo&quot;&gt;Turborepo&lt;/a&gt;, but I started with npm&#039;s built-in in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://docs.npmjs.com/cli/v7/using-npm/workspaces&quot;&gt;workspaces&lt;/a&gt; and so far that&#039;s enough.&lt;/p&gt;
&lt;p&gt;I also tried using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vitest.dev/&quot;&gt;Vitest&lt;/a&gt;, and it&#039;s also very nice. It&#039;s been very easy to get started with since it works mostly like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://jestjs.io/&quot;&gt;Jest&lt;/a&gt;, but mocking has been far easier and everything seems faster. There are also some neat features such as &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vitest.dev/guide/testing-types.html&quot;&gt;Testing Types&lt;/a&gt; that are missing from Jest. It also lives up to the promise of working with the same Vite config in my apps, but for library packages I&#039;m using Rollup so the configuration isn&#039;t unified yet. Although I&#039;m giving serious consideration to using Vite for bundling libraries as well. I&#039;ll explore that at some point.&lt;/p&gt;
&lt;p&gt;Other than that, there isn&#039;t much else worth sharing. But if you&#039;re curious, I have set up &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://aerogel.js.org/playground/&quot;&gt;a playground&lt;/a&gt; with some of the basic features I&#039;ve been working on. There is also links to the source for each page, so if you&#039;re curious that should give you an idea of what working with the framework will look like.&lt;/p&gt;
&lt;p&gt;Funnily enough, I still haven&#039;t added any Solid-specific functionality; that will come from Soukai and extracting the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/tree/main/src/framework/auth/authenticators&quot;&gt;Authenticator&lt;/a&gt; pattern I&#039;m using in my apps.&lt;/p&gt;
&lt;p&gt;Given that we&#039;re in summer now and &lt;a href=&quot;https://noeldemartin.com/tasks/working-from-japan&quot;&gt;I&#039;ll be working less than usual&lt;/a&gt;, I don&#039;t expect to have any relevant updates for a couple of months. That&#039;s also the reason why I&#039;m not thinking of my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/1.2-chapter-03#setting-the-appetite&quot;&gt;appetite&lt;/a&gt; or setting any deadlines yet. But I&#039;ll probably start thinking about that in September/October.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Working from Japan"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/working-from-japan#comment-2" />
            <id>https://noeldemartin.com/tasks/working-from-japan#comment-2</id>
            <published>2023-07-01T05:43:45+00:00</published>
            <updated>2023-07-01T05:43:45+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/working-from-japan#comment-2&quot;&gt;Working from Japan&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve wanted to have a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://kadavy.net/blog/posts/mini-lives/&quot;&gt;mini-life&lt;/a&gt; for a long time, but for one thing or another I&#039;ve been postponing it. Don&#039;t worry though, this site won&#039;t become a travel blog; it&#039;s just that sometimes I find it interesting to talk about &lt;a href=&quot;https://noeldemartin.com/tasks/growing-vegetables&quot;&gt;other things I&#039;m doing&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Even though I&#039;ve been working remotely for years now, this will be the first time I&#039;ll be doing it from a different country. To be honest, the nomad life is not appealing to me, but I do like traveling and experiencing other cultures. This should be a good way to take advantage of the situation.&lt;/p&gt;
&lt;p&gt;There are many countries I could have chosen to start, but Japan had to be the first (I&#039;m sure you already noticed how much I like japanese culture). I already went some years ago for holidays, but it felt short and I was mostly moving around. This time, I hope to experience more of the daily life and connect with some local communities (although I&#039;ll also be on holidays for the second half of my trip).&lt;/p&gt;
&lt;p&gt;On that note, if you know of any meetups or some place I should visit let me know! I&#039;ll be looking for programming or entrepreneurship communities, but I guess if I can&#039;t find any I can always try some language exchange.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Working from Japan"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/working-from-japan" />
            <id>https://noeldemartin.com/tasks/working-from-japan</id>
            <published>2023-07-01T05:43:30+00:00</published>
            <updated>2023-07-01T05:43:30+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/working-from-japan&quot;&gt;Working from Japan&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/working-from-japan&quot;&gt;Working from Japan&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I&#039;ll be in Tokyo most of July and August having a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://kadavy.net/blog/posts/mini-lives/&quot;&gt;mini-life&lt;/a&gt;. Let me know if you&#039;re around and want to meet up!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework#comment-2" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework#comment-2</id>
            <published>2023-05-27T06:27:52+00:00</published>
            <updated>2023-05-27T06:27:52+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework#comment-2&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I never thought I&#039;d be creating a framework, but here we are. Though I have to say it probably sounds more grandiose than it is. I&#039;m not trying to reinvent the wheel. Rather, I intend to encapsulate what I&#039;m already doing in my apps in a way that&#039;s easier to use. So it&#039;ll definitely be built on top of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vuejs.org/&quot;&gt;Vue&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://tailwindcss.com/&quot;&gt;TailwindCSS&lt;/a&gt;, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://soukai.js.org/&quot;&gt;Soukai&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But I have to start this task with a confession. I&#039;ve already been working on this for a while 🙈️. Whilst doing &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server&quot;&gt;the previous task&lt;/a&gt;, it was so boring that I just started to tinker on this &amp;quot;on the side&amp;quot;. You may not know this, but I work 4 days a week at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://moodle.com/&quot;&gt;Moodle&lt;/a&gt;, and I allocate 1 day a week to &amp;quot;side-project work&amp;quot;; which is what I write about in this website. In a way, you could say I have a normal 5 days workweek; it&#039;s just that I&#039;m self-employed 1 day a week (and I don&#039;t have a salary xD). But that means that I still have free weekends and afternoons where I do &amp;quot;life stuff&amp;quot; (not related to programming). However, as things go, sometimes I end up coding anyways. That&#039;s usually the same as my side-project work, but during the last month that has felt like a chore and I didn&#039;t feel like working on it. So you could say this has been my side-side-project 😅️.&lt;/p&gt;
&lt;p&gt;Anyhow, I&#039;m focusing my full attention on this now!&lt;/p&gt;
&lt;p&gt;I started making apps &amp;quot;seriously&amp;quot; about 4 years ago (I&#039;ve talked about this &lt;a href=&quot;https://noeldemartin.com/fosdem&quot;&gt;in a recent talk I gave at FOSDEM&lt;/a&gt;). During this process, I&#039;ve been mostly learning about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidproject.org&quot;&gt;the Solid Protocol&lt;/a&gt; and how to make apps the best they can be (according to my tastes, of course). At the beginning, there was a lot of things that changed from one app to the next, but now I feel like I&#039;ve converged on a certain architecture. The trouble is that I&#039;d like to update my earlier apps, but I don&#039;t want to make a complete rewrite. So that&#039;s the basic idea and motivation for this task.&lt;/p&gt;
&lt;p&gt;My ultimate goal with all of this is being able to focus on the UX of the app itself, rather than thinking about Solid or how to organize my code. I want to avoid &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=WSes_PexXcA&quot;&gt;accidental &lt;del&gt;complexity&lt;/del&gt; complication&lt;/a&gt; through &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=zKyv-IGvgGE&amp;amp;t=1037s&quot;&gt;conceptual compression&lt;/a&gt;. The funny thing is that I was already doing that, back in the days when I was using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravel.com/&quot;&gt;Laravel&lt;/a&gt;. But when I started working on Solid Apps, I lost that. I regained the data layer with Soukai, and I want to create this framework for everything else.&lt;/p&gt;
&lt;p&gt;So today, it&#039;s official. I&#039;m working on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/aerogel&quot;&gt;Aerogel&lt;/a&gt;!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Making a Web Application Framework"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/making-a-web-application-framework" />
            <id>https://noeldemartin.com/tasks/making-a-web-application-framework</id>
            <published>2023-05-27T06:22:16+00:00</published>
            <updated>2023-05-27T06:22:16+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework&quot;&gt;Making a Web Application Framework&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/making-a-web-application-framework&quot;&gt;Making a Web Application Framework&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I&#039;ve been &lt;a href=&quot;https://noeldemartin.com/projects&quot;&gt;making apps&lt;/a&gt; for a while now, and I&#039;m starting to repeat myself. So I&#039;ve decided to create a web framework.&lt;/p&gt;
&lt;p&gt;It will hopefully be useful for others as well, specially for those who want to &lt;a href=&quot;https://noeldemartin.com/fosdem&quot; target=&quot;_blank&quot;&gt;get started with Solid&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Configuring a self-hosted Nextcloud server"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server#comment-5" />
            <id>https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server#comment-5</id>
            <published>2023-05-22T16:43:14+00:00</published>
            <updated>2023-05-22T16:43:14+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server#comment-5&quot;&gt;Configuring a self-hosted Nextcloud server&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server#comment-5&quot;&gt;Configuring a self-hosted Nextcloud server&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Configuring a self-hosted Nextcloud server"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server#comment-4" />
            <id>https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server#comment-4</id>
            <published>2023-05-22T16:42:33+00:00</published>
            <updated>2023-05-22T16:42:33+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server#comment-4&quot;&gt;Configuring a self-hosted Nextcloud server&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today&#039;s update should be more uplifting than the last, because I&#039;ve done some progress! In fact, I&#039;m done with the task :D. Let&#039;s get into it.&lt;/p&gt;
&lt;p&gt;Before getting started, this is the architecture I ended up with:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/img/tasks/nextcloud/final-architecture.png&quot;&gt;&lt;img src=&quot;/img/tasks/nextcloud/final-architecture.png&quot; alt=&quot;My actual Nextcloud architecture&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As you can see, I abandoned the idea of hosting a Nextcloud instance in my local network. But now that I&#039;ve learned more about it, I think I could actually pull it off (though I don&#039;t see a point anymore). In my last update, I mentioned that a domain is required to run Nextcloud, and all the headaches I ran into with the pi-hole and whatnot. However, once I tried to install it in the server I realized this restriction is only imposed in the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/nextcloud/all-in-one&quot;&gt;All-in-One&lt;/a&gt; out-of-the-box solution. After digging into the repository and reading some documentation, I realized I didn&#039;t want to do that anyways. Instead, I created my own set up which combines a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/nextcloud/all-in-one/tree/main/manual-install&quot;&gt;Manual installation&lt;/a&gt; with a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md&quot;&gt;Reverse Proxy&lt;/a&gt; (using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/nginx-agora&quot;&gt;nginx-agora&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Something else I did which was non-standard is storing the actual files in a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.hetzner.com/storage/storage-box&quot;&gt;Hetzner Storage Box&lt;/a&gt;. The awesome part about it is that even if I mess something up in the server or botch up some upgrades, the files are decoupled. So it&#039;d be very easy to rebuild on a brand new server. And I&#039;m only paying 3.81€ for 1TB of storage. Doing this wasn&#039;t completely straightforward, but thanks to my tinkering from last time, I learned about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/WebDAV&quot;&gt;WebDAV&lt;/a&gt;. And it turns out to be a perfect solution for this. Essentially, I am mounting Hetzner&#039;s Storage Box on the server like a normal folder, and I&#039;ve configured Nextcloud to use that folder to store the files.&lt;/p&gt;
&lt;p&gt;If you&#039;re interested in the details, you can find my configuration up in GitHub: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/nextcloud&quot;&gt;github.com/NoelDeMartin/nextcloud&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So yeah, that pretty much settles all my storage needs for the time being. I&#039;ve installed Nextcloud clients in all the other machines, and it seems to be working fine so far. I have to say that the user experience is not super smooth; it&#039;s a bit clunky at times, with more than a few glitches here and there. But so far I haven&#039;t run into any important bugs, so it seems good enough.&lt;/p&gt;
&lt;p&gt;Something I&#039;ve also postponed is hosting my Solid data with Nextcloud. I continued tinkering with the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/pdsinterop/solid-nextcloud/&quot;&gt;solid-nextcloud&lt;/a&gt; extension, but I realized something that was a deal-breaker for me. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/pdsinterop/solid-nextcloud/issues/123&quot;&gt;The id of the documents are very cumbersome&lt;/a&gt; :/. But I think there&#039;s still a possibility that I use it in the future. The UX of having Solid data in Nextcloud was great, and even though I ran into some issues I could work around most of them. But I think I&#039;d need to dedicate a lot more time to make it good enough, so I&#039;ll leave it here for now.&lt;/p&gt;
&lt;p&gt;About the home server, I haven&#039;t done much since the last update other than installing the Nextcloud client. I tried to come up with a solution to turn it on and off easily, but unfortunately it seems like my old laptop doesn&#039;t support &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Wake-on-LAN&quot;&gt;Wake-On-Lan&lt;/a&gt; or any other viable solution. So right now I&#039;m opening the lid, pressing the power button, and closing it again. Which doesn&#039;t seem too bad, but it&#039;s a bit annoying for a &amp;quot;server&amp;quot;. In the future I&#039;ll look into hosting it on a Raspberry PI instead, and I should be able to keep it running 24/7. But for my current needs, it&#039;s ok to just turn it on sporadically.&lt;/p&gt;
&lt;p&gt;And that&#039;s it for this task! There&#039;s definitely more things I want to look into, but I&#039;m itching to get back into coding again so that&#039;s where I&#039;ll leave it this time.&lt;/p&gt;
&lt;p&gt;Before closing this though, I&#039;d like to give a shout-out to Derek Sivers for his recently created &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sive.rs/ti&quot;&gt;Tech Independence&lt;/a&gt; guide. It&#039;s a fun coincidence that shortly after I started working on this task, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://tim.blog/2023/04/21/derek-sivers/&quot;&gt;he made a reappearance in Tim&#039;s podcast&lt;/a&gt; talking exactly about this. I&#039;ve looked at the guide, and even tried some of the tools he mentions (I didn&#039;t know about Hetzner Storage Box before!). But ultimately, I think most of them are &amp;quot;too simple&amp;quot; for my needs. Which is funny to say, because I&#039;ve been talking about how I want to simplify my infrastructure and all that. The thing I&#039;ve realized is that I want simplicity, but I also crave good UIs and hands-off experiences. Most of the tools he&#039;s recommending are great, but either don&#039;t have a nice UI or are too cumbersome to use regularly. In any case, I think we&#039;re super aligned when it comes to values and the idea of tech independence. If you&#039;ve been reading this and found it interesting, I strongly suggest checking out Derek&#039;s guide. You may find something you like :).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Learning CSS"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-css#comment-5" />
            <id>https://noeldemartin.com/tasks/learning-css#comment-5</id>
            <published>2023-05-08T14:15:05+00:00</published>
            <updated>2023-05-08T14:15:05+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css#comment-5&quot;&gt;Learning CSS&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed module 4, which was all about flexbox.&lt;/p&gt;
&lt;p&gt;If there was ever a good example of a CSS feature I&#039;ve been using a lot but didn&#039;t understand, this is it 😅️. I&#039;ve been building almost everything with flexbox, and I&#039;ve ran into some issues here and there, but for the most part I thought I had it under control. Well, after taking this module I just realized how wrong I was. To be fair with myself though, I did know 80% of its mechanisms; and it isn&#039;t like I was using it &amp;quot;wrong&amp;quot;. But this definetly took me to the next level.&lt;/p&gt;
&lt;p&gt;One of the things that keeps blowing my mind in this course is learning the underlying mechanisms of the language I wasn&#039;t aware of. Which is funny, because I consider myself &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://duckduckgo.com/?t=ffab&amp;amp;q=bottom+up+vs+top+down+learning&quot;&gt;a bottom-up learner&lt;/a&gt;, but for some reason when it comes to CSS I&#039;ve been flying blind my whole life. In this module, I&#039;ve learned about the core concepts that explain the way flexbox works: Hypothetical size, primary axis vs cross axis, justify vs align, items vs content, etc.&lt;/p&gt;
&lt;p&gt;At the end of the module, there is a review that was very helpful to solidify all these concepts. If you&#039;re curious about them, you can check it out yourself in this blog post: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/css/interactive-guide-to-flexbox/&quot;&gt;An Interactive Guide to Flexbox&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In these lessons I&#039;ve also realized how much attention to detail Josh puts into his UI. I&#039;m no designer, but I enjoy working with UI and I like to think that I pay attention to detail as well. But I still learned some things I&#039;ve been missing in my own designs. For example, aligning the baseline of text. This also made me realize how powerful flexbox really is, because it can do some crazy stuff with nested flex containers that are not obvious at all. Can&#039;t wait for module 9, &amp;quot;Little Big Details&amp;quot;!&lt;/p&gt;
&lt;p&gt;Finally, in order to speed-run through all the important concepts, I took &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://flexboxfroggy.com/&quot;&gt;Flexbox Froggy&lt;/a&gt; again. I&#039;m glad to say I completed it in a breeze, with two exceptions. In level 10, you have to use &lt;code&gt;justify-content: flex-end;&lt;/code&gt;, and I&#039;m still using &lt;code&gt;justify-content: end;&lt;/code&gt; instead. Which is not completely wrong, but it can be an issue in some situations, so you&#039;re better off using the &lt;code&gt;flex-*&lt;/code&gt; values. I also struggled to complete the last level, to the point that I had to look at the solution :(. But hey, the important part is that I really understood everything! I&#039;m sure that before I would&#039;ve been baffled as to why the CSS worked at all.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Configuring a self-hosted Nextcloud server"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server#comment-3" />
            <id>https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server#comment-3</id>
            <published>2023-05-05T14:17:19+00:00</published>
            <updated>2023-05-05T14:17:19+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server#comment-3&quot;&gt;Configuring a self-hosted Nextcloud server&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;It&#039;s been 3 weeks since I started working on this, and... I don&#039;t have good news :(. In fact, if you don&#039;t care about reading any further, TLDR: I haven&#039;t installed anything yet 😅️.&lt;/p&gt;
&lt;p&gt;Let me rewind for a bit.&lt;/p&gt;
&lt;p&gt;Right after kicking off this task, I made the following diagram of my ideal setup:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/img/tasks/nextcloud/dream-architecture.png&quot;&gt;&lt;img src=&quot;/img/tasks/nextcloud/dream-architecture.png&quot; alt=&quot;My dream Nextcloud architecture&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My idea was to set up 2 Nextcloud instances: one running in a local server at home (with a raspberry pi, or an old laptop), and another running in the cloud (with DigitalOcean, Hetzner, or whatever). I also wanted to keep Nextcloud clients in my phone and laptop with a copy of some data for offline access. And I also wanted to tackle other needs, with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/iWangJiaxiang/docker-jellyfin-webdav&quot;&gt;jellyfin-webdav&lt;/a&gt; for media management, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/pdsinterop/solid-nextcloud&quot;&gt;solid-nextcloud&lt;/a&gt; for a Solid POD. All of this works great in theory, but it didn&#039;t work so well in practice.&lt;/p&gt;
&lt;p&gt;So, Nextcloud. I&#039;ve been tinkering with it, and my general impression is actually very good. Other than PHP, I found it&#039;s built with Vue, which is awesome because it&#039;s already using my preferred stack (no Laravel though :P). And I confirmed that it&#039;s possible to disable most features to use only file management. The UX is also quite straightforward, and I could manage to do mostly everything I wanted.&lt;/p&gt;
&lt;p&gt;But there were also a couple of things I didn&#039;t enjoy so much. For example, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/nextcloud/server&quot;&gt;the codebase&lt;/a&gt; is enourmous. There are over 67k commits, and cloning the repository meant downloading 3.07 GiB 😱️. That is definitely something I don&#039;t like, and reminds me of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/moodle/moodle&quot;&gt;Moodle&lt;/a&gt; (in a bad way). But then, trying to set up a local instance was a lot worse. My idea was to run it with a couple of Docker containers (which &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/nextcloud/all-in-one&quot;&gt;they already support&lt;/a&gt;), and expose it in a local ip that&#039;s only accessible from my local network. But for some reason I still don&#039;t understand, that isn&#039;t possible. They are actually aware of the use-case, and they have &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/nextcloud/all-in-one/blob/main/local-instance.md&quot;&gt;a very helpful document&lt;/a&gt; explaining how to achieve it, with the recommended way requiring setting up a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://pi-hole.net/&quot;&gt;pi-hole&lt;/a&gt; (WHAT!?). I even entertained the idea and tried to set up said pi-hole, to see how hard it really was. (Un)fortunately, I got into a dead end when I found out that my router doesn&#039;t allow configuring DNS server ips. Yes, I could buy another router or whatever, but I&#039;ll take this as a sign that I shouldn&#039;t keep going down this path. This is so far from what I had in mind — a simple infrastructure — that it wouldn&#039;t be worth the trouble.&lt;/p&gt;
&lt;p&gt;On the flip-side, I gave &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://jellyfin.org/&quot;&gt;Jellyfin&lt;/a&gt; a try, and that one lived up to my expectations. I set it up in 5 minutes and got it playing on my phone. But then again, life isn&#039;t that perfect, and apparently if I want to have it on my TV &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/jellyfin/jellyfin-tizen&quot;&gt;I have to compile the app from source&lt;/a&gt; :/. At least I got it playing on the TV using the web browser, so that will have to do for the time being (thank god for the Web!).&lt;/p&gt;
&lt;p&gt;Something else I&#039;ve been tinkering with is the Solid integration for Nextcloud. At first, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/pdsinterop/solid-nextcloud/issues/72&quot;&gt;I thought it wouldn&#039;t be as ready as I expected&lt;/a&gt;, but after talking with the maintainers it seems the project is in pretty good shape. One drawback I noticed is that you have to be an administrator to install it, which is a bummer because I thought anyone with a Nextcloud account would be able to use it. I could make it work with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://umai.noeldemartin.com/&quot;&gt;Umai&lt;/a&gt; though, and realized that it doesn&#039;t support PATCHing documents using &lt;code&gt;application/sparql-update&lt;/code&gt;. Incidentally, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://matrix.to/#/!QxZtVBYQfMeMTnespj:gitter.im/$nzonYjo6VDS-bY9zy3tViZhA8WR5VkgTUaYE67LqNj4?via=gitter.im&amp;amp;via=matrix.org&amp;amp;via=attendees.fosdem.org&quot;&gt;I had heard about it recently&lt;/a&gt;, and it seems like that&#039;s actually conforming with the spec. The spec only requires supporting &lt;code&gt;text/n3&lt;/code&gt; PATCHes. So I&#039;ll have to update my apps. Which shouldn&#039;t be difficult thanks to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://soukai.js.org/&quot;&gt;Soukai&lt;/a&gt;, but &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid-contrib/solid-crud-tests/issues/60&quot;&gt;ESS does not support &lt;code&gt;text/n3&lt;/code&gt; yet&lt;/a&gt;, and I&#039;ll have to see what to do about it 🤷‍♂️️.&lt;/p&gt;
&lt;p&gt;Anyhow, with all that said I&#039;ve decided to forego the idea of self-hosting a Nextcloud instance in my home network. But I&#039;m still not abandoning the idea of having an instance running on the cloud, we&#039;ll see how that goes.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Configuring a self-hosted Nextcloud server"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server#comment-2" />
            <id>https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server#comment-2</id>
            <published>2023-04-15T05:51:49+00:00</published>
            <updated>2023-04-15T05:51:49+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server#comment-2&quot;&gt;Configuring a self-hosted Nextcloud server&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;One of the apps I&#039;ve been trying to ditch for the longest time is Dropbox. Some years ago I tried to substitute it with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://spideroak.com/&quot;&gt;SpiderOAK&lt;/a&gt;, but &lt;a href=&quot;/tasks/housekeeping-2023#comment-3-p-4&quot;&gt;that didn&#039;t turn out great&lt;/a&gt;. Now I&#039;m taking another stab with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nextcloud.com&quot;&gt;Nextcloud&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are many things I like about Nextcloud; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://archive.fosdem.org/2018/schedule/event/nextcloud/&quot;&gt;their philosophy&lt;/a&gt;, it&#039;s built with PHP, and it has a big community. There are also some things I don&#039;t look forward to; the fact that it has &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nextcloud.com/hub/&quot;&gt;too many features&lt;/a&gt; (I&#039;m only interested in file syncing), and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/nextcloud/server&quot;&gt;the source code&lt;/a&gt; doesn&#039;t seem too welcoming if I ever want to get my hands into it. But I don&#039;t know much about it beyond the first impressions, so I&#039;m going to spend some time learning how it actually works and finding out how flexible it can be.&lt;/p&gt;
&lt;p&gt;I care about flexibility because what I want to do is not as straightforward as it sounds. I don&#039;t actually want to have a single server, but many. I&#039;m currently using Dropbox to host documents, but I&#039;d like to use this opportunity to configure a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Media_server&quot;&gt;Media Server&lt;/a&gt;. Even though I&#039;m calling it &amp;quot;self-hosted&amp;quot;, what I actually want to do is installing it in a Cloud provider (probably &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://digitalocean.com&quot;&gt;DigitalOcean&lt;/a&gt; or &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.hetzner.com/&quot;&gt;Hetzner&lt;/a&gt;). But I don&#039;t want to store &lt;em&gt;everything&lt;/em&gt; in the cloud, there are some files I&#039;d like to keep in my local network as well. At the same time, I want to have local backups for redundancy outside of the cloud. I&#039;d also like to sync files in my mobile phone to edit offline (I&#039;m currently using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://obsidian.md/&quot;&gt;Obsidian&lt;/a&gt; + &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=com.ttxapps.dropsync&quot;&gt;Dropsync&lt;/a&gt;). And finally, it&#039;d be awesome if I can use it to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/pdsinterop/solid-nextcloud&quot;&gt;host my Solid POD&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So yeah, that&#039;s a lot of things I want to do and I&#039;m not sure Nextcloud can handle it without too much tinkering. Depending how easy it is to work with, I&#039;ll decide how far I take it.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Configuring a self-hosted Nextcloud server"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server" />
            <id>https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server</id>
            <published>2023-04-15T05:46:38+00:00</published>
            <updated>2023-04-15T05:46:38+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server&quot;&gt;Configuring a self-hosted Nextcloud server&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-nextcloud-server&quot;&gt;Configuring a self-hosted Nextcloud server&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This is something I&#039;ve wanted to do for a long time, but for one thing or another I kept postponing it... until now!&lt;/p&gt;
&lt;p&gt;I don&#039;t know much about Nextcloud other that it&#039;s Open Source and built with PHP. I&#039;ll share everything I learn along the way.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Housekeeping 2023"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping-2023#comment-5" />
            <id>https://noeldemartin.com/tasks/housekeeping-2023#comment-5</id>
            <published>2023-04-14T15:52:05+00:00</published>
            <updated>2023-04-14T15:52:05+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-2023#comment-5&quot;&gt;Housekeeping 2023&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-2023#comment-5&quot;&gt;Housekeeping 2023&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Housekeeping 2023"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping-2023#comment-4" />
            <id>https://noeldemartin.com/tasks/housekeeping-2023#comment-4</id>
            <published>2023-04-14T15:51:38+00:00</published>
            <updated>2023-04-14T15:51:38+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-2023#comment-4&quot;&gt;Housekeeping 2023&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;The last thing I wanted to do before calling it for this task was to review my entire backlog of tasks (which, as you can imagine, is enormous 😅️).&lt;/p&gt;
&lt;p&gt;I&#039;ve been thinking a better way to work on what really matters, rather than &lt;a href=&quot;/tasks/implementing-a-recipes-manager-using-solid#comment-23-p-7&quot;&gt;getting stuck on neverending tasks&lt;/a&gt;. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/NoelDeMartin/status/1329809105272377348&quot;&gt;My current system&lt;/a&gt; is a bit crude, and I&#039;m a big fan of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Time_management#The_Eisenhower_Method&quot;&gt;Eisenhower&#039;s Matrix&lt;/a&gt;. So it would be nice to introduce something like that to my workflow. But at this point I don&#039;t think automating it &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://xkcd.com/1205/&quot;&gt;would be worth it&lt;/a&gt;. For now, I&#039;ll leave it as is. Maybe &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/issues/10&quot;&gt;when I revamp Solid Focus&lt;/a&gt; will be a great time to add some new features related to that. If I manage to honor this year&#039;s focus on simplicity, it should be fine.&lt;/p&gt;
&lt;p&gt;In any case, after grooming the entire backlog the only thing I decided to do within the scope of this task was brushing up on &lt;code&gt;noeldemartin.com&lt;/code&gt;. I still have a lot more to do; like migrating to a headless architecture and such. But I worked on a couple of improvements I&#039;ve had in mind for a while. One you may be interested in is that I added a new &lt;a href=&quot;/talks&quot;&gt;/talks&lt;/a&gt; page to the site, where I list all the talks I&#039;ve given.&lt;/p&gt;
&lt;p&gt;And with that, that&#039;s it for the task! I&#039;ll go ahead and close it, and you should see my next &amp;quot;real task&amp;quot; soon.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Housekeeping 2023"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping-2023#comment-3" />
            <id>https://noeldemartin.com/tasks/housekeeping-2023#comment-3</id>
            <published>2023-03-31T15:45:11+00:00</published>
            <updated>2023-03-31T15:45:11+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-2023#comment-3&quot;&gt;Housekeeping 2023&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;The last couple of weeks I&#039;ve been doing some much needed maintenance in my infrastructure. That&#039;s what today&#039;s update is all about.&lt;/p&gt;
&lt;p&gt;First of all, I finally upgraded my laptop to Ubuntu 22.04 (I was still running 18.04 😅️). If it were my choice, I don&#039;t think I&#039;d ever update anything because it&#039;s always traumatic. More often than not, I don&#039;t care about new features. And I usually lose features I wanted (this time, it&#039;s been the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://askubuntu.com/questions/1404927/how-to-get-a-grid-of-workspaces-in-ubuntu-22-04&quot;&gt;Workspace Matrix&lt;/a&gt;). I&#039;ve thought about using Debian or some other &amp;quot;stable&amp;quot; OS, but I already have issues with Ubuntu and it&#039;s the most mainstream of the linux distros. So I&#039;m not convinced it wouldn&#039;t be worse with others, and I won&#039;t be bothered to try.&lt;/p&gt;
&lt;p&gt;Something that&#039;s giving me problems recently is my NVIDIA graphics card. Which &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=iYWzMvlj2RQ&quot;&gt;doesn&#039;t come as a surprise&lt;/a&gt;. Fortunately, I&#039;m not much of a gamer nowadays. But I have &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.asus.com/es/laptops/for-gaming/tuf-gaming/asus-tuf-gaming-fx504/&quot;&gt;a gamer&#039;s laptop&lt;/a&gt;, because it was the most similar &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.manualslib.com/products/Asus-X552c-10156895.html&quot;&gt;to my previous laptop&lt;/a&gt;. I already dread the day I&#039;ll have to change it again :/. It&#039;s funny because people may think I&#039;m into this stuff, given that I&#039;m so passionate about programming. But when it comes to hardware and infrastructure, I really don&#039;t care. I think Docker is the best thing that&#039;s happened to that space in the last 10 years.&lt;/p&gt;
&lt;p&gt;Anyways, something else that&#039;s broken is my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://spideroak.com&quot;&gt;SpiderOAK&lt;/a&gt; account. In their defense, it wasn&#039;t the software itself that was broken. But they have a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://spideroak.com/features/zero-knowledge&quot;&gt;Zero Knowledge&lt;/a&gt; policy, which means it doesn&#039;t have any password recovery features. I&#039;ve used different password strategies over the years (currently using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.lesspass.com&quot;&gt;LessPass&lt;/a&gt;), but I installed SpiderOak about 5 years ago and I haven&#039;t been able to find the password anywhere. So I&#039;ve been locked out of my account :/. Fortunately, I backed up all my data before formatting, so I didn&#039;t lose anything. But it&#039;s a bummer. And it makes me lose hope in that type of trustless security in practice, as much as I like the idea in theory. I started using it with the intention to eventually stop using Dropbox. Ironically, I&#039;m still using Dropbox today. But I hope to give it another try soon, probably with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nextcloud.com/&quot;&gt;NextCloud&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Finally, I haven&#039;t realized this now, but a while ago &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/microsoft/vscode/pull/166126#issuecomment-1342861959&quot;&gt;VSCode stopped working&lt;/a&gt; with one of my core extensions. In particular, it&#039;s one that allows you to customize the UI of VSCode with CSS. And I mostly use it to hide stuff. And that still hasn&#039;t been fixed, so until it is I&#039;m stuck with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/VSCodium/vscodium/releases/tag/1.73.1.22314&quot;&gt;VSCodium 17.3.1&lt;/a&gt;. But I don&#039;t care that much anyways, because I don&#039;t think I&#039;ve used a new feature in VSCode for years. But it could potentially be an issue down the road.&lt;/p&gt;
&lt;p&gt;If you&#039;re curious about my set up, I have this repository with my settings: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/env&quot;&gt;github.com/noeldemartin/env&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And that was it for my laptop. But I&#039;ve also been working on my server set up.&lt;/p&gt;
&lt;p&gt;At the moment, all of my sites are hosted on an Ubuntu 18.04 droplet in DigitalOcean. So it&#039;s also due for an upgrade. Over the years, I&#039;ve been trying to work out an architecture that allows me to deploy sites as &amp;quot;serverless&amp;quot; as possible, without actually relying on serverless technologies. I actually like the idea of serverless a lot, but I don&#039;t like how it can scale to infinity and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://world.hey.com/dhh/why-we-re-leaving-the-cloud-654b47e0&quot;&gt;potentially drain your bank account&lt;/a&gt;. But I think I&#039;m getting very close to something perfect for my needs. What I came up with is basically a Docker-driven architecture, with something I&#039;m calling &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/vocab#production&quot;&gt;&amp;quot;headless&amp;quot; deploys&lt;/a&gt;, and served with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/nginx-agora&quot;&gt;nginx-agora&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&#039;ve also used the opportunity to try &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.hetzner.com/&quot;&gt;Hetzner&lt;/a&gt;, and so far it&#039;s looking good. I&#039;m also improving my security set up by using a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Bastion_host&quot;&gt;bastion server&lt;/a&gt; for ssh, rather than logging in directly to the host serving the websites. But unfortunately, I can&#039;t do the switch yet, because some of my sites like &lt;code&gt;noeldemartin.com&lt;/code&gt;, &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server&quot;&gt;my Solid POD&lt;/a&gt;, or &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social&quot;&gt;my Mastodon instance&lt;/a&gt; aren&#039;t using that architecture yet.&lt;/p&gt;
&lt;p&gt;I have thought about other alternatives, like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://mrsk.dev/&quot;&gt;MRSK&lt;/a&gt; or &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://yunohost.org&quot;&gt;Yunohost&lt;/a&gt;. And the idea of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://easyindie.app/&quot;&gt;easy indie apps&lt;/a&gt; is very enticing. But for some reason, I don&#039;t believe that it&#039;ll be as easy as they make it to be. To me, they sound like more layers of abstraction, and I&#039;d rather do it with Docker which I&#039;m already familiar with and is widely supported.&lt;/p&gt;
&lt;p&gt;All this complexity is something I&#039;d like to remove from my life. But I only have to dedicate some time every few years, so I think it&#039;s bearable for now. And the sites are still running fine, so I&#039;m leaving it there for now and I&#039;ll migrate them some time in the nearish future.&lt;/p&gt;
&lt;p&gt;Before you depart, I should also mention that I started using HEY World to post these updates. So if you prefer to get them in your email rather than through RSS, be sure to check it out: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://world.hey.com/noeldemartin&quot;&gt;world.hey.com/noeldemartin&lt;/a&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Learning CSS"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-css#comment-4" />
            <id>https://noeldemartin.com/tasks/learning-css#comment-4</id>
            <published>2023-03-13T05:51:12+00:00</published>
            <updated>2023-03-13T05:51:12+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css#comment-4&quot;&gt;Learning CSS&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;In module 3, the course takes a small detour from pure CSS to foray into the world of building UI components. And it is done with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://styled-components.com/&quot;&gt;Styled Components&lt;/a&gt; as our guide.&lt;/p&gt;
&lt;p&gt;I&#039;d heard of Styled Components before, but I&#039;d never used them. In fact, I didn&#039;t like the idea of CSS-in-JS at all. But I took this module with an open mind and it wasn&#039;t as bad as I thought. Although I still prefer &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://tailwindcss.com/&quot;&gt;TailwindCSS&lt;/a&gt; :D. There is actually a page in the course comparing many of the popular approaches to building CSS, including Tailwind, and I have to agree with mostly everything Josh says. To me, the killer feature in Tailwind though is that you don&#039;t have to think about naming. And unfortunately, Styled Components still has that problem. Still, it was nice to learn about a new tool.&lt;/p&gt;
&lt;p&gt;In any case, the tool is the least important in this module. The real point is to learn how to build UI components. One of the things he mentions from the get go is that he doesn&#039;t think it&#039;s a good idea to use component libraries for &amp;quot;real&amp;quot; projects, but they are good for prototyping or small endeavours. And I strongly agree with that, I&#039;ve actually worked with a bunch of component libraries in the past, and there isn&#039;t a single time I haven&#039;t regretted it. They key problem I see with them is that it&#039;s usually fine to build cookie cutter UIs, but as soon as you want to do something more unique, you&#039;re in for a world of pain.&lt;/p&gt;
&lt;p&gt;What I enjoyed the most from this module was the exploration of different UI Component design techniques (design in terms of architecture, not UI). There is a lot of nuance, but these are some lessons I would highlight:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There are 3 ways to tackle customizations: composition, variants, and contextual styles.&lt;/li&gt;
&lt;li&gt;It is important to reduce the API surface (number of props) as much as possible.&lt;/li&gt;
&lt;li&gt;Convention over configuration: Make it easy to follow the defaults, but possible to break from them.&lt;/li&gt;
&lt;li&gt;Inversion of control nesting: Declare child styles in the component itself, not the parent.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other than that, as ever, I also learned about a couple of features I didn&#039;t know: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#tagged_templates&quot;&gt;Tagged templates&lt;/a&gt;, the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/revert&quot;&gt;&lt;code&gt;revert&lt;/code&gt; CSS value&lt;/a&gt;, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.chrome.com/docs/devtools/console/live-expressions/&quot;&gt;Chrome Live Expressions&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Housekeeping 2023"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping-2023#comment-2" />
            <id>https://noeldemartin.com/tasks/housekeeping-2023#comment-2</id>
            <published>2023-03-12T09:31:42+00:00</published>
            <updated>2023-03-12T09:31:42+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-2023#comment-2&quot;&gt;Housekeeping 2023&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Ironically, the first thing on my chores list was to follow-up on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://umai.noeldemartin.com/&quot;&gt;Umai&lt;/a&gt;&#039;s release. As it happens, immediately after releasing I got a bunch of bug reports. Most of them were easy enough to fix, but there&#039;s been a couple with more nuance and it&#039;s taken me about a month to get it done.&lt;/p&gt;
&lt;p&gt;First, I made sure to have &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/DesignIssues/UserInterface.html#title&quot;&gt;meaningful page titles&lt;/a&gt;. I&#039;ve actually been pointed towards the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/DesignIssues&quot;&gt;Design Issues&lt;/a&gt; page many times, and it&#039;s always quite interesting. So I think I may read all of them at some point. Somewhat related to this, I&#039;ve been thinking about how I&#039;ve been declaring urls in my apps, and I opened a post in the forum to discuss it with the community: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/should-solid-apps-have-pretty-urls/6308&quot;&gt;&lt;br /&gt;
Should Solid Apps have pretty urls?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Something else was that Umai didn&#039;t work with non-roman characters 😱️. Which is ironic, given that the app&#039;s name and logo is Japanese (but you couldn&#039;t create recipes using Japanese characters 🙈️). I was using a helper to convert recipe names into url slugs, but it was too aggressive in removing characters. What I&#039;m very surprised about is that looking at existing helpers in popular frameworks, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/laravel/framework/issues/22592&quot;&gt;they have the same problem&lt;/a&gt;. The solution was easy enough, but the real problem was that I wasn&#039;t aware of this. I wonder how many other things I&#039;m missing :/. It really is true that we programmers &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/kdeldycke/awesome-falsehood&quot;&gt;believe a lot of falsehoods&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Not everything were bugs though, I also got some feature requests. And the most endearing was &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/issues/5&quot;&gt;printing recipes to PDF&lt;/a&gt;. I didn&#039;t mention it in the journal, but this is actually one feature I already worked on :D. Unfortunately, it didn&#039;t make it to the first release because it fell to the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/3.5-chapter-14#scope-hammering&quot;&gt;scope hammer&lt;/a&gt;. But now that someone asked for it, I couldn&#039;t resist myself. But I was this close 🤏 to fall into a rabbit hole :/.&lt;/p&gt;
&lt;p&gt;Initially, I thought there were some issues between browsers so I tried to print the PDF using a javascript library, rather than using CSS. But after &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/commit/bc53abcdf2b8c63db392a1bcd957f697abb2ad3b&quot;&gt;spending some time&lt;/a&gt;, I realized that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/foliojs/pdfkit/issues/201&quot;&gt;it wouldn&#039;t work with non-roman characters&lt;/a&gt;. And this time I knew better. This year I pledged to favour simplicity over complexity, and stop overengineering. So I went back to using CSS, and I was going to solve it by adding a warning saying that if it doesn&#039;t work in your browser, you should try with a different one. However, when I went back to work on CSS I realized it was a problem with my CSS, not with the browser! So that means in the end, it&#039;s working quite well across most browsers.&lt;/p&gt;
&lt;p&gt;Finally, this hasn&#039;t been reported, but I noticed that the bundle weight was growing a lot. And using a tool called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/KusStar/vite-bundle-visualizer&quot;&gt;vite-bundle-visualizer&lt;/a&gt;, I realized that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/faker&quot;&gt;some dependencies&lt;/a&gt; weren&#039;t tree-shaking properly. And I also learned that my own libraries weren&#039;t tree-shakeable 😱️. Turns out you have to declare &lt;code&gt;sideEffects: false&lt;/code&gt; in your &lt;code&gt;package.json&lt;/code&gt;, otherwise they are considered to be potentially modifying the global state. I&#039;m certainly going to set that config in all my libraries now, and I&#039;m also surprised that it took me this long to realize 🤷‍♂️️.&lt;/p&gt;
&lt;p&gt;Anyhow, with a bunch of improvements I&#039;ve released a new version of the app and I think I&#039;ll be done with it for a while.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Housekeeping 2023"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping-2023" />
            <id>https://noeldemartin.com/tasks/housekeeping-2023</id>
            <published>2023-02-10T08:19:52+00:00</published>
            <updated>2023-02-10T08:19:52+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-2023&quot;&gt;Housekeeping 2023&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping-2023&quot;&gt;Housekeeping 2023&lt;/a&gt;&lt;/p&gt;&lt;p&gt;After being stuck with &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid&quot;&gt;the same task&lt;/a&gt; for almost 3 years, I&#039;ve been piling up some chores. It&#039;s time to get them done.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Attending FOSDEM 2023"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2023#comment-5" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2023#comment-5</id>
            <published>2023-02-06T08:46:58+00:00</published>
            <updated>2023-02-06T08:46:58+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2023#comment-5&quot;&gt;Attending FOSDEM 2023&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2023#comment-5&quot;&gt;Attending FOSDEM 2023&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending FOSDEM 2023"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2023#comment-4" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2023#comment-4</id>
            <published>2023-02-06T08:46:10+00:00</published>
            <updated>2023-02-06T08:46:10+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2023#comment-4&quot;&gt;Attending FOSDEM 2023&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Well, as the FOSDEM organizers aptly said, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://iruntheinternet.com/lulzdump/images/its-a-trap-pun-its-a-wrap-admiral-ackbar-star-wars-1363199217Z.jpg&quot;&gt;it&#039;s a wrap&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have to say that this year may have been my best one yet :). Besides giving a talk, I met more people than ever and I enjoyed many of the talks.&lt;/p&gt;
&lt;p&gt;One that was interesting was &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://penpot.app/&quot;&gt;Penpot&lt;/a&gt; (it turns out the founder is from Barcelona and we have some acquantainces in common!). I haven&#039;t been using Figma much; I&#039;m still using Photopea and Inkscape/GIMP for everything I do. And one of the reasons I haven&#039;t is their proprietary nature. So I&#039;ll be sure to give Penpot a try next time.&lt;/p&gt;
&lt;p&gt;Another talk I enjoyed was &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/matrix20/&quot;&gt;Matrix 2.0&lt;/a&gt;. Excellent presentation, packed with awesome live demos, and Moodle even got a shoutout on the Matrix integration we&#039;re working on for the upcoming release. I&#039;m not sure if I&#039;ll get to work on that, but I&#039;d like to because I&#039;m very interested in Matrix and all the work they&#039;re doing.&lt;/p&gt;
&lt;p&gt;Once the conference came to a close, this time I stayed to help with the clean up. And I think I&#039;m going to do that in the upcoming years as well, because it wasn&#039;t that much work and you also get to meet some of the volunteers. It&#039;d be nice to volunteer full-time at some point as well, but to be honest I like watching the talks too much so I&#039;m not sure if I&#039;ll ever get there.&lt;/p&gt;
&lt;p&gt;Unfortunately, the end has been bittersweet because &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://duckduckgo.com/?q=tonton+garby&quot;&gt;my go-to sandwich shop&lt;/a&gt; was closed :(. But hey, not everything always goes as planned! I&#039;ll try again next year.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending FOSDEM 2023"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2023#comment-3" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2023#comment-3</id>
            <published>2023-02-04T17:37:34+00:00</published>
            <updated>2023-02-04T17:37:34+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2023#comment-3&quot;&gt;Attending FOSDEM 2023&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;And that&#039;s it, I&#039;ve officially spoken at FOSDEM 🥳!&lt;/p&gt;
&lt;p&gt;The talk went well, and I think people enjoyed it :). There were a couple of interesting questions as well. If you missed it or want to dig deeper, you can find both the slides and the video recording in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/sovcloud_from_zero_to_hero_with_solid/&quot;&gt;the event page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It was also nice meeting in person with some people I knew from the Solid forums and chats. And hopefully I&#039;ve inspired someone in the audience to give Solid a try. Or if nothing else, to make better apps!&lt;/p&gt;
&lt;p&gt;Tonight I&#039;ll probably be at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://hsbxl.be/events/byteweek/2023/bytenight/&quot;&gt;HSBXL&#039;s Bytenight&lt;/a&gt;, and I&#039;m looking forward to tomorrow&#039;s talks (specially the ones in the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/track/open_source_design/&quot;&gt;Open Source Design&lt;/a&gt; devroom). Yesterday I ended up going to both the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ps.zoethical.org/t/launch-party-at-caldarium/6428&quot;&gt;OFFDEM launch party&lt;/a&gt; and the &amp;quot;unofficial&amp;quot; Beer Event (it was packed with people anyways, so I ended up in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.toone.be/spip.php?page=sommaire&amp;amp;lang=en&quot;&gt;Toone Theatre&lt;/a&gt; which was a lot less crowded and quite nice).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Presented "From Zero to Hero with Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://www.youtube.com/watch?v=kPzhykRVDuI" />
            <id>https://www.youtube.com/watch?v=kPzhykRVDuI</id>
            <published>2023-02-04T11:00:00+00:00</published>
            <updated>2023-02-04T11:00:00+00:00</updated>
            <summary type="html">
                Presented &lt;a href=&quot;https://www.youtube.com/watch?v=kPzhykRVDuI&quot;&gt;From Zero to Hero with Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I&#039;m giving a talk at FOSDEM: &lt;a href=&quot;https://www.youtube.com/watch?v=kPzhykRVDuI&quot;&gt;From Zero to Hero with Solid&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Learning CSS"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-css#comment-3" />
            <id>https://noeldemartin.com/tasks/learning-css#comment-3</id>
            <published>2023-01-29T09:25:01+00:00</published>
            <updated>2023-01-29T09:25:01+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css#comment-3&quot;&gt;Learning CSS&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just finished two more modules of the course: Rendering Logic I &amp;amp; II.&lt;/p&gt;
&lt;p&gt;When I started this task I was somewhat worried that I&#039;d be giving away too much of the course by journaling what I learn. But now, I&#039;m totally convinced that&#039;s not the case at all. The content goes extremely in depth. Even when he talks about things I&#039;ve been using for years, I feel like I&#039;m back in university being told about a new concept alien to me (which is awesome!).&lt;/p&gt;
&lt;p&gt;So yeah, I still totally recommend the course :D. I will refrain from bringing up this point in every update though, or it&#039;ll get tedious. But I&#039;ve been blown away by &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/&quot;&gt;Josh&lt;/a&gt;&#039;s teaching, and I&#039;m sure I&#039;ll be following him for years on end.&lt;/p&gt;
&lt;p&gt;Now, about what I&#039;ve actually learned in these two modules. They tackle some of the most basic properties you can think of: &lt;code&gt;width&lt;/code&gt;, &lt;code&gt;display&lt;/code&gt;, &lt;code&gt;position&lt;/code&gt;, etc. But instead of just explaining what the properties do, the modules introduce the mental models to understand why they work the way they do. Which also includes learning about new properties and tricks, but that&#039;s the least important.&lt;/p&gt;
&lt;p&gt;In particular, these concepts were new to me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/css/rules-of-margin-collapse/&quot;&gt;Margin Collapse&lt;/a&gt; — He&#039;s got a free blog post on that!&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/css/stacking-contexts/&quot;&gt;Stacking Contexts&lt;/a&gt; — Also a free blog post, this is the one I mentioned in my previous update.&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Logical_Properties&quot;&gt;Logical Properties&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Glossary/Scroll_container&quot;&gt;Scroll Containers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other than learning about the concepts, exercises are also quite fun. Even though you think by reading the lessons that you already understand everything, the exercises did get me to notice something I&#039;d missed in a couple of occasions.&lt;/p&gt;
&lt;p&gt;And finally, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/topics/css-for-js?q=user%3ANoelDeMartin&quot;&gt;workshops&lt;/a&gt; have also been great. What I noticed in these is how hard it is to get rid of bad habits :/. I&#039;m so used to writing CSS with trial and error when something doesn&#039;t work, that it&#039;s difficult to actually think about the underlying mental models of the language. But after some dedication, I did manage to apply the learnings from the course.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending FOSDEM 2023"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2023#comment-2" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2023#comment-2</id>
            <published>2023-01-27T14:53:37+00:00</published>
            <updated>2023-01-27T14:53:37+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2023#comment-2&quot;&gt;Attending FOSDEM 2023&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve been to FOSDEM twice, in &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem&quot;&gt;2019&lt;/a&gt; and &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2020&quot;&gt;2020&lt;/a&gt;. It&#039;s probably my favourite conference, so I&#039;m really looking forward to being there again! (not that I attend that many, though). This year it&#039;s also extra special, because I&#039;m also presenting for the first time:&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;/img/tasks/fosdem-2023-talk.png&quot; alt=&quot;From Zero to Hero with Solid&quot;&gt;
  &lt;figcaption class=&quot;text-sm&quot;&gt;(Yes, I spent way more time making this slide than I care to admit 😅️)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I&#039;ve also had a couple of people from the Solid community telling me they&#039;ll be there, so in a way this will be my first in-person Solid meetup as well :).&lt;/p&gt;
&lt;p&gt;The presentation is coming up nicely, although I worry it&#039;s too dense :/. It wasn&#039;t easy to condense what I&#039;ve done in 4 years to 30 minutes. I&#039;ve re-read all my journals and that&#039;s been fun. You could say the presentation is just a summary of those. Still, I&#039;m sure it will be valuable even for those who&#039;ve read them (it won&#039;t have any of the rambling! [like this one xD]).&lt;/p&gt;
&lt;p&gt;I also gave &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sli.dev&quot;&gt;sli.dev&lt;/a&gt; a try, which was promising. But after a couple of hours fighting with CSS I decided to go back to my trusty LibreOffice. I like the idea to make my presentations in code, and it certainly has a couple of features I envy. But in the end, I was too slow making things work that took me 2 minutes in LibreOffice (maybe &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css&quot;&gt;I&#039;m not good enough at CSS yet&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;In any case, that&#039;s going well!&lt;/p&gt;
&lt;p&gt;Like always, I won&#039;t be able to attend all the talks I&#039;d like to. But here&#039;s the ones that got my attention:&lt;/p&gt;
&lt;h4&gt;Friday&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Afternoon / Evening @ Delirium Café. Unfortunately, the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://archive.fosdem.org/2020/beerevent/&quot;&gt;Beer event&lt;/a&gt; has been cancelled this year :(. But I&#039;m pretty sure many attendees will be there anyways, so I&#039;ll be sure to pay a visit.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Saturday&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;12:20-13:00 @ H.1301 (Cornil) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/sovcloud_distributed_storage_in_the_cloud/&quot;&gt;Distributed Storage in the Cloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:10-13:35 @ UB4.136 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/sharp_photos/&quot;&gt;Sharp photos and short movies on a mobile phone&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:00-13:15 @ H.2215 (Ferrer) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/awkward_user_interviews/&quot;&gt;Do more awkward user interviews&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:00-13:45 @ H.1301 (Cornil) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/sovcloud_from_zero_to_hero_with_solid/&quot;&gt;From Zero to Hero with Solid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;14:15-14:35 @ H.1301 (Cornil) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/sovcloud_responsible_clouds_and_the_green_web_triangle/&quot;&gt;Responsible Clouds and the Green Web Triangle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;15:30-15:55 @ K.4.601 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/collab_xwiki/&quot;&gt;Migrating from proprietary to Open-Source knowledge management tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;16:00-16:30 @ UA2.220 (Guillissen) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/mozilla_anti_tracking/&quot;&gt;Over a decade of anti-tracking work at Mozilla&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;17:00-17:25 @ K.4.601 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/collab_nextcloud/&quot;&gt;Nextcloud Numbers and Hubs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;17:30-17:55 @ K.4.601 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/collab_tiki/&quot;&gt;The Relentless March of Markdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;17:00-17:25 @ UA2.220 (Guillissen) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/mozilla_cachetheworld/&quot;&gt;Cache The World&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Sunday&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;10:20-10:35 @ H.2215 (Ferrer) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/breaking_from_big_tech/&quot;&gt;Breaking away from Big Tech&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;12:15-12:35 @ K.3.401 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/bridging_ap_with_kazarma/&quot;&gt;Bridging ActivityPub with Kazarma&lt;/a&gt; (matrix-ActivityPub interoperability)&lt;/li&gt;
&lt;li&gt;12:35-13:00 @ K.3.401 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/all_your_base_are_belong_to_us/&quot;&gt;All your base are belong to us&lt;/a&gt; (matrix tools)&lt;/li&gt;
&lt;li&gt;13:00-13:25 @ UB5.230 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/vue3/&quot;&gt;Is it time to migrate to Vue 3?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:00-13:25 @ UB4.132 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/practical_ux_at_openproject/&quot;&gt;Practical UX at OpenProject&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;14:00-14:50 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/hachyderm/&quot;&gt;Decentralized Social Media with Hachyderm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;14:20-14:35 @ H.2215 (Ferrer) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/self_hosting_for_non_coders/&quot;&gt;Self-hosting for non-coders?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;15:00-15:25 @ UB4.132 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/accessibility_and_open_source/&quot;&gt;Accessibility &amp;amp; Open Source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;15:30-15:55 @ UB4.132 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/a11y_eaa_bfsg_wcag_wai_aria_wtf/&quot;&gt;A11y: EAA, WCAG, WAI, ARIA, WTF? – it’s for the people stupid!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;16:00-16:50 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/matrix20/&quot;&gt;Matrix 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;16:30-16:55 @ UB4.132 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/penpot_official_launch/&quot;&gt;Penpot official launch!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Attending FOSDEM 2023"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2023" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2023</id>
            <published>2023-01-27T14:45:13+00:00</published>
            <updated>2023-01-27T14:45:13+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2023&quot;&gt;Attending FOSDEM 2023&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2023&quot;&gt;Attending FOSDEM 2023&lt;/a&gt;&lt;/p&gt;&lt;p&gt;After 2 years online, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org&quot;&gt;FOSDEM&lt;/a&gt; is back in person! This year &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/sovcloud_from_zero_to_hero_with_solid/&quot;&gt;I&#039;m also presenting&lt;/a&gt;, so if you&#039;re around make sure to come by. FOSDEM will be held the 4th and 5th of February in Brussels.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-24" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-24</id>
            <published>2023-01-20T11:21:21+00:00</published>
            <updated>2023-01-20T11:21:21+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-24&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-24&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-23" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-23</id>
            <published>2023-01-20T11:21:13+00:00</published>
            <updated>2023-01-20T11:21:13+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-23&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;The day has finally arrived, I&#039;m finally closing this task!&lt;/p&gt;
&lt;p&gt;Like always, there was more work than I expected. But thanks to having &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/sovcloud_from_zero_to_hero_with_solid/&quot;&gt;a real deadline&lt;/a&gt;, I&#039;ve used the scope hammer like never before.&lt;/p&gt;
&lt;p&gt;One of the things that fell by the wayside was documentation :(. Usually, I write some documentation for my apps in case anyone is interested in the technical details. But if I have to be honest, I&#039;m not sure how helpful that is anyways (or if anyone&#039;s even read it). So this time, I didn&#039;t do any of that for Umai. But I&#039;ve updated &lt;code&gt;soukai&lt;/code&gt; and &lt;code&gt;soukai-solid&lt;/code&gt; for the new versions, so it isn&#039;t like the documentation is completely out of date. In the future, I intend to consolidate all my apps into some kind of framework, so I&#039;ll probably work in better documentation at that point.&lt;/p&gt;
&lt;p&gt;I&#039;ve also been translating the app into Spanish and Catalan, which was more work than I expected. The good news is that after a first sitting, I don&#039;t think it&#039;ll take me a lot of work to maintain. I also wrote a small &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/blob/main/docs/contribute-translations.md&quot;&gt;translations contribution guide&lt;/a&gt;. It&#039;s the first time I&#039;m doing this and from personal experience, I&#039;m not very happy with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://lang.moodle.org/&quot;&gt;community-contributed translations&lt;/a&gt;. So we&#039;ll see how that goes.&lt;/p&gt;
&lt;p&gt;I&#039;ve also been working on implementing an &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solid.github.io/solid-oidc/#clientids&quot;&gt;Application ClientID&lt;/a&gt;. I wasn&#039;t too happy about this, because I&#039;ve been making the app in a way that can run in any domain (even localhost). So I don&#039;t like the idea of having to tie an application with a url. After some thought, though, I realized it isn&#039;t that different from a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/Manifest&quot;&gt;Web Manifest&lt;/a&gt;. So I implemented it similarly (by the way, I did write &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/tree/main/src/framework/vite-plugin-solid-clientid&quot;&gt;my first Vite Plugin&lt;/a&gt; for this, and I have to say it was super easy — it definetly deserves coming out on top in the recent &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://2022.stateofjs.com/en-US/awards/&quot;&gt;State of JS survey&lt;/a&gt; :D). But in the end, it wasn&#039;t as nice as I wanted. With a Web Manifest you can use relative urls, but ClientID documents require the &lt;code&gt;client_id&lt;/code&gt; field to be absolute. Which means that if anyone wants to self-host Umai, they&#039;ll have to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/blob/main/.env.example#L3&quot;&gt;build it themselves&lt;/a&gt;, instead of just downloading a .zip file :(. In any case, that&#039;s done!&lt;/p&gt;
&lt;p&gt;So, before closing this task, I wanted to do some reflections &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-10&quot;&gt;like I did for Media Kraken&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I haven&#039;t been tracking time spent as closely, but one rough estimation gets me to 1000 hours O.o. In contrast with the 278 I spent for Media Kraken, it&#039;s almost 4 times as much. The scope for this was a lot bigger though: Vue 3, Vite, CRDTs, Offline First, Page Transitions, Files Upload, Permissions Management, Requests Proxy, Custom Ontology, etc. But if I translate that to full-time work, it comes out to about 6 months. That&#039;s definitely a non-trivial amount of time. Does the end result justify it? Well, I&#039;m very happy with the app, but probably not. If I have to get anything out of this, it&#039;s that I overegineer too much. Which I already knew, but I think it&#039;s time to start taking it seriously. The good news is that I don&#039;t think I&#039;ll be tackling anything more complicated than Solid CRDTs in my upcoming endeavours. But then again, I also thought I was done with complexity when I finished Media Kraken.&lt;/p&gt;
&lt;p&gt;Something else I talked about last time was my opinion of the Solid Community. Sadly, I can&#039;t say things have improved too much. I&#039;ve had a much better experience with Solid this time around, but that&#039;s because I&#039;ve been using my own libraries (and I&#039;m biased). &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/CommunitySolidServer/CommunitySolidServer&quot;&gt;CSS&lt;/a&gt; has also come out, which has been pleasant to use. But other than that, I don&#039;t see much improvement in the overall DX, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/is-a-solid-pod-a-set-of-documents-or-is-it-a-knowledge-graph/6028/4?u=noeldemartin&quot;&gt;things seem to be moving as slowly as ever&lt;/a&gt;. I also haven&#039;t seen any new apps I&#039;m excited for. If anything, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/implementation-of-bbc-together-data-pod/5763/35?u=noeldemartin&quot;&gt;I&#039;ve been disappointed&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But I don&#039;t want that to sound discouraging. Even with all that, I still think Solid is the best approach we have to making apps. Or at least, the type of apps I want to make (and use). The fundamentals are there, so I don&#039;t think there&#039;s anything stopping anyone from getting into Solid; even if their introduction isn&#039;t as smooth as I&#039;d like. So I&#039;ll continue using Solid, and I&#039;m still excited about the future.&lt;/p&gt;
&lt;p&gt;And that&#039;s it for now! Feel free to spread the word, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://umai.noeldemartin.com&quot;&gt;Umai&lt;/a&gt; is out!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-22" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-22</id>
            <published>2022-12-23T07:53:45+00:00</published>
            <updated>2022-12-23T07:53:45+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-22&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Hey, I bet you didn&#039;t expect to hear from me again this year (I didn&#039;t either). But I&#039;ve got some news to share! I submitted a talk proposal for FOSDEM, and I&#039;m glad to announce that it&#039;s been accepted 🥳!&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2023/schedule/event/sovcloud_from_zero_to_hero_with_solid/&quot;&gt;From Zero to Hero with Solid&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I do admit the title is a bit cheeky, but hey, you&#039;ve got to create some hype! Also, I couldn&#039;t come up with a better name 😅️. But it does communicate pretty well what the talk will be about. I&#039;ll share everything I&#039;ve learned &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid&quot;&gt;since I started with Solid&lt;/a&gt; until now. It should be fun :).&lt;/p&gt;
&lt;p&gt;So yeah, Umai will &lt;strong&gt;definitely&lt;/strong&gt; be released by then.&lt;/p&gt;
&lt;p&gt;FOSDEM will be held the 4th &amp;amp; 5th of February in Brussels. I hope to see you there :D.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-21" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-21</id>
            <published>2022-12-18T09:12:35+00:00</published>
            <updated>2022-12-18T09:12:35+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-21&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Here we are about to finish 2022 and this task isn&#039;t finished yet. So it&#039;s official that it&#039;s going to be a side-project spanning 3 years 😱️. But that&#039;s ok, it&#039;s not like this is the only thing I&#039;ve been doing. And now that I&#039;ve been using the app for a couple of months, I can say I&#039;m happy with it. But in any case, I&#039;ll leave the postmortem for the next update, which I can promise now that will be the last!&lt;/p&gt;
&lt;p&gt;During this month, as promised, I haven&#039;t worked on any new features. But that doesn&#039;t mean I haven&#039;t been busy.&lt;/p&gt;
&lt;p&gt;On the one hand, I worked on the app itself because I noticed it was becoming slower each time I opened it. After some digging, I found a pretty gnarly performance issue that made it duplicate CRDT operations on every refresh :/. The root problem was that Solid PODs, and RDF in general, can&#039;t have duplicated triples in a document. This alludes to the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/TR/rdf-mt/#glossMonotonic&quot;&gt;monotonic&lt;/a&gt; property of RDF that Tim mentioned.&lt;/p&gt;
&lt;p&gt;For example, the following two documents are equivalent:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-turtle&quot;&gt;&amp;lt;#my-recipe&amp;gt; schema:recipeIngredient &amp;quot;Tomatoes&amp;quot; .
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-turtle&quot;&gt;&amp;lt;#my-recipe&amp;gt; schema:recipeIngredient &amp;quot;Tomatoes&amp;quot;, &amp;quot;Tomatoes&amp;quot; .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But in JavaScript, that&#039;s not true. So my code thought there was an ingredient missing, and tried to write it indefinitely.&lt;/p&gt;
&lt;p&gt;These are the type of things that make me second-guess adding complexity. But it seems like most of the time I end up adding it anyways. At least when it comes to code, I think I&#039;m much better at keeping UI and features simple. But it&#039;s also true that these are the type of things that help me learn more about RDF and harden soukai for more edge-cases. Or at least, that&#039;s what I tell myself.&lt;/p&gt;
&lt;p&gt;Other than that, I&#039;ve also been &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-utils/tree/543632bf462e06e172f140af12430901e26621e4/external#solid-utils-externals&quot;&gt;struggling with JavaScript bundling&lt;/a&gt;. I&#039;ll be honest, the current status of publishing JavaScript packages is awful. Even though I&#039;ve spent countless hours trying to work around bundling issues, I still haven&#039;t cracked the nut. The current solution I found is good enough, but there are still some use-cases where I know it&#039;s problematic (for example, it doesn&#039;t work with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/vitest-dev/vitest/tree/main/packages/vite-node&quot;&gt;vite-node&lt;/a&gt;). But I don&#039;t think I&#039;ll be wasting any more time on this for the time being.&lt;/p&gt;
&lt;p&gt;Something else I&#039;ve been doing is publishing &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vocab.noeldemartin.com/&quot;&gt;my vocab&lt;/a&gt;. Which means I&#039;ve been able to work with Laravel again 😍️. If I just mentioned how difficult it is to work with JavaScript libraries, I can say the complete opposite for Laravel and PHP. In the last 3 years or so, I haven&#039;t used much Laravel. But still, every time I do, it&#039;s so easy to work with. In JavaScript, it&#039;s been a struggle just finding libraries to parse and serialize RDF. But in PHP, it took me less than a minute to find one library that parses and serializes all formats! And the library is adequately called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.easyrdf.org/&quot;&gt;EasyRDF&lt;/a&gt;. So that was nice :).&lt;/p&gt;
&lt;p&gt;In case you&#039;re wondering, I did mention before that I would try to contribute this vocab to the Solid spec. But 7 months after opening &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/vocab/pull/69&quot;&gt;the PR&lt;/a&gt; it doesn&#039;t seem to be going anywhere, so I decided to just publish it on my own domain. One of the doubts I had about it is that I wasn&#039;t familiar with best practices for publishing vocabs. But &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://angelo.veltens.org&quot;&gt;Angelo&lt;/a&gt; shared the following document that solved most of my doubts: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/TR/cooluris/&quot;&gt;Cool URIs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now that all that&#039;s done, the only thing that&#039;s missing is mostly writing documentation. That can take a long time or almost nothing, so I&#039;ll give it a couple of weeks at most. If anything, I can tell you the hard deadline for the release. And that is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/109187685226808525&quot;&gt;February 4th&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Learning CSS"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-css#comment-2" />
            <id>https://noeldemartin.com/tasks/learning-css#comment-2</id>
            <published>2022-11-25T08:42:54+00:00</published>
            <updated>2022-11-25T08:42:54+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css#comment-2&quot;&gt;Learning CSS&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I have a love/hate relationship with courses and educational resources. The ones I like, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/NoelDeMartin/status/1325162606726967301&quot;&gt;I like a lot&lt;/a&gt;. But I struggle to find the ones worth putting my time and money into. We have something called EduCash at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://moodle.com/about/&quot;&gt;Moodle HQ&lt;/a&gt;, which is a training allowance given to employees to spend in these type of courses. And for the 3 years I&#039;ve been at Moodle, this is the first time I&#039;ve used it! So that tells you how excited I am to take it :).&lt;/p&gt;
&lt;p&gt;I first heard about this course from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://artofproductpodcast.com/episode-218&quot;&gt;Adam Wathan&#039;s recommendation&lt;/a&gt;, and after checking it out I read &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/css/stacking-contexts/&quot;&gt;one of Josh&#039;s posts&lt;/a&gt;. That really sealed the deal for me. Actually, if you&#039;re reading this and want to learn more, I strongly suggest that you check out the articles on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/&quot;&gt;his blog&lt;/a&gt;. There are lot of free resources in there that I&#039;m sure you&#039;ll find very useful.&lt;/p&gt;
&lt;p&gt;So far, I&#039;ve only taken the introduction and a recap of the fundamentals. I didn&#039;t get into it intending to journal about it, but right off the bat he&#039;s encouraging students to learn in public. So I had no excuse 😂️.&lt;/p&gt;
&lt;p&gt;The fundamentals module is a quick overview of the basics of CSS, which of course I already knew. But it&#039;s still been useful to clarify some nomenclature, and I even learned a couple of things. I learned about the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/:last-of-type&quot;&gt;:last-of-type&lt;/a&gt; pseudoselector, and that you can use shift+click in the developer tools to switch between color representations (hex, rgb, hsl, etc.). I also found out that you can see the contrast ratio of colors in the picker, which I hadn&#039;t noticed. So I&#039;m sure those will be useful at some point.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Learning CSS"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/learning-css" />
            <id>https://noeldemartin.com/tasks/learning-css</id>
            <published>2022-11-25T08:40:41+00:00</published>
            <updated>2022-11-25T08:40:41+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css&quot;&gt;Learning CSS&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/learning-css&quot;&gt;Learning CSS&lt;/a&gt;&lt;/p&gt;&lt;p&gt;After 10+ years making websites, you&#039;d think I already know CSS. And I guess I do, but I don&#039;t really &lt;em&gt;know&lt;/em&gt; CSS. As &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.joshwcomeau.com/&quot;&gt;Josh W. Comeau&lt;/a&gt; puts it: &amp;quot;if you don&#039;t learn how its underlying systems work, your mental model will always be incomplete.&amp;quot;.&lt;/p&gt;
&lt;p&gt;So I am taking his course, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://css-for-js.dev/&quot;&gt;CSS for JavaScript Developers&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Growing Vegetables"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/growing-vegetables#comment-6" />
            <id>https://noeldemartin.com/tasks/growing-vegetables#comment-6</id>
            <published>2022-11-01T16:22:24+00:00</published>
            <updated>2022-11-01T16:22:24+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/growing-vegetables#comment-6&quot;&gt;Growing Vegetables&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/growing-vegetables#comment-6&quot;&gt;Growing Vegetables&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Growing Vegetables"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/growing-vegetables#comment-5" />
            <id>https://noeldemartin.com/tasks/growing-vegetables#comment-5</id>
            <published>2022-11-01T16:21:49+00:00</published>
            <updated>2022-11-01T16:21:49+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/growing-vegetables#comment-5&quot;&gt;Growing Vegetables&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Now that we&#039;re well into autumn (although it doesn&#039;t feel like that over here!), I&#039;m going to close this task as finished.&lt;/p&gt;
&lt;p&gt;The plants have been on decay for a while, and I even stopped watering them a couple of weeks ago. So today I removed the plants and cleaned up the garden for next year. Needless to say, though, this task has been a huge success, and this is the expected end to the yearly cycle. I did ponder whether to plant some other seasonal plants for autumn or winter, but ultimately I decided I wouldn&#039;t. I&#039;ll probably get back to it next year, but I&#039;m not sure if I&#039;ll continue talking about it here. I guess it&#039;ll depend if I have something interesting to share or if it&#039;s just more of the same.&lt;/p&gt;
&lt;p&gt;For a first time experience, it went a lot better than I expected, and even though the fruits weren&#039;t huge, it was well worth it. I definitely got a year&#039;s worth of jalapeños, which was my number one goal in terms of output. Some of them I already cooked as jalapeño poppers, others I pickled (which I often add to salads), and the rest are stored in the freezer.&lt;/p&gt;
&lt;p&gt;But that doesn&#039;t mean there isn&#039;t room for improvement, of course. For starters, I did plant the vegetables too close to each other, and that&#039;s probably one of the reasons why some fruits were small. It was also a pain having to water daily, and ask for help when I left for holidays. Something I may explore next year is an automated watering system, or maybe give self-watering containers a try. And finally, I&#039;d like to try planting other varieties. The only herb I planted was basil, and I&#039;d like to give cilantro a try as well. Tomatoes were nice, but I&#039;m not sure if I&#039;ll plant them again because the ones I could buy at the store were a lot better. And the lettuce was a complete failure, so it would be nice to grow that one properly.&lt;/p&gt;
&lt;p&gt;And that&#039;s it! Here&#039;s some pictures to close this down properly:&lt;/p&gt;
&lt;h4&gt;August 18th — Jalapeños!&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/august-18th-jalapenos.jpg&quot; alt=&quot;Jalapeños&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;October 3rd — The last tomato&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/october-3rd-last-tomato.jpg&quot; alt=&quot;The last tomato&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;October 19th — This jalapeño has a visitor&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/october-19th-jalapeno-visitor.jpg&quot; alt=&quot;The jalapeño has a visitor&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;November 1st — See you next year, garden!&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/november-1st-the-end.jpg&quot; alt=&quot;The End&quot; /&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-20" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-20</id>
            <published>2022-10-29T06:25:09+00:00</published>
            <updated>2022-10-29T06:25:09+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-20&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Hey, so now that summer is over and I&#039;m heading back into a more productive season, I thought it was time for a new update.&lt;/p&gt;
&lt;p&gt;Since the last time I wrote here, I&#039;ve been on and off work for holidays and such, but overall I&#039;ve made good improvements. I got a lot of feedback in GitHub, and that&#039;s mostly what I&#039;ve been tackling (thanks to everyone who contributed!). I also implemented a couple new features that arised from suggestions or pains whilst using the app myself. You can find everything I&#039;ve done in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/blob/main/CHANGELOG.md&quot;&gt;the changelog&lt;/a&gt;, but here&#039;s some highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added the ability to see all of someone&#039;s public recipes in the viewer, and also to publish unlisted recipes.&lt;/li&gt;
&lt;li&gt;Added a servings selector, which automatically recalculates ingredient quantities. It&#039;s a bit clunky, but I think it&#039;s a good experimental feature to have that isn&#039;t too intrusive.&lt;/li&gt;
&lt;li&gt;Added a settings modal to configure language, animations, error reporting, and proxying for importing recipes.&lt;/li&gt;
&lt;li&gt;Improved error handling.&lt;/li&gt;
&lt;li&gt;Improved a bunch of interoperability use-cases.&lt;/li&gt;
&lt;li&gt;Improved a bunch of accessibility issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From those, there are a couple that are interesting to delve into in the technical side.&lt;/p&gt;
&lt;p&gt;The first one, interoperability. Overall, I was quite worried about this, and didn&#039;t want to dedicate a lot of time if anything difficult came up. But I have to say, at least with the tests I&#039;ve done, it was easier than expected. You can get an idea of the things I did looking at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/blob/main/cypress/integration/interoperability.spec.ts&quot;&gt;the interoperability tests&lt;/a&gt;, maybe the most interesting is the ability to work with both &lt;code&gt;http://schema.org&lt;/code&gt; and &lt;code&gt;https://schema.org&lt;/code&gt;. There&#039;s been &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/linkeddata/rdflib.js/issues/550&quot;&gt;a lot of headaches&lt;/a&gt; with this in the RDF world, but in the end I found a decent way to do it. By default, my application will use https, but as soon as it finds a recipe using http, it will switch to that. This was very easy to achieve thanks to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/soukai-solid&quot;&gt;soukai&lt;/a&gt;. Because I have all the RDF stuff encapsulated in the library, I &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/blob/main/src/services/CookbookService.ts#L261..L279&quot;&gt;hardly had to change anything in the app&lt;/a&gt; to make this work. I could even have a setting to let users choose which one to use, but I decided not to include it to avoid confusing people. The frustrating part about interoperability, though, is that in part it&#039;s outside of my control. It&#039;d be nice if other apps worked this way, but the reality is they won&#039;t. There&#039;s nothing I can do if they are not able to interpret the recipes generated in my app. Hopefully, in the future, this type of solutions will be included at the library or protocol level, so that the entire ecosystem can benefit.&lt;/p&gt;
&lt;p&gt;Another thing worth mentioning is accessiblity. Some months ago, I learned about it in my job at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://moodle.com/&quot;&gt;Moodle&lt;/a&gt;. But I wasn&#039;t too sure of what I was doing, because even though we passed &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.webkeyit.com/accessibility-services/digital-accessibility-audit-and-accreditation/&quot;&gt;one of those corporate accessibility reviews&lt;/a&gt;, I didn&#039;t interact with real users with accessibility requirements. And I wasn&#039;t going to pay for this type of service for Umai. So I was very lucky to find &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://devinprater.flounder.online/about.gmi&quot;&gt;someone&lt;/a&gt; who &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://devin.masto.host/@devinprater/108544233098896674&quot;&gt;oferred to test it for free&lt;/a&gt;. And I was super glad to get his reply: &amp;quot;it&#039;s one of the easiest and most simple web apps I&#039;ve ever used&amp;quot;. 🥳 So yeah, that was nice. If you&#039;re interested to learn about a11y as well, I&#039;d recommend getting started with these resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=HE2R86EZPMA&quot;&gt;BingO Bakery: Headings, Landmarks, and Tabs&lt;/a&gt; — Video introducing some basic concepts.&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/WAI/ARIA/apg/patterns/&quot;&gt;ARIA patterns&lt;/a&gt; — Learn about common components.&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://chrome.google.com/webstore/detail/aria-devtools/dneemiigcbbgbdjlcdjjnianlikimpck&quot;&gt;ARIA DevTools browser extension&lt;/a&gt; — Navigate a site like a non-sighted user would.&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://chrome.google.com/webstore/detail/headingsmap/flbjommegcjonpdmenkdiocclhjacmbi&quot;&gt;headingMaps browser extension&lt;/a&gt; — Navigate page headings.&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://chrome.google.com/webstore/detail/landmark-navigation-via-k/ddpokpbjopmeeiiolheejjpkonlkklgp&quot;&gt;Landmarks Navigation browser extension&lt;/a&gt; — Navigate landmarks.&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.chrome.com/docs/devtools/accessibility/reference/#pane&quot;&gt;Accessibility Pane in Chrome&lt;/a&gt; — Inspect accessibility roles and values.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Something else that gave me some problems is that Inrupt&#039;s WebIds are not editable, which broke all my assumptions about WebIds and logging into Solid PODs. Logging in itself is not a problem, since &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/inrupt/solid-client-authn-js/&quot;&gt;Inrupt&#039;s library&lt;/a&gt; does all the heavy lifting, but when it comes to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/type-indexes&quot;&gt;type indexes&lt;/a&gt; and such, it&#039;s a mess. It wasn&#039;t too hard to fix for now, but this is unfortunately still under discussions so it may break again in the future. If you want to learn more about it, you can read this issue: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/webid-profile/issues/40&quot;&gt;solid/webid-profile#40&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And with all that, I&#039;m confident now that the application is ready for its initial release. That is, functionality-wise. I still need to do all the releasy stuff: documentation, releasing stable versions of the dependencies, etc. I&#039;m still not super happy with the stability and performance overall, because I think it&#039;s a bit clunky and I&#039;ve seen more errors than I&#039;d like while polishing. But I won&#039;t be working on any of this for now, because I want to get the first version out of the door already.&lt;/p&gt;
&lt;p&gt;Looking at this task&#039;s history, I realize I started working on it on December 8th, 2020. So I guess that&#039;s a decent deadline to keep in mind, and wouldn&#039;t it be funny to release it exactly on that day? 😅 In any case, I&#039;m in the home stretch now. If I manage not to get too caught up in the documentation, it should be done soon.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Growing Vegetables"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/growing-vegetables#comment-4" />
            <id>https://noeldemartin.com/tasks/growing-vegetables#comment-4</id>
            <published>2022-08-16T17:25:31+00:00</published>
            <updated>2022-08-16T17:25:31+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/growing-vegetables#comment-4&quot;&gt;Growing Vegetables&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Now that we&#039;re right in the middle of Summer, I thought it&#039;s about time that I gave an update on how this is going. And the short version is: Success!&lt;/p&gt;
&lt;p&gt;I&#039;ve accomplished my initial goal of eating something grown from seed, and to be honest this has surpassed my expectations by a long shot, which is nice :). For details, continue reading. And if you only want to see some pics, scroll to the end.&lt;/p&gt;
&lt;p&gt;Last time, I mentioned that some flowers were sprouting. By the end of June, I could already see some of the first tomatoes showing themselves. And by the end of July, I harvested the first ones. After eating them, I cannot say that they are the best tomatoes I ever tried. To be honest, I didn&#039;t see that much difference in flavor from tomatoes that haven&#039;t been freshly harvested as I had read. But they are good and definitely a success :D. I&#039;ll probably grow them again next year (and they&#039;re still giving fruit). I didn&#039;t use them a lot for salads, the ones I buy at the store taste better, but they are perfect for &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://umai.noeldemartin.com/viewer?url=https://noeldemartin.solidcommunity.net/cookbook/pisto#it&quot;&gt;Pisto&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One the other hand, jalapeños have been late bloomers. They didn&#039;t show flowers until late June, and even though fruits started showing up early July, I haven&#039;t harvested them yet. One issue I&#039;m having overall is that I don&#039;t know when to harvest the plants. For tomatoes, it seems like shortly after they turn red is a good time. But jalapeños should be harvested right before turning red, or even when they are red. And that hasn&#039;t happened yet. Still, some of them already show some lines and I&#039;m pretty sure I could pick them up if I wanted.&lt;/p&gt;
&lt;p&gt;The rest of the plants are doing so-and-so. Basil did well, but I harvested it too late and it&#039;s not in good shape anymore. And the lettuce is still growing but I have no idea when to pick it up, because it&#039;s quite small (I think the container I&#039;m using isn&#039;t big enough).&lt;/p&gt;
&lt;p&gt;By the way, last time I mentioned I&#039;d have some issues during holidays. What I ended up doing is asking for help and someone came over to water the plants. But instead of doing it every day, I settled for doing it every two days and covered the plants so that they don&#039;t suffer as much from the sun. I&#039;d say it worked out because they are still alive and I haven&#039;t seen any detriment to their growth.&lt;/p&gt;
&lt;p&gt;Something else to mention is that for a while some of the tomato plants started showing yellow spots in their leafs. Reading online this doesn&#039;t seem too uncommon, and just removing the entire &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://duckduckgo.com/?q=tomato+suckers&quot;&gt;tomato suckers&lt;/a&gt; was enough to stop them spreading too much.&lt;/p&gt;
&lt;p&gt;And that&#039;s about it, I&#039;ll probably do one or two more updates before closing the task for this season. But I&#039;m already super happy with the results :).&lt;/p&gt;
&lt;h4&gt;June 29th — First tomatoes&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/june-29th-first-tomatoes.jpg&quot; alt=&quot;First tomatoes&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;July 15th — Operation holidays! Covering the garden while I&#039;m away&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/july-15th-operation-holidays.jpg&quot; alt=&quot;Operation holidays&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;July 24th — First successful harvest!&lt;/h4&gt;
&lt;p&gt;I didn&#039;t grow the cherries from seed though, that&#039;s why I didn&#039;t mention them before.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/july-24th-first-harvest.jpg&quot; alt=&quot;First harvest&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;August 16th — The garden today&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/august-16th-jalapenos.jpg&quot; alt=&quot;August 16th jalapeños&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/august-16th-tomatoes.jpg&quot; alt=&quot;August 16th tomatoes&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/august-16th-lettuce.jpg&quot; alt=&quot;August 16th lettuce&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/august-16th-garden.jpg&quot; alt=&quot;August 16th garden&quot; /&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-19" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-19</id>
            <published>2022-07-31T09:54:58+00:00</published>
            <updated>2022-07-31T09:54:58+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-19&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Just in the nick of time, here it is, the beta release! I&#039;ve also started using the app myself, so you can finally see what I&#039;ve been working on for the last couple of years. Sorry for the wait 😝.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://umai.noeldemartin.com&quot;&gt;umai.noeldemartin.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It is, however, not ready for release. So I would refrain from sharing it with others. You can learn more about the beta and give some feedback in GitHub: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/issues/1&quot;&gt;Beta Feedback&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&#039;m sure you&#039;ve heard this idea that if you&#039;re not embarrassed by something you release, you&#039;re launching too late. Believe it or not, I&#039;ve kept this in mind the entire time. So yes, I&#039;m still embarrassed to some extent, but I&#039;m very happy with the way it turned out. We&#039;ll see how it goes with the daily usage, and the feedback I get from others.&lt;/p&gt;
&lt;p&gt;However, there is something I&#039;m &lt;em&gt;really&lt;/em&gt; embarrassed about, and that&#039;s animations. What I thought would become an awesome system to implement cool transitions effortlessly, has turned into a bloated collection of hand-coded animations that is high-maintenance, error-prone, and sort of clunky to the eye. When it comes to the UI, the transitions system I cooked up has caused the most headaches by far, and I&#039;m not happy with the way it turned out. The end result from a user perspective is not bad (although I wouldn&#039;t be surprised if it&#039;s broken in some edge case I didn&#039;t test properly), but the developer experience is awful. I still think the fundamentals of my approach are right, and I certainly learned a lot. But I&#039;m not sure if I&#039;m willing to dedicate the time to take this where I&#039;d like it to be. For now it is good enough, but I&#039;ll have to think hard and long about upcoming apps and features.&lt;/p&gt;
&lt;p&gt;Having said that, I&#039;m really looking forward to the actual release and I don&#039;t plan on doing any big changes to the current version. It will also depend on how my daily usage goes, and the feedback I get, but my intention is to release the app as it is now from a user perspective.&lt;/p&gt;
&lt;p&gt;I&#039;ll be going on holidays for some days in August, and taking more breaks than usual the rest of the month, so I probably won&#039;t make any substantial progress until September. And to be honest, I&#039;d be surprised if I have the release out before October. But, hey, you can already use the app! If you want to follow the progress, you can subscribe to the issue on GitHub where I&#039;ll be posting about any new beta releases. Hopefully, the next entry on this journal will be about the release and I&#039;ll finally close this behemoth of a task.&lt;/p&gt;
&lt;p&gt;Thanks for following along!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Growing Vegetables"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/growing-vegetables#comment-3" />
            <id>https://noeldemartin.com/tasks/growing-vegetables#comment-3</id>
            <published>2022-06-18T09:49:37+00:00</published>
            <updated>2022-06-18T09:49:37+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/growing-vegetables#comment-3&quot;&gt;Growing Vegetables&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Here&#039;s a short update on what&#039;s happening with the plants.&lt;/p&gt;
&lt;p&gt;TLDR: They&#039;ve grown a lot, but still no fruit. I&#039;ve learned more rookie mistakes. Scroll below for pictures.&lt;/p&gt;
&lt;p&gt;So, as you&#039;ll see on the pictures below, the plants have grown a lot, and I&#039;m very happy about that :). For a first-time gardener like me, it&#039;s awesome to see what started as a bunch of seeds growing into such big and beautiful plants.&lt;/p&gt;
&lt;p&gt;But, I&#039;m still not sure that it&#039;s going as well as it should. For one, I&#039;ve been told that I should have separated some of the plants. In particular, the Tomatoes that seem to be growing the best are in a bundle of 3 jammed together and that&#039;s not good. I tried to separate them, but they were too tangled up and I was afraid to kill them if I tampered too much. So I just moved them into a dedicated container. The Jalapeños seem to be growing fine and don&#039;t have this problem so far, but I think they&#039;ve been stagnant for a while.&lt;/p&gt;
&lt;p&gt;But recently, the Tomatoes started growing some flowers so I think that&#039;s a good sign and maybe I&#039;ll finally get to enjoy some fruits :D.&lt;/p&gt;
&lt;p&gt;Other than the plants I already mentioned last time, I&#039;ve planted a new batch of Basil and this one&#039;s survived the transplant so that&#039;s nice. I also planted a couple of lettuce, but only one sprouted and it seems to be surviving so far, but I&#039;m not sure it&#039;s doing great. We&#039;ll see.&lt;/p&gt;
&lt;p&gt;Something I&#039;ve realized I haven&#039;t done at all is trimming plants. The only thing I&#039;ve done is planting, transplanting, and watering. I have also tied the tomatoes to a couple of sticks because I was told they need them (and it is quite windy up here), but that&#039;s all. I&#039;m not sure if I should be tending them any other way. For example, I&#039;ve been taking some leaves from the Basil and that wasn&#039;t a good idea, because &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=qVPnC6mGEsg&quot;&gt;Basil is supposed to be harvested from the stem&lt;/a&gt; (not stripping the leaves). So the Basil has now started to grow flowers which is not ideal, but I&#039;m just leaving it be to see how it goes.&lt;/p&gt;
&lt;p&gt;Overall, I&#039;d say I&#039;m happy how it&#039;s going, and I think if everything goes well I should accomplish my goal of eating at least one piece of food grown from seed. Although I&#039;m seeing that I may have some issues in August, because I&#039;ll probably leave for a week or two and I have to find a way to keep the plants alive. I&#039;m thinking that I could install an automatic watering system, but I&#039;m not sure how feasible that is because I don&#039;t have any water outlets near the balcony. Another option would be to ask someone to check on them, but I don&#039;t want to inconvenience anyone and many of my friends will be on holidays as well. I still have a couple of months to think about it, so we&#039;ll see.&lt;/p&gt;
&lt;p&gt;Here&#039;s some pictures of what&#039;s been going on:&lt;/p&gt;
&lt;h4&gt;May 20th — Some tomatoes are growing a lot&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/may-20th-tomatoes.jpg&quot; alt=&quot;Tomatoes growing a lot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/may-20th-jalapenos-and-basil.jpg&quot; alt=&quot;Jalapeños and Basil&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;May 28th — Relocated some plants&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/may-28th-tomatoes.jpg&quot; alt=&quot;Relocated tomatoes&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/may-28th-others.jpg&quot; alt=&quot;Other plants&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;May 29th — New Basil and Lettuce sprouting&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/may-29th-basil.jpg&quot; alt=&quot;New Basil sprouting&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/may-29th-lettuce.jpg&quot; alt=&quot;Lettuce sprouting&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;June 6th — Tomatoes are too close&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/june-6th-tomatoes.jpg&quot; alt=&quot;Tomatoes are too close&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;June 8th — Tomatoes show first flowers!&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/june-8th-tomatoes.jpg&quot; alt=&quot;Tomatoes first flowers&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;June 13th — Basil growing flowers&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/june-13th-basil.jpg&quot; alt=&quot;Basil growing flowers&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;June 18th — The entire garden!&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/june-18th-garden.jpg&quot; alt=&quot;The entire garden&quot; /&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-18" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-18</id>
            <published>2022-06-18T08:29:01+00:00</published>
            <updated>2022-06-18T08:29:01+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-18&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;blockquote&gt;
&lt;p&gt;I&#039;m very confident that in the next update, the app will be ready for production.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Well, here we are in the next update, and the app is not ready 😅. Confidence really is the liquor of the fools. I really thought I would manage to do it, but I realize a month has gone by and I&#039;m not there yet. So I reckon it&#039;s time for an update and I&#039;ll have to eat my own words.&lt;/p&gt;
&lt;p&gt;However, that doesn&#039;t mean I haven&#039;t made any strides!&lt;/p&gt;
&lt;p&gt;For one, I&#039;ve settled on most of the branding and style. A while ago I mentioned that I wasn&#039;t feeling great about the branding for this app so far. But that&#039;s changed now! I&#039;m pretty pumped about it, and I&#039;m really looking forward to releasing it. The basic approach is the same I had been working with, but I came across a couple of visual techniques that add some spice; and I&#039;m starting to like it a lot. After some iterations, I&#039;ve come across a whiteboard-like feeling for the app that I think is really cool. I hope everyone else likes it as well :).&lt;/p&gt;
&lt;p&gt;Something else that happened is that I realized I wasn&#039;t really done with features :(. I hadn&#039;t implemented deleting recipes yet, but I didn&#039;t even count it as &amp;quot;a feature&amp;quot; because it seemed trivial. Alas, being an offline-first app complicates things. Instead of just deleting an item, it has to be marked for deletion (or &amp;quot;soft deleted&amp;quot;) and delete it for real on synchronization. It wasn&#039;t that difficult to implement, but I also had to implement a bunch of stuff in soukai for soft deletes and leaving a trace behind (to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/Provider/Style/URI.html&quot;&gt;avoid dead links&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Which takes me to something else interesting that&#039;s been happening. Given that the app release is approaching, I started to think about publishing my custom vocab for CRDTs. Initially, I intended to host it myself at &lt;code&gt;vocab.noeldemartin.com&lt;/code&gt;, but &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/People/Berners-Lee/&quot;&gt;Tim&lt;/a&gt; suggested that I could try to add it to &lt;code&gt;w3.org&lt;/code&gt;, so &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/vocab/pull/69&quot;&gt;I started that process&lt;/a&gt;. However, I have to say that I&#039;m a bit lost on what&#039;s the timeline for this to get accepted, so depending how it goes I&#039;ll end up hosting it myself. But something good already came up of this.&lt;/p&gt;
&lt;p&gt;During the review, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/vocab/pull/69#discussion_r882506258&quot;&gt;Tim mentioned&lt;/a&gt; that RDF is monotonic and so a subset of a graph cannot contradict the meaning of the complete graph. What that means is that I cannot use default values for missing properties on a resource. I had seen &lt;code&gt;schema.org&lt;/code&gt; doing it, but it seems like even though it is very widely used, when it comes to RDF purity &lt;code&gt;schema.org&lt;/code&gt; leaves some things to be desired. So I ended up &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai-solid/commit/51e146db7a14dc7ff22caec799cc5ae0698fd707&quot;&gt;refactoring the operations schema for better modeling&lt;/a&gt;. It&#039;s always good to keep learning the proper ways of doing things with RDF, and this reminds of &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-9&quot;&gt;something I mentioned many updates ago&lt;/a&gt;. Eventually, I did learn the proper mindset to understand that. You cannot say that it&#039;s &amp;quot;invalid&amp;quot; to do that sort of thing, it&#039;s just that it&#039;s conveying a different meaning (which can be complementary, not contradictory). If you want to learn more about that, you can check out &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://gitter.im/solid/specification?at=60e9d11b7473bf3d781a3821&quot;&gt;the conversation I had about it in gitter&lt;/a&gt; right after posting that update.&lt;/p&gt;
&lt;p&gt;Other than this, I&#039;ve been spending more time than I&#039;d like to confess working on animations and such. It&#039;s a shame because I enjoy working on them a lot, but it&#039;s also true that they are not that important. Just over a month ago, there was a presentation at Google IO about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=JCJUPJ_zDQ4&quot;&gt;page transitions on the web&lt;/a&gt;. Whilst they are very interesting, I think they are too limiting for the type of animations I&#039;m doing. But I&#039;ll definitely have to reconsider my approach, because so far it&#039;s taking far too much of my time.&lt;/p&gt;
&lt;p&gt;To finish, seeing how it&#039;s going, I&#039;ve decided to set a deadline for starting to use the app myself and releasing the beta. Looking at my calendar and the month ahead, I think a good date would be August 1st. I may have it ready before that, but we all know &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Parkinson%27s_law&quot;&gt;that ain&#039;t happening&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Until next time!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Growing Vegetables"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/growing-vegetables#comment-2" />
            <id>https://noeldemartin.com/tasks/growing-vegetables#comment-2</id>
            <published>2022-05-11T17:19:18+00:00</published>
            <updated>2022-05-11T17:19:18+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/growing-vegetables#comment-2&quot;&gt;Growing Vegetables&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;If you thought the task on &lt;a href=&quot;https://noeldemartin.com/tasks/formatting-devices-with-lineageos&quot;&gt;formatting devices&lt;/a&gt; was out of character for this site, now I&#039;m going to journal about gardening 😅. To be honest, I wasn&#039;t sure about starting this task; but I began planting a couple of months ago and the idea has been nagging at me. So just to get it out of my head, here it is. And hopefully, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/YesVirginia_/status/1523899650880774144&quot;&gt;it&#039;ll be interesting to others&lt;/a&gt; as well.&lt;/p&gt;
&lt;p&gt;First of all, why do I want to grow my own vegetables (and herbs)? Certainly not to save money, because I don&#039;t think I will (even if I do, the time investment won&#039;t be worth it). But there are lots of good reasons. Most of my work and hobbies involve looking at a screen; I even read books and manga in a tablet. So a new hobby that doesn&#039;t is very welcome. I also think this type of skill is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vagabond.fandom.com/wiki/Farming_arc&quot;&gt;very enriching&lt;/a&gt;, even if I don&#039;t need it in today&#039;s society. And there is also some usefulness to it, because hopefully I&#039;ll be able to grow some vegetables that aren&#039;t so easy to find around here (like chili peppers).&lt;/p&gt;
&lt;p&gt;So yeah, here&#039;s my journey from a complete beginner to hopefully being able to eat some of my own produce. Feel free to let me know if I&#039;m doing something stupid though!&lt;/p&gt;
&lt;p&gt;Since I was such a beginner, where did I start? Well, first &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.robfitz.com/c/ama/how-to-grow-vegetables-in-small-spaces&quot;&gt;I asked about it&lt;/a&gt;, and I got a recommendation for a couple of books. I&#039;ve read them and I think they were very useful, particularly &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.amazon.com/Vegetable-Gardeners-Container-Bible-Containers/dp/1603429751&quot;&gt;The Vegetable Gardener&#039;s Container Bible&lt;/a&gt;. One of the takeways from this book was that plants need basically 3 things to grow: Sun, Water, and Air. It may seem obvious, but reading this book made me understand how plants grow a lot better. My understanding is that If you can manage these 3 correctly (together with soil pH and nutrients, which went a bit over my head), you&#039;re pretty much set.&lt;/p&gt;
&lt;p&gt;I started planting from seed in some egg cartons on March 1st; I planted 6 Jalapeños and 6 Basils. I actually placed 3 seeds in each slot, because I had heard that the germination rate is not always great. But so far it seems like most of them grew (90%+), so when I do it again I&#039;ll probably only use one or two seeds per slot. The initial step was to water them and leave them out of the light for about 3 days, then I brought them out to the window sill and kept them there for a long time. I watered them roughly once a day (according to the book, Basil and other herbs actually benefit from harsh conditions so I didn&#039;t always water them daily). By the way, one nice hack I learned from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.amazon.com/Veg-One-Bed-Abundance-Raised/dp/0241376521&quot;&gt;another book&lt;/a&gt; was to use a plastic bottle with holes on the top for watering. It was perfect to water small seedlings, but even now I&#039;ve just moved to a bigger bottle.&lt;/p&gt;
&lt;p&gt;On March 8th, I started seeing the first Basil sprouts. And it wasn&#039;t until March 18th that I saw that happen for the Jalapeños. I have to confess that I was surprised at how slow they grew. In part I think that&#039;s because it wasn&#039;t the right weather yet, but it&#039;s also possible that I was messing something up. I guess I&#039;ll learn with time :).&lt;/p&gt;
&lt;p&gt;Then on March 21st I planted Tomatoes from seed as well, and they didn&#039;t sprout until April 1st. The other plants were growing but still not as quickly as I&#039;d like or thought they would. It wasn&#039;t clear by reading the book when I should transplant seedlings into their own pots, but searching on the web I found that it should be done when &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://northerngardener.org/true-leaves/&quot;&gt;the first set of true leaves&lt;/a&gt; show up. This didn&#039;t happen until April 4th for Basil, and it was also around this time that I started taking plants outside for some time to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.thespruce.com/how-to-harden-off-plants-1402554&quot;&gt;harden them up&lt;/a&gt; (I never made them spend the night though, until two days before transplanting). One issue I had is that Basil seedlings fell into the ground very often. I&#039;m not sure why it happened, as I found them on the ground when I came back to take them inside. Maybe birds liked it more, or the wind threw the lighter box, etc. I still don&#039;t know why, maybe I&#039;ll learn more in the future. On April 18th, Jalapeños and Tomatoes showed their first true leaves.&lt;/p&gt;
&lt;p&gt;Finally, on April 30th I started taking them out for the night to prepare for transplanting. Unfortunately, this killed the Basil so that was that :/. But funnily enough, some weeks before I had gotten an already grown Basil plant as a gift, so I transplanted that one into a pot. Transplanting was not too hard, and I also added some fertilizer to the new soil (I think this should be done only twice in a plant&#039;s life: on transplant and when they start getting big). I just followed the instructions on the box for quantities. Books I&#039;ve read mentioned making your own compost and such, but I don&#039;t think I&#039;m ready for that yet.&lt;/p&gt;
&lt;p&gt;Today, two weeks since transplant, most plants seem to be growing a lot quicker than before which is nice (except one tomato that didn&#039;t survive). The plants are still a long way from producing anything edible, but I&#039;m happy that I seem to be on the right track with some of them.&lt;/p&gt;
&lt;p&gt;And that&#039;s it for now! I&#039;ll keep updating this as I go, but the updates will probably be very sporadic. This task could technically be open forever, but I&#039;ll consider it done when the growing season is over (November or December, I suppose).&lt;/p&gt;
&lt;p&gt;Here&#039;s some pictures of the timeline I described:&lt;/p&gt;
&lt;h4&gt;March 1st — Seeds planted&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/march-1st.jpg&quot; alt=&quot;Seeds planted&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;March 8th — First Basil sprouts&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/march-8th.jpg&quot; alt=&quot;First Basil sprouts&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;March 18th — First Jalapeño sprouts&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/march-18th.jpg&quot; alt=&quot;First Jalapeño sprouts&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;April 9th — Tomato, Basil, &amp;amp; Jalapeño seedlings&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/april-9th-tomatoes.jpg&quot; alt=&quot;Tomato seedings&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/april-9th-basil.jpg&quot; alt=&quot;Basil seedings&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/april-9th-jalapenos.jpg&quot; alt=&quot;Jalapeño seedings&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;May 1st — Transplant&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/may-1st-jalapenos.jpg&quot; alt=&quot;Jalapeños transplant&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/may-1st-basil-and-tomatoes.jpg&quot; alt=&quot;Basil and Tomatoes transplant&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;May 11th — They are growing!&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/may-11th-jalapenos.jpg&quot; alt=&quot;Jalapeños growing&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/growing-vegetables/may-11th-basil-and-tomatoes.jpg&quot; alt=&quot;Basil and Tomatoes growing&quot; /&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Growing Vegetables"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/growing-vegetables" />
            <id>https://noeldemartin.com/tasks/growing-vegetables</id>
            <published>2022-05-11T17:18:57+00:00</published>
            <updated>2022-05-11T17:18:57+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/growing-vegetables&quot;&gt;Growing Vegetables&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/growing-vegetables&quot;&gt;Growing Vegetables&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I&#039;ve wanted to grow vegetables at home for a long time, but for one reason or another I wasn&#039;t able to do it until now. I&#039;m not planning on producing a lot, but this is my first foray into gardening so I&#039;m looking forward to learning the basics.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-17" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-17</id>
            <published>2022-05-08T15:05:25+00:00</published>
            <updated>2022-05-08T15:05:25+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-17&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I&#039;m happy to report that I&#039;m done with features for v0.1! 🥳&lt;/p&gt;
&lt;p&gt;As always, I ended up going a &lt;em&gt;bit&lt;/em&gt; overboard and actually implemented more than I intended... But I&#039;m very confident that in the next update, the app will be ready for production. Not released, but good enough to start using it myself.&lt;/p&gt;
&lt;p&gt;If you look at the list of things left that I wrote a couple of updates ago, the first one says &amp;quot;Recipes sharing&amp;quot;. This is something that I think will be very important, because it&#039;ll make this app useful for non-Solid users as well. However, this has been my first time implementing anything related with authorization, so I had to learn a bit about it.&lt;/p&gt;
&lt;p&gt;This could get very long, so I&#039;ll summarize saying that there are currently two systems for handling authorization in Solid: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidproject.org/TR/wac&quot;&gt;WAC&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solid.github.io/authorization-panel/acp-specification/&quot;&gt;ACP&lt;/a&gt;. WAC was the first one, and in practice is supported by most servers (as far as I know, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://inrupt.com/products/enterprise-solid-server/&quot;&gt;ESS&lt;/a&gt; is the only one that doesn&#039;t). ACP is the new approach, but it doesn&#039;t seem to be supported by most servers and to be honest, seems a lot more complicated (I could understand WAC pretty quickly, but reading the ACP spec went a bit over my head). So in the end, I decided to just support WAC for now.&lt;/p&gt;
&lt;p&gt;There are multiple reasons for making this decision. First, as you may know if you&#039;re reading this, the development of this app is taking ages and I want to be done with it (&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/3.5-chapter-14#scope-hammering&quot;&gt;scope hammer&lt;/a&gt;!). Second, the lack of support doesn&#039;t make it appealing (to be honest, this reminds me a lot to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solid.github.io/data-interoperability-panel/specification/&quot;&gt;the interoperability spec&lt;/a&gt;; it sounds cool in theory, but it&#039;s still too experimental to be used in practice). And third, I don&#039;t think this is a must-have in my app. After all, users should be able to update the permissions of their files using a different app, that&#039;s the point of Solid. I could also start using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/inrupt/solid-client-js&quot;&gt;Inrupt&#039;s client library&lt;/a&gt;, which supports both; but I don&#039;t think this use-case is strong enough to warrant adding more dependencies (and I want to keep them &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://bundlephobia.com/package/@inrupt/solid-client@1.22.0&quot;&gt;down to a minimum&lt;/a&gt;). This is also the first and only feature that doesn&#039;t really work offline, but given the nature of the use-case, I&#039;d say that&#039;s ok.&lt;/p&gt;
&lt;p&gt;So with that, recipes sharing is done!&lt;/p&gt;
&lt;p&gt;Something else I&#039;ve been working on these last couple of weeks was the &amp;quot;Smooth onboarding experience&amp;quot;. When I wrote that, I thought this meant doing some UX/UI and copy writing. But the more I looked into it, the more I realized that something was missing. I said before that importing recipes from the Web will be the main mechanism for users to populate their cookbook. But there was still an elephant in the room called CORS. My previous solution was to instruct people into copy pasting the source of a website. But as you can imagine, that wasn&#039;t very user-friendly. So I bit the bullet, and I&#039;ve ended up implementing &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/proxy&quot;&gt;a proxy server&lt;/a&gt; that will take care of this. There are still a couple of things left, though. The first one is that I still need to work on communicating this to users. I could just do it without even telling them, but it goes against my ethos for the app (100% client side, decentralized, etc.). And I also want to give them an opportunity to use their own proxy. The other thing I want to look into is to actually implement a proxy properly 😅. What I&#039;ve done thus far is too specific to my app (albeit very simple, I just have a &lt;code&gt;/fetch&lt;/code&gt; endpoint on a server that replies to &lt;code&gt;POST&lt;/code&gt; requests). Because of that, the only real option for someone who wants to use their own proxy is to self-host my own solution, which is Open Source. But it seems like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling#http_tunneling&quot;&gt;HTTP proxies&lt;/a&gt; are a thing, and they follow a standard. So I should be able to implement that and any existing proxy service should work. I&#039;ll probably look into that after I start using the app myself (but before the release).&lt;/p&gt;
&lt;p&gt;If you look at the list of things left, you&#039;ll notice there&#039;s still a bunch left. But I&#039;ve decided to drop a couple. I won&#039;t be doing the &amp;quot;Vue ecosystem review&amp;quot; nor the &amp;quot;http vs https schema.org handling&amp;quot; yet. So that only leaves some general housekeeping tasks, and then you&#039;ll finally be able to experience the app for yourself.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Attending Laracon EU"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-laracon-eu#comment-3" />
            <id>https://noeldemartin.com/tasks/attending-laracon-eu#comment-3</id>
            <published>2022-04-27T15:25:15+00:00</published>
            <updated>2022-04-27T15:25:15+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/attending-laracon-eu#comment-3&quot;&gt;Attending Laracon EU&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/attending-laracon-eu#comment-3&quot;&gt;Attending Laracon EU&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending Laracon EU"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-laracon-eu#comment-2" />
            <id>https://noeldemartin.com/tasks/attending-laracon-eu#comment-2</id>
            <published>2022-04-27T15:19:44+00:00</published>
            <updated>2022-04-27T15:19:44+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-laracon-eu#comment-2&quot;&gt;Attending Laracon EU&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;And that&#039;s a wrap!&lt;/p&gt;
&lt;p&gt;I arrived to Amsterdam a few days before the conference, and I used this opportunity to visit &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://keukenhof.nl/en/&quot;&gt;Keukenhof&lt;/a&gt;, a beautiful botanic garden that&#039;s the most radiant in spring. I also visited a couple of museums, strolled around the city, and experienced &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Koningsdag&quot;&gt;Koningsdag&lt;/a&gt; first-hand. I have to say the part I enjoyed the most was seeing &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://duckduckgo.com/?q=Koningsdag+vondelpark+children&amp;amp;iar=images&amp;amp;iax=images&amp;amp;ia=images&quot;&gt;kids setting up shop in the streets&lt;/a&gt; :).&lt;/p&gt;
&lt;p&gt;But the main purpose of my trip was of course Laracon. So, how was it?&lt;/p&gt;
&lt;p&gt;First, I have to say that I was impressed by the quality of presentations. I shouldn&#039;t be that impressed, because I have seen many recorded Laracons and they are always great. But seeing it in person definetly has a different feel to it, it&#039;s like attending a live concert of your favorite band for the first time. You&#039;ve seen them live countless times, but being there is a whole different experience. I think all the presenters did a great job, and I got something out of each presentation. If I had to pick my top 3, they would be the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bugfixing your career by Diana Scharf&lt;/li&gt;
&lt;li&gt;Living your Pest Life by Luke Downing&lt;/li&gt;
&lt;li&gt;Taking Laravel to the edge with HTTP caching &amp;amp; Varnish by Thijs Feryn&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One of the things I enjoy the most from Laracons is that, although I don&#039;t use Laravel as much as I would like, many of the presentations are still useful. Even if you have never used Laravel in your life, there were some presentations talking about non-technical topics like mental health and long-term career thinking that would be helpful for any developer.&lt;/p&gt;
&lt;p&gt;It was also great to meet fellow artisans, and I was surprised by how many people were in a situation similar to mine. We like Laravel a lot, but we&#039;re not using it in our day-to-day for one reason or another. Still, our love for Laravel brings us together.&lt;/p&gt;
&lt;p&gt;However, as much as I enjoyed the conference, there was room for improvement and since &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/LaraconEU/status/1519110582858825728&quot;&gt;the organizers asked for feedback&lt;/a&gt;, I&#039;ll go ahead and share my honest opinion.&lt;/p&gt;
&lt;p&gt;When this Laracon was announced, I was super excited about it. So much, in fact, that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/NoelDeMartin/status/1457726379286487040&quot;&gt;I was the 2nd person to purchase a ticket&lt;/a&gt;. I&#039;ve always wanted to attend a Laracon, and I had some expectations that haven&#039;t been met. Sure, you could say it was my fault for having high expectations. And &lt;a href=&quot;https://noeldemartin.com/blog/you-cant-always-get-what-you-want#ditch-goals-and-expectations-embrace-compasses-and-maps&quot;&gt;I would agree&lt;/a&gt;. But I still think sharing my experience can reveal things to improve, so let me break those down.&lt;/p&gt;
&lt;p&gt;The first one, and the most obvious, was the speaker lineup. When I purchased the tickets, it was a blind purchase because it hadn&#039;t been revealed. But I assumed that at least Taylor would be there. After all, this was going to be the first in-person conference for a while, and I thought this would be the perfect opportunity to reveal &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/taylorotwell/status/1455898022152376332&quot;&gt;Beep&lt;/a&gt;. But as time went by, I realized this wasn&#039;t going to happen. My suspicions were confirmed once &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/LaraconEU/status/1514303868808667155/photo/1&quot;&gt;the lineup was revealed&lt;/a&gt; (two weeks before the conference). I know what some of you may think &amp;quot;why is it so important to see Taylor?&amp;quot;. Well, in my opinion, Laravel is Taylor. At least the community, ethos, and everything else that makes Laravel special. After all, Laravel is not &amp;quot;just the code&amp;quot; for me, or I wouldn&#039;t be so excited about a framework that I have barely used in the last 4 years. So this felt like attending an AC/DC concert without Angus Young. Not only that, there are others I&#039;ve been following for a while and would love to see live: Adam Wathan, Jeffrey Way, Caleb Porzio, etc. So Bon Scott or Brian Johnson weren&#039;t there either. And nothing to take away from the speakers we had, as I said they did a great job. But I couldn&#039;t help but feel like something was missing.&lt;/p&gt;
&lt;p&gt;Something else that bugged me was the price tag. I suppose for most people this isn&#039;t that important, because their company is covering the expenses. But I paid for this out of my own pocket, so I may be more sensitive to price than the average attendee. Tickets cost 482€ (excluding taxes), and I think that&#039;s a hefty price for a one-day event. Sure, I have no idea about organizing conferences, so this is just an opnion (like the rest of this rant). But I didn&#039;t care at all about the food, the drinks, or the venue. All I cared about was meeting people, and enjoying the talks. So when they announced that there would be an open bar during the second half of the conference, I couldn&#039;t help but think that the price was high for the wrong reasons.&lt;/p&gt;
&lt;p&gt;Finally, something that you would think isn&#039;t that important, was the conference website. When I think about Laracons, one of the reasons I like them so much is that they always come with a gorgeous website and branding. And I&#039;ve always been sharing Laracon websites with my peers even when I wasn&#039;t attending. However, this time, I was so embarassed by the website that I didn&#039;t share it at all.&lt;/p&gt;
&lt;p&gt;In summary, a Laracon for me is an event with Taylor, a gorgeous website, and great talks. And only the last one was there. If I have to be honest this felt more like a &amp;quot;community Laracon&amp;quot; than an official one.&lt;/p&gt;
&lt;p&gt;Not to end on a sour note, I will say that the downsides by no means overshadow the good parts. It was a great conference, and most of the issues arise from unmanaged expectations on my part. Overall, I&#039;m happy to have finally attended my first Laracon. I had a great time, and hopefully some time in the future I&#039;ll get to see Taylor live. I did see AC/DC once, and that&#039;s a feeling that will stay with me for the rest of my life.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Attending Laracon EU"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-laracon-eu" />
            <id>https://noeldemartin.com/tasks/attending-laracon-eu</id>
            <published>2022-04-19T16:33:28+00:00</published>
            <updated>2022-04-19T16:33:28+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/attending-laracon-eu&quot;&gt;Attending Laracon EU&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/attending-laracon-eu&quot;&gt;Attending Laracon EU&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This year, I&#039;m attending my first in-person &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laracon.eu&quot;&gt;Laracon&lt;/a&gt; ever! It&#039;s happening in Amsterdam on April 26th, and I&#039;m super excited about it. Laravel is probably the project that&#039;s had the biggest impact on my development career, and I love its community. So I&#039;m sure it will be tons of fun.&lt;/p&gt;
&lt;p&gt;I&#039;ll be in Amsterdam from the 23rd to the 27th (which is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Koningsdag&quot;&gt;King&#039;s day&lt;/a&gt;!).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-16" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-16</id>
            <published>2022-03-21T18:26:14+00:00</published>
            <updated>2022-03-21T18:26:14+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-16&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;m not done with the app yet, but last week I worked on something that I thought would be interesting as a stand-alone update. So, today&#039;s entry will be 100% technical :).&lt;/p&gt;
&lt;p&gt;One feature I hadn&#039;t implemented yet was image uploading. If you check the list of things left to do from last time, you&#039;ll notice this wasn&#039;t there. And that&#039;s because I didn&#039;t intended to implement it for the initial release. However, after going through the onboarding, I realized this is actually very important. So far, I had just been grabbing recipes and images from the Web, but when I actually tried to create my own recipes, the inability of uploading images was too crippling. So I just went ahead and started implementing it. After all, I&#039;ve already implemented image uploads in other apps many times, how hard could it be to do it in Solid? (said the ingenuous fool).&lt;/p&gt;
&lt;p&gt;Turns out, it&#039;s not that easy. I was already aware that images cannot be inserted in the DOM like you would any normal image. If you write &lt;code&gt;&amp;lt;img src=&amp;quot;https://my-pod.com/recipes/ramen.jpg&amp;quot;&amp;gt;&lt;/code&gt;, this will probably fail to render the image. That happens because the image will be private, and the POD can&#039;t return its contents without proper authentication. The solution is to fetch the image using an authenticated fetch and inject the image contents dynamically with Javascript. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/inrupt/solid-ui-react/blob/main/src/components/image/index.tsx&quot;&gt;That&#039;s actually what Inrupt&#039;s React SDK is doing&lt;/a&gt;. And that works, but I faced an additional issue. My app is offline-first! If I really mean it, you should be able to create new recipes offline (including images, of course). So that alone won&#039;t cut it.&lt;/p&gt;
&lt;p&gt;After some tinkering, I came up with a solution that whilst not being perfect is good enough for the first version. Basically, I am storing images in IndexedDB. Something nice is that you can actually store Blobs in IndexedDB, so I didn&#039;t have to bother with serialization woes. When the user goes back online, I&#039;ll upload the images to the server and remove them from IndexedDB. This works better than I expected, and even though &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/blob/c9f26702ba4f01b91003df51caa1da8e94fa3fcc/src/components/recipe/RecipeImage.vue&quot;&gt;it complicated the image component a bit&lt;/a&gt;, it&#039;s worth it.&lt;/p&gt;
&lt;p&gt;But there was still another issue. Browsers are pretty good at caching images; if you go offline, it&#039;s very likely that you can see the images you&#039;ve encountered online without doing anything special. This is because images usually come with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control&quot;&gt;some special headers&lt;/a&gt; and get cached for a while. However, Solid servers don&#039;t seem to do that at the moment (I have to investigate why, but I don&#039;t think I&#039;ll be able to fix that anytime soon). So it&#039;s up to my app to cache everything. As far as I understand, that&#039;s not something Inrupt&#039;s SDK is having into account, so images are downloaded each time they are appear on screen which ain&#039;t nice (I could be mistaken though, I haven&#039;t used the library, I&#039;ve only browsed the source code from time to time). What I ended up doing to work around this issue, is using the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Cache&quot;&gt;Cache API&lt;/a&gt; to store images. The good part is that since they are treated as cache, the browser can remove them whenever it needs some storage. The bad part is that it doesn&#039;t know anything about caching headers, so I have to handle all that manually. Which I&#039;m not doing yet, so images are essentially cached forever. Which in turn causes a related issue: when images are updated in the POD, my app won&#039;t notice and it&#039;ll continue using the old version. I can probably fix that by doing a HEAD request and compare ETags or something, but I still haven&#039;t done any of that and this is where I&#039;ll leave it for the first version.&lt;/p&gt;
&lt;p&gt;There is also something else that made me avoid this feature in the first place. And that is treating the images. In a typical application, you upload the raw image file and the server takes care of resizing it and generating thumbnails if necessary. But given that I&#039;m doing a &amp;quot;pure&amp;quot; Solid App (one without a server component), I can&#039;t do that. Initially, I looked at the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://pqina.nl/filepond/&quot;&gt;filepond&lt;/a&gt; library, which is pretty nice but felt too heavy for my use-case. After digging a little bit more, I ended up using a smaller library called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/nodeca/image-blob-reduce&quot;&gt;image-blob-reduce&lt;/a&gt;; which ain&#039;t as fancy but gets the job done and has a much smaller footprint. I also decided not to generate thumbnails for now, but I think that should be fine for the initial release.&lt;/p&gt;
&lt;p&gt;And that&#039;s it for today&#039;s update! I already started working on the sharing functionality and I think it&#039;s looking good, I want it to be useful for both Solid and non-Solid users alike. So it may end up being one of the most important features in the app. But more about that in an upcoming update.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Formatting devices with LineageOS"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/formatting-devices-with-lineageos#comment-4" />
            <id>https://noeldemartin.com/tasks/formatting-devices-with-lineageos#comment-4</id>
            <published>2022-03-04T17:49:31+00:00</published>
            <updated>2022-03-04T17:49:31+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/formatting-devices-with-lineageos#comment-4&quot;&gt;Formatting devices with LineageOS&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/formatting-devices-with-lineageos#comment-4&quot;&gt;Formatting devices with LineageOS&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Formatting devices with LineageOS"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/formatting-devices-with-lineageos#comment-3" />
            <id>https://noeldemartin.com/tasks/formatting-devices-with-lineageos#comment-3</id>
            <published>2022-03-04T17:42:40+00:00</published>
            <updated>2022-03-04T17:42:40+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/formatting-devices-with-lineageos#comment-3&quot;&gt;Formatting devices with LineageOS&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Well, that went a lot better than I imagined!&lt;/p&gt;
&lt;p&gt;I had reserved today and tomorrow in my calendar to get this done, and you can imagine my surprise when I did it in 15 minutes. Sure, backing up all my files and restoring everything wasn&#039;t so fast, but the delicate part of the process went without a hitch. I just followed &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://wiki.lineageos.org/devices/shamu/install&quot;&gt;the instructions&lt;/a&gt;, and everything worked flawlessly.&lt;/p&gt;
&lt;p&gt;But since we&#039;re here and I&#039;ve decided to talk about this, I thought it would be nice if I mention ALL the apps I&#039;ve installed from scratch. This turned out a lot longer than I anticipated, so feel free to skim through it:&lt;/p&gt;
&lt;details&gt;
&lt;summary class=&quot;cursor-pointer&quot;&gt;Apps installed&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://f-droid.org/&quot;&gt;F-Droid&lt;/a&gt; and &lt;a target=&quot;_blank&quot; href=&quot;https://f-droid.org/en/packages/com.aurora.store/&quot;&gt;Aurora Store&lt;/a&gt;. It would have been nice to install everything from F-Droid, but I don&amp;#39;t think I&amp;#39;m able to go 100% Open Source yet (or maybe never). So I searched for decent Open Source solutions first, and fell back to proprietary solutions when necessary. I have to say though, the discoverability in F-Droid is pretty awful. For one, apps have no reviews or anything to gauge their quality, so I had to look at their websites to get an idea. And the search functionality is very lackluster, so I ended up searching more on the web that on the appstore.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://f-droid.org/en/packages/com.duckduckgo.mobile.android/&quot;&gt;DuckDuckGo&lt;/a&gt; and &lt;a target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=com.brave.browser&quot;&gt;Brave&lt;/a&gt;. I was already using DuckDuckGo as my primary browser before, but I need an alternative given that it doesn&amp;#39;t support installing PWAs. I was using Google Chrome for this purpose, but this time I decided to go with Brave. It&amp;#39;s actually my first time using it, because I use Firefox on Desktop. We&amp;#39;ll see how it goes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Talking about browsers, I love PWAs and I installed a bunch of them. I always prefer them to native apps except in some very specfic scenarios, but not all apps have a PWA counterpart. The ones I have installed now are Twitter, &lt;a target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/&quot;&gt;Mastodon&lt;/a&gt;, &lt;a target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/solid-focus/&quot;&gt;Solid Focus&lt;/a&gt;, &lt;a target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/media-kraken/&quot;&gt;Media Kraken&lt;/a&gt;, &lt;a target=&quot;_blank&quot; href=&quot;https://settleup.app/&quot;&gt;SettleUp&lt;/a&gt;, and Google Maps. The only one I&amp;#39;m not happy with is SettleUp (besides my own apps of course, which still need many improvements :P). I was using SettleUp&amp;#39;s native version before, but it doesn&amp;#39;t seem to work well without Google Services, so I&amp;#39;m forced to use the PWA now which is very inferior. I wasn&amp;#39;t super happy with it to begin with. The UX is quite good but the data practices aren&amp;#39;t, so I can&amp;#39;t trust them for the long term.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=com.bambuna.podcastaddict&quot;&gt;Podcast Addict&lt;/a&gt;. I love this app, and I use it all the time (I logged 48 days and 4 hours of listening time since 2017, you do the math). I haven&amp;#39;t tried many other podcasting apps, so I don&amp;#39;t have much to compare with, but I&amp;#39;m so happy with it that I don&amp;#39;t want to bother. It&amp;#39;s also made by &lt;a target=&quot;_blank&quot; href=&quot;https://twitter.com/xguillem&quot;&gt;an independent developer&lt;/a&gt;, which is always a bonus for me. However, I just found out that the paying mechanism to remove ads only works with Google Services :(. The truth is that ads aren&amp;#39;t too annoying in this app, but still, I hate ads. So I&amp;#39;m torn on this one... I reached out to the developer to see if there is a workaround, but if there isn&amp;#39;t I&amp;#39;ll really struggle to find an alternative.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=com.ttxapps.dropsync&quot;&gt;DropSync&lt;/a&gt; + &lt;a target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=md.obsidian&quot;&gt;Obsidian&lt;/a&gt;. Much like Derek Sivers &lt;a target=&quot;_blank&quot; href=&quot;https://sive.rs/plaintext&quot;&gt;mentioned recently&lt;/a&gt;, I&amp;#39;m a big fan of plain text files. In Desktop, I always use &lt;a target=&quot;_blank&quot; href=&quot;https://www.sublimetext.com/&quot;&gt;Sublime Text&lt;/a&gt; for writing, and it&amp;#39;s probably the thing I do the most on my computer (other than programming). But in Mobile, it&amp;#39;s been a struggle. Plain text files truly are portable and resilient, but I&amp;#39;ve struggled to find editors and sync mechanisms that work for me. Some years ago I was happy using an app called JotterPad, but &lt;a target=&quot;_blank&quot; href=&quot;https://twitter.com/NoelDeMartin/status/1371121689820602378&quot;&gt;that didn&amp;#39;t end well&lt;/a&gt;. Since that happened, I haven&amp;#39;t been able to recover my workflow and I&amp;#39;ve dabbling with apps like &lt;a target=&quot;_blank&quot; href=&quot;https://hyperdraft.rosano.ca/&quot;&gt;Hyperdraft&lt;/a&gt;, which I like, but are not as good as plain text files. Hopefully, this will be a better approach until I find something definitive.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://telegram.org/&quot;&gt;Telegram&lt;/a&gt;. This is the only chat app I&amp;#39;ve had on my phone for a while. I used WhatsApp a lot before, but I &amp;quot;successfully&amp;quot; quit some months ago. I say &amp;quot;successfully&amp;quot; because I haven&amp;#39;t used it again but &lt;a target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/107183411624558172&quot;&gt;I&amp;#39;ve felt the consequences&lt;/a&gt;. I would use Signal, but it was hard enough convincing some people to install Telegram just to talk with me. I&amp;#39;m not fighting that battle again for a while.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://newpipe.net/&quot;&gt;NewPipe&lt;/a&gt;. I was using &lt;a target=&quot;_blank&quot; href=&quot;https://vancedapp.com/&quot;&gt;Youtube Vanced&lt;/a&gt; before, but this one seems better. One drawback I can see is that it doesn&amp;#39;t allow to log in with a Google account, so I won&amp;#39;t be able to share watch later lists. But I don&amp;#39;t use Youtube on mobile that much anyways, so maybe I won&amp;#39;t mind.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=com.basecamp.hey&quot;&gt;HEY&lt;/a&gt;. Not much to mention here, I have a HEY email account so this is my email client. Before having a HEY email, I was using &lt;a target=&quot;_blank&quot; href=&quot;https://k9mail.app/&quot;&gt;K-9 Mail&lt;/a&gt; and I was quite happy with it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://github.com/andOTP/andOTP&quot;&gt;andOTP&lt;/a&gt;. The same app I&amp;#39;m using in the tablet for 2FA, which made it easy to transfer codes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://f-droid.org/en/packages/com.lesspass.android/&quot;&gt;LessPass&lt;/a&gt;. My main password manager. I used &lt;a target=&quot;_blank&quot; href=&quot;https://twitter.com/NoelDeMartin/status/1362479762841739265&quot;&gt;LastPass&lt;/a&gt; before, but last year &lt;a target=&quot;_blank&quot; href=&quot;https://twitter.com/NoelDeMartin/status/1362479762841739265&quot;&gt;I made the switch&lt;/a&gt; and so far so good. I would be lying if I said using this isn&amp;#39;t a little bit more cumbersome, but I think it&amp;#39;s bearable and some day I may try to improve it (thanks to the magic of Open Source :D).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://f-droid.org/en/packages/com.example.barcodescanner/&quot;&gt;QR &amp;amp; Barcode Scanner&lt;/a&gt;. Again, not much to mention here.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=es.caixabank.caixabanksign&quot;&gt;CaixaBank Sign&lt;/a&gt;. My bank account&amp;#39;s signing app, which I&amp;#39;m forced to use (thank god it doesn&amp;#39;t require Google Services). I&amp;#39;m also very unhappy with this one, but changing banks is something I&amp;#39;ve had on my TODO list for a while; and I haven&amp;#39;t found any clear alternatives either.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=com.xiaomi.hm.health&quot;&gt;Mi Fit&lt;/a&gt;. Again, another app I don&amp;#39;t like having on my phone :/. But it&amp;#39;s the only one compatible with my scale, which I use once a week. I&amp;#39;ll have to replace it one of these days, but going back to my frugal mindset, this one is doing the job.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=com.xodo.pdf.reader&quot;&gt;Xodo PDF Reader&lt;/a&gt;. This is also one of the apps I use the most in my phone. And for this category, I&amp;#39;ve tried many. Taking advantage of the fresh install, I gave some of the apps in F-Droid another chance, but none came even close. So I&amp;#39;m sticking with it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=com.devhd.feedly&quot;&gt;Feedly&lt;/a&gt;. This is the one app I&amp;#39;m the most annoyed with. I also use it quite often, but this is something that should work perfectly in a browser. Alas, it doesn&amp;#39;t; the responsive layout is all messed up. So I&amp;#39;m forced to install the app. This is also a service I&amp;#39;m not 100% happy with, so I&amp;#39;ll have to switch some day.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=us.zoom.videomeetings&quot;&gt;Zoom&lt;/a&gt;. Essential for remote work, as you can imagine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://f-droid.org/en/packages/at.bitfire.davdroid/&quot;&gt;DAVx&lt;sup&gt;5&lt;/sup&gt;&lt;/a&gt;. Google Calendar is yet another of those services I want to move away from, but I haven&amp;#39;t done it yet (although the guys at Basecamp &lt;a target=&quot;_blank&quot; href=&quot;https://www.rework.fm/build-half-a-product-not-a-half-assed-project/&quot;&gt;seem to have it on their radar&lt;/a&gt; 🤞). However, I found a way to synchronize events with the built-in calendar from LineageOS using this app. For now, this should do.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=net.sourceforge.opencamera&quot;&gt;Open Camera&lt;/a&gt;. I don&amp;#39;t use the camera too much, but I use it sometimes and the one that came with LineageOS wasn&amp;#39;t too good. There is still something missing from this one though, and that is doing 360 photos. I don&amp;#39;t usually take those, but sometimes when I go hiking I find some spots where I can&amp;#39;t help it. And I know when the time comes, I won&amp;#39;t have the inclination to fiddle with appstores and such. So I&amp;#39;ll have to find a decent alternative soon, but so far I haven&amp;#39;t found any. The app I was using before was Google Camera, but I couldn&amp;#39;t find a way to install it in LineageOS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://f-droid.org/en/packages/net.osmand.plus/&quot;&gt;OsmAnd&lt;/a&gt;. I&amp;#39;m very skeptic about this one, because Google Maps is so good. In particular, not only is it good, but it has a ton of user-contributed information that is very useful. Still, for simple navigation and maps I should be able to move away from Google, so I&amp;#39;ll give this one a try and fall back to using the Google Maps PWA when necessary.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;p&gt;I realize there is a lot of bickering in that list, and I intend to eventually improve the situation. Actually, I have already started. But changing your digital habits is not something that happens in a day; or even a year. In fact, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://dougbelshaw.com/blog/2022/01/07/new-tools/&quot;&gt;finding an ideal environment may be ultimately undesirable&lt;/a&gt;. But I&#039;m still far from that ideal, and I&#039;m enjoying the path I started walking some years ago. I&#039;ve been thinking about this for a while, and I think some day I should capture all of this in a blog post. But for now, that&#039;s it for this task.&lt;/p&gt;
&lt;p&gt;Before I&#039;m done, though, there is one last thing I want to say. It does feel like I have a new phone. It&#039;s much faster, and even though I&#039;ve installed a lot of apps, it feels like I have a lot more room to breathe. This should extend its lifespan for at least a couple more years :).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-15" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-15</id>
            <published>2022-02-28T19:25:00+00:00</published>
            <updated>2022-02-28T19:25:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-15&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Here we are, February 28th, a day after the end of the cycle. And the app is... not finished! Who&#039;s surprised? (not me, to be honest). All jest aside, it has become a pattern that I don&#039;t finish tasks as &amp;quot;estimated&amp;quot;, and therein lies the crux of the issue, if I were following the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup&quot;&gt;Shape Up&lt;/a&gt; methodology properly I wouldn&#039;t need to follow estimations, I would cut the scope instead. The thing is, that I don&#039;t want to cut the scope any more than I have already done it, which is a lot. If you look at the app as it stands today (and Media Kraken, for that matter), you cannot say it has a huge scope when it comes to functionality. But if you start looking under the hood, you&#039;ll see there is a lot more than the eye can see.&lt;/p&gt;
&lt;p&gt;So if it doesn&#039;t have a lot of functionality, what is taking so long? Complexity? In part yes, but if I had to reduce the reason for most delays to one word I would say &amp;quot;experimentation&amp;quot;. The truth is that I rarely just implement a feature, I&#039;m always refactoring and creating new patterns. Because I like doing it, and because I think eventually this will save me time. But to be honest, I don&#039;t care if it doesn&#039;t, I enjoy the process in and of itself. That&#039;s one of the freedoms I have since my livelihood does not depend on this.&lt;/p&gt;
&lt;p&gt;In any case, having said that, I do want to get this done and move on to other things. So here&#039;s what I&#039;ve done the past 6 weeks and what is left to consider the app production ready (which doesn&#039;t mean release, but I still haven&#039;t started using it myself either).&lt;/p&gt;
&lt;p&gt;These weeks I&#039;ve been working mostly on onboarding and login/sync. The basics were already there before, but I&#039;ve been ironing out a better UX. For example, it&#039;s now possible to configure how often data is synced and if the app should reconnect automatically in every log in or not. And the coolest thing I&#039;ve been doing is implementing importing recipes from the Web. Yes, you read that right, the Web. Anywhere on the Web :D. There is a lot of linked data in the wild used for Semantic SEO, and recipes are one of the most common. This is a clear example of something totally out of scope, and that I don&#039;t need personally. But I started tinkering with it and got so excited that I couldn&#039;t help myself. I still have to iron out some quirks, and I&#039;m still pondering whether I should use a proxy or not to work around some &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS&quot;&gt;CORS&lt;/a&gt; issues. But the core parsing is done and seems to work well enough.&lt;/p&gt;
&lt;p&gt;I initially thought about having a Recipes Library built-in, and it&#039;s actually implemented in the app as of now. But I&#039;m second-guessing if it makes sense or not, now that importing from the Web is supported. There are two main problems with it. The first one, is that I don&#039;t want to have so many options for creating a new recipe because that will be confusing (there are 4 at the moment: from scratch, from the Web, from the Recipes Library, and uploading a JSON-LD file). And the second one, maybe more important, is that I don&#039;t know what recipes to include. &lt;a href=&quot;https://noeldemartin.com/recipes/aguachile&quot; target=&quot;_blank&quot;&gt;I have some recipes myself&lt;/a&gt;, but I&#039;m not sure what would be a decent minimal cookbook for most people. So I&#039;ll probably drop this one.&lt;/p&gt;
&lt;p&gt;I&#039;ve also been working on some other small things, but nothing specially interesting comes to mind. You can always look at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/commits/main&quot;&gt;the commit history&lt;/a&gt; if you&#039;re curious of what I&#039;m doing exactly, the commit messages should at least give you an idea.&lt;/p&gt;
&lt;p&gt;Given the current state, I&#039;ve decided to stop doing Shape Up until I have a version that is production ready. I don&#039;t know how long that will take, but I really think I&#039;m not far off. Here&#039;s a list of the main things remaining:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Recipes sharing&lt;/li&gt;
&lt;li&gt;Review overall UX/UI&lt;/li&gt;
&lt;li&gt;Review a11y&lt;/li&gt;
&lt;li&gt;Fix Mobile layout&lt;/li&gt;
&lt;li&gt;Smooth transitions/animations&lt;/li&gt;
&lt;li&gt;Smooth onboarding experience&lt;/li&gt;
&lt;li&gt;PWA configuration&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/linkeddata/rdflib.js/issues/550&quot;&gt;http vs https schema.org handling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vue ecosystem review (I started this project a while ago and Vue 3 is stable now, so I want to make sure that I&#039;m following the latest best practices)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As you can see, there arem&#039;t really any features left to implement other than recipes sharing, just a bunch of ironing out. So once I add some form of sharing, I&#039;m putting my Getting Things Done hat on.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Formatting devices with LineageOS"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/formatting-devices-with-lineageos#comment-2" />
            <id>https://noeldemartin.com/tasks/formatting-devices-with-lineageos#comment-2</id>
            <published>2022-01-28T17:21:14+00:00</published>
            <updated>2022-01-28T17:21:14+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/formatting-devices-with-lineageos#comment-2&quot;&gt;Formatting devices with LineageOS&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;The age of my devices and the fact that they are manufactured by Google may surprise you. Well, I was a different person 7 years ago, and my ideals and opinions on Google have changed a lot since. What hasn&#039;t changed much is that I am frugal by nature, and I don&#039;t like to buy things that I don&#039;t need. So yes, I have thought about replacing my phone and tablet, but to be honest they are still fine at doing their job. I only use my phone to listen to podcasts, browse the web, read books, and ocasionally texting or getting directions. Whilst I only use my tablet to read manga. I&#039;ve also become more environmentally conscious in the last couple of years. But as much as I&#039;d like to buy something like a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.fairphone.com/en/&quot;&gt;Fairphone&lt;/a&gt;, the most sustainable phone is the one you already have.&lt;/p&gt;
&lt;p&gt;Having said that, I would be lying if I said that they work as smoothly as the first day. That hasn&#039;t been a problem so far, but I&#039;m starting to notice. This also happened with my previous phone, a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Sony_Ericsson_Xperia_ray&quot;&gt;Sony Ericsson Xperia ray&lt;/a&gt; from 2011. I was about to throw it out the window when I installed &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/CyanogenMod&quot;&gt;CyanogenMod&lt;/a&gt; and it gave it a second life. We&#039;ll see if it&#039;s as efective for these ones.&lt;/p&gt;
&lt;p&gt;I wasn&#039;t going to journal about this, but a couple of things happened. First, I already formatted the tablet and it wasn&#039;t as easy as I thought, so I thought it &lt;em&gt;may&lt;/em&gt; be interesting to mention (I&#039;ll talk about that in a bit). And second, I realized that last year I only wrote about a single task on my journal 😱. It&#039;s not that I have dedicated less time to side-projects, but the one I worked on is taking a lot longer than expected. I also did a couple of things that would have deserved their own task. Like &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-3&quot;&gt;presenting at Solid World&lt;/a&gt; or &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-11&quot;&gt;implementing a CRDT in Solid&lt;/a&gt;. Hopefully this year I&#039;ll do a better job at separating tasks.&lt;/p&gt;
&lt;p&gt;With all of that out of the way, here&#039;s what I&#039;ve done so far.&lt;/p&gt;
&lt;p&gt;I thought this would be easy because last time I did this it took me less than an hour. But lo and behold, there were some issues with my tablet. Turns out that the latest versions of LineageOS cannot be installed in a Nexus 7 out of the box (codenamed &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://wiki.lineageos.org/devices/flo/#migration-to-flox&quot;&gt;flo&lt;/a&gt;). Instead, you need to repartition the disk to convert it into a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://wiki.lineageos.org/devices/flox/&quot;&gt;flox&lt;/a&gt;. And that didn&#039;t go well.&lt;/p&gt;
&lt;p&gt;I started by rooting the device and installing &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twrp.me/&quot;&gt;TWRP&lt;/a&gt;. So far so good. But then, I tried to follow &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.xda-developers.com/t/guide-repartition-nexus7-2013-to-increase-system-partition-extra-space-for-rom.3599907/&quot;&gt;some instructions&lt;/a&gt; to repartition the disk using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://gparted.org/&quot;&gt;gparted&lt;/a&gt; and I bricked the device :/. To be fair, I should have seen where this was going when I started using gparted through the command-line, and inserting partition sizes by hand. After some digging, I found &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.xda-developers.com/t/repartition-nexus-7-2013-repartition-flo-deb-16gb-32gb-ua-twrp.3844386/&quot;&gt;a script that automatically resizes the partitions&lt;/a&gt;, but it didn&#039;t work (probably because I had messed up the initial partitions). At this point I thought that was it, and left the device for dead for a couple of weeks. But then, when I picked it up again it ocurred to me that maybe I could wipe the entire disk and that would reestablish the default partitions. To my surprise and delight, it worked! So once that was done, I used the repartition script and following &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://wiki.lineageos.org/devices/flox/install&quot;&gt;the instructions in the LineageOS wiki&lt;/a&gt; worked flawlesly.&lt;/p&gt;
&lt;p&gt;The reason why I formatted the tablet first (other than I don&#039;t care as much if I break it) is that I wanted to transfer my 2FA codes in there. I only had them on my phone, and even though I know I can still access the accounts with recovery codes, I&#039;m uneasy thinking that losing my phone would mean losing all the 2FA codes. So I also used this opportunity to transfer them to my computer. You may be thinking that I&#039;m risking too much by having the codes in 3 devices, but the truth is that I don&#039;t care about the security of my physical devices. It&#039;s still a threat, of course, but what really worries me when it comes to security is software attacks. I&#039;m not famous enough (or at all) to have to worry about this type of security. That&#039;s why I don&#039;t have the hard drive of my computer encrypted either, or other measures of the sort. Although some day I should probably do it.&lt;/p&gt;
&lt;p&gt;Anyhow, getting the 2FA codes from the phone wasn&#039;t straight-forward either. I had been using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator&quot;&gt;Google Authenticator&lt;/a&gt;, but I didn&#039;t want to install Google Play on the tablet. So I thought it&#039;d be nice to find an open source alternative in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://f-droid.org/&quot;&gt;F-Droid&lt;/a&gt;. Now I&#039;m using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/andOTP/andOTP&quot;&gt;andOTP&lt;/a&gt; in the tablet and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/Authenticator-Extension/Authenticator&quot;&gt;a browser extension&lt;/a&gt; in my computer. Google Authenticator has a feature to export the codes; but of course, it only works to transfer them to another device using Google Authenticator. Fortunately, I could find &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/krissrex/google-authenticator-exporter&quot;&gt;a script to extract the actual codes&lt;/a&gt; and that was it.&lt;/p&gt;
&lt;p&gt;So yeah, now my tablet is working with LineageOS! But this story doesn&#039;t have a happy ending :(. The main annoyance of the tablet was that touch sensitivity wasn&#039;t working great. And I can&#039;t imagine why; I have used my phone 100x more and it&#039;s almost the same age, built by the same manufacturer, but the touch works well. So I thought it may have something to do with the software, but after formatting I know it doesn&#039;t. I&#039;m not sure if I&#039;ll be able to fix this without replacing the device; but given that I only use it to read manga, it&#039;s not a huge issue for now.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Formatting devices with LineageOS"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/formatting-devices-with-lineageos" />
            <id>https://noeldemartin.com/tasks/formatting-devices-with-lineageos</id>
            <published>2022-01-28T17:21:02+00:00</published>
            <updated>2022-01-28T17:21:02+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/formatting-devices-with-lineageos&quot;&gt;Formatting devices with LineageOS&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/formatting-devices-with-lineageos&quot;&gt;Formatting devices with LineageOS&lt;/a&gt;&lt;/p&gt;&lt;p&gt;My mobile phone, a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Nexus_6&quot;&gt;Google Nexus 6&lt;/a&gt;, is about to turn 7 years old. It hasn&#039;t received any updates for a long while, so I decided it&#039;s time to format it with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://lineageos.org/&quot;&gt;LineageOS&lt;/a&gt;. I also have a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Nexus_7_(2013)&quot;&gt;Nexus 7 tablet&lt;/a&gt; that will share the same fate.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-14" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-14</id>
            <published>2022-01-14T10:19:04+00:00</published>
            <updated>2022-01-14T10:19:04+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-14&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Hi there!&lt;/p&gt;
&lt;p&gt;I&#039;m back from Christmas break, and I was AFK for a couple of weeks so I&#039;m eager to pick up where I left off. I recently looked at my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/105525557154075833&quot;&gt;Last Year&#039;s Achievements&lt;/a&gt;, and even though I didn&#039;t manage to complete most of my New Year Resolutions for 2021 (like closing this task 😅), I&#039;m very happy with everything I accomplished. But this year, for sure, I will release this app!&lt;/p&gt;
&lt;p&gt;Before going into the next cycle, here&#039;s some updates. First of all; naming. I was still struggling with this, but ultimately I decided to stick with Umai. I&#039;m still not 100% convinced, but I didn&#039;t make any progress and I don&#039;t see an end to the rumiation. I can always change it later if inspiration strikes, but I&#039;m not going to waste any more time on this. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=_OJGP9DNCVk&quot;&gt;Umai it is&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once I settled on the name, I started working on the logo. At first it was going great, because I had the idea of using the &amp;quot;U&amp;quot; from Umai as a bowl, but it hasn&#039;t translated into something I&#039;m happy with so I&#039;m still playing with the idea. I think this may turn out like the name itself, I don&#039;t love any of the choices so far but in the end I&#039;ll have to stick with one. In case you&#039;re curious, here&#039;s some early drafts without context nor explanation:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/umai-logo-drafts.jpg&quot; alt=&quot;Umai logo drafts&quot; /&gt;&lt;/p&gt;
&lt;p&gt;If I have to be honest, all of this is a bummer because even though I&#039;m no designer this part of making products was one of the most enjoyable for me. But for this app, it&#039;s been a struggle so far. I guess &lt;a href=&quot;https://noeldemartin.com/blog/you-cant-always-get-what-you-want&quot;&gt;that&#039;s life&lt;/a&gt; though.&lt;/p&gt;
&lt;p&gt;But not everything has been a struggle! In my last update, I hadn&#039;t started working on forms and what I had in mind was very different to what I ended up doing. Initially, I thought forms would be separate screens/modals, but the more I worked on them, the more I realized that using the same layout was actually a decent option. The idea is that when you try to edit a recipe, you&#039;ll see the same layout but data will be editable. I could even make everything editable by default, but I don&#039;t think that&#039;s a good idea at this point. Something that worries me is that people may not realize how this works, so maybe I&#039;ll end up implementing some guided tours (although I&#039;m generally averse to adding those).&lt;/p&gt;
&lt;p&gt;Something funny (if you can call it that) that happened implementing these forms is that I made ingredients sortable and instructions unsortable. My idea was that you are not going to change the order on some instructions, but you may sort ingredients by quantities or something else. But later on, I realized the data was actually modeled the other way around (ingredients don&#039;t have an order whereas instructions do). Ideally, though, these are just UI affordances, but I&#039;d like both lists to have an order. This is something &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-9&quot;&gt;I already talked about&lt;/a&gt;, and I still haven&#039;t found a good solution.&lt;/p&gt;
&lt;p&gt;Something else I realized recently is that just because I&#039;m using &lt;code&gt;schema.org&lt;/code&gt;, it doesn&#039;t mean that my apps will be &lt;a href=&quot;https://noeldemartin.com/blog/interoperable-serendipity#intentional-interoperability&quot;&gt;interoperable out of the box&lt;/a&gt;. I have been using &lt;code&gt;https://schema.org/&lt;/code&gt; as the prefix, but turns out that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/solid-namespace/issues/21&quot;&gt;some apps out there are using &lt;code&gt;http://schema.org&lt;/code&gt;&lt;/a&gt;. So that&#039;s a problem, even with Media Kraken. I may tackle this before I release the next version of &lt;code&gt;soukai-solid&lt;/code&gt;, but since I don&#039;t know how much of a problem this really is, it won&#039;t be a priority for now (is there an app that would interoperate properly after fixing this anyways?).&lt;/p&gt;
&lt;p&gt;Finally, the last thing I want to mention is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Computer_accessibility&quot;&gt;a11y&lt;/a&gt;. Some months ago I started learning about it at work, and I&#039;ve realized how bad of a job I am doing in my other apps. So I want to improve it for this one. The problem is that I don&#039;t use the web like a disabled person would. And it&#039;s very difficult for me to walk in their shoes and understand what&#039;s important and what isn&#039;t. Reading about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/TR/wai-aria-practices/&quot;&gt;WAI-ARIA Authoring Practices&lt;/a&gt; and such is helpful, but I&#039;m still not sure of what I&#039;m doing wrong. That&#039;s why, when I &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/107350733886792335&quot;&gt;tooted about my last update&lt;/a&gt;, I included some text only visible to screen readers asking for help. And you can imagine my surprise when &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://dragonscave.space/@zersiax/107542905769470805&quot;&gt;someone offered&lt;/a&gt; :D. That will be fun. I want to be respectful of their time, so I won&#039;t be asking for a lot of details. But just knowing if the app works or it sucks will be very useful.&lt;/p&gt;
&lt;p&gt;Now, it&#039;s time to talk about the next cycle. I have been working on this app for a long time. Too long, in fact. So I have to start wrapping up the initial release already. However, doing a release encompasses more work than it seems. I have to write the documentation, publish the new vocab I&#039;ve created for history tracking, release and document all the changes in soukai, etc. And I&#039;m still missing some features that I consider essential for release: error reporting, onboarding, etc. In my opinion, setting the sights on release for the next cycle would be too premature. But I just said that I&#039;ve been working on this app for too long. So what I decided is that in the upcoming cycle, I&#039;ll finish the app, without actually doing a release. That way, I can do a &amp;quot;release candidate&amp;quot; of sorts. I will start using the app in production myself, and ask early adopters for feedback; but there won&#039;t be any guarantees of stability. In the next cycle, I&#039;ll aim for release and use it to document and iron out the bugs that I find during testing.&lt;/p&gt;
&lt;p&gt;That&#039;s what the next cycle will be about. I&#039;m starting today and it should be finished by February 27th.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-13" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-13</id>
            <published>2021-11-27T18:25:41+00:00</published>
            <updated>2021-11-27T18:25:41+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-13&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;The current cycle is coming to a close, and let me start by showing what the application looks like right now:&lt;/p&gt;
&lt;a href=&quot;https://noeldemartin.com/videos/umai-page-transitions.mp4&quot; target=&quot;_blank&quot;&gt;
    &lt;video autoplay loop&gt;
        &lt;source src=&quot;/videos/umai-page-transitions.mp4&quot; type=&quot;video/mp4&quot;&gt;
    &lt;/video&gt;
&lt;/a&gt;
&lt;p&gt;Isn&#039;t that nice? :D. I didn&#039;t manage to get as much done as I would&#039;ve liked, but I&#039;m definitely happy with the results. From the 3 areas I mentioned last time, Panache is the one that I consider almost finished. It&#039;s not finished in the sense that I won&#039;t have to do anything else, but I&#039;ve laid the foundations and adding more should be easyish from now on.&lt;/p&gt;
&lt;p&gt;As for the other areas, this is how the hill chart looks like right now:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/hillchart-2021-11-27.png&quot; alt=&quot;Hillchart for 27th November 2021&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Recipes &amp;amp; Cookbook is not something I mentioned explicitly before, but that scope basically consists in applying the improvements to all pages of the app. It&#039;s not over the hump because I haven&#039;t done any work in the edit or create pages yet. But as you could see in the video; home, cookbook, and recipe details are pretty much done.&lt;/p&gt;
&lt;p&gt;The Design System is something I started working on at the beginning of the cycle. I started making some of the &amp;quot;final&amp;quot; components with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://storybook.js.org/&quot;&gt;Storybook&lt;/a&gt;, and I started to apply some concepts from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://atomicdesign.bradfrost.com/chapter-2/&quot;&gt;Atomic Design&lt;/a&gt; in the process of building the pages. But I didn&#039;t take it much further, because I got into the rabbit hole of what to do about page transitions.&lt;/p&gt;
&lt;p&gt;At the start of the cycle, I pointed to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://pagetransitions.netlify.app/&quot;&gt;a couple&lt;/a&gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/ryanflorence/status/1186675229621248000&quot;&gt;of examples&lt;/a&gt; that inspired me. Unfortunately, looking at existing implementations none of them worked as I expected. The closest thing I could find was a library called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://justintaddei.github.io/v-shared-element/&quot;&gt;v-shared-element&lt;/a&gt;, but the result was a little clunky because the animations cannot be customized much. So of course, I ended up developing &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/blob/main/src/components/RecipeCard.vue#L3..L12&quot;&gt;my own thing&lt;/a&gt; from scratch 😅. To be fair, for most people &lt;code&gt;v-shared-element&lt;/code&gt; will be enough, and it was very easy to set up. Looking at their source code also helped me to come up with my own solution, but in the end I wanted something more flexible. It&#039;s not as seamless to work with, but gives me the control I need to make the animations I had in mind. We&#039;ll see how this evolves as I continue making more pages, maybe I&#039;ll even release it as a stand-alone library if I think it can be useful to others.&lt;/p&gt;
&lt;p&gt;And finally, this takes me to Branding. You&#039;ll notice it&#039;s right at the bottom of the hill. I haven&#039;t struggled this much to come up with a name for while, and to be frank I&#039;m kind of blocked at the moment. To make things worse, I&#039;ve been looking at existing applications and websites related with food, and almost none of them inspire me (one of the few exceptions is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://chipotle.com/&quot;&gt;Chipotle&lt;/a&gt;, I love that one). So yeah, I don&#039;t know how this will turn out, but I still have some time until I&#039;m done with v1, so I&#039;ll continue chipping at it.&lt;/p&gt;
&lt;p&gt;My current ideas for names, none of which I&#039;m completely happy with, are the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Umai: This is what I&#039;m currently using, but I feel it&#039;s more a codename than the name I&#039;ll end up using on release. I don&#039;t dislike the word per se, but it has a couple of problems. First, it&#039;s not a very common word and can easily be confused with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/VincentTunru/status/1464637840214659075&quot;&gt;Umami&lt;/a&gt; (I was already suspicious before seeing that tweet though). Even though it&#039;s not a common word that people will remember, it&#039;s common enough in japanese circles that it&#039;ll be impossible to find my app just with the name. So when I tell people about it, I&#039;ll have to say &amp;quot;search for Umai Solid&amp;quot; or &amp;quot;search for Umai noeldemartin&amp;quot; or whatever. The word itself also doesn&#039;t inspire me on what the logo should be, or even the color scheme or branding for the app. Not great, and the word is not that good to begin with to go through all that trouble.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grateful Bite: In spirit, this is the name I like the most so far. But that&#039;s it. No logo comes to mind, no associated branding, and the people I&#039;ve asked to didn&#039;t like it as much as me.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pepper Bell: This may be the front-runner for now, because some logo and branding come to mind. I also like the fact that it&#039;s a word play with &amp;quot;Bell Pepper&amp;quot; inverted, which may make it easy for people to remember and hopefully easy to search for. But in spirit, I don&#039;t care much about it. It doesn&#039;t give me joy, like Media Kraken does, and it&#039;s not as descriptive of what the app is for as Solid Focus. So it&#039;s not perfect either.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also came up with some other ideas, but none good enough to even mention. So yeah, I&#039;ll continue struggling with this and we&#039;ll see how it turns out in the end. The problem is that this issue kind of blocks everything else. Without a name and a branding, I&#039;m making the rest of the app in the dark. I didn&#039;t want the app to feel the same way as Media Kraken, but so far it&#039;s eerily similar because the branding doesn&#039;t speak for itself. But this is part of the creative process, eventually something should click 🤞.&lt;/p&gt;
&lt;p&gt;At this point, I would normally go into a cooldown cycle for a couple of weeks and plan what to work on next. But seeing how things are going, and that new year is around the corner and I&#039;ll be on holidays, I&#039;ll extend the cooldown until and undecided date next year (probably the 2nd week of January). It won&#039;t be a traditional cooldown either, because I&#039;ll probably we working on what I didn&#039;t manage to accomplish in this cycle. So this will probably be my last update for the year.&lt;/p&gt;
&lt;p&gt;PS: I&#039;ve also been working on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://hello.0data.app/solid/&quot;&gt;a very simple Hello World for Solid&lt;/a&gt;, built using plain JavaScript and HTML, with as little dependencies as possible (no Soukai, and no frameworks!). If you&#039;ve been meaning to get started with Solid yourself, but didn&#039;t know where to begin, I encourage you to take a look. As always, feel free to contact me or open an issue if you have any doubts or comments.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-12" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-12</id>
            <published>2021-10-17T08:25:13+00:00</published>
            <updated>2021-10-17T08:25:13+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-12&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;After doing some brainstorming, I&#039;ve decided to focus next cycle on just the basics. Eventually, I would like to add 4 sections in the app: Cookbook (to manage recipes), Kitchen (to cook recipes), Pantry (to keep track of ingredients storage and make shopping lists), and Calendar (for meal planning). But all of that can get out of hand soon, and I&#039;m not sure if I&#039;ll include that in the first version (probably not). This is very similar to Media Kraken; I wanted to track other types of media but I ended up only tracking movies (for now).&lt;/p&gt;
&lt;p&gt;So here&#039;s what I&#039;m focusing on for this cycle:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Branding:&lt;/strong&gt; I&#039;m still not super happy with the name &amp;quot;Umai&amp;quot;, and I haven&#039;t made a logo either. So I&#039;ll use this cycle to finish those. I can always change them later on, but it&#039;s time to settle on what I&#039;ll do for the first release.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Design System:&lt;/strong&gt; I&#039;ve been using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://tailwindcss.com/&quot;&gt;TailwindCSS&lt;/a&gt; which already has some constraints, but I&#039;d like to organize the UI even more. So far, I&#039;ve been a big fan of design systems in theory, but I haven&#039;t really used them in practice. So I&#039;m looking forward to experiment with this. I&#039;ve been playing with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://storybook.js.org/&quot;&gt;Storybook&lt;/a&gt;, and it&#039;s been a bit of a pain to configure with Vite, but I think I&#039;ve got it sorted out.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Panache:&lt;/strong&gt; I think one of the main reasons why people like Media Kraken is the animations, and I&#039;ve had a lot of fun making them. But I always thought I could take it up a notch, and I&#039;ve seen &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://pagetransitions.netlify.app&quot;&gt;a couple&lt;/a&gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/ryanflorence/status/1186675229621248000&quot;&gt;of ideas&lt;/a&gt; I&#039;d like to play with. But of course, there is also the danger of taking it too far, and I worry about that. I don&#039;t want to end up with an app that is annoying to use because everything is moving around. I also don&#039;t want to spend too much time working on this. Fun as it is, it&#039;s just a nice to have and there is a lot more things I want to do.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&#039;m starting this cycle next week, and I&#039;m going back to the standard 6-week length. So it should be finished by November 29th.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "Interoperable Serendipity"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/interoperable-serendipity" />
            <id>https://noeldemartin.com/blog/interoperable-serendipity</id>
            <published>2021-10-12T06:00:00+00:00</published>
            <updated>2021-10-12T06:00:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/interoperable-serendipity&quot;&gt;Interoperable Serendipity&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/interoperable-serendipity&quot;&gt;Interoperable Serendipity&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-11" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-11</id>
            <published>2021-10-05T16:17:25+00:00</published>
            <updated>2021-10-05T16:17:25+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-11&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Hey, I&#039;m back!&lt;/p&gt;
&lt;p&gt;Actually, I&#039;ve been back since early September. But I wanted to finish working on the data layer before posting an update. It&#039;s been a slog, but I&#039;m finally ready to move on.&lt;/p&gt;
&lt;p&gt;I&#039;ve been working on this app for a long time, and I don&#039;t think I&#039;ll be done with it before the end of the year. So it&#039;s very likely that this task becomes the first one to span multiple years in my development journal. Sure, I&#039;ve been doing other things here and there, but it&#039;s certainly taking a lot longer than I expected. This is not something new though, if you read &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid&quot;&gt;the development journal for Media Kraken&lt;/a&gt;, you&#039;ll notice a similar pattern. For Media Kraken, it was refactoring Solid and IndexedDB storage into a single API. For this task, it&#039;s been implementing &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/request-for-comments-crdtish-approach-to-solid/4211&quot;&gt;a conflict resolution strategy for Solid&lt;/a&gt;. I worry a lot about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/No_Silver_Bullet#Summary&quot;&gt;accidental complexity&lt;/a&gt;, and I&#039;m pretty sure I&#039;m prone to over-engineer. But looking back, I&#039;m glad I spent the time doing the refactor in Media Kraken. Only time will tell if the work I just finished was also worth it.&lt;/p&gt;
&lt;p&gt;So, keeping that in mind, I&#039;ve decided to do an alpha release of the app. The app will probably look nothing like it does now when it&#039;s finished, but I&#039;m interested in getting feedback about the conflict resolution strategy before releasing for production. If you are interested in giving feedback, read about it in the Solid forum: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/request-for-comments-crdtish-approach-to-solid/4211/14&quot;&gt;Umai &lt;code&gt;alpha&lt;/code&gt; release feedback&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now that I&#039;m done with that, I can finally focus on the UI. Before starting the next cycle, I&#039;ll do some wireframes and think about what I want to include in the first version. All of this time, I&#039;ve been having many ideas for the UI and some cool features, so I&#039;ll have to make an effort to reduce all of that into something doable in 6 weeks.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-10" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-10</id>
            <published>2021-08-14T15:39:18+00:00</published>
            <updated>2021-08-14T15:39:18+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-10&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;As I write this, I&#039;m preparing my backpack to continue the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://caminoways.com/ways/northern-way-camino-del-norte&quot;&gt;Camino de Santiago&lt;/a&gt; &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping#comment-3&quot;&gt;where I left it last year&lt;/a&gt;, and turning my holidays mode ON.&lt;/p&gt;
&lt;p&gt;So it&#039;s with a bittersweet note that I have to say I didn&#039;t finish any of the goals from my last update :(. But that&#039;s ok, and I thought I&#039;d use this opportunity to talk (a little bit) about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Impostor_syndrome&quot;&gt;Impostor Syndrome&lt;/a&gt;. I&#039;ve heard some people mention it in the last couple of weeks, and I want to share my thoughts on that. First of all, yes, I also suffer from it. I think everybody does (at least everyone in the tech industry). So when it happens to me, I try to see it as what it is: the manifestation of the ups and downs of a normal learning journey (one day you think you know everything, the next day you realize you knew nothing). But of course, the following thought crosses my mind: &amp;quot;what if that is just an excuse to avoid facing that I just suck?&amp;quot; Yes, it could be an excuse. But &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://play.acast.com/s/akimbo/dontfearplacebos&quot;&gt;I&#039;m all for good placebos&lt;/a&gt;. That&#039;s why, instead of being hard on myself, &lt;a href=&quot;https://noeldemartin.com/blog/10-years-as-a-software-developer#6-use-systems-and-processes&quot;&gt;I have systems in place&lt;/a&gt; to make sure that I&#039;m doing a good job. And today, even though I am yet again late on my predictions... I&#039;m fine with it :). I&#039;ll just recalibrate, reflect on what I did, and move on. I also realize that most of my anxiety is my own doing. Nobody is forcing me to work on these side-projects, and my livelihood doesn&#039;t even depend on it. Like Seneca said, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_13&quot;&gt;we suffer more often in imagination than in reality&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Anyways, that&#039;s enough of my ramblings. Here&#039;s what I have done since my last update.&lt;/p&gt;
&lt;p&gt;Some days ago, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/community-server/releases/tag/v1.0.0&quot;&gt;CSS v1.0.0&lt;/a&gt; was released. I had been using it in my CI pipeline with Cypress, but I was cheating somewhat because I wasn&#039;t logging in. I am still doing unauthenticated requests in most tests, but thanks to some new additions in this release I was able to test authenticating with my app. And it turned out to be really useful, because I found a couple of things I was relying on that aren&#039;t part of the Solid spec (so I shouldn&#039;t use if I want my apps to work with most PODs). I have listed them and some more in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/solidproject.org/issues/607#issuecomment-898913063&quot;&gt;this github comment&lt;/a&gt; about migrating apps that work on NSS to work with CSS.&lt;/p&gt;
&lt;p&gt;Other than that, what has taken most of my time have been some heavy refactors, as always. This offline-first/CRDTish approach is turning out to be more complicated than I thought, but I actually think it&#039;s good because it&#039;s pushing Soukai&#039;s boundaries. The design itself wasn&#039;t that complicated, but Soukai wasn&#039;t ready to handle it because there are some complex relationships. A Recipe has instructions, and each instruction has its own metadata + change history. So Soukai needs to handle a 3-levels nested &lt;code&gt;hasMany&lt;/code&gt; relation in the same document. I think the library is becoming more robust, but it&#039;s also increasing in complexity, so we&#039;ll see where this takes me. I haven&#039;t really added anything to the scope, this was part of my initial vision, but I hadn&#039;t stress-tested it yet. It&#039;s also getting &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai-solid/blob/2f752c01976def36fbdc4eadd8f95b666d230b63/src/models/relations/mixins/SolidHasRelation.ts&quot;&gt;a bit ridiculous&lt;/a&gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai-solid/blob/2f752c01976def36fbdc4eadd8f95b666d230b63/src/models/relations/SolidHasManyRelation.ts&quot;&gt;on the TypeScript front&lt;/a&gt;, so I can see why some people don&#039;t like it and prefer writing plain JavaScript.&lt;/p&gt;
&lt;p&gt;And that&#039;s basically what I&#039;ve been up to. Since I haven&#039;t really finished what I wanted to do, and I&#039;m going on holidays, I won&#039;t bother doing any planning for now. When I&#039;m back, my idea is to finish all this relationship madness and then I&#039;ll start thinking about finally working on the UI. If anything, I would say using the Shape Up methodology is kind of working because I&#039;ve already cut a lot of scope from my initial idea. Only that it isn&#039;t happening in a single cycle, I guess it&#039;s the drawback of working just one day a week on this.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "10 Years as a Software Developer"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/10-years-as-a-software-developer" />
            <id>https://noeldemartin.com/blog/10-years-as-a-software-developer</id>
            <published>2021-07-13T15:00:00+00:00</published>
            <updated>2021-07-13T15:00:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/10-years-as-a-software-developer&quot;&gt;10 Years as a Software Developer&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/10-years-as-a-software-developer&quot;&gt;10 Years as a Software Developer&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-9" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-9</id>
            <published>2021-07-09T16:00:27+00:00</published>
            <updated>2021-07-09T16:00:27+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-9&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;It&#039;s been a while since my last update, and the main culprit has been a blog post I&#039;ve been writing that ended up way longer than expected. So long, in fact, that I decided to implement an animated table of contents in my website to make it more palatable (which I also added to task comments!). Still, the estimated read time is 40 minutes so yeah... Sorry. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://quoteinvestigator.com/2012/04/28/shorter-letter&quot;&gt;I didn&#039;t have time to write a shorter one&lt;/a&gt;. You can look forward to reading (or ignoring) it next week.&lt;/p&gt;
&lt;p&gt;Now, other than writing and working on my website, I&#039;ve also kept hammering at some Solid stuff. In particular, I have been thinking how to model lists in Solid. That&#039;s where I left off in the last cycle, in order to add a list of ingredients to a recipe.&lt;/p&gt;
&lt;p&gt;This is how you&#039;d go about doing an &amp;quot;unordered list&amp;quot;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-turtle&quot;&gt;&amp;lt;#ramen&amp;gt;
    a schema:Recipe ;
    schema:name &amp;quot;Ramen&amp;quot; ;
    schema:recipeIngredient &amp;quot;Broth&amp;quot;, &amp;quot;Noodles&amp;quot; .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&#039;s pretty standard, basically you&#039;d have multiple values for a property. That&#039;s what Soukai&#039;s &lt;code&gt;FieldType.Array&lt;/code&gt; does. However, the order is not guaranteed to be kept the same, specially when you add or remove values. I&#039;ve been investigating, and turns out there is already a common pattern to do this, using an &lt;code&gt;rdf:List&lt;/code&gt;. This is how you&#039;d write it in turtle:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-turtle&quot;&gt;&amp;lt;#ramen&amp;gt;
    a schema:Recipe ;
    schema:name &amp;quot;Ramen&amp;quot; ;
    schema:recipeIngredient ( &amp;quot;Broth&amp;quot; &amp;quot;Noodles&amp;quot; ) .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Which actually means:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-turtle&quot;&gt;&amp;lt;#ramen&amp;gt;
    a schema:Recipe ;
    schema:name &amp;quot;Ramen&amp;quot; ;
    schema:recipeIngredient _:b0 .

_:b0
	a rdf:List ;
    rdf:first &amp;quot;Broth&amp;quot; ;
    rdf:rest _:b1 .

_:b1
	a rdf:List ;
    rdf:first &amp;quot;Noodles&amp;quot; ;
    rdf:rest rdf:nil .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But I have some existential doubts about doing this. If you look at the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://schema.org/recipeIngredient&quot;&gt;&lt;code&gt;recipeIngredient&lt;/code&gt; specification&lt;/a&gt;, you&#039;ll notice that it only accepts &lt;code&gt;Text&lt;/code&gt; values. Or, said differently, the range of the &lt;code&gt;schema:recipeIngredient&lt;/code&gt; property is &lt;code&gt;Text&lt;/code&gt;. In that case, isn&#039;t an &lt;code&gt;rdf:List&lt;/code&gt; an invalid value for this property? There are two ways to look at it. The first one is about correctness, and I would say that&#039;s incorrect because of what I just mentioned. I think we should strive to create data that is modeled properly. The second one is interoperability, which I think is super important. If there are other applications out there working with recipes, developers should be able to make it interoperable with mine just by reading what&#039;s on the vocabulary definition. They shouldn&#039;t even aim for interoperability, it should just happen if good practices and proper modeling are followed.&lt;/p&gt;
&lt;p&gt;But, I do have my doubts about this because it could potentially be a common pattern. Having sorted data is certainly very common, and I think forcing each developer who wants sorted data to define their own vocabulary would be detrimental for interoperability. It would be nice if every property definition had &lt;code&gt;rdf:List&lt;/code&gt; implied in their range (although I&#039;m not sure how you&#039;d go about specifying that the items on that list should be of a given type, because the range of the &lt;code&gt;rdf:first&lt;/code&gt; property is &lt;code&gt;rdfs:Resource&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;So yeah, I&#039;m not sure about this. In any case, seeing all the complexity I found, I will probably conform with the schema.org vocab completely without doing any shenanigans. I&#039;ve also played with the idea of having my own vocab to extend &lt;code&gt;schema:Recipe&lt;/code&gt;, but for the time being I think I&#039;ll avoid it. I&#039;ve already been working on this app long enough, so it&#039;d be nice if it starts converging :). Don&#039;t get excited though, there are still some months to go.&lt;/p&gt;
&lt;p&gt;Now, with that said, here&#039;s what I&#039;ll be working on for the next cycle. It is going to be a weird one, because I have some holidays in the middle, and I&#039;m always more busy (in my personal life) in summer. These are the things I&#039;ll look into:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ingredients &amp;amp; instructions:&lt;/strong&gt; I already started working on ingredients last cycle, but I wasn&#039;t finished. This time, I&#039;ll do instructions as well (which &lt;em&gt;can&lt;/em&gt; be sorted using schema.org&#039;s vocab!).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Offline first:&lt;/strong&gt; I&#039;d say this is done for the most part, but I have to review a couple of things to see that logging in and out of the app works properly and doesn&#039;t mess up the local data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Dependencies bundling:&lt;/strong&gt; I&#039;m still struggling with adapting some libraries to Vite, although &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/inrupt/solid-client-authn-js/issues/991#issuecomment-862619525&quot;&gt;there have been some recent improvements&lt;/a&gt; that look very promising (I still haven&#039;t tried them though). And that is not limited to external dependencies, my own &lt;code&gt;soukai-solid&lt;/code&gt; library has some issues with Stream polyfills. So I&#039;m going to explore some alternatives (like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/vitejs/vite/blob/main/.github/contributing.md#notes-on-dependencies&quot;&gt;bundling compiled dependencies&lt;/a&gt;, crazy as that sounds).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Given the aforementioned summer schedule, this will be a shorter cycle and it should finish by August 16th.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-8" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-8</id>
            <published>2021-05-30T09:06:01+00:00</published>
            <updated>2021-05-30T09:06:01+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-8&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today is the end of the cycle I mentioned in my previous update, and here&#039;s the current status of the project:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/hillchart-2021-05-30.png&quot; alt=&quot;Hillchart 2021/05/30&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Yeah, I have barely advanced in a month and a half. Turns out that building the proof of concept for real was more work than I expected. But the real problem have been &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://antfu.me/posts/about-yak-shaving&quot;&gt;yaks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-8&quot;&gt;is not the first time that this happens&lt;/a&gt;, but I intended to avoid it by following the Shape Up methodology. At the time, when I got stuck building Media Kraken, I referred to these yaks as &amp;quot;rabbit holes&amp;quot;. The interesting point is that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/1.4-chapter-05#look-for-rabbit-holes&quot;&gt;this is mentioned explicitly in the Shape Up book&lt;/a&gt;, and I thought I was guarding against it by doing the proof of concept during the cooldown. Who could have guessed that it would take me almost 6 weeks (working 1 day a week!) to clean up something that I put together in a couple of hours :/.&lt;/p&gt;
&lt;p&gt;But as I mentioned, the real problem here have been yaks. However, as I argued the last time, I&#039;m in no rush and I enjoy the process so &amp;quot;It&#039;ll be done when it&#039;s done&amp;quot; :). To be honest, I don&#039;t think this will happen too often, because it isn&#039;t every day that I embark into a new paradigm like offline-first or CRDTs. And I still think the Shape Up methodology is useful, so I&#039;ll consider this cycle done and go into cooldown. Maybe the next cycle will come out of the leftovers from this one. But maybe not, and that&#039;s the point.&lt;/p&gt;
&lt;p&gt;So, what did I actually do all this time? Inspired by &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/antfu7/status/1396255455358328835&quot;&gt;this tweet&lt;/a&gt; by Anthony Fu, here&#039;s my own Yak Map:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/yak-map-offline-first.png&quot; alt=&quot;Offline-first Yak Map&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As you can see, there were more things going on than I anticipated. To be frank, the Cypress tests and jest/chai plugins were completely optional. But I&#039;m sure I&#039;ll use those for a lot of my projects going forward. Something cool I&#039;ve been doing here is that I&#039;m using the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/community-server&quot;&gt;community-server&lt;/a&gt; in my CI pipeline, so the integration tests are now running against a real Solid server. This is particularly useful here given that Umai uses two engines at the same time, one local (for offline-first) and one against a Solid POD (to sync on the background). You can find the tests &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/blob/main/cypress/integration/cookbook.spec.ts#L45&quot;&gt;here&lt;/a&gt; if you want to see some code.&lt;/p&gt;
&lt;p&gt;I found this concept of a Yak Map really interesting, and it speaks to what I have been doing for a while. Here&#039;s the Yak Map with my latest projects:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/yak-map-projects.png&quot; alt=&quot;Projects Yak Map&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What I really want to do are apps, but I ended up developing a bunch of libraries and packages. Which is cool, it&#039;s also my own fault because I have an acute case of the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Not_invented_here&quot;&gt;NIH syndrome&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PS: I have also been &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://gitlab.com/vincenttunru/penny/-/merge_requests/3&quot;&gt;translating Penny&lt;/a&gt; to Catalan and Spanish! Penny is a POD browser for Solid developers, so check it out and maybe you can contribute your own translations (there isn&#039;t a lot of text). It was interesting to see how to translate a Solid app, because there are some Solid terms that I had only come across in English. This has also been useful because I&#039;ll definitely localize my apps at some point. But for now, that&#039;ll remain a hairy Yak.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "What Technology Wants"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/what-technology-wants" />
            <id>https://noeldemartin.com/blog/what-technology-wants</id>
            <published>2021-04-21T17:00:00+00:00</published>
            <updated>2021-04-21T17:00:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/what-technology-wants&quot;&gt;What Technology Wants&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/what-technology-wants&quot;&gt;What Technology Wants&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-7" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-7</id>
            <published>2021-04-16T13:48:53+00:00</published>
            <updated>2021-04-16T13:48:53+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-7&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Hi again!&lt;/p&gt;
&lt;p&gt;It&#039;s been only a week since I updated this task, but I decided to go ahead and kickstart the next cycle. The conversations about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/authenticating-offline-first-solid-apps/4208&quot;&gt;authentication&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/request-for-comments-crdtish-approach-to-solid/4211&quot;&gt;CRDTs&lt;/a&gt; are still ongoing, but I didn&#039;t get any strong arguments against what I had in mind, so I&#039;ll start working on it. There are some concerns that I haven&#039;t resolved, but I think the best way to proceed is to start working on the real thing.&lt;/p&gt;
&lt;p&gt;As part of the shaping process, I implemented a proof of concept using a Solid POD to sync changes across devices:&lt;/p&gt;
&lt;a href=&quot;https://noeldemartin.com/videos/umai-crdt.mp4&quot; target=&quot;_blank&quot;&gt;
    &lt;video autoplay loop&gt;
        &lt;source src=&quot;/videos/umai-crdt.mp4&quot; type=&quot;video/mp4&quot;&gt;
    &lt;/video&gt;
&lt;/a&gt;
&lt;p&gt;There is a lot of hard-coded parts, that&#039;s why I didn&#039;t push this code to github. But I am very pleased with the result.&lt;/p&gt;
&lt;p&gt;So, for this cycle I&#039;ll focus on the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Offline-first:&lt;/strong&gt; This may seem small, but there are actually a lot of things to do here. My intention is to be done with the data layer after this, so it should take the main focus.&lt;br&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recipe ingredients:&lt;/strong&gt; This is important to see that the offline-first approach works for more complex structures, like lists.&lt;br&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interoperability:&lt;/strong&gt; Like last time with the vocabs, this is sort of a wildcard goal. So maybe I won&#039;t do anything, but the idea is to be compatible with other apps who would interact with the POD storing the recipes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The cycle should be done by May 31st.&lt;/p&gt;
&lt;p&gt;You may notice that this cycle still doesn&#039;t have many features in scope. My idea right now is to use this cycle to get all the non-UI stuff finished, and focus the next cycle on UI, branding, and adding more features. Although I cannot tell for sure because that&#039;s the whole point of the Shape Up methodology.&lt;/p&gt;
&lt;p&gt;So yeah, the first version of the app won&#039;t be finished at least until July. But that&#039;s ok, I&#039;m in no rush.&lt;/p&gt;
&lt;p&gt;PS: Google recently started &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://plausible.io/blog/google-floc&quot;&gt;tracking people using Google Chrome&lt;/a&gt;, even if your site doesn&#039;t use Google services. You can prevent it by adding an HTTP header, as I did with my sites. But I cannot do it in my apps because they are hosted using Github Pages, so I&#039;m considering giving &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://render.com&quot;&gt;render.com&lt;/a&gt; a try. I&#039;ll report on the experience in a future update.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-6" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-6</id>
            <published>2021-04-10T06:35:12+00:00</published>
            <updated>2021-04-10T06:35:12+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-6&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Since my last update, I&#039;ve been thinking on what to work on next. Something that&#039;s been nagging me for a while is that the authentication workflow I have in Media Kraken is not great. I realized it when I prepared the demo for &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vimeo.com/508623332#t=666&quot;&gt;my Solid World presentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The basic idea is that a user would start using the app with browser storage, so far so good. But then, when they want to move to Solid, they have to download a json, log out, log in, and import the json. That isn&#039;t so bad, but it&#039;s definitely more cumbersome than it should (and for some people it&#039;ll be a barrier). It&#039;s also annoying that even though the app works mostly offline, opening the app takes ages in mobile, because it reads the entire movies container at launch (and I have 1671 movies in my collection at this point). This was probably solved after &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/node-solid-server/issues/1460&quot;&gt;NSS#1460&lt;/a&gt; was closed, but I&#039;m still using an old version of NSS (and my mobile phone is also quite old). But I&#039;m in no rush to upgrade, after all that&#039;s how I notice these things.&lt;/p&gt;
&lt;p&gt;Thinking how to improve this situation I brushed up on some ideas I had on my backlog. And now I am convinced that offline-first is the solution to these problems. In Umai, users will be using browser storage by default, and they&#039;ll be able to add synchronisation backends (for example, Solid). Reading about this topic, I came across some interesting concepts like CRDTs (and some funny encounters, like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Leap_second&quot;&gt;leap seconds&lt;/a&gt;). In particular, I enjoyed a lot an article about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.inkandswitch.com/local-first.html&quot;&gt;Local-first software&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So now it&#039;s almost certain that the next cycle will be focused on making Umai offline-first. But I don&#039;t think I&#039;m ready to start yet, so I&#039;ll spend some indefinite ammount of time (hopefully not too much) &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/0.3-chapter-01#shaping-the-work&quot;&gt;shaping the work&lt;/a&gt;. I&#039;ve already started some of the shaping process, and I opened a couple of posts on the Solid forum to get feedback. If you&#039;re interested in participating, check out these posts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/authenticating-offline-first-solid-apps/4208&quot;&gt;Authenticating Offline-First Solid Apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/request-for-comments-crdtish-approach-to-solid/4211&quot;&gt;Request for Comments: CRDTish approach to Solid&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-5" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-5</id>
            <published>2021-03-21T07:10:19+00:00</published>
            <updated>2021-03-21T07:10:19+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-5&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today is the end of the cycle, and this is where things are at:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/hillchart-2020-03-21.png&quot; alt=&quot;Hill Chart&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In the end, I didn&#039;t finish v0.0.1 as I&#039;d budgeted, that&#039;s why that scope is not all the way down the hill. But I almost got there, the only thing that&#039;s missing is configuring servings. I&#039;m happy with the results, because the part I was interested in was laying out the foundations. And now I can say that Umai exists! It&#039;s definetly not finished, definetly not production-ready, but it exists. From now on, I &amp;quot;only&amp;quot; need to improve it.&lt;/p&gt;
&lt;p&gt;The work on Soukai Next Generation has moved a bit, but in reality it hasn&#039;t changed much since my last update. I had done a lof of refactors and improvements, but I hadn&#039;t actually used them anywhere. Now that I&#039;m using them in Umai, I&#039;m more confident that the scope is further downhill.&lt;/p&gt;
&lt;p&gt;The part that&#039;s changed the most since last time is the framework. I&#039;m writing what I&#039;d consider framework code in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/tree/main/src/framework&quot;&gt;a different folder&lt;/a&gt;, and that&#039;s what I&#039;ll eventually extract into a package to use across applications. While doing this, I&#039;ve created a couple of new patterns that I&#039;m very happy with (and borrowed some from my favourite frameworks, like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravel.com/docs/8.x/facades#introduction&quot;&gt;Laravel&#039;s Facades&lt;/a&gt;). If you look around the source code without going into the framework folder, you&#039;ll see there is almost no boilerplate. Most of the code is specific to this application. I&#039;m enjoying a lot working on the framework, and I&#039;m itching to document it and share it with others. But I&#039;ll resist the urge, at least until I finish Umai.&lt;/p&gt;
&lt;p&gt;These two, Soukai Next Generation and the framework, come together during development in a big way. So far I&#039;ve been able to work on the app without being bothered about any Solid specifics. Foregoing a POD was already possible using a browser engine from Soukai, and now that I&#039;ve incorporated the Authenticators pattern I introduced in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/ramen&quot;&gt;Ramen&lt;/a&gt;, I don&#039;t have to use an identity provider either. Soukai isn&#039;t perfect, and the framework isn&#039;t even a thing. But this is promising because I can see a day where I&#039;ll be working on apps without thinking of them as &amp;quot;Solid apps&amp;quot;. And that&#039;s my end goal, Solid should just be a given.&lt;/p&gt;
&lt;p&gt;Going back to planning though, this is where the Shape Up methodology breaks down for me. Seeing this cycle from a pure Shape Up perspective, it&#039;s a failure because the only &amp;quot;finished&amp;quot; thing I have is Umai v0.0.1. But to really consider it finished I would need to tag the v0.0.1 version in github, release new versions of all the related libraries (&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/soukai&quot;&gt;soukai&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/soukai-solid&quot;&gt;soukai-solid&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/utils&quot;&gt;utils&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/scripts&quot;&gt;scripts&lt;/a&gt;), and all that goes with that (like documentation). All of that should have been part of this cycle, but I&#039;ll leave it for later. That&#039;s ok, though. Nobody is forcing me to be a purist. And I&#039;d be surprised if the guys at Basecamp followed it to a T during the development of HEY. So I&#039;m making the most out of it, and this time I can say it&#039;s been really useful because I got something done and I&#039;ve dropped the vocabs thing that could have become a rabbit-hole (may come back in the future though!).&lt;/p&gt;
&lt;p&gt;For the upcoming weeks, I&#039;ll use the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/2.2-chapter-08#cool-down&quot;&gt;cooldown&lt;/a&gt; to do some chores in other projects and shape the work for the next cycle. I&#039;m still not sure if the next cycle will be the one where I release the app, but it probably won&#039;t. There are many things I still want to do that I consider essential.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-4" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-4</id>
            <published>2021-03-10T19:24:29+00:00</published>
            <updated>2021-03-10T19:24:29+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-4&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;It&#039;s been 4 weeks since the cycle started, and here&#039;s how the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/3.4-chapter-13#work-is-like-a-hill&quot;&gt;Hill Chart&lt;/a&gt; looks like (yes, I even started using Basecamp!):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/hillchart-2020-03-10.png&quot; alt=&quot;Hill Chart&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You&#039;ll notice that I&#039;ve only gotten over the hill in one scope: Soukai Next Generation. It may look disappointing, but to be frank I&#039;m happy with the results (which I&#039;ll get into in a second). I think this time I&#039;m finally doing Shape Up right&lt;em&gt;ish&lt;/em&gt;. One of the ideas I was more excited about from the book was &amp;quot;fixed time, variable scope&amp;quot;. Specially given my situation; I&#039;m only working one day a week on Solid. So time is more precious than usual.&lt;/p&gt;
&lt;p&gt;Now, let&#039;s get into the meat of Soukai Next Generation. Like always, I&#039;m wondering whether the work I&#039;m doing is even worth it or I&#039;m shaving yaks. 90% of what I&#039;ve been doing these 4 weeks has been purely focused on developer experience, or said differently, &amp;quot;not necessary&amp;quot;. But I&#039;m enjoying it and I&#039;m happy with the progress, so it&#039;s worth it in my book.&lt;/p&gt;
&lt;p&gt;The first thing I did was migrating to Rollup and ESLint (from Webpack and TSLint). This seemed pretty useless at first, but later on it paid off when I started working in Viteland. I started doing this by hand in each project, but it became cumbersone quickly so I ended up extracting the build configurations into &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/scripts&quot;&gt;their own repository&lt;/a&gt;. Other than upgrading the tooling, I also learned a bit more about all the flavors of javascript. I identified 3 environments where my libraries can be used: Other libraries or apps (will normally use the ESModules build), scripts and tests (will normally use the CommonJS build) and plain HTML (will include the UMD build as a script tag in a page). The latter use-case is the only one that I don&#039;t use myself, but I&#039;ll still document it because I think it&#039;s interesting for getting started without a build step. During this upgrade, I also understood the polyfills I&#039;m actually shipping with the libs and the environments I&#039;m supporting (before this I think webpack was using babel under the hood but I&#039;m not even sure).&lt;/p&gt;
&lt;p&gt;Something else I did was improving TypeScript inference in models. It&#039;s still not as good as I&#039;d like, but I&#039;ve removed a couple of annoyances and improved many things. So that&#039;s been a big win. I&#039;ll document all of this more in depth when I release the next version (which I already know &lt;em&gt;will not&lt;/em&gt; happen during this cycle). &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai/blob/next/src/models/Model.test.ts#L875&quot;&gt;Here are some tests&lt;/a&gt; about the new inference in case you&#039;re curious.&lt;/p&gt;
&lt;p&gt;As you can see in the Hill Chart, I&#039;ve also advanced on using Vite and implementing the app. Thanks to the previous work, Soukai now works out of the box with both Vite and Webpack. As I suspected, Vite is a joy to work with once you don&#039;t have issues with external libraries. I&#039;ve even been using a couple of plugins to do some magic stuff and it&#039;s working great. I know it won&#039;t always be like this, because some library will eventually fail to compile with Vite (I already know this happens with some of the authentication libraries I&#039;m using). But I also have a plan for that, I&#039;ll bundle problematic libs with webpack as &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/vitejs/vite/issues/1915&quot;&gt;I did in this issue&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The current status of the app is very basic, but I&#039;d say the foundations are laid out and that&#039;s why it&#039;s halfway uphill. It&#039;s not usable at all, but if you&#039;re curious about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai&quot;&gt;the code&lt;/a&gt; now it&#039;s actually a great moment to take a look because there is so little.&lt;/p&gt;
&lt;p&gt;The custom vocab thing is something I didn&#039;t even start, and I think I&#039;ll drop it for this cycle. The nice thing about Shape Up is that this doesn&#039;t mean that I&#039;ll pick it up on the next cycle, because it&#039;s important to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/2.2-chapter-08#keep-the-slate-clean&quot;&gt;keep the slate clean&lt;/a&gt;. So it&#039;ll compete against all the other things I want to do in my next betting table.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-3" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-3</id>
            <published>2021-02-05T15:16:43+00:00</published>
            <updated>2021-02-05T15:16:43+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-3&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;On my last update I mentioned that I&#039;d start working on the recipes manager, but some things have come up and I continued working on the authentication workflow. I was already uneasy about hardcoding domains in the code, but this &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/issues/9#issuecomment-754039069&quot;&gt;backfired sooner than I expected&lt;/a&gt;. After seeing this and having other conversations, I decided to abandon the strategy of using heuristics. However, asking people what authentication method to use is not a good idea either. So I ended up with a halfway approach. Instead of showing a dropdown with authentication methods, I use DPoP by default, and I&#039;ve hidden the dropdown behind a &amp;quot;Can&#039;t log in?&amp;quot; button. With this approach, most people should log in without any friction and only those experiencing problems will see anything about authentication methods. I also refactored the implementation to decouple authentication libraries from the rest of the codebase. Now it&#039;s easy to add any authentication library by extending a class, and I&#039;ve added &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/solid-auth-fetcher&quot;&gt;solid-auth-fetcher&lt;/a&gt; to the list of options for testing purposes.&lt;/p&gt;
&lt;p&gt;So, I deployed this new approach to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ramen.noeldemartin.com/&quot;&gt;Ramen&lt;/a&gt; and that was it. I wasn&#039;t planning on adding it to Media Kraken yet, because there is still &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/inrupt/solid-client-authn-js/issues/423&quot;&gt;an issue&lt;/a&gt; with Inrupt&#039;s library that makes UX sub-optimal. However, I was invited to present at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/project_solid/status/1354185441075990534&quot;&gt;Solid World&lt;/a&gt;! This meant that new people would probably check it out, and it would be a shame if they try it with servers that only support DPoP. So I&#039;ve gone ahead and added it to Media Kraken as well. Now I should be able to forget about authentication for a while. I also found that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/specification/issues/227#issuecomment-773945439&quot;&gt;I&#039;m relying on something that is not part of the spec&lt;/a&gt;, but I can&#039;t do anything about it.&lt;/p&gt;
&lt;p&gt;Also in preparation for Solid World (albeit tangentially), I decided to take a stab at sharing public data with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/media-kraken/viewer&quot;&gt;Media Kraken Viewer&lt;/a&gt;. I&#039;ll explore this a lot more with recipes, but it can hopefully be useful for some people already. If you want to see an example in action, here&#039;s a list with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/media-kraken/viewer?c=https%3A%2F%2Fdata.noeldemartin.com%2Ffavorite-movies%2F&quot;&gt;25 of my favorite movies&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So yeah, that was Media Kraken and Solid World. I&#039;m very happy to have presented, and I met more people that have been using my apps and reading this journal. If you want to watch the recording, you can find it &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vimeo.com/508623332#t=666&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now, back to the recipes manager. Although I&#039;ve been doing other things, I also did some preparations for it. I started &lt;a href=&quot;https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp&quot;&gt;reading Shape Up&lt;/a&gt; again, and I want to go back to applying the methodology to my side projects (we all know &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-10&quot;&gt;how that ended last time&lt;/a&gt;). I realize one of my mistakes is that I only used the concept of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/1.2-chapter-03#setting-the-appetite&quot;&gt;appetite&lt;/a&gt;, without doing any of the actual shaping or &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/1.4-chapter-05#look-for-rabbit-holes&quot;&gt;looking at rabbit holes&lt;/a&gt;. This time, I&#039;ve been doing that and I&#039;ve written a &amp;quot;proper&amp;quot; pitch. It&#039;s a bit pointless because I&#039;m selling it to myself, but I found the process useful. I only included 4 goals for this upcoming cycle, and I&#039;ve listed a lot of things that are out of scope and rabbit holes.&lt;/p&gt;
&lt;p&gt;First, I&#039;ve made a simple diagram of the initial version of the app. This is the main deliberable, everything else can be dropped or reduced with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/3.5-chapter-14#scope-hammering&quot;&gt;the scope hammer&lt;/a&gt;. I know the diagram is stupidly simple, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/1.3-chapter-04#breadboarding&quot;&gt;that&#039;s the point&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/implementing-a-recipes-tracker-using-solid-breadboarding-1.jpg&quot; alt=&quot;Breadboard Diagram&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Second, I&#039;ve decided to create my own ontology to augment the Recipe type on schema.org. I&#039;ll talk more about this when it is done, but essentially the schema.org vocabulary is very limited and I want more nuance in my data. But it&#039;s also more popular than whatever I make, so I&#039;ll try to mixing both in a way that other applications can understand for interoperability.&lt;/p&gt;
&lt;p&gt;Third, given that this is my 3rd Solid app, I&#039;ll start creating a framework. It&#039;s not my intention to announce this as a new project, it&#039;s just a way to extract code to avoid repeating myself. But it&#039;s very likely that I&#039;ll eventually clean it up for others to use. I recently discovered &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/antfu/vitesse&quot;&gt;Vitesse&lt;/a&gt;, and it seems very nice so I&#039;ll probably draw a lot of inspiration from it. You may have noticed that it&#039;s built on top of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/vitejs/vite&quot;&gt;Vite&lt;/a&gt;, and I said in my last update that I wouldn&#039;t use it. Well, as part of the shaping process I&#039;ve given it another chance and I decided to give it another chance. If any library doesn&#039;t work with Vite, I&#039;ll just compile it with webpack and load the chunk dynamically. Not a great solution, but it doesn&#039;t seem like I&#039;ll be able to resist the temptation. It&#039;s already bad enough that I haven&#039;t used Laravel in months because I don&#039;t write backend code anymore.&lt;/p&gt;
&lt;p&gt;And fourth, I&#039;ll bring Soukai up to speed with some things I&#039;ve learned in the last months. Tinkering with Vite and creating my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/utils&quot;&gt;utils&lt;/a&gt; library taught me a lot. One of the things I&#039;m excited to solve is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai/issues/1&quot;&gt;an issue&lt;/a&gt; I&#039;ve had since its inception.&lt;/p&gt;
&lt;p&gt;This time I&#039;ll follow the recommended 6-week cycle length, and I&#039;m not tracking hours like I did last time. I&#039;ll start next week, so this should be done by March 22nd. Hopefully, I&#039;ll write some updates before that!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Presented "Media Kraken"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://www.youtube.com/watch?v=cajBTJXmKhA" />
            <id>https://www.youtube.com/watch?v=cajBTJXmKhA</id>
            <published>2021-02-04T11:00:00+00:00</published>
            <updated>2021-02-04T11:00:00+00:00</updated>
            <summary type="html">
                Presented &lt;a href=&quot;https://www.youtube.com/watch?v=cajBTJXmKhA&quot;&gt;Media Kraken&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I&#039;m giving a talk at Solid World: &lt;a href=&quot;https://www.youtube.com/watch?v=cajBTJXmKhA&quot;&gt;Media Kraken&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-2" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-2</id>
            <published>2020-12-28T12:08:28+00:00</published>
            <updated>2020-12-28T12:08:28+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid#comment-2&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I have been tinkering with many projects under development, so it&#039;s been a rough couple of weeks but I&#039;m ready to share some progress now.&lt;/p&gt;
&lt;p&gt;First I&#039;ll start with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/vuejs/vue-next&quot;&gt;Vue 3&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/vitejs/vite&quot;&gt;Vite&lt;/a&gt;. I was really excited to start using those, because I have been hearing about them for a while but I hadn&#039;t used them myself. At first it was great, and I think they are the future of my development workflow. But soon, things started to break down. To their credit, it&#039;s not exactly their fault.&lt;/p&gt;
&lt;p&gt;Vite uses &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://esbuild.github.io/&quot;&gt;esbuild&lt;/a&gt; to compile the dependencies during development, and while it makes it really fast, it also means that the libraries have to be compatible with ES modules. There are ways to work around that limitation, but I spend way too much time trying to make things work and I decided to leave it there. To make things worse, Vite uses &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.rollupjs.org&quot;&gt;Rollup&lt;/a&gt; for production builds. While &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping#comment-6&quot;&gt;I do prefer Rollup over Webpack&lt;/a&gt;, having two build systems increases the possibility for headaches. In the end, I wasn&#039;t even sure if the problem was that the packages were not compatible with ES modules, what I know is that using Webpack all my problems were solved. I hope some time from now this is not the case, because I really liked Vite. But at the moment, I don&#039;t think it&#039;s worth it if you&#039;re going to use third party libraries.&lt;/p&gt;
&lt;p&gt;Vue 3, on the other hand, has been a better experience. The only thing I haven&#039;t been able to use is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/vuejs/rfcs/blob/script-setup/active-rfcs/0000-script-setup.md&quot;&gt;the script setup sugar&lt;/a&gt; because it &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/vuejs/vetur/issues/2296&quot;&gt;doesn&#039;t work with Vetur&lt;/a&gt;. But I am using the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://v3.vuejs.org/guide/composition-api-introduction.html&quot;&gt;Composition API&lt;/a&gt; and everything else has been a smooth sailing.&lt;/p&gt;
&lt;p&gt;In other news, something I&#039;m starting to do with this project is using my own domain to serve applications. I&#039;m still hosting them on github pages, but other than removing the domain dependency with github this also helps with sandboxing. I have been serving my apps under &lt;code&gt;noeldemartin.github.io/{app-name}&lt;/code&gt;, and they are all sharing things like localStorage which is not a good thing. So you can now find my latest finished Solid App at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ramen.noeldemartin.com&quot;&gt;ramen.noeldemartin.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Wait, what? No, I haven&#039;t finished this task yet! Let me explain.&lt;/p&gt;
&lt;p&gt;One of the things I want to achieve with this task is to test my apps with multiple server implementations. This is the perfect chance because the codebase is really simple, but as it continues evolving it will become too complex to use as a compatibility tool. So &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/105357581328850005&quot;&gt;I started making some jokes&lt;/a&gt;, one thing lead to another, and I decided to make a separate application just for this purpose.&lt;/p&gt;
&lt;p&gt;You can learn what it does &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/ramen/&quot;&gt;in the project&#039;s README&lt;/a&gt;. In a nutshell, it checks if you&#039;ve got a Ramen recipe in your POD and if you don&#039;t you can create it. I was really tempted to use &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=9xps6wY6DTI&quot;&gt;Mr Jägger&#039;s Ramen recipe&lt;/a&gt; (click through this link at your own risk), but I ended up using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=9WXIrnWsaCo&quot;&gt;Jun&#039;s Ramen recipe&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have tested this app with the 4 servers I mentioned for this task, and it only works properly with 2 of them (more details about that also in the README). The two where it doesn&#039;t work are still under development, so that&#039;s to be expected. But it&#039;s been helpful to tinker with them anyways, because I&#039;ve learned some things I wasn&#039;t clear about before. Now I understand the difference between identity providers and POD providers (I learned about it in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/community-server/issues/425&quot;&gt;this issue&lt;/a&gt;). This lead me to use a new strategy for logging users into my apps. In my other apps, I just send the url that users introduce to the authentication library, but some times that may not work (for example, if they are writing their WebId and the identity provider is hosted on a different server). In this app, I am reading their profile and trying to search for &lt;code&gt;solid:oidcIssuer&lt;/code&gt; or infer it doing some requests. Most of the time this will result in some unnecessary requests, but it only happens on login and all of them should be very small.&lt;/p&gt;
&lt;p&gt;There are still some rough edges with authentication, but some of them are not in my hands so for now I&#039;ll leave them as things to improve. Something I don&#039;t like but I don&#039;t think I&#039;ll be able to avoid is using two authentication libraries: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/inrupt/solid-client-authn-js/&quot;&gt;@inrupt/solid-client-authn-browser&lt;/a&gt; for new servers that support DPoP authentication and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/solid-auth-client&quot;&gt;solid-auth-client&lt;/a&gt; for old servers that don&#039;t. I have been able to avoid increasing the bundle size by code-splitting both libraries and only loading the one that&#039;s used (although &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/solid-auth-client/issues/177&quot;&gt;I found some problems with the latest version of solid-auth-client&lt;/a&gt;). But I still haven&#039;t found a foolproof way to know if a server doesn&#039;t support DPoP authentication, so I&#039;m relying on heuristics and hardcoded domains for now.&lt;/p&gt;
&lt;p&gt;And, long as it was, that&#039;s it for today&#039;s update. With this I think I&#039;ve covered most of the boring part about this task: authenticating and working with different servers. Now I can get into the fun part: building a recipes manager. For now I am calling it &amp;quot;Umai&amp;quot;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Implementing a Recipes Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid" />
            <id>https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid</id>
            <published>2020-12-08T08:37:42+00:00</published>
            <updated>2020-12-08T08:37:42+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-recipes-manager-using-solid&quot;&gt;Implementing a Recipes Manager using Solid&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I&#039;m still on a path to rebuild my online experiences using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidproject.org/&quot;&gt;Solid&lt;/a&gt;, and next up is an alternative to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://web.archive.org/web/20150319030523/https://evernote.com/food/&quot;&gt;Evernote Food&lt;/a&gt;. It has been dead for years, so I&#039;ve kept my cooking recipes in Evernote and the experience has been subpar. It&#039;s time to make it better.&lt;/p&gt;
&lt;p&gt;In contrast with my previous Solid apps, this one will have sharing functionality from the beginning - because recipes are made for sharing! One of the things I&#039;m looking forward to explore is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/solid-panes&quot;&gt;Solid panes&lt;/a&gt;, or how to customize the display of a resource in its public url. I&#039;ll also make sure that this app works in different PODs, because NSS is not the only option anymore. I&#039;ll test with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/node-solid-server&quot;&gt;NSS&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/community-server/&quot;&gt;CSS&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://inrupt.com/products/enterprise-solid-server/&quot;&gt;ESS&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/pdsinterop/php-solid-server&quot;&gt;PSS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And this will be the first time I use Vue 3 in an app, so a lot of things I&#039;m excited for in this task!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Housekeeping"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping#comment-7" />
            <id>https://noeldemartin.com/tasks/housekeeping#comment-7</id>
            <published>2020-12-08T07:56:17+00:00</published>
            <updated>2020-12-08T07:56:17+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping#comment-7&quot;&gt;Housekeeping&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping#comment-7&quot;&gt;Housekeeping&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Housekeeping"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping#comment-6" />
            <id>https://noeldemartin.com/tasks/housekeeping#comment-6</id>
            <published>2020-12-08T07:54:04+00:00</published>
            <updated>2020-12-08T07:54:04+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping#comment-6&quot;&gt;Housekeeping&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve finished working on my utils package, and it ended up being easier than expected! If anything, the reason why it took me this long (2~3 days) is that I got entranced into doing some &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/utils/commit/b4215f958ef5b2aa71d16cd686b461287f1d707e#diff-70456a8802c1b74bb7e222f166e4b599a222635cd9fbacc7d69a193ee017a698&quot;&gt;advanced TypeScript stuff&lt;/a&gt;. But I ended up dialing it down a bit; I simplified the types by foresaking having a single source of truth for some definitions. Mostly because I was using some new TypeScript 4.1 features and I think the tooling is not ready for them. If you&#039;re interested to know what all that TypeScript wizardry is trying to achieve, you can read the documentation where I explain the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/utils#fluent-api&quot;&gt;Fluent API&lt;/a&gt; included in the package.&lt;/p&gt;
&lt;p&gt;Something interesting in this task is that I did some source code diving. I am usually able to find what I need from reading documentation or blog posts, but this time something eluded me and I found the answers looking at the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/vuejs/vue-next&quot;&gt;Vue 3 source code&lt;/a&gt;. As a byproduct of that, I learned about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/vuejs/vue-next/tree/master/test-dts&quot;&gt;TypeScript type tests&lt;/a&gt; and I also incorporated some of that in the package. If you&#039;re interested in learning advanced TypeScript, I recommend looking at this repository: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/type-challenges/type-challenges&quot;&gt;github.com/type-challenges/type-challenges&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As I mentioned in the previous comment though, my goal with doing this package was to learn more about authoring libraries. And I&#039;m happy to say that learning &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.rollupjs.org&quot;&gt;Rollup&lt;/a&gt; has solved 90% of my problems. The documentation is great, and in contrast with Webpack I could understand what it&#039;s doing in an afternoon. So yeah, I don&#039;t think I&#039;ll use Webpack ever again if I have a choice. I also should mention that I came across a new tool called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://esbuild.github.io/&quot;&gt;esbuild&lt;/a&gt;. It is unbelievably fast, building my package was literally instantaneous. But that&#039;s the only advantage I found, so I&#039;m sticking with Rollup for now.&lt;/p&gt;
&lt;p&gt;Tree-shaking and sourcemaps are very easy to achieve with Rollup. To generate Typescript declarations I tried a couple of tools, and I ended up using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://api-extractor.com/&quot;&gt;@microsoft/api-extractor&lt;/a&gt;. It wasn&#039;t as smooth a sail as learning Rollup, but after reading the docs and tinkering for a bit I got it working. I had to write &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/utils/blob/main/scripts/build-types.js&quot;&gt;a custom script&lt;/a&gt; to achieve my goals, but nothing too complicated.&lt;/p&gt;
&lt;p&gt;Finally, I wanted to use sourcemaps in production. There were two reasons for this: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://m.signalvnoise.com/paying-tribute-to-the-web-with-view-source/&quot;&gt;paying tribute to the web&lt;/a&gt; and &lt;a href=&quot;#comment-4&quot;&gt;generating readable stacktraces in the UI&lt;/a&gt;. The first one was easy to achieve, although I didn&#039;t manage to do it with Webpack and had to use Rollup again in the application side. The second one was more tricky because sourcemaps are only downloaded when the dev tools are open, so a stacktrace displayed in the UI will still be gibberish. But I got it working with a library called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/novocaine/sourcemapped-stacktrace&quot;&gt;sourcemapped-stacktrace&lt;/a&gt;. I&#039;m still not 100% happy with that setup, but those are application-side issues, so I can tell that the sourcemaps are being published properly.&lt;/p&gt;
&lt;p&gt;And with this, I consider the task finished. It&#039;s been open long enough to be a &amp;quot;maintenance&amp;quot; task!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Housekeeping"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping#comment-5" />
            <id>https://noeldemartin.com/tasks/housekeeping#comment-5</id>
            <published>2020-11-27T10:06:05+00:00</published>
            <updated>2020-11-27T10:06:05+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping#comment-5&quot;&gt;Housekeeping&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I finally released the Media Kraken improvements I&#039;ve been working on for the last couple of months. I won&#039;t go into detail because I&#039;ve already talked about that in previous journal entries, you can check out &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/releases/tag/v0.1.4&quot;&gt;the release notes&lt;/a&gt; for a summary.&lt;/p&gt;
&lt;p&gt;Something interesting happened with this release though. It&#039;s the first time that I think it&#039;s important to make an &amp;quot;announcement&amp;quot; that reaches all my users. In previous updates I just added improvements or fixed small bugs, but this release is very important for &lt;code&gt;solid.community&lt;/code&gt; users. When the domain disappeared, Media Kraken stopped working. This release makes it usable again. But given the nature of Solid (and the way I&#039;m publishing my app), it&#039;s not possible to reach them; I don&#039;t even know how many users I have. But after some thought, I decided to just tweet/toot about the new release.&lt;/p&gt;
&lt;p&gt;This worry comes from the fact that I make my apps thinking about non-technical users. But the reality is that most of them are probably developers. I also know that my audience is very small (after publishing &lt;a href=&quot;https://noeldemartin.com/blog/working-in-the-open-when-no-one-is-looking&quot;&gt;my latest post&lt;/a&gt;, only &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://mastodon.social/@vinnl/105084388798262265&quot;&gt;one person reached out&lt;/a&gt; – thanks Vincent!). So at this point, I think it&#039;s not worth it to spend any more time on this. It&#039;d be great to have non-technical users, and maybe some day I&#039;ll work on growing that audience. But for now I&#039;ll focus on other things.&lt;/p&gt;
&lt;p&gt;After this update, I don&#039;t think I&#039;ll be working on Media Kraken for a while. I still have some Housekeeping TODOs, and I want to start working on my 3rd Solid app by the end of the year. But I still use it every day, as well as Solid Focus. So I&#039;ll resume development for sure and add some important missing features like tracking TV Shows.&lt;/p&gt;
&lt;p&gt;The last thing I&#039;ll do before closing this task is learn more about building node libraries. I&#039;ve had Soukai published for a while, and it works. But there is a lot of room for improvement, so &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/utils&quot;&gt;I&#039;m creating a utils package&lt;/a&gt; to tinker with a couple of things on a small project. In particular, these are the things I want to look into:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use Rollup instead of Webpack.&lt;/li&gt;
&lt;li&gt;Make sure that tree-shaking is supported.&lt;/li&gt;
&lt;li&gt;Generate TypeScript declarations automatically.&lt;/li&gt;
&lt;li&gt;Include source maps in the release package.&lt;/li&gt;
&lt;li&gt;Generate stack traces pointing to the source code (not the minified bundle).&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "Working in the Open When No One Is Looking"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/working-in-the-open-when-no-one-is-looking" />
            <id>https://noeldemartin.com/blog/working-in-the-open-when-no-one-is-looking</id>
            <published>2020-10-23T11:15:00+00:00</published>
            <updated>2020-10-23T11:15:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/working-in-the-open-when-no-one-is-looking&quot;&gt;Working in the Open When No One Is Looking&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/working-in-the-open-when-no-one-is-looking&quot;&gt;Working in the Open When No One Is Looking&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Housekeeping"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping#comment-4" />
            <id>https://noeldemartin.com/tasks/housekeeping#comment-4</id>
            <published>2020-10-15T09:22:01+00:00</published>
            <updated>2020-10-15T09:22:01+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping#comment-4&quot;&gt;Housekeeping&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=a6_Jf8So534&quot;&gt;Oops... I did it again&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It&#039;s been a month and a half since I updated this task. But I haven&#039;t been idle, quite the opposite. I started working on many threads that became rabbitholes, so &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-8&quot;&gt;here we are again&lt;/a&gt;. I think it&#039;s about time to write an update, even if many threads remain open. Sorry in advance, because this is going to be a long one.&lt;/p&gt;
&lt;p&gt;Let&#039;s start with Media Kraken. As part of the housekeeping, I wanted to improve a couple of things I didn&#039;t do in &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid&quot;&gt;the previous task&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The first one was to improve error tracking. I thought this would be straightforward (and let&#039;s face it, it is). But I got too excited and ended up creating a new UI to display errors. I am also experimenting with how much technical details I should be showing in the UI. Non technical-users may get scared when they see the stack trace, so maybe I&#039;ll reconsider it in the future. But for a first approach I think it&#039;s good enough. Users shouldn&#039;t experience errors anyways 🤞. Besides the new UI, I&#039;ve also refactored error handling on start up, and I&#039;ve provided some scape hatches when things go wrong. Here&#039;s a video showing some of these things:&lt;/p&gt;
&lt;a href=&quot;https://noeldemartin.com/videos/media-kraken-errors.mp4&quot; target=&quot;_blank&quot;&gt;
    &lt;video autoplay loop&gt;
        &lt;source src=&quot;/videos/media-kraken-errors.mp4&quot; type=&quot;video/mp4&quot;&gt;
    &lt;/video&gt;
&lt;/a&gt;
&lt;p&gt;The second thing related with Media Kraken was to improve how I generate movie resource ids. In the current implementation, movie resources are created with the same id as their document. For example, a movie found at &lt;code&gt;https://your-pod.com/movies/spirited-away&lt;/code&gt; would use that url as id. However, this is not entirely correct because that&#039;s the id of the document, and the movie is a different entity. The correct way is to have an id like this: &lt;code&gt;https://your-pod.com/movies/spirited-away#it&lt;/code&gt;, where &lt;code&gt;it&lt;/code&gt; could be anything. When I started working on this I knew it wasn&#039;t going to be straightforward, because it required some modifications in Soukai. But I wanted to do it in this housekeeping task before I get into other things.&lt;/p&gt;
&lt;p&gt;And finally, the last thing relating to Media Kraken was &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://gitlab.com/solid.community/proposals/-/issues/16&quot;&gt;the solid.community drama&lt;/a&gt;. This is not directly related with Media Kraken, but it affects the Solid ecosystem and it&#039;s surfaced &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/issues/8&quot;&gt;some bad practices&lt;/a&gt; I wasn&#039;t aware of. I won&#039;t get into the drama part, but the gist of the issue is that one of the most (if not THE most) popular POD providers is gone. This is a problem because having a stable POD provider is important to reduce friction for non-technical users comming into Solid. After that happened, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://lists.w3.org/Archives/Public/public-solid/2020Oct/0029.html&quot;&gt;it was revealed&lt;/a&gt; that the person managing the domain wasn&#039;t managing the data, so everything has been migrated to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidcommunity.net&quot;&gt;solidcommunity.net&lt;/a&gt;. The part where it concerns me is that I&#039;m thinking what to do for Media Kraken users. For sure, I&#039;ll fix the bad practices. But I&#039;m pondering whether to assist non-technical users in migrating their existing data. I don&#039;t like the idea of hard-coding domains in my source code. But I guess it&#039;ll be the best for users, and it&#039;s also a good opportunity to learn about migrating data in Solid.&lt;/p&gt;
&lt;p&gt;I also tried replacing &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sentry.io&quot;&gt;Sentry&lt;/a&gt; with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://glitchtip.com&quot;&gt;Glitchtip&lt;/a&gt;. To be honest, I don&#039;t like Sentry, because it tracks too much information (location, behaviour, etc.). But I don&#039;t think Glitchtip is ready to replace it yet, in particular because it doesn&#039;t send emails and I&#039;m not willing to check in periodically. At least I&#039;ve implemented error reporting as opt-in, so most people won&#039;t be using it.&lt;/p&gt;
&lt;p&gt;So, that was Media Kraken.&lt;/p&gt;
&lt;p&gt;On another front, I&#039;ve been preparing a follow up to my &lt;a href=&quot;https://noeldemartin.com/blog/open-productivity&quot;&gt;Open Productivity&lt;/a&gt; post. I won&#039;t give away what it&#039;s about, but one of the conclusions I got was that I need a new section in the website. It isn&#039;t anything big, but when I started working on it I also started migrating to Laravel 8 to use new features and that also became a rabbithole. I think I&#039;ll move those changes to a different branch and create the new section without new features. I&#039;ve had this post written for a couple of weeks, so I&#039;m itching to publish it.&lt;/p&gt;
&lt;p&gt;Something else that&#039;s happening now is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://hacktoberfest.digitalocean.com&quot;&gt;Hacktoberfest&lt;/a&gt;. Last year I participated as a contributor, and this year I wanted to explore what I can do as a maintainer. I opened a couple of issues with the #hacktoberfest label, and I was surprised in how fast I got pull requests. Unfortunately, the quality of those contributions wasn&#039;t great. Which is to be expected, frankly. Most people just want a t-shirt. So I think that&#039;s were my Hacktoberfest Maintainer Adventures end. But I think I&#039;ll complete my contributor PRs, and this year I&#039;ll totally choose planting a tree instead of getting the t-shirt. I already have the one from last year, so I don&#039;t want to generate more waste.&lt;/p&gt;
&lt;p&gt;So yeah, I started this task with a small scope and it&#039;s blown up. What I don&#039;t like is that a big chunk of this work comes from external events, instead of my own decisions. I could make the decision to ignore these things, but I think it&#039;s ok to dedicate some time to community work. What I wouldn&#039;t like is that this becomes my new normal. I&#039;ll keep an eye on that.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Housekeeping"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping#comment-3" />
            <id>https://noeldemartin.com/tasks/housekeeping#comment-3</id>
            <published>2020-08-30T09:26:16+00:00</published>
            <updated>2020-08-30T09:26:16+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping#comment-3&quot;&gt;Housekeeping&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;m back! I enjoyed a couple of weeks away from the keyboard, and one of the highlights was doing part of the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://caminoways.com/ways/northern-way-camino-del-norte&quot;&gt;Camino de Santiago&lt;/a&gt;. We walked 150km in 6 days, and I&#039;m looking forward to doing more of that in the future. This is a kind of tourism I don&#039;t do often, but I&#039;ll probably start doing it in other countries as well.&lt;/p&gt;
&lt;p&gt;Back on the keyboard front, there&#039;s been &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/issues/5&quot;&gt;some&lt;/a&gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/issues/6&quot;&gt;activity&lt;/a&gt; in the media-kraken repo. I&#039;ve been accumulating some things I&#039;d like to do before moving forward to a different project, and I&#039;ll probably do those before getting started with other housekeeping tasks. But definitely no new features for a while.&lt;/p&gt;
&lt;p&gt;Something I can cross off the housekeeping list is a couple of things for the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/cypress-laravel&quot;&gt;cypress-laravel&lt;/a&gt; package. Jeffrey Way recently released &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/laracasts/cypress&quot;&gt;a Laravel package&lt;/a&gt; with a lot of overlap with my solution. But &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/cypress-laravel/pull/6#issuecomment-668616047&quot;&gt;it&#039;s not exactly the same&lt;/a&gt;, and there are some design choices that are different. For example, his solution consists of a Laravel package that publishes Cypress assets in the project and my solution consists of two packages - one for Laravel and one for Cypress. So I&#039;ll continue maintaining my own. Today I released &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/cypress-laravel/releases/tag/v0.2.0&quot;&gt;a new version&lt;/a&gt; with support for custom commands, which should make it more extensible. I also closed pending issues and added the functionality to swap env files inspired by Jeffrey&#039;s package (and Laravel Dusk).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Housekeeping"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping#comment-2" />
            <id>https://noeldemartin.com/tasks/housekeeping#comment-2</id>
            <published>2020-08-02T17:08:52+00:00</published>
            <updated>2020-08-02T17:08:52+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping#comment-2&quot;&gt;Housekeeping&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve been looking into my backlog and of course, I have more things than I&#039;ll ever be able to do (and it&#039;ll keep growing). But that&#039;s fine :) I like that idea, nothing is ever really finished. So I&#039;m not getting bored anytime soon. I pulled a couple of things that I want to do before embarking into a new project, and I&#039;ll be focusing on those for a couple of months.&lt;/p&gt;
&lt;p&gt;I always struggle to write. Meaning that I have to dedicate too much time, and I have other priorities. But I still think it&#039;s very important, and I want to continue honing my writing skills. This week I published &lt;a href=&quot;https://noeldemartin.com/blog/you-cant-always-get-what-you-want&quot;&gt;a new blog post&lt;/a&gt; and I experimented a little with it. In particular, I didn&#039;t use &amp;quot;I&amp;quot; even once. I use it to much, and I think it&#039;s becoming a crutch in my writing. I won&#039;t continue this trend, but it was a good exercise. I also don&#039;t put writing this journal entries in the same category as writing blog posts. Here, it&#039;s fine to use &amp;quot;I&amp;quot; more often and I don&#039;t dedicate as much time either.&lt;/p&gt;
&lt;p&gt;I also &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/vuejs/docs-next/pull/363&quot;&gt;implemented the search page&lt;/a&gt; for the new documentation coming with Vue 3. This is useful for services redirecting to search results using a url, for example &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://duckduckgo.com/bang&quot;&gt;DuckDuckGo&#039;s bangs&lt;/a&gt;. Right now, if you search &lt;code&gt;lifecycle hooks !vue&lt;/code&gt; in DuckDuckGo, it&#039;ll take you directly to the search results in the Vue docs. That&#039;s very useful, and in fact I was the one who implemented the search page and submitted the &lt;code&gt;!vue&lt;/code&gt; bang to DuckDuckGo for the v2 docs. I also want to do the same for Cypress and I&#039;ll probably contribute the search page to VuePress, given that v3 docs are built with that.&lt;/p&gt;
&lt;p&gt;Finally, I also decided on what to do with my holidays so I&#039;ll be out until August 24th. I&#039;ll still be available, but much less responsive (limited to replying emails/socials). For anyone interested, I&#039;m going to do part of the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://caminoways.com/ways/northern-way-camino-del-norte&quot;&gt;Camino de Santiago, Northern Way&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "You Can't Always Get What You Want"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/you-cant-always-get-what-you-want" />
            <id>https://noeldemartin.com/blog/you-cant-always-get-what-you-want</id>
            <published>2020-08-01T10:22:00+00:00</published>
            <updated>2020-08-01T10:22:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/you-cant-always-get-what-you-want&quot;&gt;You Can&#039;t Always Get What You Want&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/you-cant-always-get-what-you-want&quot;&gt;You Can&#039;t Always Get What You Want&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Started "Housekeeping"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/housekeeping" />
            <id>https://noeldemartin.com/tasks/housekeeping</id>
            <published>2020-07-26T15:02:17+00:00</published>
            <updated>2020-07-26T15:02:17+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping&quot;&gt;Housekeeping&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/housekeeping&quot;&gt;Housekeeping&lt;/a&gt;&lt;/p&gt;&lt;p&gt;At this time of the year, I&#039;d usually be planning or being on holidays. Given the current situation, that is a bit uncertain. In any case, I&#039;m taking a break from project work and I&#039;ll use this time to do some small things I have in my backlog.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Media Tracker using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-11" />
            <id>https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-11</id>
            <published>2020-07-24T14:22:02+00:00</published>
            <updated>2020-07-24T14:22:02+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-11&quot;&gt;Implementing a Media Tracker using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Here&#039;s an afternote for this closed task.&lt;/p&gt;
&lt;p&gt;Shortly after completing the task, I announced the release in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/media-kraken-keep-track-of-your-media-in-your-pod&quot;&gt;a post&lt;/a&gt; in the Solid Forum. I&#039;ve got some interesting feedback which I&#039;ve used for a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/releases/tag/v0.1.3&quot;&gt;new release&lt;/a&gt;. Nothing major, but for those interested in the evolution of the app, the conversation&#039;s continued there :).&lt;/p&gt;
&lt;p&gt;As for me, I&#039;ve already replaced my previous app to track movies with Media Kraken and so far I&#039;m happy with this v0.1. The only real problem is the initial loading time, which I&#039;ve continued discussing in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/state-of-the-art-for-querying-large-containers&quot;&gt;this other post&lt;/a&gt;. It doesn&#039;t look like I&#039;ll get any solutions for the short term, but at least the caching strategy I implemented makes it bearable.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Implementing a Media Tracker using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-12" />
            <id>https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-12</id>
            <published>2020-07-19T08:03:51+00:00</published>
            <updated>2020-07-19T08:03:51+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-12&quot;&gt;Implementing a Media Tracker using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-12&quot;&gt;Implementing a Media Tracker using Solid&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Media Tracker using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-10" />
            <id>https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-10</id>
            <published>2020-07-19T08:02:55+00:00</published>
            <updated>2020-07-19T08:02:55+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-10&quot;&gt;Implementing a Media Tracker using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;After 6 months of starting this task, I can finally say it:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I&#039;ve released the Kraken!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&#039;ll make the official announcement in social networks next week, but I&#039;m certainly closing this task now and I don&#039;t expect to change anything big.&lt;/p&gt;
&lt;p&gt;The last couple of weeks I&#039;ve been tying some loose ends and doing a review of this first release. I&#039;m still doubtful about some implementation details in my approach to use Web Workers, but I think the design choice is correct. Something I&#039;m not too happy about is caching and the way data is managed, but there are some limitations that I&#039;m not sure how to overcome. I&#039;ve &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/state-of-the-art-for-querying-large-containers/3320&quot;&gt;opened a post&lt;/a&gt; in the Solid forum to start a conversation about this. And I found &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/solid-auth-client/issues/129&quot;&gt;yet another unimplemented Solid feature&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have to say that I&#039;m becoming more disappointed by the Solid community each day. I&#039;ll continue supporting the project and making Solid apps because I still share the underlying values and vision. But the developer experience is very bad, and I struggle a lot in making things work that in other contexts would take me 5 minutes. I&#039;ve been lurking in the Solid community for about two years now, and it seems like there is a lot of talking and theorizing but I still have to see a single Solid application that I really love (and yes, I include my apps in that bucket). It seems to me like one solution would be to implement my own Solid POD. But I don&#039;t really have the knowledge, time nor motivation at the moment. This is in stark contrast with the Laravel community, which continues to delight me and it&#039;s very hands-on.&lt;/p&gt;
&lt;p&gt;Anyways, coming back to Media Kraken. I&#039;ve updated the documentation and released new versions of the three projects: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://soukai.js.org/&quot;&gt;soukai&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai-solid/&quot;&gt;soukai-solid&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken&quot;&gt;media-kraken&lt;/a&gt;. I also started using the &lt;code&gt;main&lt;/code&gt; branch name (instead of &lt;code&gt;master&lt;/code&gt;) in Media Kraken, I&#039;ll eventually do that with all my projects. And I also started looking into better ways to build npm libraries, like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://rollupjs.org/guide/en/&quot;&gt;rollup&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://api-extractor.com/&quot;&gt;api-extractor&lt;/a&gt;. But I caught myself getting into another rabbithole so I decided to leave this for another day.&lt;/p&gt;
&lt;p&gt;Now, before closing this task let&#039;s look at time dedication. In total, I&#039;ve dedicated 278 hours to this task. That&#039;s about 7 weeks of full-time work. However, given that this is a side-project and I&#039;ve had stops in between, it&#039;s taken me 6 months. Here&#039;s the hours breakdown (the first weeks don&#039;t have a description because they were within appetite budget):&lt;/p&gt;
&lt;details&gt;
	&lt;summary&gt;Time dedication hours breakdown&lt;/summary&gt;
	&lt;ul&gt;
		&lt;li&gt;Week 1 - 11 hours&lt;/li&gt;
		&lt;li&gt;Week 2 - 0 hours&lt;/li&gt;
		&lt;li&gt;Week 3 - 3 hours&lt;/li&gt;
		&lt;li&gt;Week 4 - 7.5 hours&lt;/li&gt;
		&lt;li&gt;Week 5 - 9.5 hours&lt;/li&gt;
		&lt;li&gt;Week 6 - 9 hours&lt;/li&gt;
		&lt;li&gt;Week 7 - 19.5 hours (Logo &amp; Responsive/Animations)&lt;/li&gt;
		&lt;li&gt;Week 8 - 15.5 hours (Search, Login, Welcome, Modals)&lt;/li&gt;
		&lt;li&gt;Week 9 - 6 hours (Final UI)&lt;/li&gt;
		&lt;li&gt;Week 10 - 12.5 hours (Dynamic badges, Send to collection animation, Snackbars, Menu)&lt;/li&gt;
		&lt;li&gt;Week 11 - 18 hours (Movie UI Refactor, Deploymnet &amp; UX Tweaks)&lt;/li&gt;
		&lt;li&gt;Week 12 - 9.5 hours (Modeling refactor, Import UX, Testing)&lt;/li&gt;
		&lt;li&gt;Week 13 - 20 hours (Testing, Pagination, Models Caching)&lt;/li&gt;
		&lt;li&gt;Week 14 - 15.5 hours (Web Workers, IndexedDB)&lt;/li&gt;
		&lt;li&gt;Week 15 - 12 hours (JSON-LD models serialization)&lt;/li&gt;
		&lt;li&gt;Week 16 - 7.5 hours (JSON-LD models serialization, Relationships refactor)&lt;/li&gt;
		&lt;li&gt;Week 17 - 17 hours (Relationships refactor, Embedded-&gt;Documents refactor)&lt;/li&gt;
		&lt;li&gt;Week 18 - 13 hours (@graph Filters &amp; updates, RDFDocument refactor, Engine Caching)&lt;/li&gt;
		&lt;li&gt;Week 19 - 10 hours (Relationships refactor, Relations Caching, Kraken Caching)&lt;/li&gt;
		&lt;li&gt;Week 20 - 16 hours (Kraken Caching, Import/Export JSON-LD, Testing)&lt;/li&gt;
		&lt;li&gt;Week 21 - 2.5 hours (Testing)&lt;/li&gt;
		&lt;li&gt;Week 22 - 4.5 hours (Tweaks, JSON-LD url minting)&lt;/li&gt;
		&lt;li&gt;Week 23 - 9 hours (Tweaks, Caching)&lt;/li&gt;
		&lt;li&gt;Week 24 - 12 hours (Solid modeling, Filters/sorting)&lt;/li&gt;
		&lt;li&gt;Week 25 - 5 hours (Documentation)&lt;/li&gt;
		&lt;li&gt;Week 26 - 11.5 hours (Documentation, Release)&lt;/li&gt;
	&lt;/ul&gt;
&lt;/details&gt;
&lt;p&gt;It&#039;d be an understatement to say that I&#039;ve exceeded the initial appetite of 40 hours. It&#039;s been 7x times that. However, I have already talked about it previously. It has been mostly a conscious decision, and most of the overtime has gone to either UI tweaks (which I enjoy working on) or library development (which I believe will yield benefits in the long term). The actual core of the application was done in the 40 hours budget, but I cannot deny that I&#039;ve mismanaged this. I suppose the proper way of doing this would&#039;ve been closing the task at 40 hours, and open new tasks (or &amp;quot;bets&amp;quot; in shape-up language). If this pattern keeps repeating, I&#039;ll have to do something about it. In general I don&#039;t mind dedicating more time to UI, but I wouldn&#039;t like having to dedicate more time to library work given that the whole idea is to make my life easier.&lt;/p&gt;
&lt;p&gt;And now, I can start using Media Kraken in my daily life!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Configuring a MoodleNet instance"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/configuring-a-moodlenet-instance#comment-4" />
            <id>https://noeldemartin.com/tasks/configuring-a-moodlenet-instance#comment-4</id>
            <published>2020-06-19T14:09:40+00:00</published>
            <updated>2020-06-19T14:09:40+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-moodlenet-instance#comment-4&quot;&gt;Configuring a MoodleNet instance&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-moodlenet-instance#comment-4&quot;&gt;Configuring a MoodleNet instance&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Configuring a MoodleNet instance"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/configuring-a-moodlenet-instance#comment-3" />
            <id>https://noeldemartin.com/tasks/configuring-a-moodlenet-instance#comment-3</id>
            <published>2020-06-19T14:05:13+00:00</published>
            <updated>2020-06-19T14:05:13+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-moodlenet-instance#comment-3&quot;&gt;Configuring a MoodleNet instance&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve been tinkering some more and I think I have a fair grasp of the current status of the project, so that&#039;ll be it for this task.&lt;/p&gt;
&lt;p&gt;Something I found is a built-in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://graphql.org/&quot;&gt;GraphQL&lt;/a&gt; console that can be opened at &lt;code&gt;/api/graphql&lt;/code&gt;. It&#039;s currently not working in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://moodle.net&quot;&gt;the official Moodle instance&lt;/a&gt;, so I assume it can be disabled. I don&#039;t mind leaving it open, after all authentication is required to perform any priviledged operations. And it&#039;s not like it&#039;d be impossible to run GraphQL queries without it. As I&#039;ve said before, I&#039;m not a fan of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Security_through_obscurity&quot;&gt;security through obscurity&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One of the things I&#039;ve been testing is federation. It&#039;s not supposed to be ready yet because that&#039;s planned for &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://gitlab.com/moodlenet/meta/-/milestones/4&quot;&gt;Federation testing&lt;/a&gt;, an upcoming milestone. But I was curious to see where it&#039;s at.&lt;/p&gt;
&lt;p&gt;Some things are working, I had &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://learn.noeldemartin.social/thread/01EB0CH1YJ5BRH0AKQE729RFEY&quot;&gt;a conversation with myself&lt;/a&gt; across Mastodon and MoodleNet. For normal users that&#039;s it though. The feature I was the most interested in is Remote Follows (following Users/Communities/Collections from other MoodleNet instances). It&#039;s actually &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://gitlab.com/moodlenet/backend/-/blob/develop/lib/moodle_net_web/graphql/follows_resolver.ex#L199&quot;&gt;implemented in the backend&lt;/a&gt;, but not exposed through the UI. I tried to call it from the GraphQL console, but I didn&#039;t manage to get it working. Looking at the server logs I can tell remote actors were retrieved successfully, but eventually there was an invalid function call error. I suppose there are some things to iron out (or I was doing something wrong).&lt;/p&gt;
&lt;p&gt;Still, something came out of this. I had a chance to look at the backend and read some Elixir code. It was my first time reading Elixir and I have to say it seems easy to understand. I also realized there is more to the backend than you&#039;d think looking at the UI. So I don&#039;t think the project is too far from having functioning federation. Of course, take anything I say with a grain of salt because I&#039;m not qualified to know. I also didn&#039;t try &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://bit.ly/2ZgmrYn&quot;&gt;connecting with the mothership&lt;/a&gt; which is also an important piece for discoverability.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Configuring a MoodleNet instance"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/configuring-a-moodlenet-instance#comment-2" />
            <id>https://noeldemartin.com/tasks/configuring-a-moodlenet-instance#comment-2</id>
            <published>2020-06-14T09:07:55+00:00</published>
            <updated>2020-06-14T09:07:55+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-moodlenet-instance#comment-2&quot;&gt;Configuring a MoodleNet instance&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;After some tinkering, I&#039;ve managed to get my instance up and running. You can find it at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://learn.noeldemartin.social/discover&quot;&gt;learn.noeldemartin.social&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have to say it&#039;s been quite easy to set up. Following &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://gitlab.com/moodlenet/frontend#deploying-moodlenet&quot;&gt;the instructions&lt;/a&gt; works for the most part. There is only one thing that didn&#039;t work for me, and that was running the backend in console mode. But I could work around it executing commands in a running container like this: &lt;code&gt;docker-compose exec backend ./bin/moodle_net rpc &amp;quot;MoodleNet.Access.create_register_email(\&amp;quot;myemail@domain.com\&amp;quot;)&amp;quot;&lt;/code&gt;. It&#039;s also not specified in the instructions, but I made sure to use the &lt;code&gt;stable&lt;/code&gt; image for the backend container.&lt;/p&gt;
&lt;p&gt;Other than this, there were a couple of things I had to do that are particular to my use-case.&lt;/p&gt;
&lt;p&gt;Since I am configuring an instance-of-one, I don&#039;t really care about emails so I didn&#039;t bother configuring them. The only problem I had with that is activating my account after signing up. Looking at the source code I found a way to do it programatically calling &lt;code&gt;MoodleNet.ReleaseTasks.user_set_email_confirmed(&amp;quot;username&amp;quot;)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Something else I had to configure differently is the networking, given that I am serving multiple websites from the same server. I already faced this problem installing Mastodon, so I did the same and ended up using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/nginx-agora&quot;&gt;nginx-agora&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Finally, I wanted to set up automatic backups. Again, I had already faced this &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server&quot;&gt;installing my Solid POD&lt;/a&gt;. So I used &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/rireki&quot;&gt;rireki&lt;/a&gt; to upload daily backups to DigitalOcean spaces.&lt;/p&gt;
&lt;p&gt;At one point I had issues building the image in the server. I was getting out-of-memory errors because I didn&#039;t have enough RAM on the server, and I thought I&#039;d have to resize my droplet. But looking for alternatives I found a way to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://stackoverflow.com/questions/23935141/how-to-copy-docker-images-from-one-host-to-another-without-using-a-repository&quot;&gt;share docker images without a repository&lt;/a&gt;. I have to say, Docker is awesome and it took me a while to get the hang of it. But now that I&#039;ve been using it for years it&#039;s been a life saver countless times.&lt;/p&gt;
&lt;p&gt;I also did some small modifications to the code, most of which &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://gitlab.com/moodlenet/meta/-/issues?scope=all&amp;amp;utf8=%E2%9C%93&amp;amp;state=opened&amp;amp;author_username=NoelDeMartin&quot;&gt;I&#039;ve reported&lt;/a&gt; as issues to be discussed in the main repo. You can find my fork with these modifications &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://gitlab.com/NoelDeMartin/moodlenet-frontend/-/compare/master...live&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&#039;d say this task is done now, but I&#039;ll leave it open for a couple of days to see if something comes up using it in production.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Configuring a MoodleNet instance"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/configuring-a-moodlenet-instance" />
            <id>https://noeldemartin.com/tasks/configuring-a-moodlenet-instance</id>
            <published>2020-06-12T05:37:22+00:00</published>
            <updated>2020-06-12T05:37:22+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-moodlenet-instance&quot;&gt;Configuring a MoodleNet instance&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-moodlenet-instance&quot;&gt;Configuring a MoodleNet instance&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Last year &lt;a href=&quot;https://noeldemartin.com/tasks/testing-moodlenet&quot;&gt;I participated&lt;/a&gt; in MoodleNet&#039;s user testing, and now that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://blog.moodle.net/2020/approaching-v10-beta/&quot;&gt;v1.0beta is approaching&lt;/a&gt; it&#039;s a good time to deploy my own instance. I have been running my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social&quot;&gt;Mastodon instance-of-one&lt;/a&gt; for a couple of years, and that&#039;s the same approach I will follow for MoodleNet.&lt;/p&gt;
&lt;p&gt;In contrast to last year I am employed by Moodle now. But I joined the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://moodle.com/app/&quot;&gt;Moodle Apps team&lt;/a&gt;, so I am doing this of my own volition as a side-project.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Media Tracker using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-9" />
            <id>https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-9</id>
            <published>2020-06-09T17:30:59+00:00</published>
            <updated>2020-06-09T17:30:59+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-9&quot;&gt;Implementing a Media Tracker using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;It&#039;s been a month since the last update, but at least I can say that I&#039;ve finished the refactor! I am confident that the foundations are done and I&#039;ll close the task in the next update.&lt;/p&gt;
&lt;p&gt;Before I go into the details of the refactor, here&#039;s a diff of the changes in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai/compare/4c8e6f1...e92e7a8&quot;&gt;soukai&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai-solid/compare/8b31b2f...03cde1f&quot;&gt;soukai-solid&lt;/a&gt;. I don&#039;t expect anyone to understand them, but you can see the magnitude of what I&#039;ve been working on. Definitely not trivial, more on this later.&lt;/p&gt;
&lt;p&gt;In my previous update I mentioned the motivations to follow this path. I&#039;ve continued learning about JSON-LD and RDF data structures, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/how-should-embedded-entities-be-declared-in-the-type-index-registry&quot;&gt;I posted&lt;/a&gt; some of my doubts in the Solid community forums. Turns out I was missing more core concepts than I thought.&lt;/p&gt;
&lt;p&gt;An important one is the fact that a Solid document doesn&#039;t necessarily need to declare a resource with the same url. For example, you could have a movie stored at &lt;code&gt;https://your-pod.com/movies/spirited-away&lt;/code&gt; but the movie resource could have the id &lt;code&gt;&amp;lt;https://your-pod.com/movies/spirited-away#it&amp;gt;&lt;/code&gt;, and it&#039;s actually not that uncommon. Something else I was assuming is that related resources would be stored in the same document, for example WatchActions. Yes, my application will store them in the same document, but this doesn&#039;t mean that the application should break if some actions are moved to different documents.&lt;/p&gt;
&lt;p&gt;What this boils down to is that the proper way to store a Solid Document in JSON-LD format is a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/TR/json-ld/#graph-objects&quot;&gt;graph object&lt;/a&gt;. And this, unfortunately, complicates things a lot. This means that a simple model update has to be translated, at the engine layer, to updating an item within an array. In order to tackle this, I&#039;ve been looking how some NoSQL databases manage this kind of data. One that I&#039;ve used previously and I like is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.mongodb.com&quot;&gt;MongoDB&lt;/a&gt;. So my current implementation is very much inspired by that.&lt;/p&gt;
&lt;p&gt;Another consequence of this paradigm shift was refactoring relations. The implementation I had before was quite simple, and that&#039;s why they didn&#039;t handle all the use-cases. My initial approach had been to look at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravel.com/docs/7.x/eloquent-relationships&quot;&gt;Laravel relationships&lt;/a&gt;, but this time I went to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://guides.rubyonrails.org/association_basics.html&quot;&gt;Rails&#039; Active Record Associations&lt;/a&gt; . One of the main reasons why I did this is that Rails has &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://docs.mongodb.com/mongoid/master/tutorials/mongoid-relations&quot;&gt;a decent mongodb driver&lt;/a&gt;, whereas Laravel doesn&#039;t.&lt;/p&gt;
&lt;p&gt;One last thing to mention about the refactor is how nice testing has been. I had already done TDDish development in previous versions, and this meant that I could be confident to move things around knowing that tests had my back. To my surprise, I run a coverage report for the first time and both soukai and soukai-solid had more than 90% coverage, which is nice. Of course, the real proof that tests have my back will come when I upgrade the dependencies in Solid Focus and see how many regressions I find.&lt;/p&gt;
&lt;p&gt;I still have to update the documentation for both projects, so I will process all the information I vomited above into the docs.&lt;/p&gt;
&lt;p&gt;Now that I&#039;m done with that huge detour, it&#039;s time to get back into retrospective mode.&lt;/p&gt;
&lt;p&gt;This time, I felt the weight of the project and its complexity. One the things I need to improve is that I&#039;m prone to overengineer. And I&#039;m 100% sold on simplifying, but the thing is that simplicity is hard, possibly more than complexity. I percieve something as simple and before I know it I&#039;m within a rabbithole of complexity. But even in hindsight I&#039;m not sure that I could have done this any simpler, and I don&#039;t want to dedicate it more time. The problem is inherently complex, after all I&#039;m trying to implement an Active Record library for Semantic Web technologies, and that&#039;s not trivial. Specially given that I&#039;m not an expert in either of those domains. Maybe I shouldn&#039;t even we working on this problem at all.&lt;/p&gt;
&lt;p&gt;In any case, I am fortunate to be able to dedicate my time on these things and potentially waste it. As I already knew, library development is a completely different beast to application development and I&#039;ll have to continue pondering on the correct way to approach it.&lt;/p&gt;
&lt;p&gt;For now, it&#039;s back to appetite, application and release mode.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Media Tracker using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-8" />
            <id>https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-8</id>
            <published>2020-05-05T16:43:39+00:00</published>
            <updated>2020-05-05T16:43:39+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-8&quot;&gt;Implementing a Media Tracker using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;When I was almost done with this task, I went into a couple of new rabbit holes. None of them were essential for the release, I could have pushed through and released anyways. But at this point I&#039;m embracing the &amp;quot;It&#039;ll be done when it&#039;s done&amp;quot; craftsman mindset. I am logging how much time I&#039;m dedicating to each part and I&#039;ll post a summary of what I&#039;ve spent my time doing when the task is done.&lt;/p&gt;
&lt;p&gt;Still, I&#039;m am not abandoning lessons learned from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup&quot;&gt;the shape up methodology&lt;/a&gt;. Something I applied recently is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/2.2-chapter-08#the-circuit-breaker&quot;&gt;the circuit breaker&lt;/a&gt;. I did not get into these rabbit holes without betting first. And the second one was one hour shy of getting cancelled.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rabbithole #1: Lazy Elements Loading&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The first rabbithole I went into was &amp;quot;paginating&amp;quot; the movie collection. Yeah, that&#039;s in quotes because that&#039;s what I thought I&#039;d be doing. When I started testing the application with a dataset of 1000+ movies, I realized how slow it was. This was to be expected because I was rendering all the movies in a single page, images and all.&lt;/p&gt;
&lt;p&gt;My first instinct was to paginate the results, and I implemented a version with that. But I was not happy with the result. I also experimented with infinite scroll, but I didn&#039;t like it either because it took ages to reach the bottom. After some more tinkering I recalled &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://medium.com/google-design/google-photos-45b714dfbed1&quot;&gt;a blog post&lt;/a&gt; on how Google Photos implemented their image browser. I am ashamed to admit that I use Google Photos, although it&#039;s in my list of things to replace with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/autonomous-data/&quot;&gt;autonomous data&lt;/a&gt; alternatives. But you can&#039;t argue against the quality of the product. Inspired by that post and Google Photo&#039;s UX, I implemented a solution where the full scroll height is rendered but elements aren&#039;t displayed until they appear on screen. This is possible thanks to the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API&quot;&gt;Intersection Observer API&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/blob/master/src/components/MoviesGrid.vue#L106..L125&quot;&gt;chunking the results&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rabbithote #2: Web Workers &amp;amp; IndexedDB&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The second rabbit hole came about looking at the responsiveness and speed of the initial loading. Once the app is loaded it works well, but the initial loading is excruciating. This is also a problem in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/solid-focus&quot;&gt;Solid Focus&lt;/a&gt;, but it&#039;s accentuated in this application because the dataset is bigger.&lt;/p&gt;
&lt;p&gt;There are multiple reasons for this. Two important ones are network requests and parsing semantic data. Looking into this, I reached the conclusion that it can be improved by caching more data in the browser. I was already doing something similar in offline mode, with a local storage engine. But exploring other improvements I found two browser APIs I hadn&#039;t been using: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API&quot;&gt;IndexedDB&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API&quot;&gt;Web Workers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Those two play very well together, so I spend some time rewriting different parts of the stack to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/blob/master/src/workers/index.ts&quot;&gt;support web workers&lt;/a&gt; and I created a new &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai/blob/dev/src/engines/IndexedDBEngine.ts&quot;&gt;IndexedDBEngine&lt;/a&gt; in Soukai. Although I&#039;m not completely finished with this, and the reason is...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rabbithole #3: JsonLD serialization&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai-solid/blob/master/src/models/SolidModel.ts&quot;&gt;SolidModel&lt;/a&gt; currently serializes models to &amp;quot;friendly human-readable json&amp;quot;. This is something that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai-solid/blob/master/src/engines/SolidEngine.ts&quot;&gt;SolidEngine&lt;/a&gt; already knows, and it translates the attributes to a linked data format. The reason why I followed this approach is that other engines, such as &lt;code&gt;LocalStorageEngine&lt;/code&gt;, don&#039;t know anything about Solid and they&#039;ll treat serialized models as normal objects.&lt;/p&gt;
&lt;p&gt;My goal was that exported models would look understandable to humans, but in hindsight that was a mistake. JsonLD is a standard format and even though if it isn&#039;t the most human-readable thing, it&#039;s close enough. The cost of not serializing to JsonLD is that semantic data will be lost. This hinders the ability to export and import data, which has become apparent with Media Kraken because I&#039;m implementing these capabilities from the start.&lt;/p&gt;
&lt;p&gt;I embarqued on a crusade to rewrite SolidModel to serialize to JsonLD. And I say crusade because this involves refactoring multiple parts of the stack, and it&#039;ll definitely cause breaking changes. But I&#039;m confident that it&#039;ll be better in the long run.&lt;/p&gt;
&lt;p&gt;This one is so core that I don&#039;t really have a bet for it, it&#039;ll take as long as it needs to. I&#039;ve already sorted out some of the core changes, and I&#039;ve replaced the library I was using for interacting with semantic data with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/rdfjs/n3.js&quot;&gt;n3&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/rubensworks/jsonld-streaming-parser.js&quot;&gt;jsonld-streaming-parser&lt;/a&gt;. This should also reduce the bundle size and improve performance.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Media Tracker using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-7" />
            <id>https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-7</id>
            <published>2020-04-13T15:45:06+00:00</published>
            <updated>2020-04-13T15:45:06+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-7&quot;&gt;Implementing a Media Tracker using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I want to write a short update on how things are going. I thought by now I&#039;d be almost finished, but turns out I just found something important to improve and that&#039;ll probably delay the release even more. I still expect it to happen shortly though, in about 2-3 weeks.&lt;/p&gt;
&lt;p&gt;The past two weeks I&#039;ve been finishing the UI and the only thing that&#039;s missing now is the initial loading screen. I&#039;ve been doing some tinkering with data fetching, and I believe I&#039;ll be able to make it &lt;em&gt;really&lt;/em&gt; fast (compared with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/solid-focus/&quot;&gt;solid-focus&lt;/a&gt; which is kind of slow at the moment). I&#039;ll have 1500 movies in my account, and that&#039;s what I&#039;ve been using for testing locally.&lt;/p&gt;
&lt;p&gt;Something else I&#039;ve done is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/media-kraken/&quot;&gt;deploying the app&lt;/a&gt; using github pages (don&#039;t use it yet because there&#039;ll be breaking changes for sure!). I had some issues with routing that should be solved now. The problem was that some of the application routes, for example &lt;code&gt;/collection&lt;/code&gt;, lead to a 404 github page. The reason for that is that github expects to have an html file in every route and the application is a Vue SPA using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://router.vuejs.org/&quot;&gt;vue-router&lt;/a&gt;. I&#039;m surprised that I didn&#039;t find many resources on how to solve this, but I ended up &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/blob/6db3fce0fba09fdec4773d5b31ee34f5ddc6555c/src/routing/github-404.ts&quot;&gt;doing a simple script&lt;/a&gt; to handle that.&lt;/p&gt;
&lt;p&gt;I&#039;ve also set up &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/actions?query=workflow%3ATesting&quot;&gt;a CI testing environment&lt;/a&gt; using github actions. If I hadn&#039;t done this before that&#039;s because I was in exploration mode, and the app is now starting to become stable enough for a first release. I normally use a TDD&lt;em&gt;ish&lt;/em&gt; approach to development, but I do 0 tests when I&#039;m exploring or tinkering with new concepts. The same applies to documentation.&lt;/p&gt;
&lt;p&gt;Something else interesting I&#039;ve been doing is a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/blob/6db3fce0fba09fdec4773d5b31ee34f5ddc6555c/src/components/MarkdownContent.vue&quot;&gt;markdown component&lt;/a&gt; that allows me to simplify the generation of text-based app content. This may be a bit overkill, but I&#039;ve enjoyed doing it and it allows me to do things like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/tree/6db3fce0fba09fdec4773d5b31ee34f5ddc6555c/src/assets/markdown&quot;&gt;defining modals entirely with markdown&lt;/a&gt; and having some nice &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/blob/6db3fce0fba09fdec4773d5b31ee34f5ddc6555c/src/components/modals/ImportResultModal.vue&quot;&gt;interactive import logs&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Media Tracker using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-6" />
            <id>https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-6</id>
            <published>2020-03-28T11:00:24+00:00</published>
            <updated>2020-03-28T11:00:24+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-6&quot;&gt;Implementing a Media Tracker using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Some weeks ago I said that I wasn&#039;t completely happy with the approach I had taken to interact with the TMDB API. I recently found &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.themoviedb.org/talk/5b6b0e08925141406a1134de&quot;&gt;a forum discussion&lt;/a&gt; where Travis, TMDB&#039;s founder, gives green light to exposing the API key in the frontend. I don&#039;t think that&#039;s a good approach, but if he says it&#039;s ok I guess it is. This is probably one of those situations where theory is one thing and practice is another. This is theoretically a security issue, but in practice nobody is exploiting it.&lt;/p&gt;
&lt;p&gt;Other than this, the past 3 weeks I&#039;ve continued to work mostly on UI. I took a detour to implement a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/tailwindcss-colors-generator/&quot;&gt;TailwindCSS Colors Generator&lt;/a&gt;, but other than that I&#039;ve implemented search and movies management.&lt;/p&gt;
&lt;p&gt;Before getting into the details, here&#039;s how it looks at the moment:&lt;/p&gt;
&lt;a href=&quot;https://noeldemartin.com/videos/media-kraken-collection.mp4&quot; target=&quot;_blank&quot;&gt;
    &lt;video autoplay loop&gt;
        &lt;source src=&quot;/videos/media-kraken-collection.mp4&quot; type=&quot;video/mp4&quot;&gt;
    &lt;/video&gt;
&lt;/a&gt;
&lt;p&gt;This may look deceptively simple given the amount of time it&#039;s taken me, roughly 30 hours. But there are some nuances to keep in mind.&lt;/p&gt;
&lt;p&gt;It cannot be understated how different it is using a UI framework like Vuetify (as I did with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/solid-focus/&quot;&gt;Solid Focus&lt;/a&gt;) or using plain CSS. I am using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://tailwindcss.com/&quot;&gt;TailwindCSS&lt;/a&gt; which isn&#039;t exactly plain CSS, but it is essentially the same. The fact is that doing it from scratch takes a lot more time. Not only because it&#039;s more difficult, you are also missing building blocks that you&#039;d take for granted such as modals and snackbars. Any simple feature that you are developing can become cumbersome when you realize you need a modal or a snackbar.&lt;/p&gt;
&lt;p&gt;On the other hand, it&#039;s also more rewarding and more fun. I&#039;m also building reusable components for upcoming projects, so in a sense I may be creating my own UI framework. But the important aspect is the flexibility I have with this approach. Sure, I could have done any of the things I&#039;ll explain with other frameworks. But creating these interactions is not only a matter of implementation. They are the result of an exploration process, and using this approach allows me to explore without the constraints (and assumptions) that frameworks inherently have. What I&#039;m doing here is not only implementing a spec, I&#039;m constantly refactoring code and UI.&lt;/p&gt;
&lt;p&gt;The first thing I want to highlight is the animation that takes place when a movie is marked as &amp;quot;watched&amp;quot; and is, literally, sent to your collection. You may not have noticed that, so I encourage you to look again. When a movie disappears from the grid, it shrinks and is sent towards the &amp;quot;My Collection&amp;quot; link (which is where you have to click if you want to find the movie again). I know it&#039;s a very small detail, and if most people didn&#039;t notice it&#039;s arguable how useful it is. But that&#039;s the kind of thing I appreciate, the little details. And it&#039;s also super fun to work on this kind of stuff. If you&#039;re wondering how I achieved this, it was using a combination of Vue &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vuejs.org/v2/guide/transitions.html#List-Transitions&quot;&gt;list transitions&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/blob/27ddeedc6ab2fd29f0b8d9065e928a586643f06b/src/components/MoviesGrid.vue#L34..L64&quot;&gt;a custom JS script&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Something else that was interesting to work on is the button that marks movies as watched. This cannot be appreciated in the video, but that element is actually a &lt;code&gt;button&lt;/code&gt; when the movie is pending and it becomes a &lt;code&gt;div&lt;/code&gt; once the movie is watched (so, after clicking it). With the magic of Vue and Tailwind combined, this is seamless and cannot be perceived visually. Which is the point. This was achieved using Vue&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vuejs.org/v2/guide/components-dynamic-async.html&quot;&gt;dynamic component&lt;/a&gt; and some advanced attribute bindings:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vue:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;component
    :is=&amp;quot;movie.watched ? &#039;div&#039; : &#039;button&#039;&amp;quot;
    class=&amp;quot;badge absolute top-0 right-0 -mt-1 flex h-10 w-10 items-center justify-center&amp;quot;
    style=&amp;quot;margin-right:-.7rem&amp;quot;
    v-bind=&amp;quot;movie.watched ? { class: &#039;watched&#039; } : { type: &#039;button&#039; }&amp;quot;
    @click=&amp;quot;movie.pending &amp;amp;&amp;amp; markWatched()&amp;quot;
&amp;gt;
    &amp;lt;BaseIcon name=&amp;quot;bookmark&amp;quot; class=&amp;quot;background absolute inset-0 h-10 w-10&amp;quot; /&amp;gt;
    &amp;lt;BaseIcon
        v-if=&amp;quot;movie.pending&amp;quot;
        name=&amp;quot;time&amp;quot;
        class=&amp;quot;icon-pending z-10 h-4 w-4 text-blue-600&amp;quot;
    /&amp;gt;
    &amp;lt;BaseIcon
        name=&amp;quot;checkmark&amp;quot;
        class=&amp;quot;icon-watched z-10 h-4 w-4 text-green-600&amp;quot;
    /&amp;gt;
&amp;lt;/component&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;TailwindCSS:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-scss&quot;&gt;.badge {
    .background {
        @apply text-blue-300;
    }
    .icon-watched {
        @apply hidden;
    }

    &amp;amp;:hover,
    &amp;amp;.watched {
        .background {
            @apply text-green-300;
        }
        .icon-watched {
            @apply block;
        }
        .icon-pending {
            @apply hidden;
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;At this point, I feel like the UI is almost finished. I have gone way past the apetite budget, and I realize this happened because of my nitpicking with the graphic part. But I&#039;m actually confortable working like this, as I explored in a blog post called &lt;a href=&quot;https://noeldemartin.com/blog/order-vs-chaos&quot;&gt;Order vs Chaos&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Media Tracker using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-5" />
            <id>https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-5</id>
            <published>2020-03-08T18:17:04+00:00</published>
            <updated>2020-03-08T18:17:04+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-5&quot;&gt;Implementing a Media Tracker using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today&#039;s update is not about Solid, because this week I&#039;ve been working exclusively on the UI. And the funny thing is, I&#039;ve only finished the header and the logo! But it&#039;s been a fun week.&lt;/p&gt;
&lt;p&gt;I&#039;m always looking forward to reaching &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Flow_(psychology)&quot;&gt;Flow&lt;/a&gt; when I&#039;m working. This is a psychological state that is reached when you&#039;re performing a task that you enjoy and it isn&#039;t too easy nor too difficult. And that&#039;s exactly what designing the header and the logo has been like. I reckon I&#039;ve spent too much time on this, and I&#039;ve blown up the appetite budget at this point. This week I&#039;ve also spent more time working on side-projects than usual (~20 hours, and I usually spend ~10). But in a way that&#039;s the point of Flow, that you lose track of time.&lt;/p&gt;
&lt;p&gt;After thinking about this I&#039;ve reached the same conclusion &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-4&quot;&gt;I did a while ago&lt;/a&gt;: this is a side-project and doing the work is not my only goal, I also want to learn and explore. But it&#039;s important to balance both, that&#039;s why I find these reflections useful.&lt;/p&gt;
&lt;p&gt;So, what have I actually learned and explored this week? First, let me show you the results:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mobile layout:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/implementing-a-media-tracker-using-solid-mobile-layout.gif&quot; alt=&quot;Mobile layout&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desktop layout:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/implementing-a-media-tracker-using-solid-desktop-layout.gif&quot; alt=&quot;Desktop layout&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What you see in these two screens is the same html, styled using CSS responsive utilities. And yes, that includes the animations too! I&#039;ve done similar things in the past but not with so many interactions. This time I&#039;ve decided to use &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://tailwindcss.com/&quot;&gt;Tailwind CSS&lt;/a&gt; without any component framework, and I&#039;ve also been exploring &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://tailwindui.com&quot;&gt;Tailwind UI&lt;/a&gt; that was released this week.&lt;/p&gt;
&lt;p&gt;My opinion on Tailwind UI is not great so far, and it pains me to say this because I love Tailwind. It&#039;s been really useful for inspiration and to learn some things, but it hasn&#039;t been copy &amp;amp; paste as &amp;quot;advertised&amp;quot; (although they admit that you may need to adapt it to your project). One of the worst things has been AlpineJS. It isn&#039;t that I don&#039;t like it, in fact I didn&#039;t know it and it seems nice. But having to adapt it to Vue hasn&#039;t been straightforward. I also started with a fairly similar approach to their sample code but I ended up redoing almost everything. I suppose this just means that Tailwind UI is not for me.&lt;/p&gt;
&lt;p&gt;If you haven&#039;t tried Tailwind please don&#039;t be taken back by what I said, Tailwind is awesome and if you haven&#039;t used it I encourage you to do so. In the process of exploring Tailwind UI I&#039;ve also upgraded to version 1.2.0, and I&#039;ve started using the new transition utilities. Which got me into the rabbit hole that ended with all these animations.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Media Tracker using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-4" />
            <id>https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-4</id>
            <published>2020-02-28T18:27:16+00:00</published>
            <updated>2020-02-28T18:27:16+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-4&quot;&gt;Implementing a Media Tracker using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I have finally come up with a name that I like for the project: Media Kraken. It&#039;s likely to change at some point, because I&#039;ve seen that it&#039;s already used by others. But it&#039;ll do as a codename for a while, at least until I start caring about marketing for this project (which may never happen). And yes, brace for the &amp;quot;release the kraken&amp;quot; jokes because they&#039;ll be numerous.&lt;/p&gt;
&lt;p&gt;Something else I&#039;ve done is start using the Type Registry like I mentioned in the last update. This has been particularly easy because I&#039;ve been able to use the new non-document entities feature that I implemented last time. I have created a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-kraken/commit/34df61a51fb6a0d00aa1a4d6478056adae01c6c4#diff-c21e4d2a1f72d615bb22119749684e0fR4-R29&quot;&gt;TypeRegistration&lt;/a&gt; model and that&#039;s it, so the extra work I did last week has already paid off.&lt;/p&gt;
&lt;p&gt;And finally, I have also started integrating the application with 3rd parties. Given that it&#039;s an application that will allow browsing movies, the data catalog has to come from somewhere. I have to say that I am both surprised and not surprised at how hard it&#039;s been to solve this. What I was thinking at first is that it&#039;d be easy to use some API from imdb (just looking at the name gives the impression that it must be queriable). But it&#039;s surprisingly closed, the only thing they provide is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.imdb.com/interfaces/&quot;&gt;downloading some files&lt;/a&gt; that are updated every day. It is not very convenient, specially given that I am making an application that lives in the frontend with no backend. So yeah, I&#039;ve been looking for alternatives and there isn&#039;t any real open database for this. I shouldn&#039;t be surprised because we are in the age of data and the ones who have it don&#039;t want to give it away. This is not the first time that I&#039;ve faced a similar situation, so it&#039;s surprising because that&#039;s not how I think the world should work but it&#039;s not surprising because it&#039;s consistent in how things have been so far.&lt;/p&gt;
&lt;p&gt;What many do at this point is start scraping. Again, this is not feasible in this application for a variety of reasons. Let&#039;s put aside the ethical, moral and legal implications. Since the application lives in the browser, and CORS is a thing, it&#039;s not possible to do scraping without recurring to some sort of proxy. I could have gone down that path, but I&#039;m not convinced that it is a good solution in the long run. So what I ended up doing is using the closest thing I could find to an open database, and that is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.themoviedb.org/&quot;&gt;tmdb.org&lt;/a&gt;. I don&#039;t consider this 100% open because it requires an API key. This wouldn&#039;t be so bad if I had a backend, but I don&#039;t. And I cannot ship the API key in the frontend because it would be exposed. So I ended up creating an AWS Lambda that proxies calls to the api, only in order to keep the API key away from the frontend. This is obviously not ideal, specially since &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://serverfault.com/questions/874176/how-do-i-ensure-my-aws-free-tier-plan-doesnt-exceed-the-free-usage-limit&quot;&gt;it isn&#039;t possible to limit AWS usage&lt;/a&gt;. But I haven&#039;t been able to come up with a better solution, if anyone has it I&#039;m all ears.&lt;/p&gt;
&lt;p&gt;What I plan to do at some point is allow users to configure their own proxies. But we all know nobody will do it, unless they have to. And that will happen when the AWS Lambda is close to start incurring costs and I shut it down. I don&#039;t think that&#039;ll happen anytime soon, so for now I won&#039;t worry about this.&lt;/p&gt;
&lt;p&gt;Now that I&#039;ve integrated with a data provider, the app is starting to be functional. But not visually, it sucks, so after a couple more features I&#039;ll probably be done with the first version and finish this task by implementing a decent UI.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Presented "Showcasing an app that uses the Solid protocol for decentralized storage"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="/slides/showcasing-an-app-that-uses-the-solid-protocol-for-decentralized-storage" />
            <id>/slides/showcasing-an-app-that-uses-the-solid-protocol-for-decentralized-storage</id>
            <published>2020-02-25T11:00:00+00:00</published>
            <updated>2020-02-25T11:00:00+00:00</updated>
            <summary type="html">
                Presented &lt;a href=&quot;/slides/showcasing-an-app-that-uses-the-solid-protocol-for-decentralized-storage&quot;&gt;Showcasing an app that uses the Solid protocol for decentralized storage&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I&#039;m giving a talk at Blockchain Spirit: &lt;a href=&quot;/slides/showcasing-an-app-that-uses-the-solid-protocol-for-decentralized-storage&quot;&gt;Showcasing an app that uses the Solid protocol for decentralized storage&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Media Tracker using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-3" />
            <id>https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-3</id>
            <published>2020-02-21T08:10:02+00:00</published>
            <updated>2020-02-21T08:10:02+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-3&quot;&gt;Implementing a Media Tracker using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;It&#039;s taken me a long time to post this update because I&#039;ve been busy &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2020&quot;&gt;attending FOSDEM&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://speakerdeck.com/noeldemartin/an-introduction-to-solid&quot;&gt;preparing a talk on Solid&lt;/a&gt; and as I&#039;ll explain later, solving some technical challenges. On the flip side I&#039;ve implemented an &lt;a href=&quot;https://noeldemartin.com/now/rss.xml&quot; target=&quot;_blank&quot;&gt;RSS feed&lt;/a&gt; for these updates, maybe that&#039;s where you are reading this :).&lt;/p&gt;
&lt;p&gt;As I mentioned on my last update, I&#039;ve been pondering how to model watch actions in this application. Given that I needed to solve a new use-case, I decided to revisit the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidproject.org/for-developers/apps&quot;&gt;Solid docs&lt;/a&gt; and I&#039;m glad to say they&#039;ve improved. I also noticed I am neglecting setting up the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/solid/blob/master/proposals/data-discovery.md#type-index-registry&quot;&gt;Type Registry&lt;/a&gt; in my applications, that&#039;s something I&#039;ll have to fix at some point. The conclusion I reached after learning how others are handling similar use-cases is that I should create a new relationship in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/soukai-solid&quot;&gt;soukai-solid&lt;/a&gt;. As I suspected, watch actions should not be LDP Resources, although they&#039;ll be RDF Resources (because &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/TR/rdf-schema/#ch_resource&quot;&gt;all rdf entities are&lt;/a&gt;). I hope this doesn&#039;t get confusing, basically LDP Resources are documents (they have their own url), and any other entities that don&#039;t map to a document will be plain RDF Resources. In modeling this I&#039;ve called this non-document entities &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai-solid/tree/429ff6c40025604e673a677cc3bd62a7fd0f0a79#embedded-resources&quot;&gt;Embedded Resources&lt;/a&gt;, and the new relationship can declared using &lt;code&gt;embeds&lt;/code&gt; and &lt;code&gt;isEmbeddedBy&lt;/code&gt;. Since they are within an existing document they can&#039;t have their own url. I&#039;ve solved this by using the url fragment (which I think is a standard practice in Solid). For example, if I have a movie with uuid &lt;code&gt;12345&lt;/code&gt; at &lt;code&gt;https://my-pod.com/movies/12345&lt;/code&gt; the identifier for a watch action with uuid &lt;code&gt;abc&lt;/code&gt; on that movie would be &lt;code&gt;https://my-pod.com/movies/12345#abc&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Other than the reasons I&#039;ve mentioned at the beginning, this has also taken me a couple of weeks in real-time because library development and app development are completely different. When I&#039;m developing library code (soukai and soukai-solid), I have to be careful not to break existing functionality. I also need to make sure that every new feature is congruent with the library. But I think it&#039;s a worthy effort because that will allow me to make applications faster (and I plan to make many :D). This may cause this task to go beyond my initial appetite, but I consider that this library work is outside the scope of the task anyways.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Presented "An introduction to Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="/slides/an-introduction-to-solid" />
            <id>/slides/an-introduction-to-solid</id>
            <published>2020-02-18T11:00:00+00:00</published>
            <updated>2020-02-18T11:00:00+00:00</updated>
            <summary type="html">
                Presented &lt;a href=&quot;/slides/an-introduction-to-solid&quot;&gt;An introduction to Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I&#039;m giving a talk at MyData Meetup: &lt;a href=&quot;/slides/an-introduction-to-solid&quot;&gt;An introduction to Solid&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending FOSDEM 2020"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2020#comment-5" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2020#comment-5</id>
            <published>2020-02-04T15:19:25+00:00</published>
            <updated>2020-02-04T15:19:25+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2020#comment-5&quot;&gt;Attending FOSDEM 2020&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I realize this task is already completed, but someone asked my opinion on the pros and cons of attending the conference. So I may as well post it here for everyone to see :).&lt;/p&gt;
&lt;p&gt;Good things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Free access without registration.&lt;/strong&gt; I wouldn&#039;t mind paying something or signing up, but I feel like the environment that is created wouldn&#039;t be achieved otherwise.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inclusive environment.&lt;/strong&gt; Again, not something that affects me in particular, but the organizers often mentioned the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2020/practical/conduct/&quot;&gt;code of conduct&lt;/a&gt; and made sure that it was respected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;There are a lot of talks.&lt;/strong&gt; The &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2020/schedule/&quot;&gt;schedule&lt;/a&gt; is enormous, the conference consists on multiple developer rooms focused on niche technologies/movements and a couple of main rooms for broader topics. It was impossible not to find something you liked, and empty slots in one&#039;s personal planning were easily filled in real time. Each room also had their own particular atmosphere, which is something I appreciated (some provided snacks, some had their own system for taking questions, etc.).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Everything is recorded and streamed in real-time.&lt;/strong&gt; The fact that there are so many talks means that you&#039;re bound to miss some. But everything is live-streamed and recordings are made available shortly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The barrier of entry for speaker is low.&lt;/strong&gt; It was easy for anyone to give a talk with a proper notice period. You could tell some of the presenters had little experience giving talks, but they were passionate about the topic. That lead to some unique talks that couldn&#039;t be achieved in a more &amp;quot;formal&amp;quot; environment. This was accentuated in lightning talks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The stands.&lt;/strong&gt; As an alternative to talks, it was also possible to walk around and visit stands. This offered a good opportunity to talk with some of the people behind the projects and get stickers and other swag.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The conference lasts two days.&lt;/strong&gt; With the ammount of talks and content, it could be extended to 3 days or more. But I consider the fact that it only lasts two days to be a good thing, because I wouldn&#039;t want to spend a lot of time in conferences.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The venue.&lt;/strong&gt; Happening at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Universit%C3%A9_libre_de_Bruxelles&quot;&gt;Université libre de Bruxelles&lt;/a&gt;, there are plenty of big an small rooms to accomodate for any type of audience. I also personally enjoy that it&#039;s done in a university because that&#039;s an environment I&#039;m particularly fond of.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Organization and information are great.&lt;/strong&gt; The schedule had been posted with enough notice to ponder over it, and everything ran as expected. Which is impressive considering the ammount of talks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Things to improve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The audience is too narrow.&lt;/strong&gt; For the huge variety of talks and rooms, I am dissapointed on how narrow the audience was. Some talks could be useful for people who is not versed in tech and open source, but almost everybody attending seemed to be a developer. And I think that&#039;s a problem that feeds itself.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The quality of the talks is uneven.&lt;/strong&gt; I mentioned that I like how the barrier of entry is low, but it&#039;s also true that this causes some talks to be quite bad. The worst ones in my opinion were the ones that consisted on some click baity title and ended up being a product showcase. I guess at the very least they could validate the outline of the talk before accepting the title.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;There is a lack of networking and interactive activities.&lt;/strong&gt; For how many people is there, I talked with a surprising low ammount, most of whom I already knew. You can easily attend this conference just to watch talks and avoid speaking with anybody. But I think it&#039;s a shame not to promote some networking given the opportunity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;After talks, there is a very short time to make questions.&lt;/strong&gt; It&#039;s a shame because questions are often the part I enjoy the most, and to make matters worse they sometimes cut questions too short (or accept none at all) to accomodate to the schedule. I appreciate the rigor, but they could have scheduled more time for questions. In their defense, it was always easy to grab the speaker and ask any questions in private, but my questions are not always the most interesting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Healthy food options are scarce.&lt;/strong&gt; Most of the food consisted on carbohydrates in fast food carts. There were some vegetarian and vegan options, but that doesn&#039;t mean they were healthy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The schedule is too packed.&lt;/strong&gt; One thing is the ammount of talks, another one is the lack of breaks. Breaks consist on missing talks, because the schedule doesn&#039;t have any.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Some rooms get too crowded.&lt;/strong&gt; Fortunately, this is not something that happened to me, but I know some of the rooms got too crowded and it wasn&#039;t possible to get in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tshirts sell out very fast.&lt;/strong&gt; I&#039;m surprised about this because it happens every year, it seems like by the second day there aren&#039;t any more tshirts available.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I realize some of the things in both lists contradict each other, but I guess that&#039;s the point of balancing trade-offs :).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Attending FOSDEM 2020"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2020#comment-6" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2020#comment-6</id>
            <published>2020-02-03T07:11:52+00:00</published>
            <updated>2020-02-03T07:11:52+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2020#comment-6&quot;&gt;Attending FOSDEM 2020&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2020#comment-6&quot;&gt;Attending FOSDEM 2020&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending FOSDEM 2020"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2020#comment-4" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2020#comment-4</id>
            <published>2020-02-03T07:11:39+00:00</published>
            <updated>2020-02-03T07:11:39+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2020#comment-4&quot;&gt;Attending FOSDEM 2020&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;My second day at FOSDEM was more talk heavy than the first. I started attending the first talk I had planned and I ended up assisting to all of them plus another 4.&lt;/p&gt;
&lt;p&gt;One of the talks, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2020/schedule/event/capitalismethicaloss/&quot;&gt;Building Ethical Software Under Capitalism&lt;/a&gt;, was done by the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sfconservancy.org/&quot;&gt;Software Freedom Conservancy&lt;/a&gt;. This was one of the talks I enjoyed the most, and last year I also liked one of their talks, so I&#039;ll keep that in mind for the future.&lt;/p&gt;
&lt;p&gt;Interistingly enough, the Javascript talks were the ones I enjoyed the least. I think the main reason is that I didn&#039;t learn anything new. People are still taking about PWAs like they are something new and assuming nobody in the audience knows what they are. But I think at this point they are old news and I just hope that people start using them. With the tools there are out there (&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ionicframework.com/pwa&quot;&gt;Ionic Framework&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developers.google.com/web/tools/workbox/&quot;&gt;Workbox&lt;/a&gt;, etc.) it should be really easy for anyone to get started.&lt;/p&gt;
&lt;p&gt;I also attended one talk about the current state of mobile operative systems and the existing alternatives to Android and iOS. My impression is that it&#039;s in a sorry state of affairs, because all of them looked like developer focused and it doesn&#039;t seem like any of them will become user friendly anytime soon. I guess I&#039;ll just install &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://lineageos.org/&quot;&gt;LineageOS&lt;/a&gt; in my 5-year old phone and hope for the best.&lt;/p&gt;
&lt;p&gt;Finally, I only attended one talk in the privacy and decentralization devroom, and that was about decentralizing the fediverse. There had been a talk earlier about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://dat.foundation/&quot;&gt;The Dat Protocol&lt;/a&gt; and I regret missing it, so I&#039;ll probably watch the recorded session.&lt;/p&gt;
&lt;p&gt;Talking with some people from work, I also found out about a Japanese company called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://blade.wafflecell.com/hp/&quot;&gt;Wafflecell&lt;/a&gt;. It seems really cool because they provide internet modems that come with Nextcloud installed. Of course, this is only available for Japan but it is awesome and I hope that more companies start providing this kind of solution. In the end, decentralization will only go mainstream if this kind of things start popping up.&lt;/p&gt;
&lt;p&gt;So that&#039;s a wrap!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending FOSDEM 2020"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2020#comment-3" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2020#comment-3</id>
            <published>2020-02-01T17:37:37+00:00</published>
            <updated>2020-02-01T17:37:37+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2020#comment-3&quot;&gt;Attending FOSDEM 2020&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;First day of FOSDEM and second day in Brussels! As I had planned, yesterday I attended the beer event at Deilirum Café. I met some people from the previous year and also some new faces. Something interesting I came across was &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://aleph.im&quot;&gt;aleph.im&lt;/a&gt;, which as a project aimed to create decentralized applications. Since I prepared &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/solid-focus/&quot;&gt;solid-focus&lt;/a&gt; to be decoupled from the data storage (using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://soukai.js.org/&quot;&gt;soukai&lt;/a&gt;), I think it should be possible to create an Aleph.im engine. It may be a fun project for the future.&lt;/p&gt;
&lt;p&gt;Today I started the day attending the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2020/schedule/event/selfish_contributor/&quot;&gt;Selfish Contributor&lt;/a&gt; talk, and it was quite interesting. After meeting with some more people I went to the second talk I had planned, but this one I didn&#039;t enjoy as much. It was good and I agreed with the message, but too long for the content in my opinion (it could have perfectly been a lightning talk).&lt;/p&gt;
&lt;p&gt;I was supposed to attend the third talk in my schedule. But I recently found out about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ps.zoethical.org/t/why-offdem/2867&quot;&gt;OFFDEM&lt;/a&gt;, an alternative event to FOSDEM. In there, I could find some people who are into ActivityPub and I also learned about some other projects. I&#039;ll probably go back next year if I&#039;m around and it happens again. Tomorrow some of them will be on the privacy and decentralized internet room, but I also have other talks I&#039;d like to watch and almost none of them is in that room. So let&#039;s see how I manage.&lt;/p&gt;
&lt;p&gt;I ended up the first day at FOSDEM by attending some lightning talks and a State of the Onion talk about the Tor project.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending FOSDEM 2020"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2020#comment-2" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2020#comment-2</id>
            <published>2020-01-27T18:39:16+00:00</published>
            <updated>2020-01-27T18:39:16+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2020#comment-2&quot;&gt;Attending FOSDEM 2020&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve been looking into the schedule and these got my attention:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Friday&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;16:00 onwards @ Delirium Café - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2020/beerevent/&quot;&gt;Beer event&lt;/a&gt;. Last year I also attended this event. The only bad thing I have to say is that it was too crowded, but hey I guess that&#039;s the cost of doing business.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Saturday&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;11:00-11:50 @ K.1.105 (La Fontaine) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2020/schedule/event/selfish_contributor/&quot;&gt;The Selfish Contributor Explained&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:00-13:50 @ K.1.105 (La Fontaine) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2020/schedule/event/ethical_ai/&quot;&gt;Freedom and AI: Can Free Software include ethical AI systems?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;15:00-15:30 @ UA2.220 (Guillissen) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2020/schedule/event/dip_securing_protonmail/&quot;&gt;Building a Web App that Doesn’t Trust the Server&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Sunday&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;10:35-10:55 @ UB5.230 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2020/schedule/event/ethicsoss/&quot;&gt;The Ethics of Open Source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;11:30-11:50 @ UB5.230 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2020/schedule/event/capitalismethicaloss/&quot;&gt;Building Ethical Software Under Capitalism&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:00-13:25 @ H.1302 (Depage) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2020/schedule/event/are_pwas_ready_to_take_over_the_world/&quot;&gt;Are PWAs ready to take over the world?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:30-13:55 @ H.1302 (Depage) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2020/schedule/event/beyond_angular_react_vue/&quot;&gt;2nd Generation JavaScript Frameworks &amp;amp; Libraries: Beyond Angular, React, and Vue!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;16:30-17:00 @ UA2.220 (Guillissen) - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2020/schedule/event/dip_decentralize_fediverse/&quot;&gt;Who will Decentralise the Fediverse?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This year it seems like there aren&#039;t as many talks that I want to see like last year, I am specially missing some talks about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidproject.org&quot;&gt;Solid&lt;/a&gt;. It&#039;s also true that last year I enjoyed many talks I hadn&#039;t noticed on the schedule.&lt;/p&gt;
&lt;p&gt;On the flip side, this time I have some people I want to meet. I&#039;m going with a friend from Barcelona, I am seeing some people I met last year and I&#039;m also meeting some co-workers from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://moodle.org&quot;&gt;Moodle&lt;/a&gt;. So maybe this year I&#039;ll do more &amp;quot;networking&amp;quot; and I won&#039;t stay holed up in the Decentralized Internet and Privacy devroom like I did last time.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Attending FOSDEM 2020"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem-2020" />
            <id>https://noeldemartin.com/tasks/attending-fosdem-2020</id>
            <published>2020-01-27T18:25:06+00:00</published>
            <updated>2020-01-27T18:25:06+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2020&quot;&gt;Attending FOSDEM 2020&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem-2020&quot;&gt;Attending FOSDEM 2020&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This year I&#039;ll be back on FOSDEM, the conference about free and open source software happening in Brussels on the 1st and 2nd of February. &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem&quot;&gt;Last year&lt;/a&gt; I attended the conference for the first time and it was a worthwhile experience.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Media Tracker using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-2" />
            <id>https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-2</id>
            <published>2020-01-26T11:18:13+00:00</published>
            <updated>2020-01-26T11:18:13+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid#comment-2&quot;&gt;Implementing a Media Tracker using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve started working on this and you can find the code &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/media-tracker&quot;&gt;here&lt;/a&gt;. I tried to find a good name for this app but nothing came to mind, for now I am calling it &lt;code&gt;media-tracker&lt;/code&gt;. I&#039;m not happy with it, so it&#039;ll probably change before I&#039;m done with the task.&lt;/p&gt;
&lt;p&gt;Other than naming, something I&#039;ve come across that I&#039;d like to improve is the scaffolding. I&#039;m starting to duplicate a lot of code across projects, so I&#039;ll probably release some packages with utilities. One will be plain javascript utilities, for example I have a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/blob/master/src/utils/Storage.ts&quot;&gt;wrapper for localStorage&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai/blob/master/src/internal/utils/Arr.ts&quot;&gt;Array utilities&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai/blob/master/src/internal/utils/Obj.ts&quot;&gt;Object utilities&lt;/a&gt;, etc. Many of these are inspired by &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravel.com/docs/6.x/helpers&quot;&gt;Laravel helpers&lt;/a&gt;. And another package will contain application scaffolding for Autonomous Data apps using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vuejs.org/&quot;&gt;Vue&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://soukai.js.org/&quot;&gt;Soukai&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But of course, not everything was useless. Every time that I create a project from scratch, it&#039;s a good opportunity to see if I can improve something in my setup. This time, I learned more about how I am using service workers in my PWAs. Vue cli comes with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developers.google.com/web/tools/workbox/&quot;&gt;Workbox&lt;/a&gt; installed out of the box, but I&#039;ve been having some issues pushing updates to clients. I suspect that this has something to do with the default &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developers.google.com/web/tools/workbox/modules/workbox-strategies&quot;&gt;strategy&lt;/a&gt;. It seems that apps use precaching with the default configuration, which acts similar to the CacheFirst strategy. The problem with this would be that new code won&#039;t reach the clients until the cache is invalidated. So in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/media-tracker/blob/1315362549e55570567b6629e153551c85b50537/vue.config.js#L15..L37&quot;&gt;my new configuration&lt;/a&gt; I am using StaleWhileRevalidate for index.html and all other assets can keep using CacheFirst because they are versioned. The truth is that I still have to learn more about this, but for now I&#039;d say it&#039;s good enough (and it&#039;s not the main goal of this task).&lt;/p&gt;
&lt;p&gt;Finally, other than all the house keeping, I&#039;ve also started working on application specifics. When it comes to Solid, something that continues being a problem for me is finding fitting RDF definitions. But this time, I was lucky because &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://schema.org/&quot;&gt;schema.org&lt;/a&gt; already supports Movies. It also supports &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://schema.org/WatchAction&quot;&gt;watch actions&lt;/a&gt;, so it doesn&#039;t seem like modeling will be a problem this time. But there is something new in this app that I&#039;ll need to investigate. In &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus&quot;&gt;solid-focus&lt;/a&gt;, I am using one document per resource. But for this app, I think it&#039;s a better approach to keep actions in the same document as the movie they are referencing. Actually my initial idea was to have a simple date attribute to indicate when a movie had been watched, but after looking into schema.org I decided to use their approach. This also makes me ponder if actions should be &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/TR/ldp-primer/#intro-section&quot;&gt;resources&lt;/a&gt; at all, which doesn&#039;t make a lot of sense to me. So I&#039;ll have to investigate more on this.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Working on Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/working-on-solid-focus-task-manager#comment-3" />
            <id>https://noeldemartin.com/tasks/working-on-solid-focus-task-manager#comment-3</id>
            <published>2020-01-19T11:00:36+00:00</published>
            <updated>2020-01-19T11:00:36+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/working-on-solid-focus-task-manager#comment-3&quot;&gt;Working on Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/working-on-solid-focus-task-manager#comment-3&quot;&gt;Working on Solid Focus Task Manager&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Working on Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/working-on-solid-focus-task-manager#comment-2" />
            <id>https://noeldemartin.com/tasks/working-on-solid-focus-task-manager#comment-2</id>
            <published>2020-01-19T11:00:26+00:00</published>
            <updated>2020-01-19T11:00:26+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/working-on-solid-focus-task-manager#comment-2&quot;&gt;Working on Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve published a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/releases/tag/v0.2.3&quot;&gt;new release&lt;/a&gt; with the improvements I wanted to make.&lt;/p&gt;
&lt;p&gt;Surprisingly, I didn&#039;t need to use my appetite to trim the scope and make trade-offs because I managed to do everything within the estimation, which rarely happens. In terms of time dedication it took me 8 hours to complete what I had initially planned, and then an additional 2 hours for some stretch goals that I was willing to drop if I couldn&#039;t get done this week. That&#039;s a total of 10 hours which ain&#039;t bad for an 8 hours estimation. Of course, the important estimation and appetite here was the real-time limit of two weeks, and that&#039;s been honored.&lt;/p&gt;
&lt;p&gt;I&#039;m looking forward to continue experimenting with the concept of appetite, specially for my next task which is way more open-ended.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Implementing a Media Tracker using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid" />
            <id>https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid</id>
            <published>2020-01-18T17:11:30+00:00</published>
            <updated>2020-01-18T17:11:30+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid&quot;&gt;Implementing a Media Tracker using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-media-tracker-using-solid&quot;&gt;Implementing a Media Tracker using Solid&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I&#039;ve recently &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server&quot;&gt;started using my Solid Task Manager in production&lt;/a&gt;. While I don&#039;t consider it finished, it&#039;s at a point where I can use it without adding more features. One of the things I want to do in &lt;a href=&quot;https://noeldemartin.com/blog/lessons-learned-musashi-by-eiji-yoshikawa#the-path-and-the-way&quot;&gt;my Path&lt;/a&gt; is to build the tools to have control in my digital life. I got tired of being at the mercy of others, so I don&#039;t want to use anything that doesn&#039;t embrace &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/autonomous-data/&quot;&gt;Autonomous Data&lt;/a&gt;. And the next step is to implement a Media Tracker.&lt;/p&gt;
&lt;p&gt;At the moment, I am using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.tviso.com&quot;&gt;TViso&lt;/a&gt; for tracking TV Shows and Movies, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://myanimelist.net&quot;&gt;MyAnimeList&lt;/a&gt; for Manga and nothing for Books. I am not happy with either of those services, but given the vendor lock-in I can&#039;t easily switch to alternatives. This makes a great opportunity to continue expanding my toolbox.&lt;/p&gt;
&lt;p&gt;My &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/1.2-chapter-03#setting-the-appetite&quot;&gt;appetite&lt;/a&gt; for this task is of 40 hours with 5 weeks in real-time. Keeping this in mind, I&#039;ll scope this first version only to tracking Movies.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Working on Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/working-on-solid-focus-task-manager" />
            <id>https://noeldemartin.com/tasks/working-on-solid-focus-task-manager</id>
            <published>2020-01-10T18:17:15+00:00</published>
            <updated>2020-01-10T18:17:15+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/working-on-solid-focus-task-manager&quot;&gt;Working on Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/working-on-solid-focus-task-manager&quot;&gt;Working on Solid Focus Task Manager&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Since I &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server&quot;&gt;configured my Solid data POD&lt;/a&gt; I&#039;ve been using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/solid-focus&quot;&gt;Solid Focus&lt;/a&gt; myself, and I&#039;ve seen a couple of things that can be improved.&lt;/p&gt;
&lt;p&gt;I&#039;ve been thinking about Basecamp&#039;s concept of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/1.2-chapter-03#setting-the-appetite&quot;&gt;appetite&lt;/a&gt; for planning. For me, it&#039;s important to think about the appetite twice. First, the total time I want to dedicate. But also, since I am working on this as a side-project, the ammount it takes in real-time for a task to be completed. I do roughly 10 hours/week of side-project work, so a 40 hours task that would normally be finished in a week takes me a month. Keeping that in mind, and given the low-impact of this task, I&#039;m not willing to spend more than 8 hours for this. So in real time, it should be done within 2 weeks.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Configuring a self-hosted Solid POD server"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server#comment-5" />
            <id>https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server#comment-5</id>
            <published>2019-12-26T19:17:17+00:00</published>
            <updated>2019-12-26T19:17:17+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server#comment-5&quot;&gt;Configuring a self-hosted Solid POD server&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server#comment-5&quot;&gt;Configuring a self-hosted Solid POD server&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Configuring a self-hosted Solid POD server"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server#comment-4" />
            <id>https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server#comment-4</id>
            <published>2019-12-26T19:16:53+00:00</published>
            <updated>2019-12-26T19:16:53+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server#comment-4&quot;&gt;Configuring a self-hosted Solid POD server&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I have now completed the first version of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/rireki&quot;&gt;rireki&lt;/a&gt; and it&#039;s deployed in my server making daily backups of my data POD. There are many ideas I had for it, but I&#039;ve kept &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/You_aren&#039;t_gonna_need_it&quot;&gt;YAGNI&lt;/a&gt; in mind and I just implemented the bare essentials (plus a bit more). I wrote some documentation, which I invite you to read if you want to learn about my approach to managing backups. I don&#039;t consider writing documentation YAGNI, given that it will also be useful for my future self.&lt;/p&gt;
&lt;p&gt;I usually write down the ideas I have that I don&#039;t end up implementing, and this time I went a step further and added them as GitHub issues. I was hesitant on doing this for a couple of reasons. First, because I have the habit of judging the &amp;quot;quality&amp;quot; of a repository looking at the ratio of open/closed issues. And second, because I didn&#039;t want to depend on GitHub to keep this list. The code is not important because I have my local clone, but I would lose the issues if anything happens to the repository. But both reasons are actually unfounded. I need to stop judging repos like that, and this is a good way for people to see some ideas I have for the future. I have used the &amp;quot;enhancement&amp;quot; and &amp;quot;good first issue&amp;quot; labels to make explicit that these aren&#039;t bugs. And about trusting GitHub, I just stored a copy of the issues on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://web.archive.org/web/20191226192342/https://github.com/noeldemartin/rireki/issues&quot;&gt;the wayback machine&lt;/a&gt;, and that should take care of the problem.&lt;/p&gt;
&lt;p&gt;Once the first version of rireki was completed, I proceeded to configure the backup on my server. I wasn&#039;t sure what files to include in the backup, and looking for existing issues I found &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/node-solid-server/issues/821&quot;&gt;I wasn&#039;t the first one&lt;/a&gt; to ask that. In the end, it seems like &lt;code&gt;config&lt;/code&gt; and &lt;code&gt;data&lt;/code&gt; folders are the only important ones. I haven&#039;t tested restoring backups, but I&#039;d consider that YAGNI given how unlikely it is that it will happen. Before you go thinking that I am being reckless, the backup is just a zip with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Turtle_(syntax)&quot;&gt;Turtle&lt;/a&gt; files. So the data is not even tied up to the implementation of &lt;code&gt;node-solid-server&lt;/code&gt;, it&#039;s just semantic data in its purest form. That&#039;s part of the beauty of Solid.&lt;/p&gt;
&lt;p&gt;To end this task, I want to make a reflection on how long it took. I started it about a month and a half ago. Considering that this is a side project, and I&#039;ve had Christmas and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://moodle.org/&quot;&gt;starting a new job&lt;/a&gt; in between, it didn&#039;t took that long. I&#039;ve made some rough estimations and I think I&#039;ve dedicated about 60 hours. Included on this task is configuring my Solid data POD and implementing a backup cli tool, with deploying and all the back and forth in between. 60 hours is about a week and a half of full-time work, and for such fundamental milestones in the path I want to walk, it&#039;s great. However, real-time it&#039;s been a month and a half, meaning that I would only be able to do about 8 of these in a year. This certainly gives it a new perspective, and I&#039;m thinking a lot about the concept of appetite I learned &lt;a href=&quot;https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp&quot;&gt;reading Shape Up&lt;/a&gt;. For this task, I&#039;d say my appetite would have been alright because these were important things to do, but it&#039;s also true that my initial estimations were off. That&#039;s ok, estimations normally suck, specially the way I am approaching side projects which is with more focus on learning and enjoying than productivity. But again, only 8 a year of this magnitude (which I initially thought would be smaller). I will keep this in mind going forward, and I&#039;m excited to start eating my own dog food with the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/autonomous-data/introduction.html&quot;&gt;autonomous data&lt;/a&gt; technology I have been building.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Configuring a self-hosted Solid POD server"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server#comment-3" />
            <id>https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server#comment-3</id>
            <published>2019-12-13T11:56:43+00:00</published>
            <updated>2019-12-13T11:56:43+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server#comment-3&quot;&gt;Configuring a self-hosted Solid POD server&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;After deploying the server last week, I&#039;ve started working on a backup solution. I could search for a nodejs solution, or something specific to Solid. But some months ago I configured backups for this website using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/spatie/laravel-backup&quot;&gt;laravel-backup&lt;/a&gt; and it&#039;s been working great, so I wanted something similar for my data POD as well.&lt;/p&gt;
&lt;p&gt;Actually, I reckon I&#039;ll probably need it for other things in the future. So I decided to write my own cli application. My idea is to make it language agnostic, and have different drivers for different projects. That way, whenever I have something new that I want to backup I&#039;ll just need to implement a new driver.&lt;/p&gt;
&lt;p&gt;Some time ago I wrote a cli application to manage projects using Docker during development, I called it &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/metal&quot;&gt;metal&lt;/a&gt;. It&#039;s worked great for me, but some people had issues installing it. Which is annoying, because it&#039;s just a simple wrapper and Docker is doing the heavy load. But it seems like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://pypi.org/project/pip/&quot;&gt;pip&lt;/a&gt; has some problems with dependency management (or I don&#039;t know how to declare my package properly). So this time I decided to use bash instead (I&#039;ve used it for &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/nginx-agora&quot;&gt;ngnix-agora&lt;/a&gt;, another cli application I wrote and it&#039;s working well). But I quickly realized it was a fool&#039;s errand. It was an uphill battle to write modular code, given that I couldn&#039;t even have data structures or return values. I thought it would be nice to use a language that compiles to bash, and I found &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://batsh.org/&quot;&gt;Batsh&lt;/a&gt;, but it didn&#039;t convince me either. What actually ended up convincing me was this article: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/ninjaaron/replacing-bash-scripting-with-python&quot;&gt;Replacing Bash Scripting with Python&lt;/a&gt;. So yeah, I ended up doing it with Python as well.&lt;/p&gt;
&lt;p&gt;I&#039;m using the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://click.palletsprojects.com/en/7.x/&quot;&gt;click&lt;/a&gt; framework, like I did with metal. This time I hope to learn more about python&#039;s dependency management and building cli applications. I also set up CI with github actions which at least runs the tests in an environment that isn&#039;t my own. One thing I&#039;ve already learned is to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://revelry.co/json-configuration-file-format/&quot;&gt;avoid using json for config files&lt;/a&gt;, and use &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/toml-lang/toml&quot;&gt;toml&lt;/a&gt; instead.&lt;/p&gt;
&lt;p&gt;You can find this work in progress at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/rireki&quot;&gt;https://github.com/noeldemartin/rireki&lt;/a&gt;. I&#039;m calling it &lt;code&gt;rireki&lt;/code&gt; because it means &amp;quot;personal history&amp;quot; or &amp;quot;logs&amp;quot; in japanese.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Configuring a self-hosted Solid POD server"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server#comment-2" />
            <id>https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server#comment-2</id>
            <published>2019-11-29T12:28:56+00:00</published>
            <updated>2019-11-29T12:28:56+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server#comment-2&quot;&gt;Configuring a self-hosted Solid POD server&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve forked the &lt;code&gt;node-solid-server&lt;/code&gt; repository in order to add some customizations in my deployment. Working on this I found out that NSS (node-solid-server) is likely to be replaced by IPS (&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/inrupt/pod-server&quot;&gt;inrupt-pod-server&lt;/a&gt;) on most official Solid servers, as you can read &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://lists.w3.org/Archives/Public/public-solid/2019Sep/0004.html&quot;&gt;here&lt;/a&gt;. This also means that NSS will probably stop getting as much support, so it made me ponder if I should use IPS instead for my self-hosted POD. In the end, I decided to continue with NSS given that it&#039;s the one I&#039;ve been working with and it&#039;s already working well. The whole idea of Solid is that applications should be server agnostic and work using the protocol, so let&#039;s see how it goes.&lt;/p&gt;
&lt;p&gt;Most of the changes I made in my fork have been UI related. I&#039;ve basically removed all the public UI and created my own simplified version. I also disabled some routes for creating accounts, password reminders and such since I won&#039;t be using them. Something I found misleading is that setting the &lt;code&gt;multiuser&lt;/code&gt; configuration flag to false does not hide the registration form, so this was one of my motivations to disable those routes. In order to create the htmls, since they were static assets, I just started writing some inline css. But I soon realized how much I was missing TailwindCSS, so I created a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/tailwind-sandbox&quot;&gt;tailwind sandbox&lt;/a&gt; that I&#039;ll be using from now on whenever I need some simple css. It&#039;s just easier to write it using tailwind and copy the purged css in the &lt;code&gt;head&lt;/code&gt; of the static html.&lt;/p&gt;
&lt;p&gt;Configuring the SSL was also easier than I expected. I already knew I&#039;d be using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://letsencrypt.org/&quot;&gt;Let&#039;s Encrypt&lt;/a&gt;, but I thought I&#039;d have issues using the certificates in the app. In the end, everything worked on the first try. Looking into some nginx configurations I also learned about two new security recommendations. Those were turning off &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens&quot;&gt;server_tokens&lt;/a&gt; and adding &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.nginx.com/blog/http-strict-transport-security-hsts-and-nginx&quot;&gt;HSTS headers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can see all the changes I&#039;ve made to the original repository in the &lt;code&gt;live&lt;/code&gt; branch of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/node-solid-server/tree/live&quot;&gt;my fork&lt;/a&gt;. But keep in mind that this fork is not intended as a general purpose replacement. It contains my customizations and they may not work in other environnments, I&#039;m just sharing them publicly for educational purposes. Also, this repository is the one I&#039;m using in production, including all the configuration files. I thought about doing this in a private repository instead, but I reckon that&#039;d just be &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Security_through_obscurity&quot;&gt;security through obscurity&lt;/a&gt;. In the end, the important part about security is the SSL keys and access to the server. And of course, you won&#039;t be able to find any of those in the repository.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Configuring a self-hosted Solid POD server"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server" />
            <id>https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server</id>
            <published>2019-11-18T16:11:39+00:00</published>
            <updated>2019-11-18T16:11:39+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server&quot;&gt;Configuring a self-hosted Solid POD server&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/configuring-a-self-hosted-solid-pod-server&quot;&gt;Configuring a self-hosted Solid POD server&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Recently I&#039;ve been &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager&quot;&gt;working on a Solid task manager&lt;/a&gt;, but I haven&#039;t started to use it in production myself. One big reason why I is that I was using a POD from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solid.community&quot;&gt;solid.community&lt;/a&gt;, but the software was updated without notifying its users and my application was not compatible with the server for a while. It seems to be working now, but this experience taught me how important it is to have control over my data POD.&lt;/p&gt;
&lt;p&gt;So I&#039;ve decided that I will start self-hosting my data POD using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/node-solid-server&quot;&gt;node-solid-server&lt;/a&gt;. This shouldn&#039;t be too difficult because I&#039;ve already been working with it locally for development. However, there are a couple of things that I don&#039;t expect to be straight-forward. Like configuring SSL certificates and scheduling backups.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "Testing Laravel Applications Using Cypress"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/testing-laravel-applications-using-cypress" />
            <id>https://noeldemartin.com/blog/testing-laravel-applications-using-cypress</id>
            <published>2019-11-18T10:24:00+00:00</published>
            <updated>2019-11-18T10:24:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/testing-laravel-applications-using-cypress&quot;&gt;Testing Laravel Applications Using Cypress&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/testing-laravel-applications-using-cypress&quot;&gt;Testing Laravel Applications Using Cypress&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Completed "Brushing up noeldemartin.com"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-9" />
            <id>https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-9</id>
            <published>2019-11-09T09:16:11+00:00</published>
            <updated>2019-11-09T09:16:11+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-9&quot;&gt;Brushing up noeldemartin.com&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-9&quot;&gt;Brushing up noeldemartin.com&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Brushing up noeldemartin.com"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-8" />
            <id>https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-8</id>
            <published>2019-11-09T09:15:45+00:00</published>
            <updated>2019-11-09T09:15:45+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-8&quot;&gt;Brushing up noeldemartin.com&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I&#039;ve finished one last iteration where I&#039;ve updated the home page and reviewed the copy in multiple pages. I have also added a footer and a &lt;a href=&quot;https://noeldemartin.com/site&quot;&gt;new section&lt;/a&gt;, where I explain the technologies I&#039;ve been using.&lt;/p&gt;
&lt;p&gt;I could continue iterating, and I am not 100% happy with some of the current design. But I&#039;ll stop this task here because it&#039;s dragged long enough. I&#039;ll probably continue iterating at some point in the future, but that&#039;s it for now.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Brushing up noeldemartin.com"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-7" />
            <id>https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-7</id>
            <published>2019-11-03T10:51:01+00:00</published>
            <updated>2019-11-03T10:51:01+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-7&quot;&gt;Brushing up noeldemartin.com&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;It&#039;s taken almost a month but I&#039;ve finally got my new laptop, and it&#039;s working like a charm. The laptop is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.asus.com/us/Laptops/ASUS-TUF-Gaming-FX504/&quot;&gt;Asus TUF FX504&lt;/a&gt;, and even thou it&#039;s a gamming laptop, I use it for development. I had my doubts about it, but so far I don&#039;t regret it.&lt;/p&gt;
&lt;p&gt;I&#039;ve continued with the improvements I had pending for the website, this time they were UI related. I&#039;ve upgraded the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://tailwindcss.com/&quot;&gt;TailwindCSS&lt;/a&gt; version given that 1.0 has been released, and I&#039;ve also set up &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.purgecss.com/&quot;&gt;PurgeCSS&lt;/a&gt; for a smaller bundle. Together with other improvements (removing the title font, removing functionality that&#039;s covered with Nova, etc.) the JS and CSS assets are now very light, less than 100kb before gzipping. Which would be more impressive if it weren&#039;t because this website has almost no functionality, being a content site. On that note, I&#039;ve also applied many ideas I got from reading &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://refactoringui.com/&quot;&gt;Refactoring UI&lt;/a&gt;. Maybe the most impactful has been reducing the width of almost everything on the site for readability. The site is now taller, but hopefully easier to read and browse.&lt;/p&gt;
&lt;p&gt;One last thing I did was unifying the navbar for mobile and desktop. On desktop, the navbar is fixed under the header. But in mobile it&#039;s a drawer toggled with a button in the header. I had this implemented with two elements whose visibility was toggled depending on the layout. I decided to change it to a single element and use CSS &amp;quot;magic&amp;quot; to change the styles depending on the layout. I was inspired to do this looking at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.csszengarden.com/&quot;&gt;CSS Zen Garden&lt;/a&gt;, and the end result is a single &lt;code&gt;nav&lt;/code&gt; element. Which should be better for screen readers and accesibility.&lt;/p&gt;
&lt;p&gt;I&#039;ve stored some snapshots of the website in the wayback machine, so you should be able to compare the live site with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://web.archive.org/web/*/https://noeldemartin.com/now&quot;&gt;the archives&lt;/a&gt; to spot some differences.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Brushing up noeldemartin.com"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-6" />
            <id>https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-6</id>
            <published>2019-10-06T13:50:31+00:00</published>
            <updated>2019-10-06T13:50:31+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-6&quot;&gt;Brushing up noeldemartin.com&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I recently had to buy a new laptop, and I&#039;ve been having some issues with it. At first I thought it had something to do with drivers, because it&#039;s not unheard of to have issues with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=_36yNWw_07g&quot;&gt;nvidia in linux&lt;/a&gt;. But after contacting the ASUS support, it looks like I&#039;ve got some defective hardware and I&#039;ll need to send it back. The lesson to learn here is that I shouldn&#039;t assume issues always arise from me using &amp;quot;alternative&amp;quot; operative systems; hardware can be defective too. So yeah, I&#039;ve wasted a bunch of time configuring a defective laptop and I&#039;ll be laptopless for a while. But I expect to continue doing some work at home where I can plug my old laptop to the TV (the screen is broken and I don&#039;t have a monitor).&lt;/p&gt;
&lt;p&gt;But, I could get some things done! (I wouldn&#039;t be writing here if I hadn&#039;t). Some time ago, I used a site called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://webpagetest.org&quot;&gt;webpagetest.org&lt;/a&gt; to evaluate how I could improve my website, and I applied some of their suggestions. One thing I did was to refactor the way I&#039;m using fonts. I was using googlefonts, but I wanted to get rid of those so that I don&#039;t give Google any of my visitors&#039; information anymore (I don&#039;t use Google Analytics, nor any other analytics for that matter). I also removed a lot of glyphs from the font I&#039;m using in the header, since I only need a couple of characters and I was using the whole font. I reduced it from 35kb to 4kb, which may not seem much but every byte counts (I used &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fontforge.github.io/en-US/&quot;&gt;FontForge&lt;/a&gt; to do that). I&#039;ve also been working with nginx, and I&#039;ve added some new commands to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/nginx-agora&quot;&gt;nginx-agora&lt;/a&gt;. I optimized caching static assets using the &lt;code&gt;expires max;&lt;/code&gt; directive, and I turned off access logs &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ar.al/2018/06/28/are-you-logging-ips-without-even-knowing/&quot;&gt;for visitors privacy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Finally, I did something I&#039;ve been pondering for a while. And that is setting up a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.google.com/webmasters&quot;&gt;Google Search Console&lt;/a&gt; account (previously called Google Webmasters). The reasons why I had my doubts are manyfold. I don&#039;t want Google to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/NoelDeMartin/status/1049726694909726721&quot;&gt;be everywhere&lt;/a&gt;, so I will do whatever I can to keep my vistors&#039; information safe from them. Search Console doesn&#039;t interfere with my visitors, so I may as well see what they have to say about the website. I don&#039;t care about SEO in the least, but I care about my website being well-formatted and performant. I already know one of the suggestions they&#039;ll give me, to use AMP for my blog posts. And quite frankly, on that one &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.polemicdigital.com/google-amp-go-to-hell/&quot;&gt;they can go fuck themselves&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Brushing up noeldemartin.com"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-5" />
            <id>https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-5</id>
            <published>2019-09-24T14:25:39+00:00</published>
            <updated>2019-09-24T14:25:39+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-5&quot;&gt;Brushing up noeldemartin.com&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I wanted to write an update on my last comment. After my initial integration and writing that comment, I watched Taylor&#039;s keynote introducing Nova once again. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://youtu.be/pLcM3mpZSV0?t=5378&quot;&gt;At the end of the keynote&lt;/a&gt; he mentions that field classes can override some methods in order to customize the behaviour. Turns out, there is already a method that I can use to customize the Markdown field, and that is &lt;code&gt;fillAttributeFromRequest&lt;/code&gt;. I extended the base Markdown field class and I&#039;ve overriden that method to set the rendered html attribute as well. So now I don&#039;t need to use the model events for that (even though I&#039;m using them for other things).&lt;/p&gt;
&lt;p&gt;So yeah, like Laravel itself, it&#039;s a good idea to look into the source code of Nova when you&#039;re trying to customize some part of the framework. That&#039;s acutally something that has taught me as much, if not more, than reading the documentation for Laravel.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Brushing up noeldemartin.com"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-4" />
            <id>https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-4</id>
            <published>2019-09-22T07:38:44+00:00</published>
            <updated>2019-09-22T07:38:44+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-4&quot;&gt;Brushing up noeldemartin.com&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;These days I&#039;ve been playing around with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nova.laravel.com/&quot;&gt;Laravel Nova&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My initial impressions were great. The installation process was a breeze, and I had a functional dashboard within an hour. The work involved to get there is fairly minimal, you only need to install Nova through composer and create a Nova Resource for each Eloquent Model. In order to learn the basics about Nova, I&#039;d recommend watching &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=pLcM3mpZSV0&quot;&gt;Taylor&#039;s Keynote at Laracon US 2018&lt;/a&gt;. That&#039;s all I had seen before getting started and it was enough (along with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nova.laravel.com/docs&quot;&gt;the docs&lt;/a&gt; of course). There is also a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laracasts.com/series/laravel-nova-mastery&quot;&gt;series on Laracasts&lt;/a&gt;, but I have to say I didn&#039;t enjoy it too much. Maybe because it wasn&#039;t Jeffrey Way doing it?&lt;/p&gt;
&lt;p&gt;After the initial integration, I spent some time trying some advanced features and customizations. I didn&#039;t find the customization as easy as I expected, although I have to say I didn&#039;t spend too much time on this because they were only some nice to haves. Fortunately, most of the things I wanted to do were already available as community packages. I used these two: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/gregoriohc/laravel-nova-theme-responsive&quot;&gt;a responsive theme&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/inspheric/nova-url-field&quot;&gt;a url field&lt;/a&gt;. More packages can be found on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://novapackages.com/&quot;&gt;novapackages.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But not everything was covered by packages. I write my content in markdown, and this is something Nova already supports with a Markdown field. However, this field stores the markdown on the database and renders the html with javascript on the frontend. In my current setup, I am creating the html on the server and storing it to the database as well, so there are two attributes affected by this field. I couldn&#039;t find an easy way to customize the markdown field to do that &lt;em&gt;(read the next comment for an update on this)&lt;/em&gt;. So I decided to register model listeners for &lt;code&gt;saving&lt;/code&gt; events and update the html attributes before saving the changes. I could also have converted the markdown to html on each request before rendering the views, but I decided to keep my application code unchanged and do all of this on the Nova side. I had to do this with multiple resources, so I used a boot method similar to the one in Eloquent models. Check it out on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://gist.github.com/NoelDeMartin/fcc3dd15030c2137f2d5b7d871c73086&quot;&gt;this gist&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In summary, it&#039;s easy to integrate and it can save you a ton of work. I am already writing this from Nova, so I&#039;d recommend anyone to check it out.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Brushing up noeldemartin.com"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-3" />
            <id>https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-3</id>
            <published>2019-09-12T17:46:12+00:00</published>
            <updated>2019-09-12T17:46:12+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-3&quot;&gt;Brushing up noeldemartin.com&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;As a follow up to yesterday&#039;s Shift upgrade, I&#039;ve been looking at the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravel.com/docs/6.0/upgrade&quot;&gt;upgrade notes&lt;/a&gt; to see if I didn&#039;t miss anything. I think it&#039;s a good idea to take a quick look, but I didn&#039;t find anything that hadn&#039;t been covered by Shift, so all good. Usually, I also watch the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laracasts.com/series/whats-new-in-laravel-6&quot;&gt;What&#039;s New&lt;/a&gt; lessons on Laracasts, so I&#039;m pretty much covered on all sides. Of course, I don&#039;t think all of this is necessary in order to upgrade, Shift should suffice, but I also enjoy learning what&#039;s going on in Laravel to keep up to date with new features.&lt;/p&gt;
&lt;p&gt;I&#039;ve also been talking with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/gonedark&quot;&gt;Jason McCreary&lt;/a&gt;, the creator of Laravel Shift, and given him some feedback on the service. He&#039;s been very helpful on solving some of my doubts and he&#039;s still working on improving Shift, so I&#039;m sure it&#039;ll become even better. One of the things I learned from him is about the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravelshift.com/shiftrc-configuration-file&quot;&gt;Shift configuration file&lt;/a&gt;. This is a file you can have in your repo to configure how Shift behaves, and it can be very helpful to customize some of the automation.&lt;/p&gt;
&lt;p&gt;With this, I consider my upgrade with Shift complete. Now I&#039;ll try something else I&#039;m very excited about: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nova.laravel.com&quot;&gt;Laravel Nova&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Brushing up noeldemartin.com"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-2" />
            <id>https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-2</id>
            <published>2019-09-11T08:36:12+00:00</published>
            <updated>2019-09-11T08:36:12+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/brushing-up-noeldemartincom#comment-2&quot;&gt;Brushing up noeldemartin.com&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve just finished upgrading the website to Laravel 6.0 using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravelshift.com&quot;&gt;Laravel Shift&lt;/a&gt;. The previous version I had running was 5.7, so I&#039;ve had to run 2 Shifts: &lt;code&gt;5.7 to 5.8&lt;/code&gt; and &lt;code&gt;5.8 to 6.0&lt;/code&gt;. The whole process took me about an hour from start to finish; from creating the account to deploying the changes. I had to pay a total of 22$.&lt;/p&gt;
&lt;p&gt;Overall I&#039;d say it was a good experience. The Laravel &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravel.com/docs/6.0/upgrade&quot;&gt;upgrade notes&lt;/a&gt; indicate that this process should take about an hour for each version, which makes it a total of 2 hours plus testing, deploying, etc. So I could say I saved myself an hour here.&lt;/p&gt;
&lt;p&gt;Now, there are some things to keep in mind.&lt;/p&gt;
&lt;p&gt;First, Shift gets more expensive the older your Laravel application gets. This means if I stay up to date from now on, doing this will be cheaper.&lt;/p&gt;
&lt;p&gt;Second, my website is a very simple application, it does little else than CRUD operations and there is almost no business logic (publishing posts and tasks, that&#039;s it). On the one hand, this means I could have done the migration myself without too many hurdles, which makes automating this less valuable. On the other hand, it&#039;s easy for me to trust the automation without looking at the changes, because the application is so simple that it was easy to see that nothing was broken. I guess it all comes down to how much you trust your tests, and if you do, Laravel Shift is awesome. (If you don&#039;t, you should reconsider why not and fix them.)&lt;/p&gt;
&lt;p&gt;There are also some things I would improve.&lt;/p&gt;
&lt;p&gt;The way this works is that Shift opens a PR in your repository with the upgrade changes, and it includes some comments with additional details. I found some of the details lacking information or too vague. There was for example one comment against using strings for class names, but it didn&#039;t indicate which files had the problem.&lt;/p&gt;
&lt;p&gt;Something else I&#039;d improve is the access to the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravelshift.com/shifty-coders&quot;&gt;Shifty Coders&lt;/a&gt; community. This is a Slack community that is recommended on the PR in order to get help, but I was not thrilled to learn that it&#039;s a paid community. I don&#039;t have problems with paid communities in general, but in this case when it&#039;s being suggested as a place to get help using a paid service, I don&#039;t think it should be. Specially since I&#039;d probably only use it to get help with the service. If I&#039;d be interested in a community for all things Laravel, there are others that may or may not be better.&lt;/p&gt;
&lt;p&gt;In summary, I&#039;m happy with the experience and I&#039;ll probably use it again. I&#039;m looking forward to test it with a bigger project to see if my opinions holds up.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Brushing up noeldemartin.com"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/brushing-up-noeldemartincom" />
            <id>https://noeldemartin.com/tasks/brushing-up-noeldemartincom</id>
            <published>2019-09-02T04:05:52+00:00</published>
            <updated>2019-09-02T04:05:52+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/brushing-up-noeldemartincom&quot;&gt;Brushing up noeldemartin.com&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/brushing-up-noeldemartincom&quot;&gt;Brushing up noeldemartin.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;It&#039;s that time of the year, I&#039;m back from holidays and it&#039;s a good time to do some maintenance tasks on my website. Such things include upgrading the Laravel version (I want to give Laravel Shift a try), install Laravel Nova, clean up some UI, clean up some texts and take a look at some performance improvements I have on my backlog.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Reading Shape Up by Ryan Singer (Basecamp)"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-8" />
            <id>https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-8</id>
            <published>2019-08-14T04:50:37+00:00</published>
            <updated>2019-08-14T04:50:37+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-8&quot;&gt;Reading Shape Up by Ryan Singer (Basecamp)&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-8&quot;&gt;Reading Shape Up by Ryan Singer (Basecamp)&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Shape Up by Ryan Singer (Basecamp)"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-7" />
            <id>https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-7</id>
            <published>2019-08-14T04:50:29+00:00</published>
            <updated>2019-08-14T04:50:29+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-7&quot;&gt;Reading Shape Up by Ryan Singer (Basecamp)&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;After listening to the podcast episodes, I can definitely say they are a good complement. I also got some extra insights that weren&#039;t evident in the book. For example, Ryan explains the importance for managers to have time to think, and how separating the shaping and building tracks enables it. They also introduce some more examples of how applying the method helped them improve their process in the past.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Shape Up by Ryan Singer (Basecamp)"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-6" />
            <id>https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-6</id>
            <published>2019-08-13T18:11:42+00:00</published>
            <updated>2019-08-13T18:11:42+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-6&quot;&gt;Reading Shape Up by Ryan Singer (Basecamp)&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;And that&#039;s it for Part 3! This part was big, and it focuses on building.&lt;/p&gt;
&lt;p&gt;For starters, I really share their view on autonomy for developers and designers. As explained on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/3.1-chapter-09&quot;&gt;chapter 7&lt;/a&gt;, they assign projects, not tasks. I&#039;ve referred to this in the past as &amp;quot;missions&amp;quot;, and I think it&#039;s super important in order to keep everyone motivated. It doesn&#039;t matter how interesting tasks are, if all you&#039;re doing is checking off tasks on a list you didn&#039;t define, you&#039;ll eventually lose motivation. I also think it&#039;s very important that everyone gets first-hand experience making trade-offs and owning up to them.&lt;/p&gt;
&lt;p&gt;Another concept that&#039;s introduced here are &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/3.3-chapter-11#the-scope-map&quot;&gt;scopes&lt;/a&gt;, and I found them very insightful. Truth be told, most of the time what I call &amp;quot;tasks&amp;quot; are actually scopes, and I often create sub-tasks to track more granular todos. Throughout the book I&#039;ve found this with different concepts, things I already kind of did but didn&#039;t have a word for them or hadn&#039;t thought them through completely. So I found reading this book not only great to learn new concepts, but also good to better understand and improve some things I was already doing subconsciously.&lt;/p&gt;
&lt;p&gt;The last thing that got my attention were hill charts and imagined vs discovered tasks. Again, something I already sort-of did. But I was not seeing it with so much clarity. I was aware than more tasks appear as a project makes progress, and I saw it as the cost of doing business. But the reality is that it&#039;s part of the process, so it makes sense not only to expect them but embrace them. I&#039;ve always been aware that estimates are off most of the time, but my way to deal with them was to increase the estimated effort depending on uncertainty. So a task that I would value at 4 but there was uncertainty I&#039;d put it at 6 or 8. But it&#039;s true that it doesn&#039;t make sense on a per-task basis, I was just making up a buffer for the whole project.&lt;/p&gt;
&lt;p&gt;Overall, I liked the book a lot. And I&#039;d recommend anyone to read it whole (it isn&#039;t even that long). If you don&#039;t want to read everything, I&#039;d suggest at least reading the chapter titles and go into the ones that grab your attention. Also check out the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/4.2-appendix-03&quot;&gt;summary&lt;/a&gt; appendix. For me in particular, these are the parts I enjoyed the most:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/0.3-chapter-01&quot;&gt;Chapter 1: Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/1.3-chapter-04#breadboarding&quot;&gt;Subchapter 4.2: Breadboarding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/1.5-chapter-06#ingredient-1-problem&quot;&gt;Subchapter 6.1: Ingredient 1. Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/1.5-chapter-06#ingredient-2-appetite&quot;&gt;Subchapter 6.2: Ingredient 2. Appetite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/1.5-chapter-06#ingredient-3-solution&quot;&gt;Subchapter 6.3: Ingredient 3. Solution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/2.1-chapter-07&quot;&gt;Chapter 7: Bets, Not Backlogs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/2.2-chapter-08#the-meaning-of-a-bet&quot;&gt;Subchapter 8.5: The meaning of a bet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/2.2-chapter-08#uninterrupted-time&quot;&gt;Subchapter 8.6: Uninterrupted time&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/2.2-chapter-08#the-circuit-breaker&quot;&gt;Subchapter 8.7: The circuit breaker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/2.2-chapter-08#keep-the-slate-clean&quot;&gt;Subchapter 8.9: Keep the slate clean&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/3.1-chapter-09&quot;&gt;Chapter 9: Hand Over Responsibly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/3.3-chapter-11#the-scope-map&quot;&gt;Subchapter 11.2: The scope map&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/3.4-chapter-12#work-is-like-a-hill&quot;&gt;Subchapter 12.3: Work is like a hill&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/3.4-chapter-12#scopes-on-the-hill&quot;&gt;Subchapter 12.4: Scopes on the hill&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There were two other things I wanted to do on this task. One was experiment reading an html book, and I liked it. It was easy for the most part, the copy-pasting for highlights wasn&#039;t too painful, and being html I could have easily manipulated it if I wanted to. And the other was put my judgement glasses on and try to find things I disagreed with. Unfortunately (or fortunately) I couldn&#039;t find many. And the ones I found are intentional. In particular that not all these tips can be applied to any context and the importance of choosing what to build.&lt;/p&gt;
&lt;p&gt;Now, before I close this task, I&#039;ll listen to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://rework.fm/shape-up/&quot;&gt;two&lt;/a&gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://rework.fm/shape-up-roundtable/&quot;&gt;episodes&lt;/a&gt; of the Rework podcast, where they talk about the book. After that, that&#039;s it for this task!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Shape Up by Ryan Singer (Basecamp)"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-5" />
            <id>https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-5</id>
            <published>2019-08-08T15:35:33+00:00</published>
            <updated>2019-08-08T15:35:33+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-5&quot;&gt;Reading Shape Up by Ryan Singer (Basecamp)&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Part 2 was short but to the point.&lt;/p&gt;
&lt;p&gt;After learning more about their process, I can see the value of &amp;quot;not having a backlog&amp;quot;. But I write it in quotes because it seems to me like they do have a backlog, it&#039;s just that they don&#039;t call it such. What I mentioned about going extreme with backlog grooming is what they do when they talk about bringing pitches to the betting table. When a pitch is not picked to be completed in a cycle, there is some record of the pitch that can be brought forward for another cycle. And they also track bugs, so I&#039;d consider those things together to be a backlog. But something that is different which I like is that this is a distributed backlog. Each person in the company can keep track of whatever they believe to be important, and pitches can be brought to the betting table by anyone.&lt;/p&gt;
&lt;p&gt;What is not completely clear to me is how they choose what to shape, and how they assign people to do it.&lt;/p&gt;
&lt;p&gt;Something I didn&#039;t agree with at first is a couple of sentences where they mention that some bugs may not be fixed if not many customers complain about. I didn&#039;t agree because it seemed to me as discrimination. The fact that a few customers have it doesn&#039;t mean it isn&#039;t important for them. But after some reflection, I realized they are just being honest with themselves. Because nobody fixes all the bugs, myself included. So it&#039;s important to be aware of that and do the best given the reality. Without losing focus on judging bugs on multiple perspectives and not just &amp;quot;popularity&amp;quot;.&lt;/p&gt;
&lt;p&gt;If there&#039;s something I&#039;d want to disagree with on this part, that would be the long-term. They mention repeatedly how they reset the planning every cycle and how they like to keep a clean slate. I can&#039;t help but wonder what happens with the company vision, mission and all that. Sure those sound like bullshit at times, but I think a company should have a goal and a purpose, something to achieve. And maybe I&#039;m just saying that from the point of view of an entrepreneur, someone who likes to start things and search for solutions. If they&#039;ve already achieved whatever they wanted, that&#039;s great, but I don&#039;t think this can be applied for a start-up or companies still validating hypotheses.&lt;/p&gt;
&lt;p&gt;But again, this book is supposed to be about how to build things, not what to build. So it makes sense it won&#039;t apply to everyone.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Shape Up by Ryan Singer (Basecamp)"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-4" />
            <id>https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-4</id>
            <published>2019-08-06T14:05:30+00:00</published>
            <updated>2019-08-06T14:05:30+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-4&quot;&gt;Reading Shape Up by Ryan Singer (Basecamp)&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve finished reading Part 1 (Chapters 2-6), focused on shaping. I understood shaping as the preliminary work done before getting started with a task. I would recommend anyone who wants to learn more about the book to go read the chapter and sub-chapter titles, because they are quite self-explanatory and you can learn a lot from that already.&lt;/p&gt;
&lt;p&gt;I think their suggestions for shaping up work are great. They really spend a good ammount of time thinking about a problem, contemplating different possibilities, and avoid getting lost in minute details. In particular, I enjoyed learning about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup/1.3-chapter-04#breadboarding&quot;&gt;breadboarding&lt;/a&gt;, given that I always do wireframes. Sure, low fidelity wireframes, but I&#039;m still conditioning the UI from the get go.&lt;/p&gt;
&lt;p&gt;As I said in my previous comment, I will also try to poke some holes in their arguments though. And something I don&#039;t completely buy into is how to choose what ideas to shape up. They mention that the book isn&#039;t about how to choose what to build, but I am missing some interaction with users on the whole process. Maybe they can be excused because they are heavy users of their own product (Basecamp), so they already have that point of view built-in. But I don&#039;t think that&#039;s the best strategy for everyone.&lt;/p&gt;
&lt;p&gt;They also mention not using a backlog and I&#039;m also not completely convinced. Of course I agree that backlogs can be a dread, and they can grow out of proportion. That&#039;s why I think backlog grooming is important and you can be as extreme as you want with that. But I don&#039;t think I&#039;d be confortable with not having a backlog at all. The next part seems to go further into why they don&#039;t do backlogs, so we&#039;ll see what else I can learn.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Improving Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-15" />
            <id>https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-15</id>
            <published>2019-08-05T17:27:04+00:00</published>
            <updated>2019-08-05T17:27:04+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-15&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-15&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-14" />
            <id>https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-14</id>
            <published>2019-08-05T17:26:56+00:00</published>
            <updated>2019-08-05T17:26:56+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-14&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Finally, after 6 long months, I can close this task!&lt;/p&gt;
&lt;p&gt;This has been in retrospective a huge task. It may not seem as much looking at the UI, given that only a bunch of things have been added (task scheduling, descriptions, editing, etc.). But the underlying code has changed a lot, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/compare/v0.1.1...v0.2.0&quot;&gt;just look at this diff&lt;/a&gt;. I&#039;ve practically rewritten from scratch most of the data layer using Soukai and I&#039;ve written &amp;amp; documented the companion libraries. Of course, this is a side-project and I wasn&#039;t working on this fulltime, but still. You can check the current status of the app with renewed documentation here: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus&quot;&gt;https://github.com/NoelDeMartin/solid-focus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;All of this work may seem overkill, but it isn&#039;t if you keep in mind that I want to build many apps using this architecture. I also opened the forum thread I mentioned I would about working with Solid using an Active Record pattern. You can join the discussion here: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/soukai-a-different-way-to-query-pods/2105&quot;&gt;Soukai: A different way to query PODs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Something I didn&#039;t quite finish is a migration script. Meaning that people (like me) who used the app in an older version, won&#039;t be able to see their data on the new version. This is not a complete disaster because using Solid the data is still accessible in the POD. But of course, for normal users this would be a problem. Stuff like this is why the app is in pre-release and I don&#039;t recommend using it for production unless you know what you&#039;re doing. The reason why I didn&#039;t complete the migration script is because of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/node-solid-server/issues/1120&quot;&gt;an issue&lt;/a&gt; I reported 5 months ago on &lt;code&gt;node-solid-server&lt;/code&gt; hasn&#039;t been fixed yet (actually it was fixed for a short while but it&#039;s regressed now). Unfortunately, this also makes the app incompatible with the deployed version of PODs at solid community and inrupt. Which is why I&#039;ll probably install &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/node-solid-server/&quot;&gt;node-solid-server&lt;/a&gt; on my server one of these days. I&#039;ll probably document it here, so check out my other tasks to see if I did it!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Shape Up by Ryan Singer (Basecamp)"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-3" />
            <id>https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-3</id>
            <published>2019-07-15T15:10:49+00:00</published>
            <updated>2019-07-15T15:10:49+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-3&quot;&gt;Reading Shape Up by Ryan Singer (Basecamp)&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;The introduction is already awesome. I knew most of what they do, but still, they keep delivering on my expectations. On this note, I&#039;ll say (if it wasn&#039;t clear already) that I&#039;m a huge fan of Basecamp. Maybe too much, actually.&lt;/p&gt;
&lt;p&gt;I&#039;ve been pondering about my own thinking, and I realized that sometimes I&#039;m of extreme opinions. I either like something a lot or I don&#039;t like it. And I don&#039;t think extremes are good, so this time I&#039;ll try to find something to disagree with. I&#039;ve been reading their content for a long time, so maybe challenging their assertions will give me a new perspective on their content.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-12" />
            <id>https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-12</id>
            <published>2019-07-12T15:51:19+00:00</published>
            <updated>2019-07-12T15:51:19+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-12&quot;&gt;Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-12&quot;&gt;Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-11" />
            <id>https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-11</id>
            <published>2019-07-12T15:51:10+00:00</published>
            <updated>2019-07-12T15:51:10+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-11&quot;&gt;Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;After dragging it a lot, I&#039;ve finally completed the book. The last 2 chapters were excruciating to read, I even skipped some parts.&lt;/p&gt;
&lt;p&gt;For one, I&#039;ve validated that I don&#039;t like reading non-digital books. At least with the reading habits that I have now (I read mostly on my commute). And I also miss the ability to take highlights, so I ended up writing them by hand to Evernote (again, not ideal in my commute). I&#039;ve tried with a Kindle book before, but as &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport&quot;&gt;I&#039;ve already explained&lt;/a&gt; I don&#039;t like having to rely on Amazon or private technology. And I recently started &lt;a href=&quot;https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp&quot;&gt;reading a book in the web&lt;/a&gt;, which I like a lot conceptually, but let&#039;s see how it goes in practice. All in all, PDFs are still my preferred format for reading. But unfortunately, they are not easy to get legally.&lt;/p&gt;
&lt;p&gt;The other thing that made it so difficult to read was the topic. The last two chapters are focused on why Spain was lacking on scientific advancements back then (1900s). I have to confess that, in general, I don&#039;t like history. Specially not this kind. It reminded me a lot of the texts I was forced to read back in highschool. Luckily enough, I&#039;m not forced to do it anymore, so I skipped some. But I do like other kind of history. For example, I&#039;m a huge fan of Dan Carlin&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.dancarlin.com/hardcore-history-series&quot;&gt;Hardcore History&lt;/a&gt; podcast.&lt;/p&gt;
&lt;p&gt;So yeah, even though it&#039;s finished with this somber note, it&#039;s done! I have to say overall I enjoyed it a lot, and I&#039;d recommend anyone to check it out. I&#039;ll probably come back to my notes in the future.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Shape Up by Ryan Singer (Basecamp)"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-2" />
            <id>https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-2</id>
            <published>2019-07-11T17:08:34+00:00</published>
            <updated>2019-07-11T17:08:34+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp#comment-2&quot;&gt;Reading Shape Up by Ryan Singer (Basecamp)&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve already tracked the progress on reading some books in my website before: &lt;a href=&quot;https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa&quot;&gt;Musashi&lt;/a&gt;, &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal&quot;&gt;Los Tónicos De La Voluntad&lt;/a&gt; and &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport&quot;&gt;Digital Minimalism&lt;/a&gt;. But the truth is that after those I didn&#039;t think I&#039;d do it anymore.&lt;/p&gt;
&lt;p&gt;I&#039;ve realized one of the reasons why I don&#039;t read as many books as I&#039;d like to is friction, and I end up reading blog posts instead. This friction comes in many forms: &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal&quot;&gt;Having to read a non-digital book&lt;/a&gt;, having to journal about it, having to take notes, having to read all of it, having to read it linearly, etc. Most of those are self-imposed, so I&#039;ll try a different approach. I&#039;ve also been inspired to do this by listening to others&#039; habits like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fs.blog/naval-ravikant/&quot;&gt;Naval Ravikant&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.patreon.com/posts/microcast-066-28270885&quot;&gt;Doug Belshaw&lt;/a&gt;. In fact, I already started reading Emotional Intelligence by Dale Goleman without keeping track here (I even skipped some chapters!).&lt;/p&gt;
&lt;p&gt;But that doesn&#039;t mean I don&#039;t see the value in journaling and all the things I mentioned. And that&#039;s why, for some books, I&#039;ll do it.&lt;/p&gt;
&lt;p&gt;This is one of those books.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Reading Shape Up by Ryan Singer (Basecamp)"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp" />
            <id>https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp</id>
            <published>2019-07-11T17:07:32+00:00</published>
            <updated>2019-07-11T17:07:32+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp&quot;&gt;Reading Shape Up by Ryan Singer (Basecamp)&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/reading-shape-up-by-ryan-singer-basecamp&quot;&gt;Reading Shape Up by Ryan Singer (Basecamp)&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I&#039;ve been a fan of the guys at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/&quot;&gt;Basecamp&lt;/a&gt; for a while, and read most of their books, so I&#039;m thrilled get &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/shapeup&quot;&gt;this one&lt;/a&gt; started.&lt;/p&gt;
&lt;p&gt;It&#039;s also the first book I&#039;ll read in html! The only doubt I have is how I&#039;ll manage to take highlights as I usually do. We&#039;ll see.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-13" />
            <id>https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-13</id>
            <published>2019-07-09T17:11:09+00:00</published>
            <updated>2019-07-09T17:11:09+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-13&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve finally completed adding all the new features I wanted, which include: editing &amp;amp; deleting workspaces, lists &amp;amp; tasks; and tasks now include a description and a due date. By the way, in the process of implementing due dates, I was faced again with that ugly choice of using momentjs or not. For those reading who don&#039;t know it, it&#039;s a very good javascript library to work with dates, but it &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://bundlephobia.com/result?p=moment@2.24.0&quot;&gt;weights a lot&lt;/a&gt; so you should think twice before adding it to your project. Fortunately, I found a nice alternative: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/iamkun/dayjs&quot;&gt;dayjs&lt;/a&gt;. I think I&#039;ll use it in most of my projects working with dates from now on.&lt;/p&gt;
&lt;p&gt;One thing I implemented in the 100th commit 🎉 of the repository is something I&#039;ve wanted to have for a while in my task managers (and arguably all my apps): built-in support for markdown! Task names and descriptions have it, and I think markdown should be supported by default in all text fields intended for text that will be displayed. I&#039;ll try to do that with my apps from now on to see if it really is a good idea.&lt;/p&gt;
&lt;p&gt;So then, what&#039;s left now? &amp;quot;Not much&amp;quot;, but of course that&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/rjs/status/1148432135629357056/photo/1&quot;&gt;what I thought last time&lt;/a&gt;. Basically two things: Improving the UI of the mobile layout and improving RDF types. I got some &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/focus-a-solid-task-manager/1022/20?u=noeldemartin&quot;&gt;new comments&lt;/a&gt; in the Solid forum regarding the types, so maybe I can do something with that. But regardless of how that goes, I&#039;ll make a new release soon (for sure before going on holidays in August).&lt;/p&gt;
&lt;p&gt;Optionally I&#039;ll also implement a script to migrate the data from the previous version, given that it&#039;s changed so much and users from the previous version will probably &amp;quot;lose their data&amp;quot; (it won&#039;t be lost since it&#039;s made with Solid, but they won&#039;t see it in the app anymore).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-12" />
            <id>https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-12</id>
            <published>2019-06-17T17:48:18+00:00</published>
            <updated>2019-06-17T17:48:18+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-12&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;In that last comment I also forgot to mention that I&#039;ve also started using a Vue plugin that&#039;s called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/LinusBorg/portal-vue&quot;&gt;portal-vue&lt;/a&gt;. I&#039;ve wanted to use it for a while but I didn&#039;t find a decent use-case until now. I&#039;m using it for the sidepanel and the overlays.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-11" />
            <id>https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-11</id>
            <published>2019-06-17T17:46:24+00:00</published>
            <updated>2019-06-17T17:46:24+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-11&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just implemented the form to update tasks and there was a small bug with soukai-solid, but nothing dramatic.&lt;/p&gt;
&lt;p&gt;What I spent more time on, though, was implementing the animation for the sidepanel that will contain information about the task as well as the form. I decided the best way to animate the transitions is with CSS when a task is not selected anymore. The problem is that because the task is no longer available to the Vue component, it will be blank and that&#039;s not nice UI.&lt;/p&gt;
&lt;p&gt;In order to solve that I&#039;ve created a component I&#039;m calling &amp;quot;Freezable&amp;quot;. I&#039;m not sure if anyone else has found this use-case, but it seems to me like a good solution.&lt;/p&gt;
&lt;p&gt;I&#039;ve created a gist on github with the basic component and some examples in case you want to check it out: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://gist.github.com/NoelDeMartin/7414586bae62f79bcf9bfb9f12b13316&quot;&gt;https://gist.github.com/NoelDeMartin/7414586bae62f79bcf9bfb9f12b13316&lt;/a&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-10" />
            <id>https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-10</id>
            <published>2019-06-05T18:15:21+00:00</published>
            <updated>2019-06-05T18:15:21+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-10&quot;&gt;Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Chapter 9 is focused on teaching. He goes into how important it is for a scientist to teach others and gives different tips on how to do the best for students.&lt;/p&gt;
&lt;p&gt;This topic is very interesting to me. I enjoy teaching and I&#039;ve done it formally in some occasions. I also believe education is one of the most (if not the most) important things in society. When pondering about social problems, I often reach the conclusion that education is the key to solving most of them.&lt;/p&gt;
&lt;p&gt;And yet, I don&#039;t practice teaching on a regular basis. I &lt;a href=&quot;https://noeldemartin.com/blog/open-productivity&quot;&gt;work in the open&lt;/a&gt; and I try to share what I do, but that&#039;s not really teaching. Sharing is also very important, but it ain&#039;t teaching. So why&#039;s that? Right now, two reasons come to mind.&lt;/p&gt;
&lt;p&gt;The first one that it takes effort. It also takes effort to document my journey like I&#039;m doing now, but preparing educational resources is a different game (I write documentation, but I consider that something else).&lt;/p&gt;
&lt;p&gt;The second reason is that I actually don&#039;t know &lt;em&gt;what&lt;/em&gt; to teach. I feel like anyone can learn most of what I know on their own (although I know that&#039;s not 100% true). So I end up reducing the things I would like to teach to philosophical or abstract topics. I guess that&#039;s part of the reasons why you won&#039;t find technical posts in &lt;a href=&quot;https://noeldemartin.com/blog/&quot;&gt;my blog&lt;/a&gt;, even though I&#039;m a developer and I spent most of my day programming.&lt;/p&gt;
&lt;p&gt;If I really think about it, the second reason makes no sense and I should probably teach things that are &amp;quot;obvious&amp;quot; to me anyways. I&#039;ve actually got some potential posts prepared and it may be time to start thinking about writing those. Regardless of that, I&#039;m sure at some point teaching will become part of my daily work, because I&#039;ve enjoyed the experiences I&#039;ve had and I think education is really important. But I&#039;m not quite sure when that&#039;ll happen.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-10" />
            <id>https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-10</id>
            <published>2019-06-03T16:12:51+00:00</published>
            <updated>2019-06-03T16:12:51+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-10&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Well, the updated docs are finished for now. I&#039;ve put more effort in the Soukai docs than the Solid application, but I think that&#039;s fine. I consider Soukai to be a foundation for what the Solid app will become, as well as for other upcoming applications. And it&#039;s important to have strong foundations.&lt;/p&gt;
&lt;p&gt;What I will do now to finally complete this task (4 months ongoing already!) is implement a couple of new features. It&#039;ll also be a good test to see if the foundations are really strong or not. The new features I plan to add should already be supported with the current status of the Soukai library, so let&#039;s see how it goes.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-9" />
            <id>https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-9</id>
            <published>2019-05-30T17:24:57+00:00</published>
            <updated>2019-05-30T17:24:57+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-9&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;In the process of updating the docs, I&#039;ve had a chance to think about the licensing of my open source code.&lt;/p&gt;
&lt;p&gt;For a while, I used MIT by default without second-guessing, given that most of the frameworks and libraries I use are licensed as such. However after getting more into privacy-focused communities and learning more about licenses, I decided to use GPL for all my subsequent projects. But as things go, I recently read DHH&#039;s keynote on railsconf this year (&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://m.signalvnoise.com/open-source-beyond-the-market/&quot;&gt;Open source beyond the market&lt;/a&gt;) and it made me ponder again. He argues against GPL in the sense that doing Open Source, nobody who uses your software should owe you anything. And that should be the true spirit of Open Source: &amp;quot;do whatever you want with it&amp;quot;. I won&#039;t get into the Free Software vs Open Source debate here, but suffice to say that I mostly agree with DHH. Except for apps.&lt;/p&gt;
&lt;p&gt;If we are talking about libraries and frameworks, I agree with the &amp;quot;do whatever you want&amp;quot; spirit, because I assume the ones using my software will be other developers, and they should know what they are doing. But when it comes to apps, the ones using the software could be end-users who know nothing about programming. And at that point I&#039;m not ok with someone changing the app to &amp;quot;do whatever they want with it&amp;quot;. They could for example be adding privacy-invading features that users are not even aware of. That&#039;s why for apps, I think GPL is actually more appropiate. It&#039;s also true that using GPL for a library could be a barrier for some people, because MIT projects cannot have GPL dependencies, while GPL projects can have MIT dependencies.&lt;/p&gt;
&lt;p&gt;Coincidentally, I looked into other software projects and it seems like the pattern could make sense. A lot of libraries I saw use MIT (Vue, React, Angular, jQuery, Laravel, Rails, Phoenix, etc.) whilst apps use GPL (Mastodon, MoodleNet, GIMP, etc.). Of course this is not always true, but I believe it&#039;s a good rule of thumb I&#039;ll follow from now on.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "Real-time vs Asynchronous Communication"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/real-time-vs-asynchronous-communication" />
            <id>https://noeldemartin.com/blog/real-time-vs-asynchronous-communication</id>
            <published>2019-05-27T16:10:18+00:00</published>
            <updated>2019-05-27T16:10:18+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/real-time-vs-asynchronous-communication&quot;&gt;Real-time vs Asynchronous Communication&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/real-time-vs-asynchronous-communication&quot;&gt;Real-time vs Asynchronous Communication&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-9" />
            <id>https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-9</id>
            <published>2019-05-22T16:18:54+00:00</published>
            <updated>2019-05-22T16:18:54+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-9&quot;&gt;Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I did not think chapter 8 would be too interesting given the title, &amp;quot;writing of the scientific work&amp;quot;, but it proved to be interesting as well. He breaks down some tips into eight categories that I&#039;ll refrain from repeating (I&#039;m also not sure how well I&#039;m faring in this translation from Spanish).&lt;/p&gt;
&lt;p&gt;One of the things he talks about is having something to say and not just writing for the sake of writing. I have to agree with him, specially comparing it with the software industry. I am kind of disappointed in how many useless things the industry produces, and I think efforts could be focused in solving better problems. Instead we&#039;re reinventing the wheel all the time.&lt;/p&gt;
&lt;p&gt;Another topic he tackles is diplomacy and respect for other&#039;s work, even when criticizing. He also notes the importance to acknowledge previous work and present the assumptions one&#039;s work is built upon by citing related works in the bibliography.&lt;/p&gt;
&lt;p&gt;Finally he goes into exposing the intricacies of the work done, what I would translate to my field as the classic sentence &amp;quot;show me the code&amp;quot;. There is value in abstractions, conclusions and all kind of explanations. But in the end, nothing beats looking at the lowest levels of abstraction to really understand something. He also makes emphasis in simplicity.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-8" />
            <id>https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-8</id>
            <published>2019-05-16T16:43:45+00:00</published>
            <updated>2019-05-16T16:43:45+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-8&quot;&gt;Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;In chapter 7 Cajal introduces what he considers to be the 3 stages of the scientific method: Observation, hypothesis and verification.&lt;/p&gt;
&lt;p&gt;Observation is essential and the first step towards scientific discovery. He emphasizes observing things for what they are, as unbiased as possible. And not a superficial observation, but immersing and understanding of the topic at hand. One example he gives is to draw by hand what&#039;s observed in order to internalize it, for example if the subject under study is anatomy or natural history. Quoting him &amp;quot;New findings are discovered not by the first ones to met them, but by the ones who are able to capture them on their entirety.&amp;quot;&lt;/p&gt;
&lt;p&gt;Once something has been observed, the next step is to formulate a hypothesis. He gives some guidelines as to how hypothesis should go. In particular focused on utility and demonstrability lest they end up in too abstract of a terrain. Even if a hypothesis is proven false, it&#039;s still useful given the new information that is gathered. He ends up by warning against the danger of hypothesizing too much without landing in the terrain of the practical, but they are still necessary as a guide towards discovery. Quoting him again &amp;quot;Observing without thinking is as dangerous as thinking without observing&amp;quot;.&lt;/p&gt;
&lt;p&gt;Finally, when an incident has been observed and a hypothesis has been formulated, the last step is to prove it. Formulating good experiments is one of the attributes that distinguish brilliant scientists from the mediocre. A good experiment should prove conclusively the truth of a fact. And he also warns against falling in love with the hypothesis or the observation. The final experimentation should be the guide towards definitive conclusions, and previous assumptions should be killed without compassion. Another of his quotes is &amp;quot;The duty of a man of science is not to petrify in the error, but to adapt continuously to the scientific medium&amp;quot;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-8" />
            <id>https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-8</id>
            <published>2019-05-15T13:41:39+00:00</published>
            <updated>2019-05-15T13:41:39+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-8&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;If you had visited the API section of the Soukai docs before today, you&#039;d have noticed it was all empty and filled with TODOs. My first approach to documenting the interface of the library was writing it by hand, and of course I knew that would change. Well, that changed yesterday because I&#039;ve started using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://typedoc.org/&quot;&gt;TypeDoc&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My library is written using Typescript, so there is already a good deal of information there that can be automatically extracted. I started looking for solutions and I settled on using TypeDoc. After tinkering with it for a while I found it lacking in some areas, but good enough to use for now. The features that I found lacking are already being tracked (issues &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/TypeStrong/typedoc/issues/36&quot;&gt;#36&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/TypeStrong/typedoc/issues/639&quot;&gt;#639&lt;/a&gt; on github), although it doesn&#039;t seem like they&#039;ll be added anytime soon. But it&#039;s good enough and better than my previous approach.&lt;/p&gt;
&lt;p&gt;Basically TypeDoc will read a typescript project and generate a documentation in html. Other than Typescript primitives like types and interfaces, it&#039;ll also read documentation in the style of phpdocs or javadocs. I don&#039;t have any of that the moment, but now that I&#039;ll start documenting the recent additions to the library in the guide I may add some. When it comes to documenting code I think class and method names should be expressive enough, but sometimes there is value in adding code documentation.&lt;/p&gt;
&lt;p&gt;You can see the current deploy of the API reference here: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://soukai.js.org/api/&quot;&gt;https://soukai.js.org/api/&lt;/a&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-7" />
            <id>https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-7</id>
            <published>2019-05-10T15:41:49+00:00</published>
            <updated>2019-05-10T15:41:49+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-7&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;What I mentioned on the last comment took longer than expected, but I&#039;m very happy with the results! In trying to improve the tests, I realized the responsibility of interacting with the data layer is actually encapsulated in the Soukai library. The different implementation I was using for the different modes was only because I was not saving the models. And yet, I was storing their serialization to LocalStorage. Which got me thinking, and what makes more sense is to have a LocalStorage engine implemented in Soukai, which is what I did. In doing that I also realized the responsibilities for the SolidModel and the SolidEngine (within the soukai-solid package) were also mixed up, and I ended up doing a whole refactor in Soukai as well.&lt;/p&gt;
&lt;p&gt;In summary, Soukai engines now know nothing about models, as it should be. Which is nice because I&#039;ve removed a circular dependency that may have caused headaches on the future (for example models working only for certain engines, as it was happening with Solid). And in Solid Focus I&#039;ve moved all the engines to the Auth service. Which means it is now possible to implement new Soukai engines to work with the application. I don&#039;t think I&#039;ll do any in the short term, but I am for example using the InMemoryEngine for tests which solves the problem I had a couple of weeks ago.&lt;/p&gt;
&lt;p&gt;If you didn&#039;t understand anything of what I&#039;m talking about, head to the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://soukai.js.org&quot;&gt;Soukai docs&lt;/a&gt;. Depending at which point you visit them they may already have the changes I&#039;ve talked about documented, since improving documentation for all three projects (Soukai, Soukai Solid &amp;amp; Solid Focus) is what I&#039;ll be doing next.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-6" />
            <id>https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-6</id>
            <published>2019-04-28T17:04:34+00:00</published>
            <updated>2019-04-28T17:04:34+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-6&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve been writing more tests with Cypress and it&#039;s awesome. I mentioned before that I wasn&#039;t able to set up Typescript for the tests, but I&#039;ve finally fixed that (turns out I wasn&#039;t installing the &lt;code&gt;@cypress/webpack-preprocessor&lt;/code&gt; npm package).&lt;/p&gt;
&lt;p&gt;I had managed to do the first tests with relative ease, but it&#039;s true that I hadn&#039;t really got into it. I consider myself more of a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.quora.com/What-is-bottom-up-learning&quot;&gt;bottom-up learner&lt;/a&gt;, so I got into the Cypress documentation (that is great, btw) and started reading for a while. I&#039;d recommend anyone who wants to use it to read this guide because it cleared a lot of my doubts: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://docs.cypress.io/guides/core-concepts/introduction-to-cypress.html&quot;&gt;Introduction to Cypress&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&#039;ve now finished tests covering the basic functionality, but I found a problem with the current approach. The application has two modes for data storage: Offline (local storage) and Solid. I did this at the beginning in order to isolate the functionality from Solid particulars, and I also think it could be useful for a lot of people who don&#039;t want to use Solid. But the problem with that is there are two implementations of the data management layer. It&#039;s not a problem per se, but the tests are now only testing the offline part. I could test the Solid implementation as well, but it would be pointless because the user interaction and expectations are all the same (so the tests would look the same except for the login). This could be solved if I delegate all the responsibility to Soukai instead. I could stub Soukai and make sure that it&#039;s used appropriately, then the production app would simply change between a Solid engine or a LocalStorage engine.&lt;/p&gt;
&lt;p&gt;I&#039;ll try to tinker with that for a bit to see if I can come up with a decent approach. If I don&#039;t I&#039;ll just postpone it, because I have already planned to do this at some point to improve data synchronization (storing pending changes when the network is off, etc.).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-5" />
            <id>https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-5</id>
            <published>2019-04-15T17:11:10+00:00</published>
            <updated>2019-04-15T17:11:10+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-5&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I completed the migration to Soukai. All the data management operations to interact with a Solid POD are now delegated to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai-solid&quot;&gt;soukai-solid&lt;/a&gt; (except authentication that&#039;s still using &lt;code&gt;solid-auth-client&lt;/code&gt;). One example of a model defined with soukai-solid can be found &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/blob/23f61def82d6fd78c7a5b0eb744b7c73a7a07735/src/models/soukai/Task.ts&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I believe this is an important stepping stone for me to start creating Solid applications. Using this library I can focus on app development and encapsulate Solid specifics. During the development of the library, I&#039;ve been asking some members of the Linked Data community what&#039;s their opinion on this, and most of them agree that the complex relations between LD documents cannot be fully expressed with objects. That&#039;s why an ODM comes as an unorthodox approach. I still have to look at LDFlex again, because last time I checked it was lacking some features that I&#039;ve been told are now available. But my opinion is that using both approaches should be compatible and even preferable. My opinion is heavily biased given my background, in particular working with Laravel&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravel.com/docs/5.8/eloquent&quot;&gt;Eloquent&lt;/a&gt;. That&#039;s why once I have documented and cleaned up the repositories, I&#039;ll open a thread on the Solid forum to discuss both approaches and learn more about the topic. It may be my inexperience with Linked Data talking, but I see a lot of value on combining both approaches. I&#039;ll expand on this when I open the forum thread.&lt;/p&gt;
&lt;p&gt;Also continuing with something I mentioned last time, I&#039;ve updated the deployment strategy for the javascript libraries using npm. As noted on the previous comment, I created a dev branch with the new changes, but the problem was that it wasn&#039;t possible to reference that branch from CI services (because they pull from the npm registry). I was struggling to find a good solution, until I found out about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://docs.npmjs.com/cli/dist-tag&quot;&gt;npm tags&lt;/a&gt;. The idea is that once a new version of a package is pushed to npm, it&#039;s by default tagged as &lt;code&gt;latest&lt;/code&gt;. But this can be overriden, and I&#039;ve started using the &lt;code&gt;next&lt;/code&gt; tag to publish development versions of the libraries. The name of the version also indicates that it isn&#039;t stable with the suffix &lt;code&gt;-dev.{commit hash}&lt;/code&gt;. This solution is still not perfect because I&#039;m forced to commit changes to &lt;code&gt;package-lock.json&lt;/code&gt; frequently, but it&#039;s the best approach I could come up with. When I start doing releases I&#039;ll see how cumbersome it really is.&lt;/p&gt;
&lt;p&gt;Now what&#039;s left of this task is to document the changes to the libraries and implement more tests for new features regarding Soukai, and I&#039;ll finish by finally implementing some new features.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-7" />
            <id>https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-7</id>
            <published>2019-04-09T16:33:29+00:00</published>
            <updated>2019-04-09T16:33:29+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-7&quot;&gt;Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;In the 6th chapter the author tackles a couple of topics that are impossible to avoid in this time and age: How to get your science done in today&#039;s society.&lt;/p&gt;
&lt;p&gt;The first part talks about making progress with little resources. He suggests focusing on cheap but valuable experiments, and as he alluded to in previous chapters, working slowly but constantly. Something interesting he mentions is that working with others in a lab can have drawbacks, for example plenty of interruptions and lack of focus. This has a direct parallelism with today&#039;s office environments. Solitude is more valuable than we think as a society, and deep work is important to progress and grow as individuals. He also presents as a possibility of having a day job and doing your science on the side, which is also a common approach today.&lt;/p&gt;
&lt;p&gt;The second part of the chapter is something I don&#039;t agree with in the least. I went back to my self-assessment of agreeing or disagreeing based on pre-established opinions, and I came out reinforced by my original ideals. What he exposes is that having a successful scientific career is incompatible with having a family (and a social life). He then continues by making a sexist categorization of women that are suitable for a scientist to marry. I won&#039;t judge the entire book just for this part, I&#039;ll just leave it as something I strongly disagree with. My opinion is that work-life balance is not only necessary, but it actually empowers creative endeavors. I guess it&#039;s up to discussion if the scientific method can be considered a &amp;quot;creative endeavor&amp;quot; or not, but I&#039;m sure programming and the work I do is. Still, I understand the point he&#039;s trying to make and I&#039;m keeping the good part: It&#039;s important to be diligent with how we allocate our time and be intentional on what it&#039;s spent on.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Reading Digital Minimalism by Cal Newport"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-12" />
            <id>https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-12</id>
            <published>2019-04-01T17:02:11+00:00</published>
            <updated>2019-04-01T17:02:11+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-12&quot;&gt;Reading Digital Minimalism by Cal Newport&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-12&quot;&gt;Reading Digital Minimalism by Cal Newport&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Digital Minimalism by Cal Newport"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-11" />
            <id>https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-11</id>
            <published>2019-04-01T17:01:53+00:00</published>
            <updated>2019-04-01T17:01:53+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-11&quot;&gt;Reading Digital Minimalism by Cal Newport&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve read the conclusion and it didn&#039;t bring any new points to my attention, so I have nothing to add about the book.&lt;/p&gt;
&lt;p&gt;Now, there were a couple other things I wanted to test while reading the book. One of them was to see what it&#039;s like to use the Kindle app. My conclusion is that yeah sure, the app works great, but the key features that I used were almost the same as reading PDFs (text highlight &amp;amp; extraction). So I&#039;ll continue avoiding buying Amazon ebooks if I can. If only because I don&#039;t like having to install their application; I prefer using an open format like PDF.&lt;/p&gt;
&lt;p&gt;The other thing that happened while reading this book was participating in the book club! Quite frankly, it was better than the book. It&#039;s true that the participation declined a bit over the last weeks, but that&#039;s ok. I enjoyed getting different insights, especially things I hadn&#039;t thought about. I can sincerely say it upgraded my experience of reading the book.&lt;/p&gt;
&lt;p&gt;And one of the highlights were &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://bryanmmathers.com/&quot;&gt;Bryan Mathers&lt;/a&gt;&#039; drawings! In each chapter, along with his opinions, he uploaded some doodles he did while reading the book. And I loved them :). Here&#039;s one of my favourites:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/tasks/digital_minimalism_bryan_mathers.png&quot; alt=&quot;Bryan Mathers&#039; drawing&quot; /&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-6" />
            <id>https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-6</id>
            <published>2019-03-28T17:51:40+00:00</published>
            <updated>2019-03-28T17:51:40+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-6&quot;&gt;Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve been busy reading the &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport&quot;&gt;book from the book club I joined&lt;/a&gt;, but I&#039;m now back to this and I have to say I enjoy it far more. It&#039;d be nice to exchange ideas with this one as well, so let me know if you&#039;ve read it and have anything to say!&lt;/p&gt;
&lt;p&gt;In this chapter the author talks about different ways people have of not making progress. I find it interesting specially because I see myself identified in some of them. Which is great, because now that I&#039;m aware I can start to fix it. He refers to these as &amp;quot;illnesses of the will&amp;quot;, and categorizes them like the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Bystanders (&amp;quot;contempladores&amp;quot; in spanish): People who enjoy science and studying, but never make any discoveries of their own other than categorizing what has already been found.&lt;/li&gt;
&lt;li&gt;The Bibliographers: People who accumulate knowledge indiscriminately and pride themselves on the variety of their interests, without ever challenging preconceptions and look down on others who don&#039;t know as much.&lt;/li&gt;
&lt;li&gt;The Magnificent (&amp;quot;megalófilos&amp;quot; in spanish): People driven to act and with good foundations, but who are too perfectionist to make progress or lack a viable path to reach their impossibly high standards. Yes, these are the ones I feel the most identified with.&lt;/li&gt;
&lt;li&gt;The Organizers: People who praise methods and tools so much that they don&#039;t use them enough or keep others from using them. They treat them as precious and over-protect them when in reality their value comes from using them. This may be difficult to apply in broader terms, but the word &amp;quot;gatekeeper&amp;quot; comes to mind.&lt;/li&gt;
&lt;li&gt;The Misplaced: People who have a role just for its sake, and have no further interest in filling their position other that the benefits they get. The author points out how bad personal circumstances are no excuse in the long term to not be doing something of value.&lt;/li&gt;
&lt;li&gt;The Theorists: People who work only in theory and never bother to add prove to their ideas. The author concedes that theories are an important part of investigation, but they are only the first step in a long journey towards discovery.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;He may seem a bit too harsh on this chapter, but I believe this kind of tough love is important. He points out how the intention of his writing is not to make these individuals change, but to warn and teach new generations.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-4" />
            <id>https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-4</id>
            <published>2019-03-24T09:18:05+00:00</published>
            <updated>2019-03-24T09:18:05+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-4&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;The last few weeks I&#039;ve been tinkering a lot with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai&quot;&gt;Soukai&lt;/a&gt; and its &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai-solid&quot;&gt;Solid engine&lt;/a&gt;. I still haven&#039;t reached a point of closure (I need to tackle model relations, for example). But it&#039;s been a while since I wrote an entry on this journal so I figured it&#039;s about time I do it.&lt;/p&gt;
&lt;p&gt;One thing I did was setting up the js.org domain to serve the soukai documentation. It&#039;s cool because it works nicely with github pages, so anyone can host a XXX.js.org site for free. Head to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://js.org&quot;&gt;js.org&lt;/a&gt; to learn more about it. I pondered going all in with this and have all of my projects setup with that domain, but I&#039;ll stick to pure js packages. I&#039;ll continue to use the github.io domain for other projects.&lt;/p&gt;
&lt;p&gt;I&#039;ve also had a thought about my development process. I realize that I move slow on my side-projects, certainly slower than the progress I make on my day job. And the reason for that isn&#039;t only that I dedicate less time, it&#039;s also how I approach it. In my day job, the main goal is to get things done. And of course, I also learn new things, but I try to tone down my perfectionism to be more productive and get results. But on my side-projects, I pay more attention to detail at the cost of going slower. I do it because that&#039;s how I maximize my learning and self-improvement. I recently listened to an episode of the Hurry Slowly podcast that talks about this: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://hurryslowly.co/208-jocelyn-k-glei/&quot;&gt;Creativity vs Efficiency&lt;/a&gt;. But the thing is, I also want to make progress on my side-projects! So I&#039;ve decided to try something out. For the next few weeks, I&#039;ll alternate between &amp;quot;getting things done&amp;quot; and &amp;quot;perfectionism&amp;quot; mindsets each week. I did it for the last two weeks and so far it&#039;s been good.&lt;/p&gt;
&lt;p&gt;Part of the perfectionism week has been dealing with repository versioning. So far, I had a single master branch and the version in package.json was the version of the latest release. This was confusing, because someone may think looking at the repo that a feature is live, when in fact it&#039;ll be available for the next release at which point the package.json version will change. After reading a while and looking at what other repositories do, I&#039;ve decided to have a &lt;code&gt;dev&lt;/code&gt; branch following the same strategy, but the master branch will only be updated for releases.&lt;/p&gt;
&lt;p&gt;Something else from this week has been setting up &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.cypress.io/&quot;&gt;Cypress&lt;/a&gt; to run integration tests for Solid Focus. It was specially important to add those before integrating with Soukai, so that I could be sure there weren&#039;t any regressions. It&#039;s been my first time using Cypress, and overall I&#039;m very satisfied with it. There are some things I couldn&#039;t manage, like setting up Typescript, but it was relatively easy to set up. I&#039;ve also learned about a new command: &lt;code&gt;npm ci&lt;/code&gt;. I&#039;d always used &lt;code&gt;npm install&lt;/code&gt; to install my dependencies even in environments running Continuous Integration, but apparently this command &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable&quot;&gt;was added&lt;/a&gt; about a year ago to ensure &amp;quot;getting exactly what you expect on every install&amp;quot;. Why wouldn&#039;t this already happen with &lt;code&gt;npm install&lt;/code&gt; is beyond my comprehension.&lt;/p&gt;
&lt;p&gt;On getting things done week, I managed to finish the first version of soukai-solid, and I&#039;ve already integrated it in Solid Focus (in the development branch). There haven&#039;t been any major drawbacks yet, so I&#039;ll get into defining relations between models and I think I&#039;ll have a first version fully migrated to Soukai soon.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Digital Minimalism by Cal Newport"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-10" />
            <id>https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-10</id>
            <published>2019-03-18T06:48:47+00:00</published>
            <updated>2019-03-18T06:48:47+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-10&quot;&gt;Reading Digital Minimalism by Cal Newport&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just finished reading the last chapter of the book and the constant has continued. I have to say I&#039;m a bit disappointed, the ideas and mental framework were great, but the specifics on how to achieve it are too biased and narrow. Which is not to say that I wouldn&#039;t recommend it, but I think it&#039;s better to read a summary first and go into the book only if you want to get more details.&lt;/p&gt;
&lt;p&gt;There are two things that make me say this. The first one is that I&#039;m already quite minimalist in my digital interactions, so most of the practices were different ways to achieve something I already do with my current workflow. And the second is that it seems like most practices are a remedy to overcome lack of willpower. For example this last chapter suggests trading your smartphone for a dumbphone in order to avoid the temptation of using social media. I believe discipline and intent are a better way to achieve it. Although I have to agree that for some people (maybe the majority) this has better chances of working.&lt;/p&gt;
&lt;p&gt;I said in one of my early comments that I&#039;d take this as informative for society overall, not only from my point of view. But that&#039;s something I wasn&#039;t able to do in the second part of the book, which is full of practices and things directed at the reader to take action.&lt;/p&gt;
&lt;p&gt;I still have to read the conclusion so I&#039;ll be back for one last comment before completing this task, but my conclusion is that this book isn&#039;t for me.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Digital Minimalism by Cal Newport"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-9" />
            <id>https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-9</id>
            <published>2019-03-13T18:22:16+00:00</published>
            <updated>2019-03-13T18:22:16+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-9&quot;&gt;Reading Digital Minimalism by Cal Newport&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Chapter 6, this is starting to get a bit repetitive, but there is thankfully only one chapter to go. Again, I agree with the overall philosophy but not the practices he recommends. As someone in the book club pointed out, it&#039;s funny that he said how important it&#039;s to have a philosophy and not rely on &amp;quot;hacks&amp;quot;, and this exactly what these practices are.&lt;/p&gt;
&lt;p&gt;For my opinions on this chapter I&#039;ll instead say what I usually do myself. The chapter is focused on how to manage leisure and free time, and some of the things he recommends are doing manual activities. I actually tried doing that long ago, when I built a remote controlled car using DC motors, a raspberry pi and handcrafted parts (that&#039;s why I made &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/DC-Motor-Sandbox&quot;&gt;this&lt;/a&gt;!). And the truth is it was cool but I dedicated too much time for what I got out of it. One of the reasons why he suggests it&#039;s important to do that is to be in contact with the physical world and get out of digital screens. But I already do that with other activities such as hiking, sport and cooking.&lt;/p&gt;
&lt;p&gt;Something else he mentions is to join groups for doing structured social activities. That is something I actively avoid. I already have enough structure in my life, given that I rely heavily on timeboxing. And my social life is entirely based on meeting with friends and attending cultural or social events. Something that may not be so common in other countries, but I&#039;m glad that happens here (Catalonia, Spain) is that there are many cultural and traditional events. Last week for example was &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.catalannews.com/life-style/item/carnival-arrives-and-many-catalan-towns-launch-the-largest-street-party-of-the-year&quot;&gt;Carnestoltes&lt;/a&gt;, known elsewhere as carnival, and there were a lot of events related to that. Now that he&#039;s dead, we have &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ca.m.wikipedia.org/wiki/Vella_Quaresma&quot;&gt;La Vella Quaresma&lt;/a&gt; and every Sunday there is an event for cutting one of her seven legs until Eastern arrives.&lt;/p&gt;
&lt;p&gt;Finally he goes into suggesting to batch low-quality leisure such as social media. I actually have trouble doing &lt;em&gt;any&lt;/em&gt; social media at all, and I already plan most of my high-quality leisure activities.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Digital Minimalism by Cal Newport"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-8" />
            <id>https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-8</id>
            <published>2019-03-08T06:46:48+00:00</published>
            <updated>2019-03-08T06:46:48+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-8&quot;&gt;Reading Digital Minimalism by Cal Newport&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Chapter 5 goes into what forms of communication have appeared in the Internet age and how a Digital Minimalist should approach them. He distinguishes between conversation and connection, and says that we are losing conversations in favor of connections and they don&#039;t have the same depth for social interaction. Overall I agree with the ideas, but I&#039;m not too keen on the practices he recommends.&lt;/p&gt;
&lt;p&gt;The first one is to not click &amp;quot;like&amp;quot; in social media platforms, ever. I have a problem with that because I use likes primarily as acknowledgement. When I want to let someone know I&#039;ve read their message but have nothing to say, I just click like. What he recommends instead is going completely silent, and that is something I cannot agree with. The part I agree with him and I&#039;m already applying is not to use likes as part of a conversation nor social status.&lt;/p&gt;
&lt;p&gt;The second thing he recommends is to consolidate texting, meaning not to be available 24/7 for texting and instead batching reading and replying to chats. This is something I do as well (I always have my phone in silent mode), but I don&#039;t agree with his assumption that people expect others to always be on call. I haven&#039;t had a problem with my aptitude, maybe it&#039;s because people already know me. But it&#039;s also true that sometimes I do have unscheduled real-time conversations over chat and I don&#039;t see a problem with that. I see where his point comes from, but I just think a person should be &lt;a href=&quot;https://noeldemartin.com/blog/order-vs-chaos&quot;&gt;conscious enough&lt;/a&gt; to know when to talk real-time and when to batch conversations.&lt;/p&gt;
&lt;p&gt;The last thing he introduces is having office hours for conversations. I think this is a great thing to do at work, as a way to discourage interruptions, but I don&#039;t like the idea to have them in my personal life. I cannot think of any time I have on a daily schedule where I wouldn&#039;t mind being interrupted (that&#039;s why I dread phone calls so much). Instead I think scheduling meeting with friends or a call is much better. That way when I don&#039;t have anything scheduled I can focus on whatever I&#039;m doing and not be on my toes knowing that anyone is expected to interrupt me.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Digital Minimalism by Cal Newport"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-7" />
            <id>https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-7</id>
            <published>2019-03-04T18:22:12+00:00</published>
            <updated>2019-03-04T18:22:12+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-7&quot;&gt;Reading Digital Minimalism by Cal Newport&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Chapter 4 introduces one of the practices encouraged for Digital Minimalists: Solitude. The idea resonates a lot with me, since I actually struggle on the opposite (scheduling time to interact with others). If anything I would like to increase my time alone. Keeping in mind the definition from the author as &amp;quot;mental solitude&amp;quot;, I associate it a lot to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=CHxhjDPKfbY&quot;&gt;David Allen&#039;s concept of mental bandwidth&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once again he gets into too many examples, so I guess this will be the norm for the rest of the book. I think it&#039;s worth it because I&#039;m enjoying the content, but I wouldn&#039;t discard reading a summary instead if I&#039;d known beforehand.&lt;/p&gt;
&lt;p&gt;The point he makes about solitude is quite persuading, although most people may find it difficult to take into practice. One particular concept he introduces that I found very interesting is what he calls &amp;quot;Solitude Deprivation&amp;quot;. He argues it&#039;s a problem most people of modern society is starting to suffer, and it&#039;s backed by a direct correlation with kids born after the appearance of the smartphone and a huge increase in teen anxiety.&lt;/p&gt;
&lt;p&gt;He finishes by prospecting three specific things to do: Leaving your phone at home, taking long walks and writting letters to yourself. All are valuable, but I can&#039;t help but notice how all of these are too biased to his own personal experience. Which isn&#039;t necessarily bad, but I think he presents some things in an unoptimal maner. For example, I believe the whole point of taking walks could be accomplished by meditation and reflecting, that can be more doable for most people.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-3" />
            <id>https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-3</id>
            <published>2019-02-25T17:06:42+00:00</published>
            <updated>2019-02-25T17:06:42+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-3&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Last week I released a new version of the app with some UX improvements and bug fixes. You can check the details &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/releases/tag/v0.1.1&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&#039;ll now start working on the data layer integration. The current implementation is quite naive, because I wanted to learn the basics and know what&#039;s going on under the hood. But it&#039;s clear that it wouldn&#039;t be scalable to continue working on the application.&lt;/p&gt;
&lt;p&gt;I saw Ruben Verborgh&#039;s LDFlex library, which he introduced in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ruben.verborgh.org/blog/2018/12/28/designing-a-linked-data-developer-experience&quot;&gt;this post&lt;/a&gt; and I&#039;d recommend you to read. I want to take another look to see how it works, but I&#039;m more inclined to use a different approach to manage models and decouple that from the UI components as much as possible. I&#039;m used to doing that in my applications, because I&#039;ve done most of my data management with Laravel through an API. So I&#039;d like to keep a similar workflow that&#039;s worked so well for me. But I have to keep in mind that this is a different paradigm and that may not be the right approach.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Testing MoodleNet"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/testing-moodlenet#comment-4" />
            <id>https://noeldemartin.com/tasks/testing-moodlenet#comment-4</id>
            <published>2019-02-25T11:44:13+00:00</published>
            <updated>2019-02-25T11:44:13+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/testing-moodlenet#comment-4&quot;&gt;Testing MoodleNet&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/testing-moodlenet#comment-4&quot;&gt;Testing MoodleNet&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Testing MoodleNet"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/testing-moodlenet#comment-3" />
            <id>https://noeldemartin.com/tasks/testing-moodlenet#comment-3</id>
            <published>2019-02-25T11:44:00+00:00</published>
            <updated>2019-02-25T11:44:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/testing-moodlenet#comment-3&quot;&gt;Testing MoodleNet&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Last week was the end of the first round of testing, which I was part of. After having visited the platform about once a day for three weeks, these are my opinions at the moment.&lt;/p&gt;
&lt;p&gt;Most of my days consisted on opening the website, checking to see if there was any new community or collection that got my attention, and review some of the discussions I had participated in to see if there was any new activity.&lt;/p&gt;
&lt;p&gt;Sometimes I also added resources. But I didn&#039;t do too much of that for different reasons. First, what I mentioned about having to create a community was a barrier. Second, I did not see much activity or feedback on my resources, so I didn&#039;t feel encouraged to continue doing it. And third, I don&#039;t think most of the people taking part in the pilot were interested in these kind of resources. Which is of course to be expected, because we were only 100 participants and the target audience for MoodleNet is educators, not developers.&lt;/p&gt;
&lt;p&gt;One of my key takeaways as part of the feedback has been that the success of using the platform depends a lot on what other people is there. Again, not a surprise given that MoodleNet is a Social Network.&lt;/p&gt;
&lt;p&gt;And what about new features? I believe that most features are bells and whistles, and the important thing when building software is the core value proposition and how it&#039;s serving the user. I think they are doing a good job at that, so I didn&#039;t submit many suggestions for new features on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://changemap.co/moodle/moodlenet&quot;&gt;changemap&lt;/a&gt;. Another reason is that I waited on my initial reactions to let them sink, and I was glad to see that most of them were already submitted by someone else or fixed by the MoodleNet team with product updates.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Digital Minimalism by Cal Newport"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-6" />
            <id>https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-6</id>
            <published>2019-02-19T17:08:46+00:00</published>
            <updated>2019-02-19T17:08:46+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-6&quot;&gt;Reading Digital Minimalism by Cal Newport&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;The third chapter introduces the best way to get started with Digital Minimalism: a Marie Kondo-esque Digital Declutter. Of course, he doesn&#039;t mention Marie Kondo, but that&#039;s exactly what it is. I agree with the idea that this kind of change needs to be done at once (although ironically I am doing my &amp;quot;progressive self-enhancement&amp;quot; slowly).&lt;/p&gt;
&lt;p&gt;The concrete suggested approach is to take 30 days off of all non essential technology, use that period to learn what&#039;s more important to our life and then reintroduce the technology in a way that can help what we value the most.&lt;/p&gt;
&lt;p&gt;One last thing I got from this chapter is a reason he mentions as to why people seem reticent to stop using some technologies. He says it may feel uncomfortable to drop some because we&#039;ve become accustomed to the distractions, and they should be reevaluated with a clean slate that you get after 30 days of not using them. I fully agree with that, many times we have some opinions about something but it isn&#039;t until we see it from another perspective that we can truly assess our opinions.&lt;/p&gt;
&lt;p&gt;The explanation and procedure is cool, although I&#039;m not sure if I&#039;ll do it because I don&#039;t really feel that I have any technology that I need to drop. Something I didn&#039;t like about the chapter was the examples though. Too many of them and they seem to be there just to fill space. They would have done as annex to skim over.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Improving Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-2" />
            <id>https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-2</id>
            <published>2019-02-15T11:27:37+00:00</published>
            <updated>2019-02-15T11:27:37+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager#comment-2&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Yesterday I hammered through some UX improvements that I had wanted to do for some time.&lt;/p&gt;
&lt;p&gt;First, I wanted to add animations when a task is added or removed from a list. I started using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vuetifyjs.com/en/framework/transitions#todo-list&quot;&gt;Vuetify transitions&lt;/a&gt;, and they were a good starting point to see what I wanted out of this feature. But their implementation did not achieve the fluid experience I was looking for. In particular, transitions are implemented using translate CSS transformations. The problem with this is that the computed size of the element is not animated, only its visual position. This causes an undesired jump of the content at the start or at the end of the animation. In order to achieve what I was looking for, I ended up using a custom &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vuejs.org/v2/guide/transitions.html#List-Transitions&quot;&gt;Vue transition&lt;/a&gt; where I animated the height property instead of applying a transformation. I can understand the reason for Vuetify animations to be implemented that way, because in order to have a height animation working, the elements need to have a fixed height. This is not viable for a framework that aims to provide a toolbox for multiple use-cases, but for my use-case in particular I could live with that trade-off. You can see my implementation in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/commit/0070290d2660c6c060b4d2dadffc596e02bf3980&quot;&gt;this commit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Another thing I worked on was increasing the size of task checkboxes. As part of the feedback I got for the first version of the app, I was told that clickable areas should be at least 32x32px on mobile, and the default size of the checkbox that comes with Vuetify is 24x24px. If you look at the repository, you&#039;ll notice that I went back and forth a couple of times with different solutions. At the end I decided to stick with a simple approach to use the default size for desktop and increase the checkbox size in a mobile layout.&lt;/p&gt;
&lt;p&gt;I also used this opportunity to add a real implementation of a UUID generator. This made me think about how task ids are generated with the online mode of the app. I send a request to create a new document without indicating an id, so it&#039;s being generated on the server side. This could be improved generating it on the client so that I don&#039;t need to wait for a response to reflect the changes on the UI (and revert the local state in case of an error).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Digital Minimalism by Cal Newport"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-5" />
            <id>https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-5</id>
            <published>2019-02-14T17:45:52+00:00</published>
            <updated>2019-02-14T17:45:52+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-5&quot;&gt;Reading Digital Minimalism by Cal Newport&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;The second chapter of the book introduces a formal definition of Digital Minimalism and exposes its 3 fundamental principles: &amp;quot;Clutter is costly&amp;quot;, &amp;quot;Optimization is important&amp;quot; and &amp;quot;Intentionality is satisfying&amp;quot;.&lt;/p&gt;
&lt;p&gt;I can already tell that I&#039;m not, as I was pondering, a Digital Minimalist. But my values do align with the philosophy and I was already headed in a similar direction.&lt;/p&gt;
&lt;p&gt;I&#039;d say I&#039;m adhered to the first two principles, they are things that I generally try to keep in mind and pay attention whenever possible. But the third principle has been a useful reminder. I am aware of how important it is to be intentional in my actions and choices. But I get myself into more things than I would like. I Often fall into the trap of starting something out of curiosity, without previous examination. And I can see how that&#039;s lead me to a situation of overwhelm that I don&#039;t enjoy.&lt;/p&gt;
&lt;p&gt;It was particularly interesing to learn more about the Amish. As the author says most people (me included) thinks of them as an anti-technology. But it&#039;s far from that, what happens is that they take intentionallity when chosing new technologies to an extreme. And, maybe not surprisingly, they have deemed a lot of the technologies we use on a daily basis as inappropriate after careful examination.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Digital Minimalism by Cal Newport"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-4" />
            <id>https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-4</id>
            <published>2019-02-12T17:58:27+00:00</published>
            <updated>2019-02-12T17:58:27+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-4&quot;&gt;Reading Digital Minimalism by Cal Newport&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;The first chapter talks about the current situation we find ourselves in, arguing that we didn&#039;t sign up for this and it happened under our noses. As you may have deduced in my previous comment, I was judging the author&#039;s words too much from my perspective and that&#039;s why I challenged some of his assumptions. But now I think it&#039;s a better approach to see his discourse as a description of society overall, not from the perspective of individuals. Doing that I can get the benefit from the parts that apply to me whilst also appreciating the others parts (learning about society).&lt;/p&gt;
&lt;p&gt;On his explanation of the current situation of &amp;quot;always-on&amp;quot; addiction to social media and technology, there is something he doesn&#039;t mention that I also believe is interesting to ponder. And that is the predominance of &amp;quot;free&amp;quot; products in the market. Yes, free as in beer. One of the underlining motives the author gives to the way of acting for businesses is that they do it to maximize revenue. And the thing is, I&#039;m not against businesses making money. But the problem is how that money is made. And by farming people instead of giving them a valuable experience, they are also hurting the industry because society has become reticent to pay for technological products. This has got the point that paying 1€ for an app is sometimes frown upon.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Testing MoodleNet"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/testing-moodlenet#comment-2" />
            <id>https://noeldemartin.com/tasks/testing-moodlenet#comment-2</id>
            <published>2019-02-11T19:54:44+00:00</published>
            <updated>2019-02-11T19:54:44+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/testing-moodlenet#comment-2&quot;&gt;Testing MoodleNet&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve been visiting the platform at least once a day so far, and I&#039;ve got the gist of its current status. The site is simple by design, since they are trying to validate core assumptions (it isn&#039;t production-ready yet). I definetly think this is the way to go about it, getting users involved as soon as possible.&lt;/p&gt;
&lt;p&gt;My initial impressions have been good because it&#039;s easy to use, and it&#039;s clear what each section is for. But I&#039;ve found something different to what I expected when I was talking about &amp;quot;storing my learning materials&amp;quot;. The platform is built around resources and collections, but all of those are (at the moment) under the umbrella of a community. This is great for the social aspect, given that it can gather individuals intersted in a certain topic. But from a personal management of resources, it&#039;s kind of awkard.&lt;/p&gt;
&lt;p&gt;For example, to get started I intended to gather some resources of technologies I like or want to learn more about: Solid, Laravel and Vue. In order to publish any resource or collection, a community has to be created, so I created one called &amp;quot;Vue Developers&amp;quot;. And the problem I see with that is that it isn&#039;t my intention to create a community of Vue developers. The connotations of a &amp;quot;community&amp;quot; go way beyond what I&#039;m trying to do with those resources, at least at the moment. And if someone really wants to create a community for Vue developers, they may be thrown back if one already exists.&lt;/p&gt;
&lt;p&gt;Well this is only my very initial impressions, and it&#039;s clear that this is only a pilot at the moment focusing on some narrow aspects. It&#039;s also possible that my use case is not within their scope and that&#039;s also cool. That&#039;s what feedback loops are for.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Digital Minimalism by Cal Newport"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-3" />
            <id>https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-3</id>
            <published>2019-02-11T17:16:41+00:00</published>
            <updated>2019-02-11T17:16:41+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-3&quot;&gt;Reading Digital Minimalism by Cal Newport&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;The introduction parts from an interesting position from my point of view. The author asserts that we live in a society addicted to technology and social networks. To which I&#039;d mostly agree. But I don&#039;t feel identified at all, quite the opposite. I am well aware that most of my peers are, but I&#039;m proud to be the odd man out in that regard. At least that&#039;s how I see myself.&lt;/p&gt;
&lt;p&gt;What is interesting about this is that the author seems to associate technology with addiction. And the solution seems to be geared towards minimizing the use of technology. But what if technology is just a medium? For me, nothing beats a whiteboard. But I am a developer, I love programming, and I obviously can&#039;t do that without a computer. So I see my existence as interlinked with technology.&lt;/p&gt;
&lt;p&gt;But I don&#039;t use social networks much, and I don&#039;t fall to &amp;quot;the hype&amp;quot;. I know I&#039;m not addicted to technology because when I break from it, when I go hiking or on holidays, I don&#039;t feel any withdrawal symptoms.&lt;/p&gt;
&lt;p&gt;Anyways, there is this blog post I&#039;ve wanted to write for a while tentatively titled &amp;quot;Progressive self enhancement&amp;quot;, and I have the impression that it may be related to what the book will talk about.&lt;/p&gt;
&lt;p&gt;Am I already living in Digital Minimalism? We&#039;ll see.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Digital Minimalism by Cal Newport"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-2" />
            <id>https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-2</id>
            <published>2019-02-11T06:52:55+00:00</published>
            <updated>2019-02-11T06:52:55+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport#comment-2&quot;&gt;Reading Digital Minimalism by Cal Newport&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I can&#039;t keep myself from commenting on the irony that was not being able to get a book called &amp;quot;Digital Minimalism&amp;quot; in a &amp;quot;minimal&amp;quot; format. My reading experience is already quite simple, I read PDFs highlighting excerpts and extract them to Evernote. I recently started &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal&quot;&gt;reading a physical book&lt;/a&gt; after some years, and it hasn&#039;t been optimal for the reasons I just mentioned.&lt;/p&gt;
&lt;p&gt;Many times, even if I buy a book, I&#039;ll end up downloading a PDF for reading. In this instance not only was it impossible, I also wasn&#039;t able to get it anywhere other than Amazon. So I ended up installing the Kindle app on my phone.&lt;/p&gt;
&lt;p&gt;Maybe this happened because I don&#039;t usually read books as they come out, I&#039;m always reading books that are at least some months old (if not years). I&#039;ll use this opportunity to learn what&#039;s the experience of reading on the Kindle app. But I don&#039;t think it&#039;ll go beyond this one experience, specially after seeing &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://reports.exodus-privacy.eu.org/en/reports/56733/&quot;&gt;Exodus&#039; privacy report&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Reading Digital Minimalism by Cal Newport"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport" />
            <id>https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport</id>
            <published>2019-02-11T06:51:29+00:00</published>
            <updated>2019-02-11T06:51:29+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport&quot;&gt;Reading Digital Minimalism by Cal Newport&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/reading-digital-minimalism-by-cal-newport&quot;&gt;Reading Digital Minimalism by Cal Newport&lt;/a&gt;&lt;/p&gt;&lt;p&gt;As part of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://dougbelshaw.com/blog/2019/02/09/experimenting-with-a-slack-based-book-club&quot;&gt;joining my first book club ever&lt;/a&gt; (I&#039;m excited!) I&#039;ve started reading Digital Minimalism by Cal Newport.&lt;/p&gt;
&lt;p&gt;I thought I hadn&#039;t read anything from the author, but turns out I had read a &amp;quot;comprehensive&amp;quot; summary of one of his previous books: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://commoncog.com/blog/so-good-they-cant-ignore-you&quot;&gt;So Good They Can&#039;t Ignore You&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Testing MoodleNet"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/testing-moodlenet" />
            <id>https://noeldemartin.com/tasks/testing-moodlenet</id>
            <published>2019-02-06T06:27:36+00:00</published>
            <updated>2019-02-06T06:27:36+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/testing-moodlenet&quot;&gt;Testing MoodleNet&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/testing-moodlenet&quot;&gt;Testing MoodleNet&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Last week I started to take part in the initial testing of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://moodle.com/moodlenet&quot;&gt;MoodleNet&lt;/a&gt;. I have already been using it, but since I was &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem&quot;&gt;attending FOSDEM&lt;/a&gt; I couldn&#039;t dedicate much attention until now.&lt;/p&gt;
&lt;p&gt;In case you&#039;re wondering, MoodleNet is &amp;quot;a new open social media platform for educators, focused on professional development and open content&amp;quot;. And what am I doing there if I&#039;m no educator? Well, I &amp;quot;am&amp;quot; an educator, since I teach to myself, as we all do. I&#039;ve also imparted some classes about programming, but that&#039;s not really the point. My interest in MoodleNet resides on resource curation and social interactions around it. I&#039;ve been using Evernote for a while to store my learning materials, but I&#039;m sure there&#039;s a better way and MoodleNet could be it.&lt;/p&gt;
&lt;p&gt;The project is also being developed in the open and using federation (ActivityPub), both of which I&#039;m interested in.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Improving Solid Focus Task Manager"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/improving-solid-focus-task-manager" />
            <id>https://noeldemartin.com/tasks/improving-solid-focus-task-manager</id>
            <published>2019-02-05T17:04:00+00:00</published>
            <updated>2019-02-05T17:04:00+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/improving-solid-focus-task-manager&quot;&gt;Improving Solid Focus Task Manager&lt;/a&gt;&lt;/p&gt;&lt;p&gt;One month ago I &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid&quot;&gt;implemented a Task Manager using Solid&lt;/a&gt;. It was a proof of concept more than anything, but I got some feedback to improve it and there are some features missing that are essential to have this replace my current task manager. I continue to believe that Solid is really cool, so I&#039;ll improve it to the point that I can at least start using it myself.&lt;/p&gt;
&lt;p&gt;In particular, these are some of the things I want to work on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improve data management (maybe using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://rubenverborgh.github.io/LDflex/&quot;&gt;LDFlex&lt;/a&gt; or &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/soukai/&quot;&gt;Soukai&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Improve UX.&lt;/li&gt;
&lt;li&gt;Improve documentation.&lt;/li&gt;
&lt;li&gt;Add new features such as editing, deleting, scheduling? etc.&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Attending FOSDEM"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem#comment-6" />
            <id>https://noeldemartin.com/tasks/attending-fosdem#comment-6</id>
            <published>2019-02-04T08:32:41+00:00</published>
            <updated>2019-02-04T08:32:41+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem#comment-6&quot;&gt;Attending FOSDEM&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem#comment-6&quot;&gt;Attending FOSDEM&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending FOSDEM"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem#comment-5" />
            <id>https://noeldemartin.com/tasks/attending-fosdem#comment-5</id>
            <published>2019-02-04T08:32:13+00:00</published>
            <updated>2019-02-04T08:32:13+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem#comment-5&quot;&gt;Attending FOSDEM&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Yesterday after the conference ended, I went to an IPFS meetup. I didn&#039;t know much about IPFS, so it was a good change to understand it better and meet new people.&lt;/p&gt;
&lt;p&gt;One thing in particular that got my attention was &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://ipld.io/&quot;&gt;IPLD&lt;/a&gt;, InterPlanetary Linked Data. Given my work with Solid, it&#039;d be interesting to try and create a POD that stores data using IPFS combined with this. I still need to look into it more in depth, but at first glance seems like it would be possible by having a gateway/proxy that does the conversion between ipfs and Solid operations. Actually it isn&#039;t anything so uncommon, because that&#039;s exactly what a web server is doing, translating Solid operations into database or filesystem operations.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending FOSDEM"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem#comment-4" />
            <id>https://noeldemartin.com/tasks/attending-fosdem#comment-4</id>
            <published>2019-02-03T16:49:47+00:00</published>
            <updated>2019-02-03T16:49:47+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem#comment-4&quot;&gt;Attending FOSDEM&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Last day of Fosdem, the highlight of the day has been without a doubt Ruben Verborgh&#039;s presentation of Solid. If you don&#039;t know anything about Solid, or even if you do, I recommend that you watch the recording that will be uploaded here: https://fosdem.org/2019/schedule/event/solid_web_decentralization/&lt;/p&gt;
&lt;p&gt;After the presentation I joined a small group of people to continue the conversation with him outside. The future that they are trying to create is very interesting, and even if Solid doesn&#039;t find widespread adoption, I&#039;m still excited to see the communities that&#039;ll be created.&lt;/p&gt;
&lt;p&gt;I also had the chance to speak with members of the SAFE Network project, who are very interested in using Solid on their network. After chatting for a while I understood the gist of what they do, and I believe it&#039;s a great initiative. The only thing I&#039;m not convinced about is that it&#039;s an immutable data network, which means that data cannot be deleted, only modified (maintaining a modifications history).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending FOSDEM"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem#comment-3" />
            <id>https://noeldemartin.com/tasks/attending-fosdem#comment-3</id>
            <published>2019-02-02T18:42:52+00:00</published>
            <updated>2019-02-02T18:42:52+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem#comment-3&quot;&gt;Attending FOSDEM&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I started the day attendimg the talk about software freedom, since I didn&#039;t make it in time for the keynote. It was interesting to see the struggles of trying to live without proprietary software. I didn&#039;t know the speakers, but I will look at their work at the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sfconservancy.org&quot;&gt; Software Freedom Conservancy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After that I went to the decentralization/privacy room and I didn&#039;t leave it the whole day! I expect to look around tomorrow and visit some stands.&lt;/p&gt;
&lt;p&gt;The talks I enjoyed the most were &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/analysis_of_the_behavior_of_mobile_applications_and_its_consequences_for_our_privacy/&quot;&gt;Exodus&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/yunohost/&quot;&gt;YunoHost&lt;/a&gt; and the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/activitypub_panel/&quot;&gt;ActivityPub panel&lt;/a&gt;. I also took the chance to salute Elliot from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://funkwhale.audio&quot;&gt;FunkWhale&lt;/a&gt;. I really like his project and I&#039;ll probably host my own instance at some point.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-5" />
            <id>https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-5</id>
            <published>2019-02-01T11:39:52+00:00</published>
            <updated>2019-02-01T11:39:52+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-5&quot;&gt;Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Chapter 4 delves into which sources of knowledge the novice scientist must pursue.&lt;/p&gt;
&lt;p&gt;The first thing he introduces is the necesity to have a good grasp on general knowledge in disciplines related with the subject chosen for practice. But not going too deep, he also notes how important it is to specialize in something specific. This reminds me to the concept of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/T-shaped_skills&quot;&gt;T-shaped skills&lt;/a&gt;, where a person has a solid base in a wide range of skills but is a lot of expertise in one or two areas.&lt;/p&gt;
&lt;p&gt;He continues by talking about the necessity to learn other languages, which is interesting and I didn&#039;t see it coming. I was already aware of this, I noted in the previous entry of the journal how I&#039;m not using my native tongue for my work. But it&#039;s interesting to see it coming from a place I didn&#039;t expect.&lt;/p&gt;
&lt;p&gt;After underlining the importance of being aware of the state of the art before delving into science practice, so that mistakes that others made can be avoided, he talks about the source of all truth: nature. This is something quite obvious if you think about it, but I like how he presents it by saying that all learning resources we&#039;ll get (mostly books at the time) are nothing short of a reflection of the author. That&#039;s why it&#039;s so difficult to obtain knowledge without practical experience. This is particularly relevant if you are reading this without reading the book. I am transmitting the knowledge from his words, but the way I am presenting and explaining it may be completely off the mark.&lt;/p&gt;
&lt;p&gt;He finally concludes the chapter talking about the importance of having the correct skills to perform tests and how luck only presents to the ones who are looking. He acknowledges the importance of chance in scientific discovery, but it&#039;s true that luck is only useful to those who can interpret the results.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Attending FOSDEM"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem#comment-2" />
            <id>https://noeldemartin.com/tasks/attending-fosdem#comment-2</id>
            <published>2019-01-30T16:52:15+00:00</published>
            <updated>2019-01-30T16:52:15+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem#comment-2&quot;&gt;Attending FOSDEM&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve looked at the schedule and I decided to write down the talks that got my attention. I won&#039;t be able to attend all of them (some overlap and I&#039;m not Dr. Manhattan). But it&#039;s good to have some fallbacks in case the rooms are full. I&#039;ll also be able to watch them afterwards because they should be recorded.&lt;/p&gt;
&lt;p&gt;If you&#039;re going to any of those let me know! It&#039;ll be more fun if we can share our thoughts :).&lt;/p&gt;
&lt;p&gt;I&#039;ll probably meet with some guys from the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://safenetwork.tech&quot;&gt;SAFE Network&lt;/a&gt; forum. I didn&#039;t know about the project, but they are also interested in Decentralization. So I&#039;m sure some interesting conversations will come up.&lt;/p&gt;
&lt;p&gt;Here&#039;s the list of talks:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Saturday&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;9:30-9:55 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/keynotes_welcome/&quot;&gt;Welcome&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;10:00-10:50 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/full_software_freedom/&quot;&gt;Software Freedom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;10:30-10:55 @ AW1.121 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/qosf_oss_meets_qc/&quot;&gt;Quantum Computing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;12:00-12:50 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/blockchain_ethics/&quot;&gt;Blockchain Ethics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;12:00-12:30 @ UD2.218A - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/librehosters/&quot;&gt;LibreHosters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:30-14:00 @ UD2.218A - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/the_new_internet/&quot;&gt;IPFS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:30-13:50 @ AW1.120 - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/cost_of_not_doing_user_research/&quot;&gt;User Research&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;14:30-15:00 @ UD2.218A - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/the_right_to_data_portability_and_why_its_a_very_bad_idea/&quot;&gt;Data Portability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;15:30-16:00 @ UD2.218A - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/nextcloud/&quot;&gt;NextCloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;16:30-17:00 @ UD2.218A - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/yunohost/&quot;&gt;YunoHost&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;17:00-17:30 @ UD2.218A - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/organisational_processes_in_decentralized_software/&quot;&gt;Organization for decentralized software development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;18:00-18:30 @ Decroly - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/decentralizing_the_web_despite_itself/&quot;&gt;Mozilla Decentralization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;17:30-18:30 @ UD2.218A - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/activitypub_panel/&quot;&gt;ActivityPub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Sunday&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;10:00-10:50 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/solid_web_decentralization/&quot;&gt;Solid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;10:00-10:25 @ Rolin - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/pwa_control_iot/&quot;&gt;PWA IoT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;11:00-11:50 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/tor_project/&quot;&gt;Tor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13:00-13:50 @ Janson - &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/schedule/event/duckduckgo_open_source/&quot;&gt;DuckDuckGo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-4" />
            <id>https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-4</id>
            <published>2019-01-30T06:06:57+00:00</published>
            <updated>2019-01-30T06:06:57+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-4&quot;&gt;Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;On chapter 3 he outlines some important moral qualities for a scientist to have: independence of judgement, perseverance in study, passion for glory, patriotism and enjoyment of scientific originality.&lt;/p&gt;
&lt;p&gt;Independence of judgement and perseverance in study are great. I feel like the second one in particular is even more relevant today. He explains how long-term attention is something valuable for investigation. Here&#039;s one quote from the book:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;All great works come from patience and perseverance, combined with prolongued attention in months or years focused on a single goal.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Passion for glory talks about how scientists see society and the repercussions of their actions, and what they expect from them.&lt;/p&gt;
&lt;p&gt;Patriotism is something I don&#039;t agree much with, since he gives too much importance to his physical location. I consider myself a &amp;quot;citizen of the world&amp;quot;, and don&#039;t see myself constrained to any one culture. Of course I guess this is to be expected given the context when this was written (Spain 1897). Today we have the Internet and everything is more global. I&#039;m not even using my native language to communicate most of my work.&lt;/p&gt;
&lt;p&gt;He finally goes into enjoyment of scientific originality. He talks about the pure joy of knowledge and discovery. I can see myself identified with this, because I&#039;m always chasing abstract concepts without any particular goal other than getting new insights. And I feel a constant struggle between chasing &amp;quot;useful&amp;quot; knowledge, that has some practical applications, or just &amp;quot;food for thought&amp;quot;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Migrating noeldemartin.com to Docker"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/migrating-noeldemartincom-to-docker#comment-4" />
            <id>https://noeldemartin.com/tasks/migrating-noeldemartincom-to-docker#comment-4</id>
            <published>2019-01-30T06:03:40+00:00</published>
            <updated>2019-01-30T06:03:40+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/migrating-noeldemartincom-to-docker#comment-4&quot;&gt;Migrating noeldemartin.com to Docker&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/migrating-noeldemartincom-to-docker#comment-4&quot;&gt;Migrating noeldemartin.com to Docker&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Migrating noeldemartin.com to Docker"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/migrating-noeldemartincom-to-docker#comment-3" />
            <id>https://noeldemartin.com/tasks/migrating-noeldemartincom-to-docker#comment-3</id>
            <published>2019-01-30T06:03:34+00:00</published>
            <updated>2019-01-30T06:03:34+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/migrating-noeldemartincom-to-docker#comment-3&quot;&gt;Migrating noeldemartin.com to Docker&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve now completed migrating the website! I also used the opportunity to improve on two things: scheduling automatic backups and setting up cron tasks with docker.&lt;/p&gt;
&lt;p&gt;To perform backups, I started using spatie&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/spatie/laravel-backup&quot;&gt;laravel-backup&lt;/a&gt; package. It&#039;s been one of those rare packages that works out of the box and didn&#039;t give me any problems :). I may send them a thank you postcard as they suggest. Specially enjoyable was the fact that I could use &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.digitalocean.com/products/spaces/&quot;&gt;DigitalOcean Spaces&lt;/a&gt; to store the files. Double simplicity, everything working smoothly!&lt;/p&gt;
&lt;p&gt;The other thing that didn&#039;t go so smooth was configuring cron jobs within docker containers. It would have been possible to configure the cron tasks from the host and invoke the commands using docker &lt;code&gt;run&lt;/code&gt; or &lt;code&gt;exec&lt;/code&gt;. But I thought it&#039;d be better to encapsulate as much as possible within the containers. The final approach I&#039;ve taken is to use &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://supervisord.org&quot;&gt;supervisor&lt;/a&gt; within a php container, the one serving the app, to launch both the cron and php-fpm daemons. This will also be useful in the future if I want to launch other daemons, for example queue workers. I had to tweak a couple of things to make it work (change default command from the php image, add config files, etc.). But I am happy with the final results.&lt;/p&gt;
&lt;p&gt;So that&#039;s it for this iteration of the website!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Attending FOSDEM"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/attending-fosdem" />
            <id>https://noeldemartin.com/tasks/attending-fosdem</id>
            <published>2019-01-25T21:57:36+00:00</published>
            <updated>2019-01-25T21:57:36+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem&quot;&gt;Attending FOSDEM&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/attending-fosdem&quot;&gt;Attending FOSDEM&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fosdem.org/2019/&quot;&gt;FOSDEM&lt;/a&gt; is a conference about developers and open source that is happening in Brussels the weekend of the 2nd and 3rd of February.&lt;/p&gt;
&lt;p&gt;I still have to make up my mind on which talks I&#039;ll attend, but I hope to meet a lot of awesome people!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Redefining Autonomous Data"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/redefining-autonomous-data#comment-4" />
            <id>https://noeldemartin.com/tasks/redefining-autonomous-data#comment-4</id>
            <published>2019-01-25T21:46:54+00:00</published>
            <updated>2019-01-25T21:46:54+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/redefining-autonomous-data#comment-4&quot;&gt;Redefining Autonomous Data&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/redefining-autonomous-data#comment-4&quot;&gt;Redefining Autonomous Data&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Redefining Autonomous Data"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/redefining-autonomous-data#comment-3" />
            <id>https://noeldemartin.com/tasks/redefining-autonomous-data#comment-3</id>
            <published>2019-01-25T21:46:43+00:00</published>
            <updated>2019-01-25T21:46:43+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/redefining-autonomous-data#comment-3&quot;&gt;Redefining Autonomous Data&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;After giving it some thought I&#039;ve finished the revamp of the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/autonomous-data/&quot;&gt;Autonomous Data website&lt;/a&gt;. I ended up calling it an &amp;quot;architecture&amp;quot; and at some points an &amp;quot;ideology&amp;quot;. I don&#039;t think it&#039;s right to only call it architecture because there are also some other implications that go beyond tech.&lt;/p&gt;
&lt;p&gt;The site will probably stay as it is for a while. I&#039;ll focus my efforts on actually building Autonomous Data applications, and I may add a directory of apps there and in my site.&lt;/p&gt;
&lt;p&gt;What would be great though is if I get some feedback!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Migrating noeldemartin.com to Docker"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/migrating-noeldemartincom-to-docker#comment-2" />
            <id>https://noeldemartin.com/tasks/migrating-noeldemartincom-to-docker#comment-2</id>
            <published>2019-01-24T01:12:32+00:00</published>
            <updated>2019-01-24T01:12:32+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/migrating-noeldemartincom-to-docker#comment-2&quot;&gt;Migrating noeldemartin.com to Docker&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;After looking at the existing options to serve websites from different containers running on the same host, I decided to implement a couple of bash scripts to serve them using an nginx container. I decided to do it rather than installing nginx directly on the host because it&#039;s &lt;em&gt;slightly&lt;/em&gt; more portable (I say slightly because it isn&#039;t a problem to install nginx somewhere else).&lt;/p&gt;
&lt;p&gt;This approach is essentially the same that using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/jwilder/nginx-proxy&quot;&gt;nginx-proxy&lt;/a&gt;, but I wanted to do it manually to have more control on what&#039;s actually going on. They are simple scripts, so it isn&#039;t like this took me a lot of work, and I learned more about Docker and networks doing it.&lt;/p&gt;
&lt;p&gt;I&#039;ve published my scripts with a couple of working examples on github. I called it &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/nginx-agora&quot;&gt;nginx-agora&lt;/a&gt; (because it creates a network where all the other containers &amp;quot;come together&amp;quot;). But as I already mention in the readme, I don&#039;t recommend anyone using this for production without understanding what&#039;s going on.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-3" />
            <id>https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-3</id>
            <published>2019-01-22T22:26:42+00:00</published>
            <updated>2019-01-22T22:26:42+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-3&quot;&gt;Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;While reading the book I&#039;m finding many ideas I was already familiar with that I believe to be true. But I started wondering about something. When I&#039;m reading a text and the author is aligned with my opinion, do I really agree with him or I&#039;m automatically agreeing because I already had that preconception? It&#039;s difficult to tell, since it goes all the way to how our opinions were formed in the first place. And if we just agree or disagree based on opinions we already had, we&#039;re not getting anywhere. I try to be as impartial as possible and judge things for what they are, but sometimes it&#039;s more difficult than it seems and I get wrapped up in an infinite loop of evaluation.&lt;/p&gt;
&lt;p&gt;I could do an entire blog post about this, but I&#039;ll just say that I don&#039;t think anybody has solid opinions, since most of them are based on experience and that&#039;s usually not a great way (not enough data, too dependent on the context, etc.). I actually wrote a &lt;a href=&quot;https://noeldemartin.com/blog/let-s-agree-to-disagree&quot;&gt;blog post&lt;/a&gt; that is similar to this, so I guess the conclusion is that we work with heuristics, which is fine. And we change opinions often, which is also fine. But there must be some underlying principle that I&#039;m not grasping.&lt;/p&gt;
&lt;p&gt;Anyways, one of the ideas I found interesting that I already agreed with is &lt;a href=&quot;https://noeldemartin.com/blog/the-power-of-ignorance&quot;&gt;the power of ignorance&lt;/a&gt;. Cajal also exposes how focusing on one problem at a time and actively ignoring everything else can be benefitial. Perhaps he goes too far by saying that some books are useless, to which I&#039;d never agree. Art is never useless, since the value is in the eye of the beholder.&lt;/p&gt;
&lt;p&gt;The second chapter focused on common problems that are found by novice scientists: admiring predecessors too much, believing in topics left for study running out, deeming only practical discoveries as relevant and not being &amp;quot;smart enough&amp;quot;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-2" />
            <id>https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-2</id>
            <published>2019-01-17T21:36:47+00:00</published>
            <updated>2019-01-17T21:36:47+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal#comment-2&quot;&gt;Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve read the introduction and I&#039;ve already got some valuable lessons.&lt;/p&gt;
&lt;p&gt;The first one is not directly related with the book, and that is that I prefer reading on a digital format 100%. It&#039;s been a long time since I read a &lt;em&gt;physical&lt;/em&gt; book, not a PDF or eBook. And I&#039;m already seeing the problems. The most relevant of which is not having the ability to highlight excerpts. Of course I can always use markers on the book, but the use I give to highlights is to review the parts that got my attention, ignoring everything else. And that is not really possible with that approach. So I&#039;ve been manually copying excerpts to Evernote.&lt;/p&gt;
&lt;p&gt;The other thing I learned, related with the book, is Cajal&#039;s view on scientific prowess and intelectual capacity. He&#039;s of the opinion that individuals have mostly the same potential, with some exceptions. And scientific results are derived from rigorous methodology and discipline. For the most part I agree with him, and it&#039;s refreshing to read. Specially with the old Spanish speech used in the book that I&#039;m enjoying a lot.&lt;/p&gt;
&lt;p&gt;Where I don&#039;t agree with him is on his disdain of purely philosophical practice. He explains how the lack of practical implications leads to a waste of time. I agree that staying in the realm of the mind makes it difficult to extract significant achievements. But considering that our brains are the main instrument we use for our daily practice, I consider them essential as well.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Redefining Autonomous Data"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/redefining-autonomous-data#comment-2" />
            <id>https://noeldemartin.com/tasks/redefining-autonomous-data#comment-2</id>
            <published>2019-01-15T10:54:31+00:00</published>
            <updated>2019-01-15T10:54:31+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/redefining-autonomous-data#comment-2&quot;&gt;Redefining Autonomous Data&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I&#039;ve updated the readmes in the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/kinko&quot;&gt;Kinko&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/focus&quot;&gt;Focus&lt;/a&gt; repositories. They were my initial approach to Autonomous Data before learning about Solid. Since I don&#039;t think I&#039;ll be working on them for a while, I wanted to document the current status and indicate that they are not under development.&lt;/p&gt;
&lt;p&gt;I think they are still valuable for research purposes, and this will also be useful if I ever want to start working on them again.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Migrating noeldemartin.com to Docker"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/migrating-noeldemartincom-to-docker" />
            <id>https://noeldemartin.com/tasks/migrating-noeldemartincom-to-docker</id>
            <published>2019-01-08T11:32:19+00:00</published>
            <updated>2019-01-08T11:32:19+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/migrating-noeldemartincom-to-docker&quot;&gt;Migrating noeldemartin.com to Docker&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/migrating-noeldemartincom-to-docker&quot;&gt;Migrating noeldemartin.com to Docker&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I want to start migrating my server setup to Docker, so that it&#039;s easier to create or destroy services. The dream would be to eventually move into a container-based cloud provider, and forget about infrastructure as much as possible. But for now I&#039;ll stick to using Docker within a standard DigitalOcean droplet.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal" />
            <id>https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal</id>
            <published>2019-01-08T11:28:52+00:00</published>
            <updated>2019-01-08T11:28:52+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal&quot;&gt;Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/reading-los-tonicos-de-la-voluntad-by-santiago-ramon-y-cajal&quot;&gt;Reading Los Tónicos De La Voluntad by Santiago Ramón y Cajal&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I&#039;ve been meaning to read this book for a long time. I don&#039;t think I&#039;ve ever read anything from him, so it&#039;ll be a good start to see if I want to dig deeper.&lt;/p&gt;
&lt;p&gt;This book talks about rules and tips on how to do investigation. Which I&#039;m sure I can apply to learning and reasoning in general. I always evaluate my conclusions and put my knowledge to the test objectively, but I&#039;m sure there are many things I don&#039;t do properly. So I&#039;m looking forward to improve my approach.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Redefining Autonomous Data"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/redefining-autonomous-data" />
            <id>https://noeldemartin.com/tasks/redefining-autonomous-data</id>
            <published>2019-01-08T11:27:26+00:00</published>
            <updated>2019-01-08T11:27:26+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/redefining-autonomous-data&quot;&gt;Redefining Autonomous Data&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/redefining-autonomous-data&quot;&gt;Redefining Autonomous Data&lt;/a&gt;&lt;/p&gt;&lt;p&gt;A while ago I started working on a protocol that I called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/autonomous-data/&quot;&gt;Autonomous Data&lt;/a&gt;, but I recently stopped working on it to &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid&quot;&gt;learn Solid&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After working with Solid, I confirmed the philosophy is actually the same as the protocol I was creating. It differs only on implementation details. Since the philosophy is to give the control of the data to the user, it should be possible to migrate data between them.&lt;/p&gt;
&lt;p&gt;So I&#039;ve decided to transform the Autonomous Data protocol to a philosophy instead (I know calling it &amp;quot;a philosophy&amp;quot; is confusing, I&#039;ll search a better word). In reality that&#039;s all it was, because I still hadn&#039;t documented any of the implementation details. And I&#039;ll rename the implementation I was working on to another protocol compatible with the Autonomous Data philosophy.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Taking Seth Godin's Bootstrapper's Workshop"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-6" />
            <id>https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-6</id>
            <published>2019-01-01T11:57:04+00:00</published>
            <updated>2019-01-01T11:57:04+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-6&quot;&gt;Taking Seth Godin&#039;s Bootstrapper&#039;s Workshop&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-6&quot;&gt;Taking Seth Godin&#039;s Bootstrapper&#039;s Workshop&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Completed "Implementing a Task Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-12" />
            <id>https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-12</id>
            <published>2018-12-25T16:36:58+00:00</published>
            <updated>2018-12-25T16:36:58+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-12&quot;&gt;Implementing a Task Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-12&quot;&gt;Implementing a Task Manager using Solid&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Task Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-11" />
            <id>https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-11</id>
            <published>2018-12-25T16:36:49+00:00</published>
            <updated>2018-12-25T16:36:49+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-11&quot;&gt;Implementing a Task Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the last thing I needed to consider this task done: A logo!&lt;/p&gt;
&lt;p&gt;Yeah, I know.&lt;/p&gt;
&lt;p&gt;Anyways, at this point I consider this finished and I&#039;ll use the PWA for a while to see if it works as expected &amp;quot;in production&amp;quot;. You can find it &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/solid-focus&quot;&gt;here&lt;/a&gt;. I&#039;ll probably continue adding some features here and there.&lt;/p&gt;
&lt;p&gt;As per my conclusions regarding Solid. I can&#039;t say I&#039;ve reached any definitive conclusion yet, but I have learned quite a bit. I now have a better feel for how working with Solid&#039;s like. It&#039;s clear that it&#039;s still a very early stage for the project, a lot of essential pieces are still in development and I haven&#039;t seen a lot of activity outside of the core community. But the goals are aligned with what I wanted to achieve when I was developing my protocol, so I&#039;ll continue working on Solid for a while.&lt;/p&gt;
&lt;p&gt;There are a couple of things that worry me and I&#039;ll have to continue digging into:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Finding RDF Schemas and ontologies was more difficult than I expected, and I&#039;m not entirely happy with the current definitions I am using. This worries me because I consider a &amp;quot;task manager&amp;quot; to be a use case common enough that I expected definitions for this to be established. Of course I can always create my own definitions or mix and match from different schemas, but that kills the idea I had of interoperability.&lt;/li&gt;
&lt;li&gt;The learning curve and the community are not great at the moment. This can be attributed to being at an early stage, but if this doesn&#039;t change some years from now I can&#039;t see Solid becoming something that anyone else besides enthusiasts use. And that would be a bad sign. If this doesn&#039;t happen with Solid given the exposure and people behind it, it won&#039;t happen with anything else that tackles data ownership.&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Task Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-10" />
            <id>https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-10</id>
            <published>2018-12-22T20:29:18+00:00</published>
            <updated>2018-12-22T20:29:18+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-10&quot;&gt;Implementing a Task Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Finally I went around improving the network usage. I used two strategies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/solid-spec/blob/master/api-rest.md#globbing-inlining-on-get&quot;&gt;Globbing&lt;/a&gt;:&lt;/strong&gt; As I explained previously, this is currently the best way to get a bunch of records in one request from a solid POD. At some point SPARQL should be supported and replace this for most scenarios. Something new I found that I wasn&#039;t expecting is that globbing only works for resources, not containers (meaning you can get a list of all the resources within a container, excluding containers, so it isn&#039;t recursive).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lazy Loading:&lt;/strong&gt; In order to improve the requests overall, regardless of batching or not, sections are only loaded after being visited. Instead of loading everything at once as I was doing until now.&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Task Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-9" />
            <id>https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-9</id>
            <published>2018-12-17T23:21:56+00:00</published>
            <updated>2018-12-17T23:21:56+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-9&quot;&gt;Implementing a Task Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I fixed a bug and set up some tests using my favorite CD/CI tool: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://semaphoreci.com/&quot;&gt;Semaphore CI&lt;/a&gt;. I had seen they&#039;d released a new version of their platform and was excited to try it out... Until I found out the new version only works installing a CLI :/.&lt;/p&gt;
&lt;p&gt;Unfortunatelly, that&#039;s a no go for me. I&#039;ll continue using the old version for a while and let&#039;s see where it goes. It isn&#039;t that I can&#039;t install anything, it&#039;s just that I don&#039;t want any intrusive code running in my machine when the old version is working perfectly fine (actually they only need to access github, so I&#039;m not sure why this new requirement...).&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Completed "Reading Musashi by Eiji Yoshikawa"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa#comment-5" />
            <id>https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa#comment-5</id>
            <published>2018-12-13T23:55:56+00:00</published>
            <updated>2018-12-13T23:55:56+00:00</updated>
            <summary type="html">
                Completed &lt;a href=&quot;https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa#comment-5&quot;&gt;Reading Musashi by Eiji Yoshikawa&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just completed the task &lt;a href=&quot;https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa#comment-5&quot;&gt;Reading Musashi by Eiji Yoshikawa&lt;/a&gt;.&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Musashi by Eiji Yoshikawa"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa#comment-4" />
            <id>https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa#comment-4</id>
            <published>2018-12-13T23:55:41+00:00</published>
            <updated>2018-12-13T23:55:41+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa#comment-4&quot;&gt;Reading Musashi by Eiji Yoshikawa&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;After looking over my notes, I decided to publish some of them in a &lt;a href=&quot;https://noeldemartin.com/blog/lessons-learned-musashi-by-eiji-yoshikawa&quot;&gt;blog post&lt;/a&gt;. I&#039;d have liked to use some images from the manga Vagabond, but I couldn&#039;t find anything good that was available without copyright infringements. So I ended up using the image that&#039;s found in Musashi&#039;s wikipedia page. But you should &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://duckduckgo.com/?q=vagabond+takehiko+inoue+illustrations&amp;amp;atb=v1-1&amp;amp;t=h_&amp;amp;iar=images&amp;amp;iax=images&amp;amp;ia=images&quot;&gt;check them out&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;I see myself coming back to review this book at some point, because it was so awesome. But for now, that&#039;s it for this Task.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "Lessons Learned: Musashi by Eiji Yoshikawa"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/lessons-learned-musashi-by-eiji-yoshikawa" />
            <id>https://noeldemartin.com/blog/lessons-learned-musashi-by-eiji-yoshikawa</id>
            <published>2018-12-13T22:53:31+00:00</published>
            <updated>2018-12-13T22:53:31+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/lessons-learned-musashi-by-eiji-yoshikawa&quot;&gt;Lessons Learned: Musashi by Eiji Yoshikawa&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/lessons-learned-musashi-by-eiji-yoshikawa&quot;&gt;Lessons Learned: Musashi by Eiji Yoshikawa&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Task Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-8" />
            <id>https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-8</id>
            <published>2018-12-08T00:03:28+00:00</published>
            <updated>2018-12-08T00:03:28+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-8&quot;&gt;Implementing a Task Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;You know when sometimes you get wrapped up in something completely irrelevant to the project at hand? Well this happened today, &lt;a href=&quot;https://noeldemartin.com/blog/order-vs-chaos&quot;&gt;not that it&#039;s a problem&lt;/a&gt; or that it took long.&lt;/p&gt;
&lt;p&gt;I was using an SVG loader I got from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://samherbert.net/svg-loaders&quot;&gt;this repository&lt;/a&gt;. And it worked fine, but I noticed how sometimes the animation would be stuck and I suspected that it had something to do with Javascript loading. Which is counterproductive, given the job of that loader was to show until the app was ready.&lt;/p&gt;
&lt;p&gt;Turns out the problem was with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/SVG/SVG_animation_with_SMIL&quot;&gt;SVG SMIL animations&lt;/a&gt;. They were deprecated, then they weren&#039;t, and now I don&#039;t even know what&#039;s the status. So I decided to move the animation to CSS. It wasn&#039;t straightforward because they don&#039;t share the same syntax nor the same operations. You can see how I did it in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus/commit/643d38543591977da5f9c9f55886931c22b607af&quot;&gt;this commit&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Taking Seth Godin's Bootstrapper's Workshop"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-5" />
            <id>https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-5</id>
            <published>2018-12-06T13:39:13+00:00</published>
            <updated>2018-12-06T13:39:13+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-5&quot;&gt;Taking Seth Godin&#039;s Bootstrapper&#039;s Workshop&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I completed Lesson 10, in which I made a summary of what I learned through the workshop. My top takeaways were the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Smallest Viable Audience:&lt;/strong&gt; Focus on the smallest viable audience, not the biggest. This will allow you to create real connections and not fall into the trap of pleasing everyone. This concept also ties neatly with the much-quoted concept of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://kk.org/thetechnium/1000-true-fans/&quot;&gt;1000 true fans&lt;/a&gt; by kevin kelly.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tension:&lt;/strong&gt; Quoting text from the workshop: &amp;quot;Tension is what we feel when something might not work and what we feel when we might be left behind or left out&amp;quot;. I found this concept important to understand if a product or service is &amp;quot;good&amp;quot;. I&#039;d always thought about value proposition, but keeping this in mind also accounts for the context where a product will be served.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Assets &amp;amp; Compounding:&lt;/strong&gt; I always thought compounding is very important and it&#039;s actually one of the keys to success. In the workshop the concept of assets is emphasized as &amp;quot;owning something makes the work you are doing easier over time&amp;quot;. I found it useful to see them as the materialization of the compounding effect.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to dig deeper into these concepts and everything I learned, Seth released a new book last month called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://seths.blog/tim&quot;&gt;This is Marketing&lt;/a&gt;. And for what I&#039;ve heard in interviews and reading the abstract, it seems to cover the same topics. So I&#039;ll definitely read it myself at some point.&lt;/p&gt;
&lt;p&gt;If you prefer to read bite-sized content, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://seths.blog&quot;&gt;Seth&#039;s blog&lt;/a&gt; has got many posts talking about all of this, so head to the search page and start typing away.&lt;/p&gt;
&lt;p&gt;The workshop will stay active until January 1st 2019, so I&#039;ll close this task then.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Musashi by Eiji Yoshikawa"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa#comment-3" />
            <id>https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa#comment-3</id>
            <published>2018-12-05T00:57:55+00:00</published>
            <updated>2018-12-05T00:57:55+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa#comment-3&quot;&gt;Reading Musashi by Eiji Yoshikawa&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just finished reading this book and it&#039;s for sure one of the best I&#039;ve ever read. I&#039;m even considering replacing my favourite book: the Sherlock Holmes Anthology. But it&#039;s too soon to say.&lt;/p&gt;
&lt;p&gt;I&#039;m not closing the task yet because I want to review the notes I took and do some summary. The book is very long and there are a ton of gems within, so it&#039;s only fair to take some time to digest it.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Task Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-7" />
            <id>https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-7</id>
            <published>2018-12-02T15:03:00+00:00</published>
            <updated>2018-12-02T15:03:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-7&quot;&gt;Implementing a Task Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;And it&#039;s done! The app is working both locally and using my solid.community account. You can head to the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus&quot;&gt;github repo&lt;/a&gt; if you want to check it out.&lt;/p&gt;
&lt;p&gt;I&#039;m still not closing this task because there are still some things to improve (globbing for better performance, UI tweaks, RDF types, etc.). But I would say the most important part has been finished.&lt;/p&gt;
&lt;p&gt;Once I&#039;ve completed what&#039;s left I&#039;ll close this and head to gitter and my socials to ask for feedback.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Task Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-6" />
            <id>https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-6</id>
            <published>2018-11-30T00:13:45+00:00</published>
            <updated>2018-11-30T00:13:45+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-6&quot;&gt;Implementing a Task Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I have completed a first version were both offline and Solid storages are working locally, but the application is throwing an error when logging with my solid.community account. So I&#039;ll have to see what&#039;s different from my local Solid server for development.&lt;/p&gt;
&lt;p&gt;I have also deployed a version to github pages, so if you are curious to see how it looks you can visit this page: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/solid-focus/&quot;&gt;noeldemartin.github.io/solid-focus&lt;/a&gt;. But keep in mind that you&#039;ll just be able to use the offline option at the moment. I&#039;ll post an update when I get it working correctly!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Taking Seth Godin's Bootstrapper's Workshop"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-4" />
            <id>https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-4</id>
            <published>2018-11-29T11:49:37+00:00</published>
            <updated>2018-11-29T11:49:37+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-4&quot;&gt;Taking Seth Godin&#039;s Bootstrapper&#039;s Workshop&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Lesson 9 completed, only one left!&lt;/p&gt;
&lt;p&gt;This time Seth asked us to write a business plan. I have to say, I have a love/hate relationship with business plans. They can be one of the best things you do to provide clarity or they can be one of the worst things to derrail you from your focus.&lt;/p&gt;
&lt;p&gt;But the way Seth presented it is good :). For this workshop I chose to explore the possibility of creating an arquitecture of federated storage on the web (you can read more about it on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid&quot;&gt;this task&lt;/a&gt;). The problem I&#039;m identifying is of course monetization, given that this is more a pet project than something I want to generate revenue with. But the lessons learned on this workshop are still valuable. In terms of knowing how to do bootstrapping in the future and how to better tackle my side projects.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Task Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-5" />
            <id>https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-5</id>
            <published>2018-11-26T00:22:17+00:00</published>
            <updated>2018-11-26T00:22:17+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-5&quot;&gt;Implementing a Task Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I&#039;ve been working in something that lead me stray from the path to complete this task, but I think it was worth it to explore possibilities.&lt;/p&gt;
&lt;p&gt;The first thing I did when I started working on this task manager is storing user data in local storage, in order to have the skeleton of the app before getting into anything Solid specific. I did it in such a way that everything was behind an interface, so I just had to reimplement the interfaces using Solid.&lt;/p&gt;
&lt;p&gt;And what I realized today, is that it wouldn&#039;t be too difficult to maintain both implementations, and let users decide whether to use local storage or Solid (or potentially other backends in the future). This is obviously not something to take lightly, but since this is only an exploratory task, to learn Solid and alternative architectures, I thought it&#039;d be a good idea to do it and see how it goes.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Task Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-4" />
            <id>https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-4</id>
            <published>2018-11-23T00:24:04+00:00</published>
            <updated>2018-11-23T00:24:04+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-4&quot;&gt;Implementing a Task Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;After some more digging, I found that SPARQL is not supported yet! Which makes performance a problem for applications with a lot of data (like a Task Manager). Instead, they suggest to use Globbing for the short term.&lt;/p&gt;
&lt;p&gt;I guess this was to be expected, since Solid hasn&#039;t been declared as &amp;quot;production-ready&amp;quot;, as far as I know. And this is the kind of thing I wanted to learn doing this project. So, good, let&#039;s see how this evolves and what I have when I complete this MVP.&lt;/p&gt;
&lt;p&gt;I have been chatting with the guys working on Solid using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://gitter.im/solid/app-development&quot;&gt;gitter&lt;/a&gt;, and they are quite responsive :D. I opened an issue in the GitHub repo to keep track of this: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/node-solid-server/issues/962&quot;&gt;https://github.com/solid/node-solid-server/issues/962&lt;/a&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Taking Seth Godin's Bootstrapper's Workshop"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-3" />
            <id>https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-3</id>
            <published>2018-11-21T21:56:00+00:00</published>
            <updated>2018-11-21T21:56:00+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-3&quot;&gt;Taking Seth Godin&#039;s Bootstrapper&#039;s Workshop&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Lesson 8 completed. This one was focused on which assets I&#039;m creating with my work that I can leverage later.&lt;/p&gt;
&lt;p&gt;I realized it isn&#039;t as straightforward as one may think, because there are many assets that end up being useless and some things we regard as unimportant can end up yielding the best results.&lt;/p&gt;
&lt;p&gt;So yeah I&#039;m not sure of that, but at least I know this &lt;a href=&quot;https://noeldemartin.com/blog/open-productivity&quot;&gt;Open Productivity&lt;/a&gt; approach is an asset that I&#039;m building. I did this kind of reflections before, but I wasn&#039;t posting them anywhere, so they were &amp;quot;lost&amp;quot; in a sense.&lt;/p&gt;
&lt;p&gt;Now you can read this and it can be useful for someone else :D.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Reading Musashi by Eiji Yoshikawa"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa#comment-2" />
            <id>https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa#comment-2</id>
            <published>2018-11-20T11:34:04+00:00</published>
            <updated>2018-11-20T11:34:04+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa#comment-2&quot;&gt;Reading Musashi by Eiji Yoshikawa&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Well, it is time. I finished part 6 so I&#039;ll now start reading the last one: Book VII - The Perfect Light.&lt;/p&gt;
&lt;p&gt;I&#039;ll surely miss reading Musashi. Some people don&#039;t enjoy long stories, but I&#039;m quite the opposite. Once I become familiar with the characters, as long as it maintains its quality, I wouldn&#039;t mind it running forever.&lt;/p&gt;
&lt;p&gt;Of course, it&#039;s very difficult to maintain quality for long before it starts degrading. That&#039;s why I believe authors should end on their own terms, instead of dragging it. And there&#039;s no denying the value of a good ending.&lt;/p&gt;
&lt;p&gt;Looking forward to the climax!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Task Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-3" />
            <id>https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-3</id>
            <published>2018-11-19T00:56:58+00:00</published>
            <updated>2018-11-19T00:56:58+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-3&quot;&gt;Implementing a Task Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I finished the first version that stores tasks in a Solid POD (including a hierarchy of lists and workspaces). The code for this project can be found on this github repo: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/solid-focus&quot;&gt;github.com/NoelDeMartin/solid-focus&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I still have many things to complete before I can consider this MVP &amp;quot;done&amp;quot;. For example, making more efficient requests (I didn&#039;t succeed on querying with SPARQL yet), validating my use of Solid standards with community members, adding more RDF attributes, etc.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Taking Seth Godin's Bootstrapper's Workshop"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-2" />
            <id>https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-2</id>
            <published>2018-11-16T23:48:08+00:00</published>
            <updated>2018-11-16T23:48:08+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop#comment-2&quot;&gt;Taking Seth Godin&#039;s Bootstrapper&#039;s Workshop&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I completed lesson 7 (of 10). One of the main points that made me ponder was thinking about &amp;quot;status&amp;quot;. Seth has a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.akimbo.me/blog/episode-2-status-roles&quot;&gt;whole podcast episode&lt;/a&gt; talking about this, and looking back I realize I need to listen again because I didn&#039;t learn properly.&lt;/p&gt;
&lt;p&gt;I assumed this doesn&#039;t affect me as much, because I try not to make decisions or let myself be influenced by &amp;quot;status&amp;quot; (I think that&#039;s similar to discrimination). Like Seneca &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.quotes.net/quote/8847&quot;&gt;said&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I shall never be ashamed of citing a bad actor if the line is good.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I try to judge and make decisions based on a fundamental level, not the source.&lt;/p&gt;
&lt;p&gt;But the reality is that I am affected by this, even if it is on a subsconcious level. And status are not only limited to what I thought, affiliations and feeling identified with something is part of the &amp;quot;status roles&amp;quot; Seth talks about. It&#039;s also important to be aware and understand them if I want my work to help other people.&lt;/p&gt;
&lt;p&gt;So yes, I&#039;ll listen to that episode again.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Commented on "Implementing a Task Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-2" />
            <id>https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-2</id>
            <published>2018-11-15T00:41:13+00:00</published>
            <updated>2018-11-15T00:41:13+00:00</updated>
            <summary type="html">
                Commented on &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid#comment-2&quot;&gt;Implementing a Task Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Since I started looking into Solid, I realized it&#039;s built on top of many existing technologies I didn&#039;t know much about. These are some basic concepts I&#039;d recommend getting familiar with before learning Solid:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/TR/rdf11-primer&quot;&gt;Resource Description Framework (RDF) Primer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/TR/2014/REC-rdf-schema-20140225&quot;&gt;RDF Schema&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/TR/turtle&quot;&gt;Turtle Serialization Format&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/TR/ldp-primer&quot;&gt;Linked Data Platform (LDP) Primer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/TR/rdf-sparql-query&quot;&gt;SPARQL Query Language&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And using this website you can find vocabularies to define your data models: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://lov.linkeddata.es&quot;&gt;https://lov.linkeddata.es&lt;/a&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Implementing a Task Manager using Solid"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid" />
            <id>https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid</id>
            <published>2018-11-12T22:23:42+00:00</published>
            <updated>2018-11-12T22:23:42+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid&quot;&gt;Implementing a Task Manager using Solid&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/implementing-a-task-manager-using-solid&quot;&gt;Implementing a Task Manager using Solid&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Some months ago I started working on a protocol to build applications that decouple storage from service providers. You can read about that here: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/autonomous-data&quot;&gt;https://noeldemartin.github.io/autonomous-data&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Well, one month ago Tim Berners-Lee (inventor of the World Wide Web) &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://medium.com/@timberners_lee/one-small-step-for-the-web-87f92217d085&quot;&gt;announced&lt;/a&gt; he&#039;s been working on a project called Solid, which is very similar to what I had in mind.&lt;/p&gt;
&lt;p&gt;So I&#039;ll start working on a simple task manager using Solid to get my feet wet, and I&#039;ll decide whether to focus my efforts on Solid or continue developing my protocol.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Started "Taking Seth Godin's Bootstrapper's Workshop"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop" />
            <id>https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop</id>
            <published>2018-11-12T22:19:53+00:00</published>
            <updated>2018-11-12T22:19:53+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop&quot;&gt;Taking Seth Godin&#039;s Bootstrapper&#039;s Workshop&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop&quot;&gt;Taking Seth Godin&#039;s Bootstrapper&#039;s Workshop&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I joined &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://thebootstrappersworkshop.com/&quot;&gt;TBW&lt;/a&gt; 2 months ago, and it&#039;s been great so far. I decided to take part because I&#039;ve been enjoying Seth Godin&#039;s content a lot, specially his blog and podcast. The format of the workshop also got my attention, with a focus on asynchronous communication and leveraging the cohort.&lt;/p&gt;
&lt;p&gt;There is still ~1.5 months to go, so I&#039;ll be sure to get the best out of it.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "Open Productivity"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/open-productivity" />
            <id>https://noeldemartin.com/blog/open-productivity</id>
            <published>2018-11-12T21:54:32+00:00</published>
            <updated>2018-11-12T21:54:32+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/open-productivity&quot;&gt;Open Productivity&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/open-productivity&quot;&gt;Open Productivity&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Started "Reading Musashi by Eiji Yoshikawa"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa" />
            <id>https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa</id>
            <published>2018-11-12T16:30:49+00:00</published>
            <updated>2018-11-12T16:30:49+00:00</updated>
            <summary type="html">
                Started &lt;a href=&quot;https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa&quot;&gt;Reading Musashi by Eiji Yoshikawa&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just started a new task: &lt;a href=&quot;https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa&quot;&gt;Reading Musashi by Eiji Yoshikawa&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I first heard about this book on Jocko Willink&#039;s podcast &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://jockopodcast.com/2016/11/23/50-with-tim-ferriss-darkness-how-to-stay-on-the-path-last-days-of-life-what-to-do-back-up-plans-misconceptions/&quot;&gt;episode 50&lt;/a&gt;. Him and Tim Ferriss recommended it effusively. Considering that I enjoy their content and I love japanese culture, I decided to give it a shot.&lt;/p&gt;
&lt;p&gt;Man, was it a good choice. The book is very long (1000+ pages), but I&#039;m enjoying it a lot and I don&#039;t want it to end. It&#039;s divided in 7 parts and I&#039;m currently reading the 6th.&lt;/p&gt;
&lt;p&gt;I didn&#039;t realize it at first, but turns out one of my favourite manga, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Vagabond_%28manga%29&quot;&gt;Vagabond&lt;/a&gt;, is based on the book. I love Takehiko Inoue&#039;s artwork, so it&#039;s awesome to recall his drawings while reading the book.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">Published "Finding Opportunities that Fit Your Values"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/finding-opportunities-that-fit-your-values" />
            <id>https://noeldemartin.com/blog/finding-opportunities-that-fit-your-values</id>
            <published>2018-10-01T02:00:00+00:00</published>
            <updated>2018-10-01T02:00:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/finding-opportunities-that-fit-your-values&quot;&gt;Finding Opportunities that Fit Your Values&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/finding-opportunities-that-fit-your-values&quot;&gt;Finding Opportunities that Fit Your Values&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Published "Blockchains: Innovation or Sham?"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/blockchains-innovation-or-sham" />
            <id>https://noeldemartin.com/blog/blockchains-innovation-or-sham</id>
            <published>2018-08-20T02:00:00+00:00</published>
            <updated>2018-08-20T02:00:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/blockchains-innovation-or-sham&quot;&gt;Blockchains: Innovation or Sham?&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/blockchains-innovation-or-sham&quot;&gt;Blockchains: Innovation or Sham?&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Published "Blockchains: How do they work?"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/blockchains-how-do-they-work" />
            <id>https://noeldemartin.com/blog/blockchains-how-do-they-work</id>
            <published>2018-08-13T02:00:00+00:00</published>
            <updated>2018-08-13T02:00:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/blockchains-how-do-they-work&quot;&gt;Blockchains: How do they work?&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/blockchains-how-do-they-work&quot;&gt;Blockchains: How do they work?&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Published "Order vs Chaos"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/order-vs-chaos" />
            <id>https://noeldemartin.com/blog/order-vs-chaos</id>
            <published>2018-06-26T02:00:00+00:00</published>
            <updated>2018-06-26T02:00:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/order-vs-chaos&quot;&gt;Order vs Chaos&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/order-vs-chaos&quot;&gt;Order vs Chaos&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Published "Programming and Human Languages"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/programming-and-human-languages" />
            <id>https://noeldemartin.com/blog/programming-and-human-languages</id>
            <published>2018-04-11T02:00:00+00:00</published>
            <updated>2018-04-11T02:00:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/programming-and-human-languages&quot;&gt;Programming and Human Languages&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/programming-and-human-languages&quot;&gt;Programming and Human Languages&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Published "Let's Agree to Disagree"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/let-s-agree-to-disagree" />
            <id>https://noeldemartin.com/blog/let-s-agree-to-disagree</id>
            <published>2018-03-22T03:00:00+00:00</published>
            <updated>2018-03-22T03:00:00+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/let-s-agree-to-disagree&quot;&gt;Let&#039;s Agree to Disagree&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/let-s-agree-to-disagree&quot;&gt;Let&#039;s Agree to Disagree&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Presented "Awesome Tools 2017"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="/slides/awesome-tools-2017" />
            <id>/slides/awesome-tools-2017</id>
            <published>2017-06-09T10:00:00+00:00</published>
            <updated>2017-06-09T10:00:00+00:00</updated>
            <summary type="html">
                Presented &lt;a href=&quot;/slides/awesome-tools-2017&quot;&gt;Awesome Tools 2017&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;Today I&#039;m giving a talk at Tecnocampus Mataró: &lt;a href=&quot;/slides/awesome-tools-2017&quot;&gt;Awesome Tools 2017&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Published "Rigid-Flexible Planning"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/rigid-flexible-planning" />
            <id>https://noeldemartin.com/blog/rigid-flexible-planning</id>
            <published>2015-09-22T11:32:51+00:00</published>
            <updated>2015-09-22T11:32:51+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/rigid-flexible-planning&quot;&gt;Rigid-Flexible Planning&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/rigid-flexible-planning&quot;&gt;Rigid-Flexible Planning&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Published "In the search of value"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/in-the-search-of-value" />
            <id>https://noeldemartin.com/blog/in-the-search-of-value</id>
            <published>2015-05-12T11:42:39+00:00</published>
            <updated>2015-05-12T11:42:39+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/in-the-search-of-value&quot;&gt;In the search of value&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/in-the-search-of-value&quot;&gt;In the search of value&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Published "Everything is a Draft"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/everything-is-a-draft" />
            <id>https://noeldemartin.com/blog/everything-is-a-draft</id>
            <published>2015-02-25T20:39:26+00:00</published>
            <updated>2015-02-25T20:39:26+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/everything-is-a-draft&quot;&gt;Everything is a Draft&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/everything-is-a-draft&quot;&gt;Everything is a Draft&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Published "Call for Mentor / Mastermind"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/call-for-mentor-mastermind" />
            <id>https://noeldemartin.com/blog/call-for-mentor-mastermind</id>
            <published>2015-01-30T13:21:19+00:00</published>
            <updated>2015-01-30T13:21:19+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/call-for-mentor-mastermind&quot;&gt;Call for Mentor / Mastermind&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/call-for-mentor-mastermind&quot;&gt;Call for Mentor / Mastermind&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Published "The Power of Ignorance"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/the-power-of-ignorance" />
            <id>https://noeldemartin.com/blog/the-power-of-ignorance</id>
            <published>2015-01-09T19:40:15+00:00</published>
            <updated>2015-01-09T19:40:15+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/the-power-of-ignorance&quot;&gt;The Power of Ignorance&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/the-power-of-ignorance&quot;&gt;The Power of Ignorance&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Published "The Three Pillars of Product Success"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/the-three-pillars-of-product-success" />
            <id>https://noeldemartin.com/blog/the-three-pillars-of-product-success</id>
            <published>2014-12-18T15:25:55+00:00</published>
            <updated>2014-12-18T15:25:55+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/the-three-pillars-of-product-success&quot;&gt;The Three Pillars of Product Success&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/the-three-pillars-of-product-success&quot;&gt;The Three Pillars of Product Success&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Published "The Curse of Being A Developer"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/the-curse-of-being-a-developer" />
            <id>https://noeldemartin.com/blog/the-curse-of-being-a-developer</id>
            <published>2014-12-03T19:36:55+00:00</published>
            <updated>2014-12-03T19:36:55+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/the-curse-of-being-a-developer&quot;&gt;The Curse of Being A Developer&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/the-curse-of-being-a-developer&quot;&gt;The Curse of Being A Developer&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Published "My AppsWorld 2014 Digest"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/my-appsworld-2014-digest" />
            <id>https://noeldemartin.com/blog/my-appsworld-2014-digest</id>
            <published>2014-11-19T12:45:20+00:00</published>
            <updated>2014-11-19T12:45:20+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/my-appsworld-2014-digest&quot;&gt;My AppsWorld 2014 Digest&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/my-appsworld-2014-digest&quot;&gt;My AppsWorld 2014 Digest&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
            <entry>
            <title type="text">Published "Starting Something New"</title>
            <author>
                <name>Noel De Martin</name>
                <email>hey@noeldemartin.com</email>
                <uri>https://noeldemartin.com/</uri>
            </author>
            <link href="https://noeldemartin.com/blog/starting-something-new" />
            <id>https://noeldemartin.com/blog/starting-something-new</id>
            <published>2014-11-10T09:41:19+00:00</published>
            <updated>2014-11-10T09:41:19+00:00</updated>
            <summary type="html">
                Published &lt;a href=&quot;https://noeldemartin.com/blog/starting-something-new&quot;&gt;Starting Something New&lt;/a&gt;
            </summary>
            <content type="html">
                &lt;p&gt;I just published a new blog post: &lt;a href=&quot;https://noeldemartin.com/blog/starting-something-new&quot;&gt;Starting Something New&lt;/a&gt;&lt;/p&gt;
            </content>
        </entry>
    </feed>
