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

<feed xmlns="http://www.w3.org/2005/Atom">
    <title type="text">Noel De Martin</title>
    <subtitle type="text">
        Problem Solver, Software Architect, Entrepreneur
    </subtitle>
    <updated>
        2021-07-13T15:00:00+00:00
    </updated>
    <id>https://noeldemartin.com/blog</id>
    <link type="text/html" href="https://noeldemartin.com/blog" />
    <link type="application/xml" rel="self" href="https://noeldemartin.com/blog/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">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">
                &lt;p&gt;In the last few weeks, there has been a lot of talk about the end of software development. We&#039;re entering a period where software is easier to make than ever before, and many are proclaiming that soon we won&#039;t need to look at code anymore.&lt;/p&gt;
&lt;p&gt;I&#039;m also very excited by the idea that anyone can make their own software, but there is a problem. The design choices that come baked-in with most of these tools are not great. If you ask an LLM to vibe-code an app, it&#039;s going to inherit all the faults of the previous generation.&lt;/p&gt;
&lt;p&gt;In the age of AI, we need better defaults.&lt;/p&gt;
&lt;a href=&quot;https://unsplash.com/photos/a-man-dressed-in-armor-and-holding-a-shield-EZ0xWAcowTM&quot; target=&quot;_blank&quot; aria-hidden=&quot;true&quot; title=&quot;Image by Matt Benson on Unsplash.com&quot;&gt;
    
&lt;/a&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/software-ideals-in-the-age-of-ai"
            >
                &lt;p&gt;In the last few weeks, there has been a lot of talk about the end of software development. We&#039;re entering a period where software is easier to make than ever before, and many are proclaiming that soon we won&#039;t need to look at code anymore.&lt;/p&gt;
&lt;p&gt;I&#039;m also very excited by the idea that anyone can make their own software, but there is a problem. The design choices that come baked-in with most of these tools are not great. If you ask an LLM to vibe-code an app, it&#039;s going to inherit all the faults of the previous generation.&lt;/p&gt;
&lt;p&gt;In the age of AI, we need better defaults.&lt;/p&gt;
&lt;a href=&quot;https://unsplash.com/photos/a-man-dressed-in-armor-and-holding-a-shield-EZ0xWAcowTM&quot; target=&quot;_blank&quot; aria-hidden=&quot;true&quot; title=&quot;Image by Matt Benson on Unsplash.com&quot;&gt;
    &lt;img src=&quot;/img/blog/SoftwareIdeals.png&quot; alt=&quot;&quot;&gt;
&lt;/a&gt;
&lt;h2 id=&quot;my-software-ideals&quot;&gt;&lt;a href=&quot;#my-software-ideals&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;My Software Ideals&lt;/h2&gt;
&lt;p&gt;A few months ago, I gave &lt;a href=&quot;https://noeldemartin.com/local-first&quot; target=&quot;_blank&quot;&gt;a short presentation&lt;/a&gt; talking about my side-projects, and one of the slides included a list of my software ideals. But, what are software ideals?&lt;/p&gt;
&lt;p&gt;Basically, they are the guiding principles that shape the architecture and design of the software I build. As well as the one I&#039;d want to use. Calling them &amp;quot;features&amp;quot; would be a disservice, because they are a lot more than that. They convey my platonic ideal for what software should be.&lt;/p&gt;
&lt;p&gt;This concept had been simmering in my mind for years, but this was the first time I actually wrote them down. After some deliberation, I came up with the following 3.&lt;/p&gt;
&lt;h3 id=&quot;universality&quot;&gt;&lt;a href=&quot;#universality&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Universality&lt;/h3&gt;
&lt;p&gt;There are many ways to interpret this idea. Crucially, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/mission/accessibility/&quot;&gt;it&#039;s one of the core tenets of the Web&lt;/a&gt;. But to me, it means that I should be able to use my software anywhere. In any device, at any location.&lt;/p&gt;
&lt;p&gt;The first point seems easy enough. If the software is built using web technologies, it most likely can run everywhere. And yet, I routinely find vendors perverting this idea. Just last month I was told that I wouldn&#039;t be able to access my savings account &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.reddit.com/r/MyInvestorES/comments/1qdcdpf/obligaci%C3%B3n_de_usar_app/&quot;&gt;without installing an app in my phone&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But the second concept is more tricky. So much of our software relies on having an internet connection, that without it we&#039;re left with a rather useless device. The pinnacle of human invention and ingenuity, the &amp;quot;bicycle for the mind&amp;quot;, turns into a beautiful brick.&lt;/p&gt;
&lt;p&gt;It is, of course, possible to work around it (if you prepare in advance). But most of the industry is moving in this direction, and the solution doesn&#039;t come for free. Software has to be designed explicitly with that goal in mind. However, it&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.inkandswitch.com/essay/local-first/&quot;&gt;not as difficult as it may seem&lt;/a&gt;. Software makers just need to care.&lt;/p&gt;
&lt;p&gt;But this isn&#039;t only important when we&#039;re offline, given that it&#039;s not as common these days. Requiring an internet connection often means that we depend on someone else&#039;s computer (aka servers, or &amp;quot;the cloud&amp;quot;). And &lt;em&gt;that&lt;/em&gt;, is a problem.&lt;/p&gt;
&lt;h3 id=&quot;sovereignity&quot;&gt;&lt;a href=&quot;#sovereignity&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Sovereignity&lt;/h3&gt;
&lt;p&gt;A while ago, I only chose software based on the user experience. And it resulted in a lot of heartbreak. Despite my technological inclinations, I&#039;m not someone who changes software very often (I&#039;m still using Firefox!). But during the first decade of my computer life, some of my favorite apps disappeared. Wunderlist, Sunrise Calendar, Google Reader, Evernote Food, and many more.&lt;/p&gt;
&lt;p&gt;The funny thing is that I never wanted new features. In fact, those were often unwelcome. If these apps hadn&#039;t vanished, I&#039;d probably still be using them today. But somehow, we&#039;ve accepted that software can be taken away. Unlike &lt;a href=&quot;https://noeldemartin.com/blog/skeuomorphic-software&quot;&gt;everything else in the real world&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But sovereignity is not limited to keeping software forever. It also means having real ownership of your data. There are many reasons for that. Certainly, I started this journey thinking on privacy. But there are also practical reasons. I often want to share data between apps. And, in the rare case when I do change software, migrating is always a pain (often impossible).&lt;/p&gt;
&lt;p&gt;If you can&#039;t access &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=OM6XIICm_qo&quot;&gt;the raw data&lt;/a&gt;, it&#039;s not really yours.&lt;/p&gt;
&lt;h3 id=&quot;interoperability&quot;&gt;&lt;a href=&quot;#interoperability&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Interoperability&lt;/h3&gt;
&lt;p&gt;If you&#039;ve been following my content for a while, you may be thinking that I sound like a broken record. But yes, I think &lt;a href=&quot;https://noeldemartin.com/solid-world-2025&quot; target=&quot;_blank&quot;&gt;interoperability is that important&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I believe that this is the software property people would value the most, if only they thought it was possible. If you could travel to a parallel dimenson where everything was interoperable, I can assure you that coming back here would be like going back to the stone age. But most people don&#039;t even question the status quo, because they think this doesn&#039;t happen for technical limitations. However, as I&#039;ve written at length before, &lt;a href=&quot;https://noeldemartin.com/blog/what-technology-wants&quot; target=&quot;_blank&quot;&gt;it has nothing to do with that&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Actually, I did travel to a parallel dimension. In 2024, I spent a couple of weeks in China, and got to experience the WeChat ecosystem. They call it &amp;quot;the everything app&amp;quot; for a reason. I could even use it to operate a washing machine in my hotel, and get a push notification when the laundry was done. Of course, it wasn&#039;t ideal that I didn&#039;t own any of my data, and everything was run on a centralized system. But in terms of user experience, it was great.&lt;/p&gt;
&lt;p&gt;Wouldn&#039;t it be nice if all the applications you build with AI could share the same underlying data?&lt;/p&gt;
&lt;h2 id=&quot;the-age-of-ai&quot;&gt;&lt;a href=&quot;#the-age-of-ai&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The Age of AI&lt;/h2&gt;
&lt;p&gt;I have been thinking about these ideals for a while, and now they&#039;re more important than ever. People are starting to delegate their decisions to an AI, and that&#039;s only going to become more common. Unfortunately, most of the solutions LLMs come up with are very much against these ideals. The only one that works (sometimes) is Universality, as in &amp;quot;run it anywhere&amp;quot;. Everything else, is often ignored.&lt;/p&gt;
&lt;p&gt;Sure, there will always be software makers who care. And I don&#039;t think AI can replace a developer completely (yet?). But I also share the excitement about anyone being able to make their own software. In the next few years, I hope we get a lot of &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;.&lt;/p&gt;
&lt;p&gt;However, if we&#039;re going to democratize software making, shouldn&#039;t people build apps that are aligned with their ideals? I could understand vendors making selfish decisions before (even if I don&#039;t agree with them). But if people are going to make their own software, they shouldn&#039;t be shooting themselves in the foot.&lt;/p&gt;
&lt;h3 id=&quot;my-toolbox&quot;&gt;&lt;a href=&quot;#my-toolbox&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;My toolbox&lt;/h3&gt;
&lt;p&gt;Since I started making my own apps in 2019, I have been seeking for an architecture that allows me to live up to these ideals. I can&#039;t say I&#039;m 100% there, and I&#039;ve certainly had to build &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://soukai.js.org&quot;&gt;a lot&lt;/a&gt; of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://aerogel.js.org&quot;&gt;my own tooling&lt;/a&gt;. But I have learned about some technologies that, combined, give you pretty much everything I&#039;ve talked about out of the box:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;PWAs (Progressive Web Apps):&lt;/strong&gt; I&#039;m sure many of you are already familiar with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps&quot;&gt;PWAs&lt;/a&gt;, they are pretty widespread (although not as much as I would like). Essentially, a PWA is a web app that can be installed like a native application. There is still some debate about the merits of PWAs vs native apps. But for me, there is no contest: PWAs all the way!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CRDTs (Conflict-Free Replicated Datatypes):&lt;/strong&gt; If you want to make your application local-first, you most certainly will end up using a CRDT. It sounds complicated, and if you search online you may get overwhelmed by the technicalities. But they can also be pretty simple. If you know nothing about CRDTs, I&#039;d recommend that you start by watching this talk: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=DEcwa68f-jY&quot;&gt;CRDTs for Mortals&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;RDF (Resource Definition Framework):&lt;/strong&gt; Ah, RDF. If this isn&#039;t your first time hearing about it, you either love it or hate it (most likely the latter). RDF is a data modeling framework that attempts to formalize knowledge so that machines can understand it (almost the opposite of LLMs, actually). Basically, it allows different programs to collaborate on the same data. It&#039;s been around for ages, and it&#039;s used a lot in some fields (it&#039;s the format that powers &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.wikidata.org&quot;&gt;wikidata&lt;/a&gt;, for example). But as I said, it has a bad rap. Once again, I think it&#039;s because it&#039;s often overcomplicated. I gave a talk about this, so if you&#039;re interested to learn more, check it out: &lt;a href=&quot;https://noeldemartin.com/solid-symposium-dx&quot; target=&quot;_blank&quot;&gt;Thoughts on Solid Developer Experience&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Autonomous Data:&lt;/strong&gt; This one is more of an idea than an actual technology, but it is important to mention because you can use all the tools in this list and fall short of these ideals. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://autonomous-data.noeldemartin.com&quot;&gt;Autonomous Data&lt;/a&gt; is an application architecture I described in 2018, before I knew about the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidproject.org/&quot;&gt;Solid Protocol&lt;/a&gt;. If you&#039;re curious, you should read the site because it&#039;s not too long. The short version is that data should be decoupled from apps, and users should have true data ownership (in practice, and not just in theory).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;putting-ai-to-the-test&quot;&gt;&lt;a href=&quot;#putting-ai-to-the-test&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Putting AI to the test&lt;/h3&gt;
&lt;p&gt;Having read thus far you may be thinking that this has an easy solution: just ask your AIs to use these technologies. Unfortunately, reality is not so simple.&lt;/p&gt;
&lt;p&gt;First of all, most people don&#039;t even know that these exist, so they aren&#039;t going to include them in their prompts. But even if they did, do you think it would work? I was curious about this myself, so I decided to give it a try. I asked various popular vibe-coding tools to create the most simple of applications: a Todo app.&lt;/p&gt;
&lt;p&gt;Here&#039;s the prompt I used:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Create a Todo application that is architected as a local-first Progressive Web App. The core philosophy of this app is that it must be fully usable upon visiting, requiring no internet connection and no user account to create and manage tasks. To achieve this, the underlying state management should rely on Conflict-free Replicated Data Types (CRDTs), ensuring that all data is persisted locally in the browser first.&lt;/p&gt;
&lt;p&gt;Crucially, I want the internal data model to be structured using RDF standards. Instead of storing simple JSON objects, the application should maintain a semantic knowledge graph of the user&#039;s tasks.&lt;/p&gt;
&lt;p&gt;For the synchronization strategy, design the system so that users remain anonymous by default. However, provide a way for users to log in where they can input a URL of a self-hosted backend or sync engine. Once this URL is provided, the local CRDT state should synchronize with that server, allowing the user to back up their data and share their task graph across multiple devices.&lt;/p&gt;
&lt;p&gt;Other than this configuration, the user interface should only support two actions: adding a new task and toggling its completion status with a checkbox.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And these are the results (source code &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/noeldemartin/software-ideals&quot;&gt;in Github&lt;/a&gt;):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/software-ideals/aistudio&quot;&gt;Google&#039;s AI Studio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/software-ideals/bolt&quot;&gt;Bolt.new&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.github.io/software-ideals/lovable&quot;&gt;Lovable.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vercel&#039;s v0 (Cannot be hosted on Github Pages because it uses Next.js 💀)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How do they fare?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Universality ✅:&lt;/strong&gt; Most of the apps are PWAs that work offline. The only exception is Vercel&#039;s, which uses Next.js and cannot be served with static assets. I haven&#039;t even bothered checking if it actually works as a PWA, because given the requirements, it makes no sense to make an app with server-side code. But of course, it would be very easy to host in Vercel 😉.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sovereignity 🤷:&lt;/strong&gt; This one is arguable. Google&#039;s and Lovable&#039;s synchronize with a Yjs websocket, and Bolt&#039;s uses Supabase. Both of those are open source, and as far as I know you can self-host them. But they make the classic mistake of relying on &lt;em&gt;implementations&lt;/em&gt;, rather than &lt;em&gt;protocols&lt;/em&gt;. If Supabase or Yjs go bust tomorrow, I don&#039;t think you&#039;ll keep using this for long. You&#039;ll have to go through a painful migration, not unlike the classic &amp;quot;export your data in a zip&amp;quot; that many vendors provide as an illusion that you own your data. What are some examples of good data formats? Plain text (or markdown), JSON, or indeed, RDF.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Interoperability 💀:&lt;/strong&gt; Not surprisingly, this is where all of them fail miserably. It&#039;s funny because looking under the hood, they are structuring the data as RDF triples. But then, they go ahead and serialize it in different formats, which misses the entire point of using RDF. In my &lt;a href=&quot;https://noeldemartin.com/blog/interoperable-serendipity&quot; target=&quot;_blank&quot;&gt;interoperability scale&lt;/a&gt;, all these apps fall at the very bottom: Obfuscated interoperability.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So yeah, as it happens with AI, the initial result seems impressive. But as soon as you start digging into the details, you realize it&#039;s full of holes. Furthermore, this experiment has also confirmed what I already suspected: each platform has their own technology preferences, and they&#039;ll shove them down your throat even if they aren&#039;t appropriate for your use-case.&lt;/p&gt;
&lt;p&gt;If you&#039;re curious to see a Todo app that actually follows these ideals, check out my task manager: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://focus.noeldemartin.com&quot;&gt;Focus&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;skill-issues&quot;&gt;&lt;a href=&quot;#skill-issues&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Skill issues&lt;/h3&gt;
&lt;p&gt;Now, I know what a lot of people reading this post are going to say: &amp;quot;You&#039;re doing it wrong!&amp;quot;.&lt;/p&gt;
&lt;p&gt;I am aware that my prompt could have been better, that it&#039;s not reasonable to expect this to work in a single shot, and that these may not be the best tools to build &amp;quot;real software&amp;quot;.&lt;/p&gt;
&lt;p&gt;But here&#039;s the thing, most people aren&#039;t going to do any of that either. As I mentioned, they won&#039;t even know that these technologies exist, or how to judge the result. So I think this was a pretty reasonable example of how things would turn out in most cases.&lt;/p&gt;
&lt;h2 id=&quot;outro&quot;&gt;&lt;a href=&quot;#outro&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Outro&lt;/h2&gt;
&lt;p&gt;If you made it here, thanks for reading!&lt;/p&gt;
&lt;p&gt;You may agree or disagree with my ideals, and I&#039;m sure you have your own. But AIs also have theirs, and I doubt they are aligned with you either (even if you tell them!).&lt;/p&gt;
&lt;p&gt;Even though we can now chunk out code faster than ever, our jobs as engineers are far from being over. Software Development is dead, long live Software Engineering.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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">
                &lt;p&gt;&lt;/p&gt;
&lt;p&gt;I have been building UIs on the web for 10+ years, and most of the time I&#039;ve been using a component framework like Vue. There have definitely been some ups and downs in the frontend space, but overall I&#039;m quite happy with the current state of the art (I did start on the jQuery era, after all!).&lt;/p&gt;
&lt;p&gt;However, there is something that always bothered me: Modals.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/the-problems-with-modals-and-how-to-solve-them"
            >
                &lt;p&gt;&lt;img src=&quot;/img/blog/VueModals.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I have been building UIs on the web for 10+ years, and most of the time I&#039;ve been using a component framework like Vue. There have definitely been some ups and downs in the frontend space, but overall I&#039;m quite happy with the current state of the art (I did start on the jQuery era, after all!).&lt;/p&gt;
&lt;p&gt;However, there is something that always bothered me: Modals.&lt;/p&gt;
&lt;h2 id=&quot;classic-modals&quot;&gt;&lt;a href=&quot;#classic-modals&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Classic modals&lt;/h2&gt;
&lt;p&gt;If you&#039;ve used virtually any component framework, this is probably how you&#039;ve been taught to open a modal:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;button @click=&amp;quot;show = true&amp;quot;&amp;gt;Open Modal&amp;lt;/button&amp;gt;

&amp;lt;MyModal :open=&amp;quot;show&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Basically, you&#039;re supposed to declare the modal component inline, and use a boolean to control whether it is open or not.&lt;/p&gt;
&lt;p&gt;This approach is used in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.shadcn-vue.com/docs/components/dialog.html#usage&quot;&gt;shadcn&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://primevue.org/dialog/#basic&quot;&gt;PrimeVue&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vuetifyjs.com/en/components/dialogs/#usage&quot;&gt;Vuetify&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/overlays/modal-dialogs#component-b6812b6c13fff16861f2645c4100ae5b&quot;&gt;Tailwind Plus&lt;/a&gt;, and is even featured in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vuejs.org/guide/built-ins/teleport.html#basic-usage&quot;&gt;the official Vue docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The problem is... I don&#039;t think about modals that way!&lt;/p&gt;
&lt;p&gt;Instead, the native JavaScript approach feels a lot more intuitive to me:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;alert(&#039;Hello!&#039;);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For starters, I don&#039;t write all my code inside of components. What if I want to open a modal from a JavaScript file? And what if that code is reused in multiple screens?&lt;/p&gt;
&lt;p&gt;The answer is that you must do some component gymnastics to make sure that some component, somewhere, is actually declaring the modal. And then, have some roundabout mechanism to make sure that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vuejs.org/guide/extras/reactivity-in-depth.html#connection-to-signals&quot;&gt;a signal&lt;/a&gt; is passed around to control the modal&#039;s visibility.&lt;/p&gt;
&lt;p&gt;But it gets even worse. What happens if you need to get a response from the modal? You&#039;ll probably need to complicate things further with events and listeners, or give up altogether and write the logic within a component.&lt;/p&gt;
&lt;p&gt;In plain JavaScript, once again, things are a lot simpler:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;const answer = prompt(&#039;How many golf balls fit into a Boeing 747?&#039;);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You just call a function, and get a response.&lt;/p&gt;
&lt;p&gt;What if I told you that you can also do this with Vue? This is how I&#039;ve been using modals for years, and in today&#039;s blog post I&#039;ll share how you can do it too:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;import MyModal from &#039;./MyModal.vue&#039;;

const answer = await showModal(MyModal);
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;better-modals&quot;&gt;&lt;a href=&quot;#better-modals&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Better modals&lt;/h2&gt;
&lt;p&gt;The first thing we&#039;re going to need, ironically, is somewhere to render our modals 😅.&lt;/p&gt;
&lt;p&gt;But! We only need to do this once. We can choose a single place to render all of them, and move on with our lives. To encapsulate this behaviour, let&#039;s create a component called &lt;code&gt;ModalsPortal&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;span class=&quot;code-filename&quot;&gt;ModalsPortal.vue&lt;/span&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;template&amp;gt;
	&amp;lt;component
        v-for=&amp;quot;modal of modals&amp;quot;
        :key=&amp;quot;modal.id&amp;quot;
        :is=&amp;quot;modal.component&amp;quot;
    /&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script setup&amp;gt;
import { modals } from &#039;./modals&#039;;
&amp;lt;/setup&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is not too different from using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vuejs.org/guide/built-ins/teleport.html&quot;&gt;Vue&#039;s &lt;code&gt;&amp;lt;Teleport&amp;gt;&lt;/code&gt; component&lt;/a&gt;, so you could say we&#039;re just adding some syntactic sugar here.&lt;/p&gt;
&lt;p&gt;Once you&#039;ve done that, you can define all the plumbing we&#039;ll need to make this work in a plain old JavaScript file:&lt;/p&gt;
&lt;pre&gt;&lt;span class=&quot;code-filename&quot;&gt;modals.js&lt;/span&gt;&lt;code class=&quot;language-js&quot;&gt;import { shallowRef } from &#039;vue&#039;;

export const modals = shallowRef([]);

export function showModal(modal) {
    modals.value = modals.value.concat([
        {
            id: Math.random(),
            component: modal,
        },
    ]);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, all you need to do is place a &lt;code&gt;&amp;lt;ModalsPortal&amp;gt;&lt;/code&gt; somewhere in your app, and use the &lt;code&gt;showModal()&lt;/code&gt; function to dynamically render modals from anywhere.&lt;/p&gt;
&lt;p&gt;Congratulations, you&#039;re already using better modals 🥳.&lt;/p&gt;
&lt;h2 id=&quot;passing-and-receiving-data&quot;&gt;&lt;a href=&quot;#passing-and-receiving-data&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Passing and receiving data&lt;/h2&gt;
&lt;p&gt;So far, we&#039;ve managed to render modals without declaring them in any template. We can already reproduce a DX similar to JavaScript&#039;s alerts:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// JavaScript
alert(&#039;Hello!&#039;);

// Vue
import HelloModal from &#039;./HelloModal.vue&#039;;

showModal(HelloModal);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;However, for any real application this is going to become limiting very quickly. We&#039;re also going to need to pass some arguments, and get a response once the modals are closed.&lt;/p&gt;
&lt;p&gt;Sending arguments is straightforward, we can simply use Vue props:&lt;/p&gt;
&lt;pre&gt;&lt;span class=&quot;code-filename&quot;&gt;modals.js&lt;/span&gt;&lt;code class=&quot;language-js&quot;&gt;export function showModal(modal, args) {
    modals.value = modals.value.concat([
        {
            id: Math.random(),
            component: modal,
            props: args,
        },
    ]);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;code-filename&quot;&gt;ModalsPortal.vue&lt;/span&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;component
    v-for=&amp;quot;modal of modals&amp;quot;
    :key=&amp;quot;modal.id&amp;quot;
    :is=&amp;quot;modal.component&amp;quot;
    v-bind=&amp;quot;modal.props&amp;quot;
/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But getting a response is a bit more involved. We&#039;ll need to manage the asynchronous nature of the operation, and remove the modal when it is closed.&lt;/p&gt;
&lt;p&gt;We can do it by wrapping everything in a promise, and listen to events on the component:&lt;/p&gt;
&lt;pre&gt;&lt;span class=&quot;code-filename&quot;&gt;modals.js&lt;/span&gt;&lt;code class=&quot;language-js&quot;&gt;export async function showModal(modal, args) {
    const id = Math.random();

    return new Promise((resolve) =&amp;gt; {
        modals.value = modals.value.concat([
            {
                id,
                component: modal,
                props: args,
                close(response) {
                    modals.value = modals.value.filter(
                        (modal) =&amp;gt; modal.id !== id,
                    );

                    resolve(response);
                },
            },
        ]);
    });
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;{{ noparse }}&lt;/p&gt;
&lt;pre&gt;&lt;span class=&quot;code-filename&quot;&gt;ModalsPortal.vue&lt;/span&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;component
    v-for=&amp;quot;modal of modals&amp;quot;
    :key=&amp;quot;modal.id&amp;quot;
    :is=&amp;quot;modal.component&amp;quot;
    v-bind=&amp;quot;modal.props&amp;quot;
    @close=&amp;quot;modal.close($event)&amp;quot;
/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;code-filename&quot;&gt;MyModal.vue&lt;/span&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;template&amp;gt;
    &amp;lt;button @click=&amp;quot;$emit(&#039;close&#039;, &#039;The Answer&#039;)&amp;quot;&amp;gt;Close Modal&amp;lt;/button&amp;gt;
&amp;lt;/template&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;{{ /noparse }}&lt;/p&gt;
&lt;p&gt;And that&#039;s about it!&lt;/p&gt;
&lt;p&gt;Now, you can even lazy load modals with a plain old dynamic import:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;const { default: MyModal } = await import(&#039;./MyModal.vue&#039;);

const answer = await showModal(MyModal, {
    question: &#039;How many golf balls fit into a Boeing 747?&#039;,
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course, if you want to use this in a real application you&#039;ll also need to take care of styling and whatnot. But this covers all the missing pieces to start using modals the right way. You can take a look at the complete example in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://play.vuejs.org/#eNqNVW1r2zAQ/iuqKcSFxCl7+eKlYVspe4Gupd23alDVPidqZMlIspMQ8t93kmI7CaG0hSDdPTrdPffovIm+VVXS1BCl0cRkmleWGLB1NaWSl5XSltyqnAlzj0smSKFVSQbJeN/ojg++9Pi1d/bQsD9CbYiZq2VAbjts6cM6GJXMrGVGilpmlitJZhrAxhdkQyUhmZLGEg2mwgWQK8KWjGPmbch4d+kQ75GshJQMftRg7IBsL3xwQpgAbeM2hLNuqZyMAwdYPW4slJVgFnBHyOSlthbz+JoJni2uaOQTotH0rgIZSJqMAybgD3gbo20y3gsYDSNrsIyCz5JXoyTy7yujUabKimNyd5Wr29AoDTU7HxNCLX97m9U1DFt7NodsccL+albORqN7LBR0AzTqfJbpmSvAuW8e/8AK150TG1ELRL/hfACjRO1yDLDvtcwx7T2cz/aX7zeXs7/mZmVBmrYol6hDbj2eRqiP6zdK79P9mHzy57BjyGKQDHKIDO5py9/9AEUnrp38qISVBwUJhdMooP5E/PQvaGQHPNJhrzF/dkgwL3MgS55jvFtm54lmMldl7MJhCZJajU9LSyJhSe4xK27AKVCJBjU8dTGopXZXUcNE7aS9v03whozZ+GkHpZbnSF9YOuEoCdKm4UznqLSqTOoT7cFChcuD/Fue3d9b9xdcWNChdJeyXyRY8dnVFRYeiAs3uGp9aQePLFyx9WxQuw1UW/8qXTeP54obS4fPMOcNaUa8wBe4y0yAnNk5jUgmmDGdfeS6xwS+0HDrpOOnzaIZFUq3eKKKXak0agHpAtatH4vcc/DuHmxJG7ZzN6MXLvMO4fnvvThBkPv+vO/EOTQY4qJFuXmBKY+x2uPJgdvTg3rTqvnUPD2cbMauBRCcPxXkaEkOGAtaqJThTvApKfgKct86jk1EdV36Tc4NprRGv4CVt7zWxvJiPUKR4kNHYIa/oL2PCT6TI451oBL37C8sW8y0wtmREj17YfHl0P0nn/uJ7HKdOm30H5LTsjjof9/348F9DiW38cDzPhiS55+AL39IzjfuS7E9e8YmTK+d83Cev68XORRcAj7uysTtt+fRapx/4dPzjj4E/veJWc6ROE9XxfIcY6Xkg4byiKHtfxSvrok=&quot;&gt;this Vue Playground&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;typescript&quot;&gt;&lt;a href=&quot;#typescript&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;TypeScript&lt;/h2&gt;
&lt;p&gt;But we aren&#039;t done yet. If you&#039;re like me, you&#039;re probably taking advantage of Vue&#039;s TypeScript features, which have been improving a lot recently (we even have &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vuejs.org/api/sfc-script-setup.html#generics&quot;&gt;Component Generics&lt;/a&gt; now 😍).&lt;/p&gt;
&lt;p&gt;However, this whole modal shenanigans throws it all out of the window. We&#039;re not setting the props in the template, and the modal response doesn&#039;t take advantage of typed emits. But don&#039;t fret, this is nothing that some TypeScript wizardry can&#039;t fix 🧙.&lt;/p&gt;
&lt;p&gt;First of all, we&#039;ll need to type the props for the modal component. This can be achieved using Vue&#039;s &lt;code&gt;Component&lt;/code&gt; type, combined with some generic magic:&lt;/p&gt;
&lt;pre&gt;&lt;span class=&quot;code-filename&quot;&gt;modals.ts&lt;/span&gt;&lt;code class=&quot;language-ts&quot;&gt;import { Component } from &#039;vue&#039;;

export type GetComponentProps&amp;lt;T extends Component&amp;gt; = T extends {
    new (): { $props: infer TProps };
}
    ? TProps
    : never;

export async function showModal&amp;lt;T extends Component&amp;gt;(
    modal: T,
    args: GetComponentProps&amp;lt;T&amp;gt;,
) {
    // ...
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The second part, typing the response, is once again a bit more involved. Maybe you&#039;re thinking that we could follow a similar approach, and infer the type from the &lt;code&gt;$emit&lt;/code&gt; property:&lt;/p&gt;
&lt;pre&gt;&lt;span class=&quot;code-filename&quot;&gt;modals.ts&lt;/span&gt;&lt;code class=&quot;language-ts&quot;&gt;type GetComponentResponse&amp;lt;T extends Component&amp;gt; = T extends {
    new (): { $emit: (event: &#039;close&#039;, args: infer TResponse) =&amp;gt; void };
}
    ? TResponse
    : never;

export async function showModal&amp;lt;T extends Component&amp;gt;(
    modal: T,
): Promise&amp;lt;GetComponentResponse&amp;lt;T&amp;gt;&amp;gt; {
    // ...
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Whilst this &lt;em&gt;technically&lt;/em&gt; works, you&#039;ll find that it&#039;s also limiting in more realistic use-cases. The examples I&#039;ve shared so far don&#039;t use any auxiliary components, but the more common scenario is that you&#039;ll have a generic &lt;code&gt;&amp;lt;Modal&amp;gt;&lt;/code&gt; that you&#039;ll re-use across modals. And usually, it&#039;ll have a close button. So now we have more than one component emitting events: the generic &lt;code&gt;&amp;lt;Modal&amp;gt;&lt;/code&gt;, and our custom &lt;code&gt;&amp;lt;MyModal&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Things can become complicated very quickly, but the easiest way to solve it is by introducing the concept of &amp;quot;modal dismissal&amp;quot;. If the modal is closed from anywhere outside of our custom component, we can assume it&#039;s been dismissed. If we do that, we only need to add something like a &lt;code&gt;dismissed&lt;/code&gt; boolean to our promise, and we&#039;re done:&lt;/p&gt;
&lt;pre&gt;&lt;span class=&quot;code-filename&quot;&gt;modals.ts&lt;/span&gt;&lt;code class=&quot;language-ts&quot;&gt;export async function showModal&amp;lt;T extends Component&amp;gt;(
    modal: T,
): Promise&amp;lt;GetComponentResponse&amp;lt;T&amp;gt; | { dismissed: true }&amp;gt; {
    // ...

    close(response?: GetComponentResponse&amp;lt;T&amp;gt;) {
        if (response === undefined) {
            resolve({ dismissed: true });

            return;
        }

        resolve(response);
    },

    // ...
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;putting-it-all-together&quot;&gt;&lt;a href=&quot;#putting-it-all-together&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Putting it all together&lt;/h2&gt;
&lt;p&gt;TLDR, after following this guide, you&#039;ll be able to use Vue modals like this:&lt;/p&gt;
&lt;p&gt;{{ noparse }}&lt;/p&gt;
&lt;pre&gt;&lt;span class=&quot;code-filename&quot;&gt;MyModal.vue&lt;/span&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;template&amp;gt;
    &amp;lt;Modal title=&amp;quot;My Awesome Modal&amp;quot;&amp;gt;
        &amp;lt;button @click=&amp;quot;$emit(&#039;close&#039;, { answer: `Hello, ${name}!` })&amp;quot;&amp;gt;
            Close
        &amp;lt;/button&amp;gt;
    &amp;lt;/Modal&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script setup lang=&amp;quot;ts&amp;quot;&amp;gt;
    defineProps&amp;lt;{ name: string }&amp;gt;();
    defineEmits&amp;lt;{ close: [{ answer: string }] }&amp;gt;();
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;import MyModal from &#039;./MyModal.vue&#039;;
import { showModal } from &#039;./modals&#039;;

const { answer } = await showModal(MyModal, { name: &#039;Guest&#039; });
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;{{ /noparse }}&lt;/p&gt;
&lt;p&gt;Isn&#039;t that beautiful!&lt;/p&gt;
&lt;p&gt;You can of course start doing this yourself, as I&#039;ve been doing in multiple projects &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/euvl/vue-js-modal/pull/175&quot;&gt;over the years&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But I got tired of rewriting this time and again, so I also started working on a package to make this easier. If you want to start doing this in your apps, or dive deeper into the code, check it out in GitHub: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/vue-modals/&quot;&gt;github.com/NoelDeMartin/vue-modals&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;going-further&quot;&gt;&lt;a href=&quot;#going-further&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Going further&lt;/h2&gt;
&lt;p&gt;That&#039;s it for the guide, but here&#039;s some parting thoughts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Did I say modals?&lt;/strong&gt; This whole article I&#039;ve been talking about modals, but the truth is that these ideas apply just as well to other types of overlays: snackbars, toasts, etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Did I say Vue?&lt;/strong&gt; And yes, this also applies to React, Svelte, and many other frontend frameworks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What about accessibility?&lt;/strong&gt; I am very aware that I have simplified a lot here. If you want to handcraft modals in your apps, you&#039;ll need to take care of focus trapping, keyboard interactions, and a million other things.&lt;/p&gt;
&lt;p&gt;I chose not to get into that rabbit hole because that&#039;s something that component libraries are doing right, so you don&#039;t need to worry about it. If you&#039;re curious about doing this with existing libraries, I have &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/vue-modals#third-party-integrations&quot;&gt;documented some integrations in my project&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What about the native &lt;code&gt;&amp;lt;dialog&amp;gt;&lt;/code&gt;?&lt;/strong&gt; A couple of years ago, we got baseline support for the native &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dialog&quot;&gt;&lt;code&gt;&amp;lt;dialog&amp;gt;&lt;/code&gt;&lt;/a&gt; element; and it seemed like it would solve all of our problems. Unfortunately, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://notesonwork.com/episodes/modals-and-popover-woes&quot;&gt;that&#039;s not completely true&lt;/a&gt;. And to make matters worse, the DX deviates from how native overlays usually work, and you have to declare modals inline.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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">
                &lt;p&gt;I&#039;ve found myself looking for a job a couple of times in my career, and it has always been a grueling experience. This time, it doesn&#039;t seem like it&#039;s getting any better.&lt;/p&gt;
&lt;a href=&quot;https://unsplash.com/photos/empty-black-rolling-chairs-at-cubicles-2zZp12ChxhU&quot; target=&quot;_blank&quot; aria-hidden=&quot;true&quot; title=&quot;Image by kate.sade on Unsplash.com&quot;&gt;
    
&lt;/a&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/the-soul-crushing-reality-of-job-seeking"
            >
                &lt;p&gt;I&#039;ve found myself looking for a job a couple of times in my career, and it has always been a grueling experience. This time, it doesn&#039;t seem like it&#039;s getting any better.&lt;/p&gt;
&lt;a href=&quot;https://unsplash.com/photos/empty-black-rolling-chairs-at-cubicles-2zZp12ChxhU&quot; target=&quot;_blank&quot; aria-hidden=&quot;true&quot; title=&quot;Image by kate.sade on Unsplash.com&quot;&gt;
    &lt;img src=&quot;/img/blog/SoulCrushingReality.jpg&quot; alt=&quot;&quot;&gt;
&lt;/a&gt;
&lt;h2 id=&quot;the-nlnet-fiasco&quot;&gt;&lt;a href=&quot;#the-nlnet-fiasco&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The NLNet fiasco&lt;/h2&gt;
&lt;p&gt;If you read my blog &lt;a href=&quot;https://noeldemartin.com/blog/the-end-of-the-chapter&quot;&gt;7 months ago&lt;/a&gt;, when I quit my job to explore new opportunities, you may be wondering what I&#039;ve been doing ever since.&lt;/p&gt;
&lt;p&gt;The first few months, I did exactly what I was planning: &lt;a href=&quot;https://noeldemartin.com/tasks/taking-a-sabbatical&quot;&gt;I took a break&lt;/a&gt;. But it wasn&#039;t long before I started moving some pieces for my next projects. On October 1st, 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;an NLNet grant&lt;/a&gt;. The plan was to get a response by the end of 2024, and see where to go from there. You can read my original submissions here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/downloads/nlnet/aerogel.pdf&quot; target=&quot;_blank&quot;&gt;Aerogel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/downloads/nlnet/better-solid-apps.pdf&quot; target=&quot;_blank&quot;&gt;Better Solid Apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/downloads/nlnet/proxy-solid-server.pdf&quot; target=&quot;_blank&quot;&gt;Proxy Solid Server&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Given that you&#039;re reading this, things didn&#039;t quite work out. Long story short, on March 6th (5 months later), I was notified that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/@noeldemartin/114116126924436827&quot;&gt;I wasn&#039;t getting the grant&lt;/a&gt;. Needless to say, I was bummed out. But not for the reasons you may imagine. Sure, it sucks being rejected; but the worst aspects of the process were the agonizing wait and the lack of feedback throughout.&lt;/p&gt;
&lt;p&gt;In case you weren&#039;t familiar with NLNet, I decided to apply because many people working in the Solid ecosystem have been funded by them. And from conversations with previous grantees, I learned they usually replied within a few weeks. But I was extremely unlucky with my timing, because they&#039;ve had noticeable delays in the most recent calls due to an increase in applicants.&lt;/p&gt;
&lt;p&gt;However, something worse than waiting was the lack of feedback. For months, I only got generic emails about delays and the status of the review. Including one at the end of January revealing that I had been selected for the second round, but also without any specifics about my project. Then, on March 3rd, I finally got some questions about my submission. I replied immediately, and 3 days later my project was rejected. I wonder if my answers to that email were really that bad!&lt;/p&gt;
&lt;p&gt;To their credit, I got some feedback after following up. And I can&#039;t say I disagree with their reasons, though I also realized that we aren&#039;t aligned in some aspects. But it would have been nice to find out sooner.&lt;/p&gt;
&lt;p&gt;In short, it wasn&#039;t a great experience. But the thing is, I cannot blame them. The increase in applicants was just bad luck, but I had no reason to believe that I would get any feedback. I didn&#039;t realize it at the time, but effectively I was entering a process very similar to applying for a job. And as I&#039;ve learned the hard way, it&#039;s very rare to get any feedback or meaningful takeaways from these rejections.&lt;/p&gt;
&lt;p&gt;And there is one very particular reason why this happens: the power imbalance.&lt;/p&gt;
&lt;h2 id=&quot;the-power-imbalance&quot;&gt;&lt;a href=&quot;#the-power-imbalance&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The power imbalance&lt;/h2&gt;
&lt;p&gt;Here&#039;s the thing. There is an inherent asymmetry in most hiring processes. First of all, people hiring have almost nothing to gain from rejected applicants. But also, the ratio of applicants to reviewers is usually in the hundreds if not thousands. That is, for each reviewer there are probably hundreds of people applying.&lt;/p&gt;
&lt;p&gt;This situation results in a process than can be very demoralizing for applicants, because it&#039;s not feasible to give personalized feedback and attention to everyone. It doesn&#039;t matter that you, as an applicant, have spent hours or even days crafting the perfect cover letter and work history. It could all end in 5 minutes, because unless they are convinced that you&#039;re worth looking into, they&#039;ll move on to the next candidate. There are different ways to deal with these rejections, and I certainly believe ghosting is the worst one, but going through a process that treats all candidates fairly is the exception rather than the rule. And don&#039;t even get me started on unpaid interview assignments, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.kalzumeus.com/2012/01/23/salary-negotiation/&quot;&gt;salary negotiations&lt;/a&gt;, and many other hurdles that make it unfair.&lt;/p&gt;
&lt;p&gt;However, there is a cheat code: networking. If you have some connection inside the company, your chances of landing the job increase tremendously. It doesn&#039;t mean they&#039;ll hire you on the spot, but it does mean they&#039;ll at least look at your candidacy more closely. You may even get to skip some parts of the selection process altogether.&lt;/p&gt;
&lt;p&gt;I was already aware of this, but I realized it&#039;s more relevant than I thought when Adam Wathan, the creator of TailwindCSS, shared their hiring experience. They posted 2 offers, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://hackersincorporated.com/episodes/hiring-for-tiny-teams-with-justin-jackson#t=35m26s&quot;&gt;out of 1600 applicants, exactly 0 were hired&lt;/a&gt;. Instead, the two who ended up getting the job came through networking and didn&#039;t even apply. It seems like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://x.com/adamwathan/status/1770253702391026010&quot;&gt;effort didn&#039;t play such a big part after all&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This gets even worse when you consider that many offers don&#039;t even make it to a job board, or don&#039;t exist at all! It&#039;s not uncommon for companies to be heads down on their work, not looking for anyone new. But they will be more than happy to hire the right person if they happen to cross their paths.&lt;/p&gt;
&lt;p&gt;Unfortunately, this isn&#039;t getting any better in the AI-era. This imbalance is growing ever greater, with applicants flooding job postings with AI applications, tech workers going through massive layoffs, and the uncertainty of whether AI will take our jobs (I don&#039;t think so). Today, the human connection is more important than ever.&lt;/p&gt;
&lt;p&gt;This realization has led me to believe that skills are not as important as I thought for &lt;em&gt;getting&lt;/em&gt; a job. Of course, they must be important for &lt;em&gt;keeping&lt;/em&gt; a job. But for job hunting, soft skills like marketing and networking may be more impactful than actual skills related to your job (unless, of course, you&#039;re working in marketing or sales).&lt;/p&gt;
&lt;p&gt;Also, when I say networking, it doesn&#039;t necessarily mean that you have to literally know someone on the inside. But it does mean they have to know you. For example, if you&#039;re working in the open and they are familiar with your work, they&#039;ll certainly consider your application more carefully. It also doesn&#039;t hurt if you&#039;re already working at a popular company.&lt;/p&gt;
&lt;p&gt;So, where does that leave me? I&#039;m not great at networking, and even though I work in the open, &lt;a href=&quot;https://noeldemartin.com/blog/working-in-the-open-when-no-one-is-looking&quot;&gt;my audience is almost non-existent&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You could say this is only an excuse I&#039;m telling myself, and I&#039;m actually lousy at my job as well (besides sucking at networking). But I&#039;m pretty sure the people I&#039;ve worked with have been happy with my contributions. And the worst part of The Job Seeking Experience is that most of the time I don&#039;t even make it to the interview or technical test. The most common response I get is also the more frustrating: silence.&lt;/p&gt;
&lt;p&gt;But it is also possible that I&#039;m not applying to the right positions. The truth is that &lt;a href=&quot;https://noeldemartin.com/blog/10-years-as-a-software-developer#2020-the-right-bus&quot;&gt;I&#039;ve been very selective&lt;/a&gt; with my shots, and I&#039;ve only applied for 2 positions since I quit working at Moodle: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://x.com/taylorotwell/status/1877747713099604455&quot;&gt;Laravel&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://x.com/taylorotwell/status/1877747713099604455&quot;&gt;Mastodon&lt;/a&gt;. Indeed, weeks later, I&#039;m still waiting to hear from them.&lt;/p&gt;
&lt;p&gt;The clear answer is that I shouldn&#039;t be so picky. But before we get there, let me backtrack a little. When did I become selective in the first place?&lt;/p&gt;
&lt;h2 id=&quot;the-passion-lie&quot;&gt;&lt;a href=&quot;#the-passion-lie&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The passion lie&lt;/h2&gt;
&lt;p&gt;Once upon a time, I was a bright-eyed computer programmer who had just finished their studies, and I had no idea of what the software industry had to offer. That&#039;s when &lt;a href=&quot;https://noeldemartin.com/blog/10-years-as-a-software-developer#2012-seizing-the-opportunity&quot;&gt;I moved to Taiwan for a few months&lt;/a&gt;, and started my professional career. At the time, I didn&#039;t have many aspirations, and I was just happy to get paid for writing with code.&lt;/p&gt;
&lt;p&gt;However, as time went on, I started to learn more about the industry, and I started working on my own side-projects. That&#039;s when I realized that I &lt;em&gt;really&lt;/em&gt; loved programming, and I was spending more and more of my spare time coding as well. I also developed a taste for the type of code I wanted to write, and I started to think that maybe, I could enjoy my work as much as I enjoyed my side-projects.&lt;/p&gt;
&lt;p&gt;I&#039;m sure you&#039;ve seen this before. Maybe you had a co-worker who also coded in their spare time, or maybe you&#039;ve done it yourself. And even though that wasn&#039;t the reason why I was doing it, I bought the idea that being passionate would bring me better opportunities. Some people even say that caring about quality code and craftsmanship is the key to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://justinjackson.ca/ai-replace&quot;&gt;avoid getting replaced by AI&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But now, I think that&#039;s a lie. Or rather, it&#039;s more nuanced than just &amp;quot;being passionate&amp;quot;.&lt;/p&gt;
&lt;p&gt;When I look back at my career, I can&#039;t think of a single time when caring about my craft has opened any doors. And you could argue that it&#039;s impossible for potential employers to know about it unless they&#039;ve worked with me. But that&#039;s when working in the open and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=2YaEtaXYVtI&quot;&gt;publishing your work&lt;/a&gt; comes in.&lt;/p&gt;
&lt;p&gt;In the last 6 years, I&#039;ve been very public about my work with Solid. And it seemed to have paid off. I&#039;ve made contacts with most people in the ecosystem, I&#039;m often highlighted as one of the main app developers in the community, and two of my apps were featured in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/live/N_DvBPnNigM?t=1070&quot;&gt;Tim Berners-Lee&#039;s keynote at the WeAreDevelopers World Congress&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And yet... I&#039;ve failed miserably to find an opportunity to work with Solid full-time. The problem is not that I wasn&#039;t passionate enough. The crude reality is, put simply, that &lt;a href=&quot;https://noeldemartin.com/blog/the-end-of-the-chapter#the-business-of-solid&quot;&gt;there is not enough going on with Solid&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The nuance to being passionate is that it really matters what you&#039;re passionate about. For example, if you look at classical musicians, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://peterattiamd.com/arthurbrooks/&quot;&gt;there can only be 2 French Horn soloists in the world making a living at any given time&lt;/a&gt;. It doesn&#039;t matter that you&#039;re a great surfer, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://justinjackson.ca/surfing&quot;&gt;you can&#039;t surf without a wave&lt;/a&gt;. If you simply follow your passion, you may end up at a dead end.&lt;/p&gt;
&lt;p&gt;And I know, this is kind of obvious when you think about it. But without my realizing, I had been reinforcing this belief with my media diet.&lt;/p&gt;
&lt;h2 id=&quot;the-instagram-effect&quot;&gt;&lt;a href=&quot;#the-instagram-effect&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The Instagram effect&lt;/h2&gt;
&lt;p&gt;Well, I don&#039;t even have an Instagram account, so I guess I should call it &amp;quot;The RSS effect&amp;quot; because I get most of my information from podcasts and blogs. And that&#039;s definitely distorting my vision of reality. I spend my days listening to how great everyone else&#039;s life is, and how their passion lead them to a successful career. But &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.reddit.com/r/Instagramreality/comments/hpo4jr/a_little_reminder_that_instagram_is_the_tip_of/&quot;&gt;that&#039;s only the tip of the iceberg&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have been listening to too many Steve Jobs quotes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For the past 33 years, I have looked in the mirror every morning and asked myself: &amp;quot;If today were the last day of my life, would I want to do what I am about to do today?&amp;quot;. And whenever the answer has been &amp;quot;no&amp;quot; for too many days in a row, I know I need to change something.&lt;/p&gt;
&lt;p&gt;― &lt;cite&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://youtu.be/UF8uR6Z6KLc?t=563&quot;&gt;Steve Jobs&#039; Stanford Commencement Speech&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When I should have been listening to Mark Manson&#039;s:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;All of this &amp;quot;every person can be extraordinary and achieve greatness&amp;quot; stuff is basically just jerking off your ego. It&#039;s a message that tastes good going down, but in reality is nothing more than empty calories that make you emotionally fat and bloated, the proverbial Big Mac for your heart and your brain. The ticket to emotional health, like that to physical health, comes from eating your veggies—that is, accepting the bland and mundane truths of life.&lt;/p&gt;
&lt;p&gt;― &lt;cite&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://markmanson.net/books/subtle-art&quot;&gt;Mark Manson&#039;s The Subtle Art of Not Giving a Fuck&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;One bland and mundane truth of life is that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://x.com/aarondfrancis/status/1768771775897190740&quot;&gt;not everyone can be Aaron Francis&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The problem with living in such environment is that, subconsciously, I&#039;ve been lead to believe that I&#039;ll only be happy if I get to work at one of these companies I admire. Or create my own. But the truth is that my job doesn&#039;t need to align completely with my passion.&lt;/p&gt;
&lt;p&gt;I have to accept that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=-6HOdHEeosc&amp;amp;t=957s&quot;&gt;I might not make it&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;managing-expectations&quot;&gt;&lt;a href=&quot;#managing-expectations&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Managing expectations&lt;/h2&gt;
&lt;p&gt;Shooting for the stars is not inherently wrong, but you shouldn&#039;t set unrealistic expectations either. It would be nice if every passionate developer could make a living with their open-source project that is trying to make a better Web. Instead, we live in a world with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://eattherichtextformat.github.io/1-pixel-wealth/&quot;&gt;billionaires making more money in their sleep than you&#039;ll make in your entire life&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I realize this article hasn&#039;t been the most uplifting thing you&#039;ve read this week. But to be honest, it reflects my current state of mind as I&#039;m trying to recalibrate my expectations. Which is, turns out, the real key to happiness because &lt;a href=&quot;/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;
&lt;p&gt;The truth is that I probably won&#039;t get to pursue my passion, at least not fulltime. And that&#039;s ok. I had been melding my love of programming with my professional career, but there&#039;s nothing wrong with keeping them apart. It&#039;s just weird that they are so close together!&lt;/p&gt;
&lt;p&gt;I should also be more grateful of how extremely lucky I have already been. I&#039;m aware of my privileged position, and I shouldn&#039;t take it for granted.&lt;/p&gt;
&lt;h2 id=&quot;what-now&quot;&gt;&lt;a href=&quot;#what-now&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;What now?&lt;/h2&gt;
&lt;p&gt;Indeed, what now?&lt;/p&gt;
&lt;p&gt;For one, my involvement with Solid will probably decrease. I don&#039;t think I&#039;ll stop altogether, because I still believe in its vision and enjoy working on my apps (that&#039;s why I started in the first place). But it&#039;s definitely going back to being a side-project. Though I may still experiment with some businessy ideas, because I really think I should improve my marketing skills.&lt;/p&gt;
&lt;p&gt;Something else I&#039;m changing is my job hunting approach. I already mentioned that I&#039;ve been too selective, and I had this stupid rule to avoid being in too many selection processes in parallel. Mostly because I would hate to get a better offer when I already committed elsewhere. But seeing how things are going, that&#039;s very unlikely to happen.&lt;/p&gt;
&lt;p&gt;And finally, I&#039;m recalibrating how I&#039;ll evaluate new opportunities. Last time I was on the market, I wrote a blog post &lt;a href=&quot;https://noeldemartin.com/blog/finding-opportunities-that-fit-your-values&quot;&gt;outlining what I was looking for&lt;/a&gt;. Astute readers will notice that I didn&#039;t even mention compensation, because I&#039;ve always been frugal and I don&#039;t have big expenses. But if I&#039;m going to be working at a job I&#039;m not particularly passionate about, I may as well make the most of it.&lt;/p&gt;
&lt;p&gt;The ideal solution would be to find great companies that are not as notorious as the Laravels of the world. I&#039;d be thrilled to work at a small, little known company that is doing quality work. The problem is that, by definition, it&#039;s very difficult to find them!&lt;/p&gt;
&lt;p&gt;On that note, if you know of any opportunities that could work for me, please let me know. I&#039;m all ears.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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>
                2025-03-12T14:00:00+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;Yesterday was my last day working at Moodle, an Open Source LMS that is used all around the world.&lt;/p&gt;
&lt;p&gt;I joined more than 4 years ago, and for the most part it has been a great place to work. But recently I decided it was time to move on, and today I want to share why and what&#039;s coming next.&lt;/p&gt;
&lt;a href=&quot;https://unsplash.com/photos/opened-book-on-white-textile-SNHsMunOPME&quot; target=&quot;_blank&quot; aria-hidden=&quot;true&quot; title=&quot;Photo by Sinziana Susa on Unsplash&quot;&gt;
    
&lt;/a&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/the-end-of-the-chapter"
            >
                &lt;p&gt;Yesterday was my last day working at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://moodle.com/about/&quot;&gt;Moodle&lt;/a&gt;, an Open Source LMS that is used &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://stats.moodle.org/&quot;&gt;all around the world&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I joined more than 4 years ago, and for the most part it has been a great place to work. But recently I decided it was time to move on, and today I want to share why and what&#039;s coming next.&lt;/p&gt;
&lt;a href=&quot;https://unsplash.com/photos/opened-book-on-white-textile-SNHsMunOPME&quot; target=&quot;_blank&quot; aria-hidden=&quot;true&quot; title=&quot;Photo by Sinziana Susa on Unsplash&quot;&gt;
    &lt;img src=&quot;/img/blog/TheEndOfTheChapter.jpg&quot; alt=&quot;&quot;&gt;
&lt;/a&gt;
&lt;h2 id=&quot;farewell-moodle-hq&quot;&gt;&lt;a href=&quot;#farewell-moodle-hq&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Farewell, Moodle HQ&lt;/h2&gt;
&lt;p&gt;My last personal update on this blog was &lt;a href=&quot;https://noeldemartin.com/blog/10-years-as-a-software-developer#2020-the-right-bus&quot;&gt;3 years ago&lt;/a&gt;, and I mentioned that I had finally found a company sharing my values. It&#039;s not uncommon for companies to have &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://signalvnoise.com/svn3/open-source-beyond-the-market/#:~:text=%E2%80%9CWe%E2%80%99re%20on%20a,out%20of%20church&quot;&gt;empty mission statements&lt;/a&gt;, and I really believe that Moodle is having a positive impact in the world.&lt;/p&gt;
&lt;p&gt;On top of that, my working conditions were great. I&#039;ve been working 4 days a week, which has allowed me to spend time doing &lt;a href=&quot;/projects&quot;&gt;side-projects&lt;/a&gt;. And I&#039;ve had a &lt;em&gt;real&lt;/em&gt; flexible schedule (with very few meetings!).&lt;/p&gt;
&lt;p&gt;With all that, you may wonder why I decided to quit my job. The answer can be found in a blog post I wrote 6 years ago, titled &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;. In that post, I talk about 4 things that are important to me: Vision, Work, Company Size, and Remote. Moodle has been great in Vision and Remote, but Work and Company Size have been drifting from my ideal.&lt;/p&gt;
&lt;h3 id=&quot;company-size&quot;&gt;&lt;a href=&quot;#company-size&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Company Size&lt;/h3&gt;
&lt;p&gt;When I joined, Moodle had ~60 employees. Today, there are more than 200. This happened, in part, because of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://moodle.com/news/moodle-us-launch/&quot;&gt;some&lt;/a&gt; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://moodle.com/news/moodle-enters-into-acquisition-of-eabyas-to-deliver-services-in-india/&quot;&gt;acquisitions&lt;/a&gt;. But the other teams have also been growing. For some people, this may still be considered a &amp;quot;small company&amp;quot;. But as &lt;a href=&quot;https://noeldemartin.com/blog/skeuomorphic-software#small-and-open&quot;&gt;I&#039;ve mentioned before&lt;/a&gt;, I consider &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Dunbar%27s_number&quot;&gt;Dunbar&#039;s number&lt;/a&gt; (150 people) an inflection point.&lt;/p&gt;
&lt;p&gt;This is the first time I&#039;ve worked at a company of this scale. The working conditions and environment were still great, but I can&#039;t say I&#039;ve had a big influence on the company or the product. I did feel like a cog in the wheel, and I&#039;d rather be a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://seths.store/linchpin/&quot;&gt;linchpin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now, does this mean that I&#039;ll never work at a company of this size? Or that it isn&#039;t possible to make an impact at this scale? No, it doesn&#039;t. But so far, my suspicions where true.&lt;/p&gt;
&lt;h3 id=&quot;work&quot;&gt;&lt;a href=&quot;#work&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Work&lt;/h3&gt;
&lt;p&gt;The second reason for my decision, and probably the most important, was the work itself. I feel like most of my work was maintenance. That doesn&#039;t mean I didn&#039;t do anything interesting, I even &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=LYDFpaDv27o&quot;&gt;gave one talk&lt;/a&gt; about some of the things I worked on. But most of my contributions where at a code level. Barely ever affecting the UI, the Product Roadmap, or the Company Culture.&lt;/p&gt;
&lt;p&gt;And that was only half the problem. I &lt;em&gt;suppose&lt;/em&gt; I wouldn&#039;t mind having no impact in a &amp;quot;perfect&amp;quot; codebase (I know those don&#039;t exist), or in an environment where I&#039;m still learning. After all, I&#039;ve said multiple times that I enjoy programming in and of itself. But Moodle didn&#039;t have an environment where I could thrive. Anyone familiar with Moodle&#039;s codebase will know what I&#039;m talking about; but for those who don&#039;t, I&#039;ll just say that Tech Debt is a real issue not to be taken lightly. My experience working at Moodle, if anything, has reinforced my opinion that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://martinfowler.com/articles/is-quality-worth-cost.html&quot;&gt;high quality software is worth the cost&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, it wouldn&#039;t be fair to say that I haven&#039;t learned anything. When I joined, I had very little experience building accessible websites. I also didn&#039;t have much experience with Dark Mode and RTL interfaces. Now, I&#039;m confident that I can build UIs that are usable by everyone. Working on an application used by millions around the world has been an enlightening experience.&lt;/p&gt;
&lt;p&gt;It was also my first time working with a UX writer. I already knew that designers were my favourite partners in crime, but this is a breed of designer I hadn&#039;t met before. Given how much I like writing and naming, it shouldn&#039;t come as a surprise that I also enjoyed working with them; and I look forward to meet more in the future.&lt;/p&gt;
&lt;h3 id=&quot;looking-back&quot;&gt;&lt;a href=&quot;#looking-back&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Looking back&lt;/h3&gt;
&lt;p&gt;Thinking about these years, I realize that towards the end of my tenure I was still very happy &lt;em&gt;with&lt;/em&gt; my life, but I wasn&#039;t &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.alieward.com/ologies/eudemonology&quot;&gt;happy &lt;em&gt;in&lt;/em&gt; my life&lt;/a&gt;. That&#039;s what ultimately lead me to make this decision.&lt;/p&gt;
&lt;p&gt;I cherish the time I spent working at Moodle, and I&#039;ll look back on it fondly. I also won&#039;t shy from saying that it&#039;s been the best company I&#039;ve worked at, and I&#039;m really envious of anyone who&#039;ll join them in the future. But all good things come to an end, and my time was up.&lt;/p&gt;
&lt;h2 id=&quot;whats-next&quot;&gt;&lt;a href=&quot;#whats-next&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;What&#039;s next?&lt;/h2&gt;
&lt;p&gt;Now that I&#039;ve come to this crossroads, I&#039;m pondering what to do next. An obvious answer is to go into Solid full-time, since I&#039;ve been doing it on the side for years. But is that a good idea?&lt;/p&gt;
&lt;h3 id=&quot;the-business-of-solid&quot;&gt;&lt;a href=&quot;#the-business-of-solid&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The business of Solid&lt;/h3&gt;
&lt;p&gt;I recently talked about &lt;a href=&quot;https://noeldemartin.com/blog/why-solid&quot;&gt;why I&#039;m choosing Solid&lt;/a&gt; in my side-projects, but I didn&#039;t talk about choosing it for a business. Overall, I&#039;d say there are two groups of people working on Solid full-time.&lt;/p&gt;
&lt;p&gt;The first one is people working on projects to improve the ecosystem. I&#039;m talking about teams like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://pondersource.com/&quot;&gt;Ponder Source&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.o.team/&quot;&gt;o.team&lt;/a&gt;, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://activitypods.org/&quot;&gt;ActivityPods&lt;/a&gt;. As far as I know, most of their funding — if not all — comes from grants. In particular, it seems like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nlnet.nl&quot;&gt;NLNet&lt;/a&gt; is supporting most people in the ecosystem. Which is a great way to get started, and I&#039;m glad that something like NLNet exists. But I strongly believe that eventually &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;projects should be sustainable on their own&lt;/a&gt;. And I don&#039;t see many plans to make that happen around Solid, hypothetical or in practice.&lt;/p&gt;
&lt;p&gt;The second group is people focusing on the B2B market. Some companies that come to mind are &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://graphmetrix.com/&quot;&gt;Graphmetrix&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.digita.ai/&quot;&gt;Digita&lt;/a&gt;, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.inrupt.com/&quot;&gt;Inrupt&lt;/a&gt;. In this case, I have absolutelty no idea how they are doing financially. But the truth is that I&#039;m not super interested either, because as I mentioned in my previous post, &lt;a href=&quot;https://noeldemartin.com/blog/why-solid#lack-of-pod-providers-in-b2c&quot;&gt;I&#039;m more interested in B2C&lt;/a&gt; (even though that is playing in Hard Mode).&lt;/p&gt;
&lt;p&gt;Outside of Solid, there are many businesses I admire: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravel.com&quot;&gt;Laravel&lt;/a&gt;, &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://joinmastodon.org/&quot;&gt;Mastodon&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://37signals.com/&quot;&gt;37Signals&lt;/a&gt;, etc. All of them have different business models, but there&#039;s also one thing they have in common: critical mass. Of course, none of them started with millions of users; but I&#039;ve heard their founder backstories, and none &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sive.rs/hitswitch&quot;&gt;struggled for adoption&lt;/a&gt; either.&lt;/p&gt;
&lt;p&gt;Which takes us back to the issue that &lt;a href=&quot;https://noeldemartin.com/blog/why-solid#its-not-getting-any-traction&quot;&gt;Solid is not getting any traction&lt;/a&gt;. It&#039;s not that I need a thriving ecosystem to guarantee my success; but in the current ecosystem, I&#039;m not sure it&#039;s possible to make a living as an indie developer. And I haven&#039;t seen many job opportunities that pique my interest.&lt;/p&gt;
&lt;h3 id=&quot;here-we-go-again&quot;&gt;&lt;a href=&quot;#here-we-go-again&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Here we go again&lt;/h3&gt;
&lt;p&gt;If your conclusion reading the previous section was that I shouldn&#039;t go into Solid full-time, you&#039;d probably be right. But I&#039;m doing it anyways 😅.&lt;/p&gt;
&lt;p&gt;The thing is, I can&#039;t really help myself. The work I&#039;ve been doing with Solid these last few years has been some of the most fulfilling of my career. And for all its flaws, I still think Solid is the best thing that could happen to the Web (and maybe software in general). Even if there&#039;s only a slight chance that it works out, I&#039;d regret not trying.&lt;/p&gt;
&lt;p&gt;Furthermore, I&#039;ve spoken of &lt;a href=&quot;https://noeldemartin.com/blog/10-years-as-a-software-developer#2014-entrepreneurship&quot;&gt;my entrepreneursip&lt;/a&gt; before; and for years I&#039;ve been itching to get back into it. The problem, like always, is money. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://x.com/naval/status/1002103559276478464&quot;&gt;I&#039;ve never been good at making money&lt;/a&gt;, and even though &lt;a href=&quot;https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop&quot;&gt;I&#039;ve learned a lot since&lt;/a&gt;, I still haven&#039;t done it in practice. This will be the perfect opportunity to do so.&lt;/p&gt;
&lt;p&gt;However, there is one thing I&#039;ll do differently this time. The only thing I regret from my last attempt, &lt;a href=&quot;https://noeldemartin.com/projects/geemba&quot;&gt;Geemba&lt;/a&gt;, is that the project died with the company (and we had happy paying customers, though not enough to make a living). If this time doesn&#039;t work either, I want to make sure that the project outlives my failure. Open Source will probably be part of it, but hopefully not the only one.&lt;/p&gt;
&lt;h3 id=&quot;the-plan&quot;&gt;&lt;a href=&quot;#the-plan&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The Plan&lt;/h3&gt;
&lt;p&gt;Ok, so that&#039;s nice and all, but what am I actually going to do? I have a few ideas.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;A framework to make Solid Apps.&lt;/strong&gt; This would be the most straight-forward, because &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://aerogel.js.org/&quot;&gt;I have already started working on it&lt;/a&gt;. It also builds on top of everything I&#039;ve been doing, and since I&#039;m using local-first I can market it to a larger audience. But I also see some problems.&lt;/p&gt;
&lt;p&gt;If we&#039;re talking about audience, my decision to use Vue over React is probably bad (but it&#039;s unlikely to change). I usually wouldn&#039;t care too much about it; but I can&#039;t see a project like this becoming sustainable without a large audience.&lt;/p&gt;
&lt;p&gt;Still, many people both in the Solid and local-first communities often mentions the lack of an easy solution to get started. This could be my attempt at making the Ruby on Rails of Solid/local-first.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;A B2C Solid POD.&lt;/strong&gt; If I really want to help the ecosystem, this is what I should do. I&#039;d love to make a POD provider that acts as a proxy for different cloud providers (Google Drive, Dropbox, Nextcloud, etc.) using custom domains. That way, it&#039;d be possible to migrate to a &amp;quot;real POD&amp;quot; later on. Also, the familiarity of these providers would remove the barriers to entry for many people, and help them understand how Solid works. I&#039;d certainly focus on the UX, which is the biggest problem most PODs have nowadays. And because it&#039;d be a proxy, I wouldn&#039;t be storing anyone&#039;s sensitive data (besides their credentials). Finally, this seems the easiest idea to monetize.&lt;/p&gt;
&lt;p&gt;There is just one slight problem... I would be starting from scratch 😅. Yes, I&#039;ve been working with Solid for a while, but it&#039;s always been as an app developer. If anything, I&#039;ve made a point to ignore the server-side stuff leaving it to &amp;quot;the protocol&amp;quot;.&lt;/p&gt;
&lt;p&gt;But it also means that I&#039;d finally get back to work with Laravel, so it&#039;s not completely off the table.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;More and better apps.&lt;/strong&gt; I could just continue doing what I&#039;ve been doing, but kicking it up a notch. So far, everything I&#039;ve released has been a byproduct of working in the open. The real audience has always been myself, and I&#039;m fortunate that it seems to have resonated with others (although I don&#039;t know how many people is &lt;em&gt;really&lt;/em&gt; using my apps). But this time, I would focus on solving others&#039; problems with Solid.&lt;/p&gt;
&lt;p&gt;For example, I&#039;ve been asked multiple times about adding social features. And I think it would be really cool to take advantage of Activity Pub to achieve it. Also, I haven&#039;t done any user research. I could definitely do a better job at learning what people wants.&lt;/p&gt;
&lt;p&gt;However, I should also say that this sounds like &lt;a href=&quot;https://noeldemartin.com/blog/working-in-the-open-when-no-one-is-looking#what-is-it-for&quot;&gt;a recipe for disaster&lt;/a&gt;. I&#039;m not saying it cannot work, but I&#039;ve struggled to achieve this in the past. If we&#039;re adding Solid to the mix, and the fact that I&#039;m not sure how I&#039;d monetize any of this, it sounds even more shaky.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;A paid course.&lt;/strong&gt; This is the most far-fetched idea, but I&#039;ll mention it anyways. Starting with info products &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://adamwathan.me/the-book-launch-that-let-me-quit-my-job/&quot;&gt;has worked for others before&lt;/a&gt;, and one of the recurrent issues that come up in Solid is the lack of resources to get started. But I see many problems with this one.&lt;/p&gt;
&lt;p&gt;If the audience was a problem for my first idea, it is damning for this one. And not just Solid&#039;s audience, but my own as well. I still feel like &lt;a href=&quot;https://noeldemartin.com/blog/working-in-the-open-when-no-one-is-looking&quot;&gt;I have no audience&lt;/a&gt;, certainly not enough to make a living with a paid course. But maybe I have &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://seths.blog/2009/04/first-ten/&quot;&gt;enough people&lt;/a&gt; to make some of the other ideas work.&lt;/p&gt;
&lt;p&gt;Additionally, to have even a slight chance to make this work, it would need to be framework agnostic. No Aerogel, no Vue, and certainly no &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/soukai-solid&quot;&gt;Soukai&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nobody knows what&#039;ll happen in the future, but for now; the prospects for this one don&#039;t look good. If you&#039;re curious to know what this would cover, you can watch a spiritual preview in my FOSDEM talk: &lt;a href=&quot;https://noeldemartin.com/fosdem&quot; target=&quot;_blank&quot;&gt;From Zero to Hero with Solid&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Whichever of these I choose to pursue, it&#039;s very unlikely that they become sustainable in the short term. To start with some runway, I&#039;ll probably apply for an NLNet grant. If I don&#039;t get it, the timeline will be a lot shorter and I may have to relegate my Solid work to side-projects again.&lt;/p&gt;
&lt;h2 id=&quot;time-for-a-break&quot;&gt;&lt;a href=&quot;#time-for-a-break&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Time for a break&lt;/h2&gt;
&lt;p&gt;Having said all that, I&#039;m not starting right away. My savings &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://freedom-calculator.noeldemartin.com&quot;&gt;won&#039;t last forever&lt;/a&gt;, but I&#039;m in a good situation with very few attachments. So I&#039;ve decided that I&#039;ll spent the next few months taking a sabbatical.&lt;/p&gt;
&lt;p&gt;I&#039;ll use this time to ponder where to go next with my career, and possibly start moving some of the pieces. If you&#039;ve got any thoughts about what I could do next, I&#039;d love to hear them. If all goes well, I should be back to work in January 2025.&lt;/p&gt;
&lt;p&gt;The point of the sabbatical, though, is that I won&#039;t have any goals. This could mean that I end up working on side-projects more than ever, or I could go afk for months on end. If you&#039;re interested to see how that&#039;s going, check out my journal in &lt;a href=&quot;/now&quot;&gt;/now&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;2025 Update:&lt;/strong&gt; I&#039;ve written a follow up to this post, check it out: &lt;a href=&quot;/blog/the-soul-crushing-reality-of-job-seeking&quot;&gt;The Soul-Crushing Reality of Job Seeking&lt;/a&gt; (TLDR: the plan didn&#039;t work 😅).&lt;/em&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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-28T03:21:04+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;For five years, I&#039;ve dedicated most of my side-project time to making apps and tools using the Solid Protocol. Many share its vision, but it&#039;s also common to hear criticisms. I&#039;m often asked why I&#039;m still working on Solid, or told about another project that is doing a better job at solving similar problems.&lt;/p&gt;
&lt;p&gt;Today, I&#039;ll go through some of the criticisms, share my own concerns, and answer why after all these years I&#039;m still choosing Solid.&lt;/p&gt;
&lt;a href=&quot;https://unsplash.com/photos/assorted-fedora-hat-lot-_yVRLC75Ma8&quot; target=&quot;_blank&quot; aria-hidden=&quot;true&quot; title=&quot;Image by Joshua Coleman on Unsplash.com&quot;&gt;
    
&lt;/a&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/why-solid"
            >
                &lt;p&gt;For five years, I&#039;ve dedicated most of my side-project time to making apps and tools using the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidproject.org/&quot;&gt;Solid Protocol&lt;/a&gt;. Many share its vision, but it&#039;s also common to hear criticisms. I&#039;m often asked why I&#039;m still working on Solid, or told about another project that is doing a better job at solving similar problems.&lt;/p&gt;
&lt;p&gt;Today, I&#039;ll go through some of the criticisms, share my own concerns, and answer why after all these years I&#039;m still choosing Solid.&lt;/p&gt;
&lt;a href=&quot;https://unsplash.com/photos/assorted-fedora-hat-lot-_yVRLC75Ma8&quot; target=&quot;_blank&quot; aria-hidden=&quot;true&quot; title=&quot;Image by Joshua Coleman on Unsplash.com&quot;&gt;
    &lt;img src=&quot;/img/blog/WhySolid.jpg&quot; alt=&quot;&quot;&gt;
&lt;/a&gt;
&lt;h2 id=&quot;what-is-solid-trying-to-solve&quot;&gt;&lt;a href=&quot;#what-is-solid-trying-to-solve&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;What is Solid trying to solve?&lt;/h2&gt;
&lt;p&gt;This may, in itself, be the first problem. Solid&#039;s vision is so broad and all-encompassing, that it doesn&#039;t have the same meaning to everyone. So I&#039;ll start by clarifying what it means to me, because that will be the lens through which I address the rest of the post.&lt;/p&gt;
&lt;h3 id=&quot;privacy-and-data-ownership&quot;&gt;&lt;a href=&quot;#privacy-and-data-ownership&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Privacy and Data Ownership&lt;/h3&gt;
&lt;p&gt;One of the fundamental pillars of Solid are Solid PODs, personal datastores. The idea is that everyone can have their own POD (or PODs), and thus control their data. This is not limited to individuals, though. Organizations can also have their own PODs and WebIds. The point is that each actor owns their data, and decides who they share it with and under which terms.&lt;/p&gt;
&lt;p&gt;This is the angle that got me into Solid to begin with. I was working on a similar project, called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://autonomous-data.noeldemartin.com/&quot;&gt;Autonomous Data&lt;/a&gt;, when I discovered Solid. The vision was so similar that I decided to drop what I was doing and contribute to Solid instead.&lt;/p&gt;
&lt;p&gt;But this is not what I&#039;m the most excited about anymore. I still believe it is extremely important, but I&#039;m convinced that most people don&#039;t care about privacy. Maybe most people reading this post do, but if people really cared about privacy they wouldn&#039;t be using Facebook, Google, or the cool Big Tech product of the day (I guess that&#039;s TikTok nowadays? Or is it ChatGPT?).&lt;/p&gt;
&lt;h3 id=&quot;application-interoperability&quot;&gt;&lt;a href=&quot;#application-interoperability&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Application Interoperability&lt;/h3&gt;
&lt;p&gt;Something else that Solid is trying to solve is Application Interoperability. That is the idea that you can use two applications at the same time, with the same data.&lt;/p&gt;
&lt;p&gt;This is for example how things like podcast players and email clients work. Users can choose their favorite applications, and they will work regardless of what the podcast publisher or the person they are communicating with are using.&lt;/p&gt;
&lt;p&gt;Unfortunately, this is a vestige of the past and that&#039;s not how most apps work anymore.&lt;/p&gt;
&lt;figure&gt;
	&lt;img src=&quot;/img/blog/WalledGardens.jpg&quot; alt=&quot;An image of walled gardens like facebook, myspace, etc.&quot;&gt;
	&lt;figcaption&gt;Walled Gardens, by David Simonds&lt;figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;If people don&#039;t care about privacy, talking about silos and vendor lock-in is a different story. Most non-technical people won&#039;t understand what those words mean, but once you explain it — and they learn that it&#039;s &lt;a href=&quot;https://noeldemartin.com/blog/what-technology-wants&quot;&gt;a technical choice and not a limitation&lt;/a&gt; — you&#039;ve got their attention.&lt;/p&gt;
&lt;p&gt;Everyone has a horror story of an application they loved that disappeared, or degraded so much that it no longer resembles what they fell in love with. I myself have a handful: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Wunderlist&quot;&gt;Wunderlist&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://web.archive.org/web/20160126011426/https://www.tviso.com/&quot;&gt;Tviso&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.theverge.com/2015/8/27/9216863/evernote-food-shutting-down-september&quot;&gt;Evernote Food&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Google_Reader&quot;&gt;Google Reader&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Sunrise_Calendar&quot;&gt;Sunrise Calendar&lt;/a&gt;, etc.&lt;/p&gt;
&lt;p&gt;Fortunately, to have real interoperability we also need true data ownership. So these two goals compliment each other pretty well.&lt;/p&gt;
&lt;h3 id=&quot;untangle-network-effects&quot;&gt;&lt;a href=&quot;#untangle-network-effects&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Untangle Network Effects&lt;/h3&gt;
&lt;p&gt;Finally, a nice consequence from this is that service providers no longer need to take care of managing servers. Since the data is now hosted by users (or whoever they choose to entrust it to), it is decoupled from apps. And software builders can focus on what they care about: Making awesome apps.&lt;/p&gt;
&lt;p&gt;Furthermore, today&#039;s situation often results in winner-takes-all markets. Because of network effects, many applications don&#039;t even get a chance. This ends up crippling innovation and hurting both developers and end users.&lt;/p&gt;
&lt;p&gt;With Solid, even the tiniest of independent developers can build something that makes an impact. Applications don&#039;t have to compete with each other, they can be complementary experiences that are tailored to each individual.&lt;/p&gt;
&lt;h2 id=&quot;criticisms&quot;&gt;&lt;a href=&quot;#criticisms&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Criticisms&lt;/h2&gt;
&lt;p&gt;Now that we&#039;ve got that out of the way, let&#039;s dive into the most common criticisms.&lt;/p&gt;
&lt;h3 id=&quot;the-ux-sucks&quot;&gt;&lt;a href=&quot;#the-ux-sucks&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The UX sucks&lt;/h3&gt;
&lt;p&gt;If you gave Solid a try, I&#039;m sure this is one of the first things you noticed.&lt;/p&gt;
&lt;p&gt;The UI of the POD provider that is recommended to most people, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidcommunity.net/&quot;&gt;solidcommunity.net&lt;/a&gt;, is not very intuitive and certainly could use some polishing. And Solid Apps are not great either; most of the apps you will come across are experimental, unmaintained, or straight up don&#039;t work.&lt;/p&gt;
&lt;p&gt;Although I agree with all of that, the reality is that if you don&#039;t like any of &lt;a href=&quot;/projects&quot;&gt;my apps&lt;/a&gt; there is only one person you can blame: myself.&lt;/p&gt;
&lt;p&gt;Yes, there are some things in Solid that &lt;em&gt;can&lt;/em&gt; make your life more difficult, like the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/has-any-work-been-done-to-standardise-ux-patterns-for-logging-into-solid-applications/5251/&quot;&gt;login process&lt;/a&gt; and &lt;a href=&quot;#the-spec-isnt-evolving&quot;&gt;some limitations in the spec&lt;/a&gt;. But Solid at its core is a data exchange protocol. It doesn&#039;t enforce anything at the UI layer, and you could build any app with Solid. In fact, I strongly believe the UX ceiling for Solid Apps is a lot higher than for any traditional app, because you can create unique experiences that are not possible elsewhere.&lt;/p&gt;
&lt;h3 id=&quot;the-dx-sucks&quot;&gt;&lt;a href=&quot;#the-dx-sucks&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The DX sucks&lt;/h3&gt;
&lt;p&gt;Developer Experience, and the lack of tooling or developer documentation, is another common concern. I recently gave a talk about my &lt;a href=&quot;/solid-symposium-dx&quot;&gt;Thoughts on Solid Developer Experience&lt;/a&gt;, make sure to check that if you want my full thoughts on the topic.&lt;/p&gt;
&lt;p&gt;In short, I actually believe you can learn the basic concepts of Solid in less than an hour. I&#039;d even say that most people who already know how to build websites will be able to understand Solid in &lt;a href=&quot;/fosdem&quot;&gt;the first 10 minutes of this presentation&lt;/a&gt; (a talk I gave at FOSDEM in 2023).&lt;/p&gt;
&lt;p&gt;I think one of the reasons why most people trip up is RDF, the data model used in Solid applications. It can get confusing, specially when you start looking at all the edge-cases and serialization formats. But if you learn the abstract concepts of RDF, it&#039;s not that different from OOP (Object Oriented Programming). And with patterns like Active Record, you don&#039;t even need to know RDF to make Solid Apps (&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://m.signalvnoise.com/conceptual-compression-means-beginners-dont-need-to-know-sql-hallelujah/&quot;&gt;much like most developers don&#039;t need to know SQL&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The lack of tooling and documentation is real though, we&#039;re still a long way from other ecosystems. The good news is that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://rdfjs.dev&quot;&gt;we have people working on it&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://aerogel.js.org/&quot;&gt;myself included&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;this-smells-like-the-semantic-web&quot;&gt;&lt;a href=&quot;#this-smells-like-the-semantic-web&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;This smells like the Semantic Web&lt;/h3&gt;
&lt;p&gt;Maybe this is a variation of the previous point, but it seems like many developers who had high hopes with the Semantic Web have been burned in the past.&lt;/p&gt;
&lt;p&gt;I cannot talk much to this, because Solid was my first encounter with RDF and the Semantic Web. All I can say is that if you&#039;re worried about that, you&#039;re probably right 😅.&lt;/p&gt;
&lt;p&gt;And it couldn&#039;t be any other way, because Solid is precisely that: the next step for the Semantic Web. You can see a glimpse of what Solid would become in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=OM6XIICm_qo&quot;&gt;15 year old presentations&lt;/a&gt;. Even in his 1999 book &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://archive.org/details/isbn_9780062515872&quot;&gt;Weaving The Web&lt;/a&gt;, Tim Berners-Lee talks about many things that sound like Solid.&lt;/p&gt;
&lt;p&gt;Websites were supposed to be read-write since the beginning. And the decentralized nature of the Web empowered individuals to host their own documents from the start (remember personal blogs anyone? Oh wait, that&#039;s where you&#039;re reading this :D).&lt;/p&gt;
&lt;h3 id=&quot;its-not-getting-any-traction&quot;&gt;&lt;a href=&quot;#its-not-getting-any-traction&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;It&#039;s not getting any traction&lt;/h3&gt;
&lt;p&gt;Of course, if you compare &lt;em&gt;anything&lt;/em&gt; with the Web, you&#039;re going to be disappointed. What happened with the Web was a miracle, and I don&#039;t know if that&#039;s going to happen ever again. Still, it is true that Solid has been around for a while now, and it doesn&#039;t seem to be going mainstream anytime soon.&lt;/p&gt;
&lt;p&gt;There has been a lot of talk about what is going to be the &amp;quot;Killer App&amp;quot; for Solid, but in the last couple of years I&#039;ve changed my mind. I no longer think there can be a single app that showcases the power of Solid, what we need is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=zCtoWkwSkxI&quot;&gt;an ecosystem of apps working together&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But that leaves us with a Chicken and Egg problem. Developers are not motivated to make Solid Apps because there are no users, and users don&#039;t want to use Solid because there are no apps.&lt;/p&gt;
&lt;p&gt;However, I also want to raise the point that this all depends on your definition of success. If your only definition of success is complete and utter dominance, then yes, maybe Solid is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://write.as/eloquence/why-mastodon-and-the-fediverse-are-doomed-to-fail&quot;&gt;doomed to fail&lt;/a&gt;. But if you believe that being useful to some people is enough, we&#039;re getting there.&lt;/p&gt;
&lt;h3 id=&quot;the-spec-isnt-evolving&quot;&gt;&lt;a href=&quot;#the-spec-isnt-evolving&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The spec isn&#039;t evolving&lt;/h3&gt;
&lt;p&gt;This is an issue I often raise myself. In 4 years, we&#039;ve only had 3 versions of the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidproject.org/TR/protocol&quot;&gt;core specification&lt;/a&gt;; with most changes in those versions being superfluous. And we&#039;re still lacking essential features for any developer used to traditional databases like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/specification/issues/227#issuecomment-773945439&quot;&gt;modification timestamps&lt;/a&gt;, pagination, or search.&lt;/p&gt;
&lt;p&gt;If you look outside of the core specification, it doesn&#039;t get any better. Most have been a draft for years, like &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;, the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solid.github.io/webid-profile/&quot;&gt;WebId profile&lt;/a&gt;, or &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solid.github.io/data-interoperability-panel/specification/&quot;&gt;Solid Application Interoperability&lt;/a&gt;. And the authorization story is a bit in the air with two competing standards, &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;.&lt;/p&gt;
&lt;p&gt;I&#039;ve tried to understand why this is happening, and I even had &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/solid/vocab/pull/69&quot;&gt;a short stint trying to contribute&lt;/a&gt;. Is it a case of design by committee? Is it a lack of contributors? Is it a tension between server implementers and app developers? Between organizations and individuals? Or maybe it&#039;s normal that these things take time?&lt;/p&gt;
&lt;p&gt;Honestly, I don&#039;t know and it&#039;s probably all of the above. The only positive thing I can say about this is that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ruben.verborgh.org/blog/2024/05/30/the-webs-data-triad/#solved&quot;&gt;what we already have is plenty&lt;/a&gt;. The nice thing about Solid is that applications are often interfacing with a single user&#039;s data, and you can get away with many things that wouldn&#039;t work querying a database for millions of users. In my case, I&#039;ve also found a perfect pairing with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://inkandswitch.com/local-first/&quot;&gt;local-first&lt;/a&gt;, and the specification is no longer a limiting factor.&lt;/p&gt;
&lt;p&gt;Some people have also asked me what I think of use-cases I haven&#039;t tackled yet, like adding social aspects to my apps. My answer is that, indeed, Solid in its current form would struggle to work at scale. But there is a very similar protocol we can look at: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/TR/activitypub/&quot;&gt;ActivityPub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;ActivityPub is the protocol powering Mastodon and the fediverse. If I ever want to implement social features, I&#039;ll probably use ActivityPub rather than Solid. And the good news is that the protocols are very similar in spirit. Both use RDF, and both are under the W3C umbrella. In fact, there are already projects trying to bridge the gap, like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://activitypods.org/&quot;&gt;ActivityPods&lt;/a&gt;. So I can see a future where both of them converge.&lt;/p&gt;
&lt;h3 id=&quot;lack-of-pod-providers-in-b2c&quot;&gt;&lt;a href=&quot;#lack-of-pod-providers-in-b2c&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Lack of POD providers in B2C&lt;/h3&gt;
&lt;p&gt;This is, to me, the single most important issue holding Solid back.&lt;/p&gt;
&lt;p&gt;I can control the experience in my apps, and I can work around the limitations of the spec. However, as soon as I ask people to &amp;quot;log in with Solid&amp;quot;, they will find an insurmountable wall that draws them away. This problem is not unique to Solid, it also happens in the fediverse. But for most newcomers, you can recommend &lt;code&gt;mastodon.social&lt;/code&gt; and get them going.&lt;/p&gt;
&lt;p&gt;In Solid, the only viable option is to become a POD provider yourself. But that&#039;s a catch-22, because you either restrict it to your own apps (in which case what&#039;s even the point of using Solid), or you&#039;re now responsible for people&#039;s sensitive data (which is what you wanted to avoid in the first place).&lt;/p&gt;
&lt;p&gt;In my case, I am saved again by local-first. My apps can be useful without a Solid account, and people can dip their toes before committing. Only when they want to use them across devices, or save their data in the cloud, is Solid a requirement. But that obviously removes many of the advantages, and any app that isn&#039;t local-first is out of luck.&lt;/p&gt;
&lt;p&gt;So yeah, this is certainly a bummer. And I&#039;d say what&#039;s going on in the B2C market for Solid is lackluster overall. Which takes us to the last criticism I wanted to tackle...&lt;/p&gt;
&lt;h3 id=&quot;inrupt&quot;&gt;&lt;a href=&quot;#inrupt&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Inrupt&lt;/h3&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.inrupt.com/&quot;&gt;Inrupt&lt;/a&gt; is the company that Tim Berners-Lee cofounded back in 2018. They were supposed to be the ones leading the charge in making Solid the next step of the Web, but it hasn&#039;t quite panned out.&lt;/p&gt;
&lt;p&gt;At the beginning, they were a key member of the community, and released many public libraries. They are still an important part of the ecosystem, with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/inrupt/solid-client-authn-js&quot;&gt;their authentication library&lt;/a&gt; being the only viable solution for authenticating Solid Apps. But more recently they&#039;ve been &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://blog.ldodds.com/2024/03/12/baffled-by-solid/#comment-4783&quot;&gt;slowly moving their focus towards the B2B market&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To their credit I&#039;ll mention that I&#039;m not sure they actually said they would be focusing on B2C and empowering the community. But that&#039;s what I and many others understood, so it&#039;s been a contentious topic and it&#039;s often raised as an argument to why Solid isn&#039;t working out.&lt;/p&gt;
&lt;p&gt;There are two things I have to say about this.&lt;/p&gt;
&lt;p&gt;I still believe they fulfill a crucial role for the future. Bringing Solid to organizations and governments is also necessary, and that isn&#039;t going to come from independent developers like me. The only caveat I have to add is that this only holds true if they do it respecting Solid&#039;s vision and values, and not just &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&quot;&gt;as an implementation detail&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But the second, more important thing, is that it shouldn&#039;t matter. Solid, like the Web, is permissionless. Regardless of what Inrupt does, a grassroots movement can emerge to push the community forward. That is what I&#039;m more interested about, and rather than blaming Inrupt for whatever Solid is lacking nowadays, I&#039;d rather look myself in the mirror.&lt;/p&gt;
&lt;h2 id=&quot;advantages&quot;&gt;&lt;a href=&quot;#advantages&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Advantages&lt;/h2&gt;
&lt;p&gt;At this point, you may still be wondering why I continue supporting Solid.&lt;/p&gt;
&lt;p&gt;First, most of the problems I talked about can be solved and aren&#039;t inherent to Solid&#039;s vision. Second, it&#039;s not like the alternatives don&#039;t suffer from many of the same problems. But also, there are some things unique to Solid that I haven&#039;t found anywhere else. Or at least, not in combination.&lt;/p&gt;
&lt;h3 id=&quot;tim-berners-lee&quot;&gt;&lt;a href=&quot;#tim-berners-lee&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Tim Berners-Lee&lt;/h3&gt;
&lt;p&gt;Interestingly, some people have raised this as a concern. Not that they don&#039;t like Tim, the creator of the Web. But it isn&#039;t uncommon to hear things like &amp;quot;if it weren&#039;t for Tim, nobody would care about Solid&amp;quot;.&lt;/p&gt;
&lt;p&gt;I certainly agree that Tim&#039;s success with the Web has brought a lot of visibility to Solid. But if we&#039;ve got to be honest, why would free publicity be bad? As I&#039;ve been hammering throughout the post, Solid &lt;em&gt;is&lt;/em&gt; the Web. It doesn&#039;t make sense to think about it in a vacuum.&lt;/p&gt;
&lt;p&gt;Even leaving its popularity aside, the Web is one of the greatest technologies ever created. Not just in technological prowess, but its unique combination of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=UMNFehJIi0E&quot;&gt;serving the people&lt;/a&gt; and Universality are nowhere else to be found.&lt;/p&gt;
&lt;p&gt;The fact that Solid is built on top of the same ideals is an advantage that very few alternatives can claim.&lt;/p&gt;
&lt;h3 id=&quot;interoperable-serendipity&quot;&gt;&lt;a href=&quot;#interoperable-serendipity&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Interoperable Serendipity&lt;/h3&gt;
&lt;p&gt;I wrote about this in &lt;a href=&quot;https://noeldemartin.com/blog/interoperable-serendipity&quot;&gt;a previous post&lt;/a&gt;, but TLDR I believe the real power of interoperability will be unleashed when it happens through applications that don&#039;t know about each other. And I don&#039;t mean only on a technical level, but made by developers who haven&#039;t spoken among themselves.&lt;/p&gt;
&lt;p&gt;When you make a website, you don&#039;t have to talk with browser vendors to make sure that your website works. When you write an email client, you don&#039;t have to talk with email providers to see which formats they are using. You code against the specs, and everything works.&lt;/p&gt;
&lt;p&gt;My dream is to live in a world where this happens with every application, and Solid is the only project that has &lt;em&gt;a slight chance&lt;/em&gt; at making this happen nowadays. And we already have &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://pdsinterop.org/&quot;&gt;people actively working on that&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;it-isnt-web3&quot;&gt;&lt;a href=&quot;#it-isnt-web3&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;It isn&#039;t Web3&lt;/h3&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=D5p2gt7htDM&amp;amp;t=2421s&quot;&gt;It is Web 3.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I don&#039;t think everything in Web3 is bad (though &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.web3isgoinggreat.com/&quot;&gt;sometimes it looks like that&lt;/a&gt;), but I do think it&#039;s good at solving some very specific problems. And it&#039;s not the kind of problems I&#039;m working on.&lt;/p&gt;
&lt;p&gt;Where Web3 and Solid are similar, and why people may associate them, is that both create decentralized apps. However, there is a very important distinction. In Web3, decentralized means that data is &lt;em&gt;everywhere&lt;/em&gt;. Whereas in Solid, decentralized means that data is &lt;em&gt;anywhere&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;If we&#039;re talking about my private data, I&#039;d very much prefer the second approach (with &amp;quot;anywhere&amp;quot; meaning wherever I choose). And I don&#039;t care how secure blockchains are; certainly I don&#039;t trust that whatever encryption we have today won&#039;t be trivial to breach 10 years from now.&lt;/p&gt;
&lt;p&gt;Even when we&#039;re talking about public data, I think something like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ipfs.tech/&quot;&gt;IPFS&lt;/a&gt; is much more appealing. And there are already projects trying to bring those ideas to the Semantic Web, like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ipld.io/&quot;&gt;IPLD&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;it-really-is-a-protocol&quot;&gt;&lt;a href=&quot;#it-really-is-a-protocol&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;It really is a protocol&lt;/h3&gt;
&lt;p&gt;As you can see by looking at the variety of server implementations, there is a lot of different people working on Solid: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/nodeSolidServer/node-solid-server&quot;&gt;Node Solid Server&lt;/a&gt; (JavaScript), &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/CommunitySolidServer/CommunitySolidServer&quot;&gt;Community Solid Server&lt;/a&gt; (TypeScript), &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/pdsinterop/php-solid-server&quot;&gt;PHP Solid Server&lt;/a&gt;, &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;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/manomayam/manas&quot;&gt;Manas&lt;/a&gt; (Rust), etc. And that&#039;s just including Open Source PODs!&lt;/p&gt;
&lt;p&gt;This may be one of the most distinguishing aspects of Solid. Even though other projects look nice on the surface, after further inspection you quickly realize the only implementations out there have been created by the people defining the specs. Not to mention the lack of apps or any real piece of software that isn&#039;t just for demo purposes.&lt;/p&gt;
&lt;p&gt;This is the same reason why I&#039;m so excited about ActivityPub and the fediverse. It&#039;s true that Mastodon has most of the user share, but there are plenty of other apps that are already working together: Pleroma, Pixelfed, MissKey, etc. That&#039;s the kind of ecosystem I like to see.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a href=&quot;#conclusion&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Like everything, Solid has positives and negatives. But overall, I still believe it&#039;s the best thing we have to improve our relationship with software and data.&lt;/p&gt;
&lt;p&gt;I should mention, I also like many of the alternatives too. It&#039;s not that I dislike anything that isn&#039;t Solid, and there are many interesting projects out there. I&#039;m happy to see that we have many people working on this. But every time I hear about an &amp;quot;alternative to Solid&amp;quot;, I can&#039;t help but think of this:&lt;/p&gt;
&lt;figure&gt;
	&lt;a href=&quot;https://xkcd.com/927/&quot; target=&quot;_blank&quot;&gt;
		&lt;img src=&quot;https://imgs.xkcd.com/comics/standards.png&quot; alt=&quot;XKCD webcomic about how standards proliferate&quot;&gt;
	&lt;/a&gt;
	&lt;figcaption&gt;Standards, by xkcd&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;This comes up so often that it&#039;s trite at this point. But it doesn&#039;t make it any less true.&lt;/p&gt;
&lt;p&gt;It&#039;s still early days for this space, and I hope that all the variety serves to stimulate the ecosystem and cross-polinate ideas. Eventually, we should start converging on common solutions. And if that isn&#039;t Solid, that&#039;s fine, I&#039;m prone to &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; anyways.&lt;/p&gt;
&lt;p&gt;For now, though, I&#039;m staying with Solid.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;What do you think, did I miss something? Let&#039;s talk about it, you can join the conversation in the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://forum.solidproject.org/t/why-solid/7612&quot;&gt;Solid Forum&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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:58+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;Can you imagine a world where software lives unencumbered from the artificial limits we&#039;ve created? One where applications work seamlesly with one another, and silos become a thing of the past.&lt;/p&gt;
&lt;p&gt;I can, and this is what it looks like.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/skeuomorphic-software"
            >
                &lt;p&gt;Can you imagine a world where software lives unencumbered from the artificial limits we&#039;ve created? One where applications work seamlesly with one another, and silos become a thing of the past.&lt;/p&gt;
&lt;p&gt;I can, and this is what it looks like.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://unsplash.com/photos/white-and-multicolored-mugs-filled-with-tea-beside-fruits-J6Shwtc8hXY&quot;&gt;&lt;img src=&quot;/img/blog/SkeuomorphicSoftware.jpg&quot; alt=&quot;A tea set&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;skeu-what&quot;&gt;&lt;a href=&quot;#skeu-what&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Skeu-what?&lt;/h2&gt;
&lt;p&gt;The word &amp;quot;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wiktionary.org/wiki/skeuomorph&quot;&gt;skeuomorphic&lt;/a&gt;&amp;quot; comes from the greek words skeûos (implement, tool, vessel) and morphḗ (form). It can mean &amp;quot;resembling a tool&amp;quot; or &amp;quot;with the form of a tool&amp;quot;.&lt;/p&gt;
&lt;p&gt;You may already be familiar with skeuomorphic design, or skeuomorphism. In software, it has been used to describe graphical elements that resemble objects from the physical world: a floppy disk used to save files, a trash can that holds deleted files, etc.&lt;/p&gt;
&lt;figure&gt;
&lt;img src=&quot;/img/blog/LibreofficeTaskbar.png&quot; alt=&quot;&quot;&gt;
&lt;figcaption&gt;Libreoffice&#039;s taskbar is a good example of skeuomorphic design&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;For a long time, we used it to transition from the physical world to the digital world. Today, we&#039;re moving on. Digital is already part of most people&#039;s life, and the bridge is no longer necessary.&lt;/p&gt;
&lt;p&gt;However, when it comes to the way software works (not the way it looks), this bridge was never there. We&#039;ve come to accept some limitations that don&#039;t exist in the physical world.&lt;/p&gt;
&lt;p&gt;I have already written about &lt;a href=&quot;https://noeldemartin.com/blog/what-technology-wants&quot;&gt;these artificial limitations&lt;/a&gt;, and today I want to talk about what things could be like if we manage to break free.&lt;/p&gt;
&lt;h2 id=&quot;the-platform-split&quot;&gt;&lt;a href=&quot;#the-platform-split&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The Platform Split&lt;/h2&gt;
&lt;p&gt;Maybe the most important limitation keeping us from the future I envision is the lack of interoperability.&lt;/p&gt;
&lt;p&gt;In the physical world, we take it for granted. If you&#039;ve got a tea kettle, you can use it to brew any brand of tea. You can serve it in any brand of cup. And you can combine it with any brand of pastries.&lt;/p&gt;
&lt;p&gt;In software, things aren&#039;t so simple. If you download an audiobook from Audible, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://craphound.com/news/2022/07/24/why-none-of-my-books-are-available-on-audible/&quot;&gt;good luck playing it in your favourite media player&lt;/a&gt;. Or if you want to share someone&#039;s message in another social network, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/tveastman/status/1069674780826071040&quot;&gt;it won&#039;t look pretty&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Some of these may improve with regulation, such as the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Digital_Markets_Act&quot;&gt;Digital Markets Act&lt;/a&gt;. But that&#039;s still a far cry from the ideal, and I&#039;m not so naive to believe that any of this would be easy. Although I also believe that if we made the effort, we would be in a much better position than we are right now.&lt;/p&gt;
&lt;p&gt;There is actually one piece of technology that embraces this philosophy: The Web. It&#039;s called the universal platform for a reason, and that is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.w3.org/mission/#:~:text=Web%20for%20all,Learn%20more%20about%3A&quot;&gt;by design&lt;/a&gt;. Not only that, but going against it &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://webcompat.com/&quot;&gt;is frowned upon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, when talking about private data, not even The Web lives up to this ideal. As soon as we create an account, we&#039;ve abandoned any hopes of making it compatible with other services. In a perfect world, you wouldn&#039;t even think about this. It would happen &lt;a href=&quot;https://noeldemartin.com/blog/interoperable-serendipity&quot;&gt;by pure serendipity&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But interoperability is only one part of the puzzle. Skeuomorphic software is much more than that.&lt;/p&gt;
&lt;h2 id=&quot;personal-software&quot;&gt;&lt;a href=&quot;#personal-software&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Personal Software&lt;/h2&gt;
&lt;p&gt;Something else that happens outside of software is that people is more willing to learn and do things on their own. And so, experiences become more personal.&lt;/p&gt;
&lt;p&gt;I&#039;m sure that anyone reading this has at some point considered working on a DIY home project. The most ambitious may have built their own furniture or done some electrical wiring. But things as simple as gardening, making tableware, or even mounting furniture from IKEA show a willingness to learn and understand your environment.&lt;/p&gt;
&lt;p&gt;When it comes to software, most people are helpless. Unless they have experience programming or administering software, they see technology as an impregnable black box they will never understand.&lt;/p&gt;
&lt;p&gt;But it doesn&#039;t have to be that way. &lt;a href=&quot;https://noeldemartin.com/blog/programming-and-human-languages&quot;&gt;Programming is not as difficult as you&#039;d think&lt;/a&gt;. Sure, you&#039;re not going to make an app from scratch without any prior experience. In the same way that you wouldn&#039;t remodel your kitchen without some professional help. However, when the sink is clogged, your first instinct is not to call the plumber.&lt;/p&gt;
&lt;p&gt;It gets even worse. Not only don&#039;t people do software on their own, they don&#039;t even consider hiring a professional to do it for them. Sure, there is some work formatting computers and whatnot, but when was the last time you saw &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.inkandswitch.com/potluck/&quot;&gt;Personal Software&lt;/a&gt;? That is, a piece of software that has been built for someone&#039;s specific workflow and is not intended to be used by anyone else.&lt;/p&gt;
&lt;p&gt;The closer we&#039;ve got to this is spreadsheets. I&#039;m always surprised to meet people who&#039;ve mastered the most obscure of Excel&#039;s formulas, but are dumbfounded when you show them the simplest of JavaScript code.&lt;/p&gt;
&lt;p&gt;On the other hand, everyone has an account on the Social Media platform of the day. Very few people have a place of their own in the Internet, and that&#039;s how we end up with a Big Tech ecosystem instead of a person-first &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/IndieWeb&quot;&gt;indie web&lt;/a&gt;. I&#039;d much rather have an ecosystem where software artisans take part in making everyone&#039;s experiences better, at an individual or community level.&lt;/p&gt;
&lt;h2 id=&quot;small-and-open&quot;&gt;&lt;a href=&quot;#small-and-open&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Small and Open&lt;/h2&gt;
&lt;p&gt;In this ideal world, my favourite kind of software could thrive: Small and Open.&lt;/p&gt;
&lt;p&gt;I strongly believe that great software is born from small teams. There are some exceptions, but software created by big organisations is often bland and complex. Smaller teams, on the other hand, can produce whimsical software that sparks joy.&lt;/p&gt;
&lt;p&gt;When I say small, I also mean small in scope. Too large a team often results in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://seths.blog/2022/06/scale-vs-speed-why-organizations-slow-down/&quot;&gt;a handshake overhead that stiffles innovation&lt;/a&gt;. And the attention to detail necessary to craft a great experience can only be achieved with a small surface area.&lt;/p&gt;
&lt;p&gt;Small doesn&#039;t mean tiny, though. I think a good heuristic for what is &amp;quot;too big&amp;quot; would be &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Dunbar%27s_number&quot;&gt;Dunbar&#039;s number&lt;/a&gt; (150 people). Which is already a huge number, if you ask me. But I still believe a company of 150 people or less can make great software.&lt;/p&gt;
&lt;p&gt;Now, go ahead and look at the software you use on a daily basis. I&#039;m pretty sure most of it comes from Big Tech. But if you think about the software you love the most, I&#039;m also pretty sure it&#039;ll come from a small team.&lt;/p&gt;
&lt;p&gt;The other side of the coin is Openness. Not just Open Source, but also open formats and non adversarial practices.&lt;/p&gt;
&lt;p&gt;One drawback of &amp;quot;small tech&amp;quot; is that it&#039;ll often have some rough edges. And a small scope could mean that it doesn&#039;t fit your particular use-case. But if the software is Open, there is room for you or someone else to fill that gap.&lt;/p&gt;
&lt;p&gt;Something I would like to see is developers hired to implement Personal Software. In part, that&#039;s how I saw the spirit of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.blog/2008-12-19-github-ribbons/&quot;&gt;Github&#039;s &amp;quot;Fork me&amp;quot; feature&lt;/a&gt;. It&#039;s something that didn&#039;t catch on, but it happens all the time in the physical world.&lt;/p&gt;
&lt;p&gt;Going back to the example of kitchen remodeling, imagine that you hire someone to help you face the task. And right off the bat, they tell you that you can only choose from a catalog of premade designs. I&#039;m sure that would go against most people&#039;s expectations. But nobody bats an eye about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://duckduckgo.com/?q=all+social+media+looks+the+same&quot;&gt;the lack of personality in Social Media platforms&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This idea may seem dystopian in today&#039;s ecosystem that prizes market dominance above all else. But it wouldn&#039;t be so if sustainability and versatility were taken more seriously, and we didn&#039;t think that small independent software is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://write.as/eloquence/why-mastodon-and-the-fediverse-are-doomed-to-fail&quot;&gt;doomed to fail&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;the-long-road&quot;&gt;&lt;a href=&quot;#the-long-road&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The Long Road&lt;/h2&gt;
&lt;p&gt;We&#039;re still very far from this ideal, and there are many challenges to overcome like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://xkcd.com/927/&quot;&gt;standard fragmentation&lt;/a&gt;, &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;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://xkcd.com/2347/&quot;&gt;sustainability&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://0data.app/&quot;&gt;data ownership&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://learnwith.weareopen.coop/products/podcast/season-4/s04-e03-self-hosting-it/&quot;&gt;self-hosting&lt;/a&gt;, and many more. Though I wonder how many of these are real problems, or they are &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=WSes_PexXcA&quot;&gt;issues we created ourselves&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I also cannot say that &lt;a href=&quot;https://noeldemartin.com/projects&quot;&gt;my work&lt;/a&gt; lives up to this ideal. But at the very least, I&#039;d like to see that we&#039;re moving in this direction. I&#039;d certainly be happy to see people forking my apps!&lt;/p&gt;
&lt;p&gt;If history has taught me anything, it is that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.dancarlin.com/product/hardcore-history-death-throes-of-the-republic-series/&quot;&gt;it goes in cycles&lt;/a&gt;. I&#039;m not sure in which part of the cycle we are at the moment, but ultimately progress prevails. And I can&#039;t conceive of a world with the same limitations 1000 years from now, if we&#039;re still around.&lt;/p&gt;
&lt;p&gt;Onwards!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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-14T03:03:17+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;{{ partial:components/callout title=&amp;quot;Check out the video!&amp;quot;&lt;br /&gt;
content=&amp;quot;Interoperable Serendipity @ Solid World&amp;quot;&lt;br /&gt;
url=&amp;quot;https://noeldemartin.com/solid-world-2025&amp;quot;&lt;br /&gt;
image=&amp;quot;/img/talks/interoperable-serendipity.png&amp;quot;&lt;br /&gt;
icon=&amp;quot;icons/play&amp;quot;&lt;br /&gt;
target=&amp;quot;_blank&amp;quot;&lt;br /&gt;
/}}&lt;/p&gt;
&lt;p&gt;If you had asked my thoughts on interoperability some years ago, I wouldn&#039;t have had much to say. Nowadays, it has become one of my most revered ideals. And today, I want to take you along for a journey towards its summum: Interoperable Serendipity.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/interoperable-serendipity"
            >
                &lt;p&gt;{{ partial:components/callout title=&amp;quot;Check out the video!&amp;quot;&lt;br /&gt;
content=&amp;quot;Interoperable Serendipity @ Solid World&amp;quot;&lt;br /&gt;
url=&amp;quot;https://noeldemartin.com/solid-world-2025&amp;quot;&lt;br /&gt;
image=&amp;quot;/img/talks/interoperable-serendipity.png&amp;quot;&lt;br /&gt;
icon=&amp;quot;icons/play&amp;quot;&lt;br /&gt;
target=&amp;quot;_blank&amp;quot;&lt;br /&gt;
/}}&lt;/p&gt;
&lt;p&gt;If you had asked my thoughts on interoperability some years ago, I wouldn&#039;t have had much to say. Nowadays, it has become one of my most revered ideals. And today, I want to take you along for a journey towards its summum: Interoperable Serendipity.&lt;/p&gt;
&lt;h2 id=&quot;preface&quot;&gt;&lt;a href=&quot;#preface&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Preface&lt;/h2&gt;
&lt;p&gt;Before we begin, let me lay down some context.&lt;/p&gt;
&lt;p&gt;As you may know, I&#039;ve been working with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidproject.org/&quot;&gt;Solid&lt;/a&gt; for a while now. I started down this path 3 years ago, when I started working on what I called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://autonomous-data.noeldemartin.com&quot;&gt;Autonomous Data&lt;/a&gt;. Soon thereafter, I found about Solid and decided to switch my focus there.&lt;/p&gt;
&lt;p&gt;Recently, I came across &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://0data.app/&quot;&gt;Zero Data Apps&lt;/a&gt;, which is very much aligned with my initial idea for Autonomous Data, and it encompasses other projects beyond Solid. The main Zero Data protocols right now are Solid, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://remotestorage.io&quot;&gt;remoteStorage&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fission.codes/&quot;&gt;Fission&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One thing all of these have in common is that they make a great emphasis on the importance of interoperability. And this has been a common topic of discussion in the community.&lt;/p&gt;
&lt;p&gt;In this post, I will give my take on the topic. I am going to use Solid in my examples because that&#039;s what I have experience working with, but my ideas should be universal.&lt;/p&gt;
&lt;h2 id=&quot;a-taxonomy-of-interoperability&quot;&gt;&lt;a href=&quot;#a-taxonomy-of-interoperability&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;A taxonomy of interoperability&lt;/h2&gt;
&lt;p&gt;The first time I heard about interoperability being classified was listening to an episode of Seth Godin&#039;s podcast called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://play.acast.com/s/akimbo/adversarialinteroperability&quot;&gt;Adversarial Interoperability&lt;/a&gt;, which I recommend listening to.&lt;/p&gt;
&lt;p&gt;In this episode, he introduces &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.eff.org/deeplinks/2019/07/interoperability-fix-internet-not-tech-companies&quot;&gt;Cory Doctorow&lt;/a&gt;&#039;s classification; which is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Indifferent interoperability: I don&#039;t care if you plug your thing into my product.&lt;/li&gt;
&lt;li&gt;Cooperative interoperability: Please plug your thing into my product.&lt;/li&gt;
&lt;li&gt;Adversarial interoperability: Dang it, stop plugging your thing into my product!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What we really want for our apps is indifferent interoperability, but I think that&#039;s very difficult to achieve in practice (more on this later). What we have with Zero Data protocols is cooperative interoperability. And what&#039;s more common in the rest of the industry is adversarial interoperability.&lt;/p&gt;
&lt;p&gt;This classification is useful to understand the overall ecosystem, but I want to drill down on what cooperative interoperability looks like in practice.&lt;/p&gt;
&lt;h2 id=&quot;obfuscated-interoperability&quot;&gt;&lt;a href=&quot;#obfuscated-interoperability&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Obfuscated interoperability&lt;/h2&gt;
&lt;p&gt;When you are writing a Solid app, you have a set of tools at your disposal to make it interoperable with other apps. But these tools can be neglected or misused.&lt;/p&gt;
&lt;p&gt;One example is the type index, which is a way to declare where your data is stored so that other apps can find it. However, it&#039;s perfectly possible to make a Solid app that doesn&#039;t declare its data in the type index. This means that other apps have to know the exact location where the data resides, or they won&#039;t interoperate properly.&lt;/p&gt;
&lt;p&gt;Another example is data types. In Solid, your app relies on Semantic Data, which means that each piece of data is self-describing (more on this in the next section). However, there is nothing keeping your from misusing that representation. For example, you could use a description field (which is supposed to be human readable) to store a json object.&lt;/p&gt;
&lt;p&gt;Both of these examples are not uncommon in the wild, and there are multiple reasons for this to happen (ill intent not being a common one). To be honest, I have done a fair share of this myself, and probably still do.&lt;/p&gt;
&lt;p&gt;When this happens, interoperability in Solid is not too far from adversarial interoperability. You have to go out of your way to make your app interoperable, and you have to rely on implementation details that are prone to change.&lt;/p&gt;
&lt;h2 id=&quot;intentional-interoperability&quot;&gt;&lt;a href=&quot;#intentional-interoperability&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Intentional interoperability&lt;/h2&gt;
&lt;p&gt;If you use all the tools properly, things are much easier.&lt;/p&gt;
&lt;p&gt;As I mentioned before, Semantic Data is self-describing. Let&#039;s illustrate what that means with an example. Imagine that you are making a task manager. In a traditional non-Solid app, this is what a Task could look like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
    &amp;quot;id&amp;quot;: 1,
    &amp;quot;description&amp;quot;: &amp;quot;Go shopping&amp;quot;,
    &amp;quot;done&amp;quot;: false
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you look at this data, you can probably guess what it means. But that&#039;s all you are doing; you&#039;re guessing. As the app becomes more complicated, that will be more difficult.&lt;/p&gt;
&lt;p&gt;In Solid, this is what a Task could look like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
    &amp;quot;@context&amp;quot;: &amp;quot;https://vocab.example.com/&amp;quot;,
    &amp;quot;@id&amp;quot;: &amp;quot;https://data.example.com/tasks/1&amp;quot;,
    &amp;quot;@type&amp;quot;: &amp;quot;Task&amp;quot;,
    &amp;quot;description&amp;quot;: &amp;quot;Go shopping&amp;quot;,
    &amp;quot;done&amp;quot;: false
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On the surface, you may think it doesn&#039;t look that different, but let&#039;s dig a little deeper.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;@context&lt;/code&gt; property indicates the vocabulary, and this can be used to expand on the meaning of all the other properties. For example, if you visited &lt;code&gt;https://vocab.example.com/description&lt;/code&gt; you would see some documentation on what the &lt;code&gt;description&lt;/code&gt; property actually means.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;@type&lt;/code&gt; property is also important, it tells you what this object is. If you visit &lt;code&gt;https://vocab.example.com/Task&lt;/code&gt;, you would see what properties this object can have and what it represents.&lt;/p&gt;
&lt;p&gt;This is a lot better, and much closer to what Cory Doctorow means when he talks about cooperative interoperability. For a developer who wants to make an app interoperable with another, seeing this type of data and reading the vocabulary definition is not unlike reading the API documentation for a traditional app.&lt;/p&gt;
&lt;p&gt;But there is an important difference here. In Solid, each application doesn&#039;t use its own data structure. Developers are encouraged to reuse existing vocabularies that can be found in websites such as &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://schema.org&quot;&gt;schema.org&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://lov.linkeddata.es/&quot;&gt;lov.linkeddata.es&lt;/a&gt;. This way, apps that are working on a common set of data will be interoperable out of the box.&lt;/p&gt;
&lt;p&gt;But this doesn&#039;t work as well in practice as it does in theory. When it comes down to making an app, it&#039;s rare to find an existing vocabulary that fits perfectly with your use-case. So you resort to either mixing vocabularies or defining your own. The end result is that applications still need to be intentional about being interoperable.&lt;/p&gt;
&lt;h2 id=&quot;lens-based-interoperability&quot;&gt;&lt;a href=&quot;#lens-based-interoperability&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Lens-based interoperability&lt;/h2&gt;
&lt;p&gt;With the concepts I&#039;ve introduced so far, it&#039;s relatively easy (or at least possible) to make an app interoperable with another. You just have to look at the vocabulary it is using, and use the same one in your app. But soon, this can go awry if you want to be interoperable with two apps that use different vocabularies.&lt;/p&gt;
&lt;p&gt;Up until recently, I didn&#039;t have an answer for that. But some weeks ago, looking at the notes for &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://chat.0data.app/t/zero-data-swap-1-schemas-interoperability-and-cambria-july-28-2021&quot;&gt;a Zero Data Swap&lt;/a&gt;, I came across a new project called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.inkandswitch.com/cambria/&quot;&gt;Cambria&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Imagine that you want to be interoperable with two applications that generate the following data:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
    &amp;quot;@context&amp;quot;: &amp;quot;https://vocab.example.com/&amp;quot;,
    &amp;quot;@id&amp;quot;: &amp;quot;https://data.example.com/tasks/1&amp;quot;,
    &amp;quot;@type&amp;quot;: &amp;quot;Task&amp;quot;,
    &amp;quot;description&amp;quot;: &amp;quot;Go shopping&amp;quot;,
    &amp;quot;done&amp;quot;: false
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
    &amp;quot;@context&amp;quot;: &amp;quot;https://vocab.acme.com/&amp;quot;,
    &amp;quot;@id&amp;quot;: &amp;quot;https://data.acme.com/todos/1&amp;quot;,
    &amp;quot;@type&amp;quot;: &amp;quot;ToDo&amp;quot;,
    &amp;quot;name&amp;quot;: &amp;quot;Go shopping&amp;quot;,
    &amp;quot;completed&amp;quot;: false
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;They use different vocabularies, so making your app compatible with both won&#039;t be easy. But looking at the data, you can tell they are actually doing the same thing. What if you could tell your app how to map from one vocabulary to another? And what if you could do it using your own vocabulary, making this translation transparent to your codebase?&lt;/p&gt;
&lt;p&gt;That is exactly what Cambria proposes. It&#039;s not focused on Solid, but Solid has a concept of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ruben.verborgh.org/blog/2019/06/17/shaping-linked-data-apps/&quot;&gt;shapes&lt;/a&gt; and I think this approach would be a perfect match. They call these translations &amp;quot;lenses&amp;quot;, hence my referring to this as lens-based interoperability.&lt;/p&gt;
&lt;p&gt;But of course, this doesn&#039;t come without some caveats, such as what happens when two shapes are not perfectly translatable. To learn more about this, I&#039;d recommend reading &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.inkandswitch.com/cambria/#open-questions-and-potential-for-further-research&quot;&gt;their thoughts on the topic&lt;/a&gt;. But one problem I see in practice is that developers, or &lt;em&gt;someone&lt;/em&gt;, still needs to define the lenses. It&#039;s still not completetly effortless — it&#039;s not indifferent interoperability.&lt;/p&gt;
&lt;h2 id=&quot;interoperable-serendipity&quot;&gt;&lt;a href=&quot;#interoperable-serendipity&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Interoperable serendipity&lt;/h2&gt;
&lt;p&gt;With lens-based interoperability, we can go very far. But there is still a use-case it doesn&#039;t solve. What are the chances of two indie developers, who don&#039;t know about each other, making apps that are interoperable out of the box?&lt;/p&gt;
&lt;p&gt;Even with lenses, I&#039;d say the chances are very low — you still have to know about the other app in order to define the translations. But that&#039;s the world I want to see. When I think about the potential of Zero Data Apps, what gets me excited the most is thinking in a world with hundreds or thousands of apps, that work with each other by pure serendipity.&lt;/p&gt;
&lt;p&gt;I have some ideas of how this could happen, but none of them is perfect.&lt;/p&gt;
&lt;p&gt;One possibility would be to rely on crowd-sourced repositories of translations. Even if a developer doesn&#039;t know about another app, the community could do the job of defining the translations. But this could potentially ruin the decentralized nature of Zero Data Apps.&lt;/p&gt;
&lt;p&gt;Another solution would be to actually ask users how to translate the data. But this is a huge challenge in and of itself. Making this intuitive for non-technical users wouldn&#039;t be easy. Not to mention that this would add even more barriers to entry.&lt;/p&gt;
&lt;p&gt;So yeah, I don&#039;t have a perfect solution. But I think it&#039;s important to strive nonetheless, and I&#039;m looking forward to see how this evolves in the upcoming years.&lt;/p&gt;
&lt;h2 id=&quot;the-way-forward&quot;&gt;&lt;a href=&quot;#the-way-forward&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The way forward&lt;/h2&gt;
&lt;p&gt;I have mentioned many ideas here, but interoperability is still lacking in practice. Not to mention interoperability between protocols, which I haven&#039;t even tackled.&lt;/p&gt;
&lt;p&gt;But that shouldn&#039;t be discouraging, on the contrary. The fact that this is even a topic of discussion is a silver lining. In the world of centralization and Big Tech, this isn&#039;t even a possibility. So we must keep asking these questions, and working towards an ecosystem where these ideas are a reality.&lt;/p&gt;
&lt;p&gt;For my part, I will continue &lt;a href=&quot;https://noeldemartin.com/blog/open-productivity&quot;&gt;working in the open&lt;/a&gt; and sharing what I learn along the way. The Zero Data ecosystem is still in its infancy, but I am hopeful that eventually it will blossom.&lt;/p&gt;
&lt;p&gt;Onwards!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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>
                2024-08-01T13:19:50+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;&lt;/p&gt;
&lt;p&gt;In July of 2011, I finished my degree in computer science and got my first job. That was 10 years ago.&lt;/p&gt;
&lt;p&gt;Today, I want to look back and share some of the lessons I&#039;ve learned.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/10-years-as-a-software-developer"
            >
                &lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://unsplash.com/photos/IGfYkjawPAc&quot;&gt;&lt;img src=&quot;/img/blog/10Years.jpg&quot; alt=&quot;10 Years as a Software Developer&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In July of 2011, I finished my degree in computer science and got my first job. That was 10 years ago.&lt;/p&gt;
&lt;p&gt;Today, I want to look back and share some of the lessons I&#039;ve learned.&lt;/p&gt;
&lt;h2 id=&quot;a-brief-history-of-me&quot;&gt;&lt;a href=&quot;#a-brief-history-of-me&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;A Brief History of Me&lt;/h2&gt;
&lt;p&gt;Before I start talking about what I learned, I will review the journey that got me here. If you don&#039;t care about any of this, feel free to &lt;a href=&quot;#lessons-learned&quot;&gt;skip to the next part&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;before-the-beginning&quot;&gt;&lt;a href=&quot;#before-the-beginning&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Before the beginning&lt;/h3&gt;
&lt;p&gt;Before I knew anything about programming, I wanted to be a graphic designer. My programming experience going into university was completely non-existent. I knew so little, in fact, that I didn&#039;t even know what I was getting myself into.&lt;/p&gt;
&lt;p&gt;What I knew was that I liked mathematics and computers more than I liked the subjects I saw on the curriculum for an art degree. So I figured (wrongly) that if I studied computer science, I would learn Photoshop in some of the subjects.&lt;/p&gt;
&lt;p&gt;I realize how stupid that sounds, but to my 18 year old self this made perfect sense. In high school, all the subjects I had taken related with computers had been all about teaching us how to use programs like Microsoft Word or AutoCAD. So in my mind, doing a career about it would just mean learning how to use more programs.&lt;/p&gt;
&lt;p&gt;In the end, however, it turned out for the better because I love programming!&lt;/p&gt;
&lt;h3 id=&quot;2011-getting-started&quot;&gt;&lt;a href=&quot;#2011-getting-started&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;2011: Getting started&lt;/h3&gt;
&lt;p&gt;It was 2011, and I was 21. I had completed my bachelor&#039;s degree in 3 years, so my academic experience was rather short. I could have done a couple more years to get a full degree, but this time I understood the curriculum and I decided that I wanted to do something else. I had fallen in love with algorithms, but I was still very much interested in graphics. So I found the perfect follow-up, I started a masters degree in Artificial Intelligence and Computer Vision.&lt;/p&gt;
&lt;p&gt;But there was something else nagging at me. I was enjoying the student life and working on my assignments, but I craved real-life experience. I had heard about entrepreneurship, and the concept was extremely appealing to me (even though, like with the CS degree, I knew nothing about it). As these things go, turns out that a friend of mine was starting an entrepreneurial endeavor and offered me to join them part-time. That&#039;s how I got my first job at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://web.archive.org/web/20120705235007/http://ilurus.com/&quot;&gt;Ilurus&lt;/a&gt;. Later on we started working on a different project called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://web.archive.org/web/20130116143218/http://veziko.com/&quot;&gt;Veziko&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It was at this time that I started to follow others&#039; work online. Probably the first developer I ever followed (and still do!) was &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/jeffrey_way/&quot;&gt;Jeffrey Way&lt;/a&gt;, who taught me about CodeIgniter. This also meant I started learning about The Web, which I had seen close to nothing in university.&lt;/p&gt;
&lt;p&gt;I also started listening to podcasts, and the first one was &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.eofire.com&quot;&gt;Entrepreneur on Fire&lt;/a&gt;. I don&#039;t listen to this one anymore, and my idea of entrepreneurship has changed a lot since (at the time, I saw entrepreneurship as a synonym with Silicon Valley and the VC unicorn madness). But this period definitely set the pillars for my ideals today, and I started to understand what this entrepreneurship thing was about.&lt;/p&gt;
&lt;p&gt;But then, 2012 happened.&lt;/p&gt;
&lt;h3 id=&quot;2012-seizing-the-opportunity&quot;&gt;&lt;a href=&quot;#2012-seizing-the-opportunity&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;2012: Seizing the opportunity&lt;/h3&gt;
&lt;p&gt;In the summer of 2012, another friend reached out to me with an opportunity to work at an international company called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://web.archive.org/web/20120919072244/http://toro-intl.com/&quot;&gt;Toro&lt;/a&gt;. It was a french-founded asian company, headquartered in Taiwan, with plans to open a new office in Barcelona the following year. They were hiring 10 developers to participate in a 5 months training program in Taiwan, who would then come back to inaugurate the Barcelona office in January 2013.&lt;/p&gt;
&lt;p&gt;On the one hand, I still enjoyed learning about the entrepreneurship scene, and to this day I still look back at my days at Veziko as one of my dearest professional experiences. But I thought things were moving too slow, so I still craved that real-life experience. Now I understand that things take time, but I was young and ignorant then. And as much as I was enjoying the master degree, it was still purely academical.&lt;/p&gt;
&lt;p&gt;On the other hand, Toro was already in business, I would gain international experience, and they were working with mobile technologies — which I knew were going to become the future (I knew because a teacher told me, I wasn&#039;t that insightful).&lt;/p&gt;
&lt;p&gt;So it wasn&#039;t an easy decision to make, but in the end I decided to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://web.archive.org/web/20121018185707/http://www.toro-intl.com/blog/toro-spain-in-taipei/la-importancia-de-saber-aprovechar-las-oportunidades/&quot;&gt;seize the opportunity&lt;/a&gt; (this was my first blog post ever, and yes, I also cringe reading it).&lt;/p&gt;
&lt;p&gt;After the 5 months adventure in Taiwan, things were relatively stable. In January 2013 we opened the Barcelona office. As destiny would have it, I managed to continue pursuing my interests in graphics and UI. Most of my work at this company revolved around creating a UI engine for J2ME-like applications. I say J2ME-like because applications were written using J2ME, but they run on top of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=wdH0plAEgBs&quot;&gt;a cross-platform virtual machine&lt;/a&gt;. One of the challenges, then, was to replicate native components as much as possible. This seemed crazy at the time, but today we have &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Flutter_(software)&quot;&gt;Flutter&lt;/a&gt; which is kind of doing the same, so maybe it wasn&#039;t so crazy after all. Other than UI, I also got some experience working with assembler code and virtual machines. To this day, this has been my most technically intensive role. I even tutored &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://upcommons.upc.edu/handle/2099.1/23874&quot;&gt;a thesis on true-type font rendering&lt;/a&gt;, believe it or not.&lt;/p&gt;
&lt;p&gt;I worked at Toro for two years, and I learned a lot given that this was my first &amp;quot;real job&amp;quot;. But I still hadn&#039;t been cured of the bug of entrepreneurship, so in the summer of 2014 I decided to quit.&lt;/p&gt;
&lt;h3 id=&quot;2014-entrepreneurship&quot;&gt;&lt;a href=&quot;#2014-entrepreneurship&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;2014: Entrepreneurship&lt;/h3&gt;
&lt;p&gt;If Veziko had been pure entrepreneurship, Toro was my first experience working in a corporate environment. It still had a startup vibe, but there was definitely a lot more bureaucracy. So I still yearned to do things my own way, and I wanted to experience working in the full stack. Not &amp;quot;full stack&amp;quot; as in development stack, but the full product stack. I wanted to take an idea from inception to reality and experience all that goes with it.&lt;/p&gt;
&lt;p&gt;Years before, I told myself that even though I was getting a job, my primary goal was still to learn. And it would be until I was 25 years old. I was 24 when I quit Toro, and I had some savings. That&#039;s why I decided this would be my best chance to do entrepreneurship. Even if it didn&#039;t pan out, I would learn a lot.&lt;/p&gt;
&lt;p&gt;Now, the problem was that I wanted to do &amp;quot;something&amp;quot;, but I didn&#039;t know what! Yes, that&#039;s the text book definition of a wantrepreneur. Struggling with this is how I came up with posts like &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;
&lt;p&gt;But that situation wasn&#039;t so bad, because it gave me the chance to experiment and follow my curiosity. In this period, I planted the seeds for some of the things that I value the most today. For example, I &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://web.archive.org/web/20141024092434/http://www.noeldemartin.com/&quot;&gt;created this website&lt;/a&gt;. It was also during this time that I really started getting into web development, and fell in love with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravel.com&quot;&gt;Laravel&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I decided to release my products under a brand. That&#039;s how I came up with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://lincolnschilli.com/&quot;&gt;Lincoln&#039;s Chilli&lt;/a&gt;, which I called my &amp;quot;entrepreneurial sandbox&amp;quot;. Most of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://web.archive.org/web/20200925021754/https://lincolnschilli.com/&quot;&gt;the projects I started&lt;/a&gt; are discontinued now, but one of them survives: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=com.lincolnschilli.quickpick&quot;&gt;Quick Pick&lt;/a&gt;. This was actually the first product I ever made, and it embodies that notion of doing everything myself. It&#039;s 100% hand-crafted. I got some help from my girlfriend who sketched the characters in paper, which I then digitized and colored for the game. Even the music you hear is actually me playing the guitar! (don&#039;t get too excited though, it&#039;s a silly tune).&lt;/p&gt;
&lt;p&gt;In parallel with doing my own thing, I also collaborated with a friend for something more ambitious. Actually, if I have to be honest, it was &lt;em&gt;too&lt;/em&gt; ambitious. We created an online turn-based card game for mobile phones. You can think about it like a mix between &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Magic:_The_Gathering&quot;&gt;Magic the Gathering&lt;/a&gt; and Chess. And we weren&#039;t shy on features. I implemented from scratch: a leveling system, a backend to manage the library of cards, a custom protocol to synchronize (and replay) actions across devices, bots with different difficulties, an interactive tutorial, etc.&lt;/p&gt;
&lt;p&gt;I would agree if you say that it was &lt;em&gt;a bit&lt;/em&gt; overengineered. However, working on this project was extremely fun and insightful. We also collaborated with illustrators and sound designers, so it wasn&#039;t just about programming. The game is no longer available, but you can find some screenshots – and an APK to play offline – in &lt;a href=&quot;https://noeldemartin.com/projects/beastmasters&quot;&gt;the projects page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, for two years, I had been working on my own projects full-time. But let&#039;s talk numbers. Do you know how much money I made? 0€. Yes, that&#039;s not a typo: 0, zero, nothing. And it wasn&#039;t because I didn&#039;t monetize my products; the card game launched with in-app purchases, and my latest product wasn&#039;t free to use. I even had ads on my second product, but it made almost nothing so I didn&#039;t bother cashing out.&lt;/p&gt;
&lt;p&gt;The critical mistake I made was always the same: launching to crickets. I learned, the hard-way, that it doesn&#039;t matter how good your product is. If you are not solving a real problem, it will not work. And &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://seths.blog/tim/&quot;&gt;marketing&lt;/a&gt; is also very important, something I did almost none of. Not to mention time, there is no such thing as an overnight success, and most of my projects were finished at launch. I&#039;m not saying that my products were great either, but I learned this because it didn&#039;t matter how much effort I put into a project, the response was always the same: crickets.&lt;/p&gt;
&lt;p&gt;So I won&#039;t try to sugar coat it, let&#039;s call it what it was: failure.&lt;/p&gt;
&lt;p&gt;But if I&#039;m honest, I don&#039;t regret a minute of it. I mentioned how my main goal was to learn, and I had definitely done that. There is a valley of difference between doing something as an employee and doing it for yourself.&lt;/p&gt;
&lt;p&gt;And just when I was about to start looking for a job and leave aside this entrepreneurial pipe dream... I co-founded a startup.&lt;/p&gt;
&lt;h3 id=&quot;2016-startup-life&quot;&gt;&lt;a href=&quot;#2016-startup-life&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;2016: Startup life&lt;/h3&gt;
&lt;p&gt;After spending a couple of years trying to push my ideas into the market, which doesn&#039;t work, I was ready to go back to a stable job. But before I even applied anywhere, I got a new opportunity. Yet another friend had rented an office in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Tecnocampus&quot;&gt;a scientific park in my home town&lt;/a&gt;. And the person renting the office next door had just launched their idea and was looking for a technical co-founder.&lt;/p&gt;
&lt;p&gt;The vision was to give people access to sport facilities without paying subscription nor registration, just paying for their use in minutes. There was a gym across the street, and they had already run a pilot with good results. The name of the project was Geemba.&lt;/p&gt;
&lt;p&gt;The prospects were really good: the location was great, there was a technical challenge, and the business idea resonated with me. But not everything was sunshine and roses. My savings were running out, and taking this kind of position wouldn&#039;t guarantee a stable income for a while. What&#039;s worse, I had to invest money in order to found the company. And I was 26! So the learning excuse was out.&lt;/p&gt;
&lt;p&gt;But I really wanted to do it, so I decided to join with a couple of conditions. We opted for a government-backed loan called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.enisa.es/en&quot;&gt;Enisa&lt;/a&gt;. If that was granted, together with our own money, we had a financial runway of about a year without relying on external investment. I had to ask for a personal loan to cover my part, but I would get it back with a (very low) salary and doing some freelancing on the side.&lt;/p&gt;
&lt;p&gt;So that&#039;s how I managed to kick it up a notch and became the &amp;quot;CTO&amp;quot; of a startup. I put that in quotes because it&#039;s ridiculous to call anyone CTO for a two-person company. But that&#039;s how things go in the entrepreneurship scene.&lt;/p&gt;
&lt;p&gt;The next year and a half was great. It was bittersweet having to freelance to get out of debt, but I wouldn&#039;t have changed it for the world. We ended up hiring some part-time employees, and because we were located next to a university we also had a couple of students doing internships. I even did some presentations in the university and joined as part of the jury for a couple of master theses.&lt;/p&gt;
&lt;p&gt;On the product side, I was very happy with the solution we came up with. Customers would download the mobile app, introduce payment details, and request access before arriving at the gym. Once they got there, the receptionist would accept the request from their private dashboard and let them in. At that point, the timer started counting. When they left, the receptionist ended their session and we charged them for the exact amount of minutes they had spent inside the facilities.&lt;/p&gt;
&lt;p&gt;On the technical side, I also learned a lot. I started using &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://vuejs.org/&quot;&gt;Vue&lt;/a&gt;, another one of my core technologies today. As you can imagine, building all the moving pieces was not trivial (the app, the backend, the receptionist&#039;s dashboard, etc.). To top it off, everything had to work in real time and payments were involved! Thank God that Stripe already existed. Fortunately, we never had any serious technical issues.&lt;/p&gt;
&lt;p&gt;But if you&#039;re reading this, you know it didn&#039;t end well. Customers loved the idea, but finding gyms willing to do it was a different story. Many of them actually thought this was a threat to their business model, because they depended so much on customers paying subscriptions (even if they didn&#039;t attend the facilities, does that &lt;a href=&quot;https://noeldemartin.com/blog/what-technology-wants#subscriptions&quot;&gt;ring a bell&lt;/a&gt;?).&lt;/p&gt;
&lt;p&gt;We started with this idea of &amp;quot;gym by hours&amp;quot;, but we slowly began catering more to the gym&#039;s needs: we built a CRM for all their customers (not just the ones using our app), we created an editor to make personal training plans, etc. Eventually, we started to run out of money and our only option was to seek external investment. I&#039;m happy to say we didn&#039;t even try, we didn&#039;t waste a single minute on that.&lt;/p&gt;
&lt;p&gt;A year and a half before, we set out to validate the idea. After having given it our all, we decided that this was it for us. Could it have worked if we kept grinding? Sure. Could we have done it better? Absolutely. Do I regret quitting or even trying? Nope.&lt;/p&gt;
&lt;p&gt;If you&#039;re curious, you can also &lt;a href=&quot;https://noeldemartin.com/projects/geemba&quot;&gt;learn more about Geemba in the projects page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So after almost 4 years working on my own projects full-time, I went back to the workforce.&lt;/p&gt;
&lt;h3 id=&quot;2018-the-wrong-bus&quot;&gt;&lt;a href=&quot;#2018-the-wrong-bus&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;2018: The wrong bus&lt;/h3&gt;
&lt;p&gt;If you&#039;ve paid attention, you may have noticed that this was my first time looking for a job. So my job hunting skills were virtually non-existent. To make things worse, I didn&#039;t even know what to look for. Should I look for a management position? Technical lead? CTO at a startup? Fullstack developer? Frontend developer? Mobile developer?&lt;/p&gt;
&lt;p&gt;Ultimately, I decided that I wanted to spend most of my time programming, so I looked for developer offers. But narrowing them down was still tougher than expected. I had my development stack of choice, but I didn&#039;t care about it as much as I cared about the values and mission of the organization I would join. Turns out that&#039;s not something you can filter by in job boards. In the end, after spending too much time searching and applying almost nowhere, I ended up joining a startup called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://web.archive.org/web/20190704045143/https://musiclist.com/&quot;&gt;MusicList&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Initially, I was looking forward to it, because I was the first employee and I thought I could have an active role in shaping the values of the company. But soon I realized that wasn&#039;t going to happen. The values of the founders were too different from mine. And I didn&#039;t notice before joining because their values were not that different from mine 4 years before. In the 4 years of walking my own entrepreneurial journey, I had changed.&lt;/p&gt;
&lt;p&gt;I&#039;m not saying their values were necessarily bad, or that they were trying to do something unethical. But they were on the Venture Capital Startup hamster wheel, and I was done with that. By this time, I was more interested in privacy and sustainability than growth. I also started reading &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://seths.blog/&quot;&gt;Seth Godin&#039;s blog&lt;/a&gt;, which gave me a new perspective on how to do things. Right about that time, he published a post called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://seths.blog/2018/08/the-wrong-bus/&quot;&gt;The wrong bus&lt;/a&gt; that had a big impact on me. I was on this bus headed to startup land, and I didn&#039;t like it. I&#039;m sure it helps that I read it while riding a bus, on my 1-hour commute, in the middle of August, whilst most of my friends were enjoying their summer holidays.&lt;/p&gt;
&lt;p&gt;So, shortly after joining, I was back on the job hunt. But this time, I was in no rush. I finally had a stable salary and no debts, and I had just moved out of my parents house (yes, at 28 years old!). The work itself wasn&#039;t bad either, I was using Laravel and learning about React, which completed my curriculum with professional experience with &amp;quot;the big 3&amp;quot; frontend frameworks (React, Vue and Angular). But all that time, I wasn&#039;t completely happy because I knew I didn&#039;t like were I was going.&lt;/p&gt;
&lt;p&gt;The following year and a half I transitioned from accepting the situation to almost quitting. From the start, I was completely honest with my colleagues and I even published a public blog post &lt;a href=&quot;https://noeldemartin.com/blog/finding-opportunities-that-fit-your-values&quot;&gt;announcing that I was looking for work&lt;/a&gt;. I also &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://dougbelshaw.com/blog/2018/09/29/career-advice/&quot;&gt;asked others for advice&lt;/a&gt;. It was during this time that I learned that job boards can be some of the worst places to find a job (at least the kind of job I was looking for).&lt;/p&gt;
&lt;p&gt;Other than job seeking, I still had the entrepreneurial bug in me (I guess it&#039;s never going away). So &lt;a href=&quot;https://noeldemartin.com/tasks/taking-seth-godins-bootstrappers-workshop&quot;&gt;I joined Seth Godin&#039;s The Bootstrapper&#039;s Workshop&lt;/a&gt;, which pushed me to start &lt;a href=&quot;https://noeldemartin.com/blog/open-productivity&quot;&gt;working in the open&lt;/a&gt;. This is also when I learned about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.cypress.io/&quot;&gt;Cypress&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://solidproject.org/&quot;&gt;Solid&lt;/a&gt;; the three technologies that completed my current stack.&lt;/p&gt;
&lt;p&gt;Even though doing that on the side was great, I became ever more uncomfortable with my day job. Eventually, I decided to quit for good. But I didn&#039;t want to go into entrepreneurship again, so I would be quitting into unemployment. Talking with someone in an event, I had a crazy idea. I had heard about the mythical 4-day workweek, and I thought that dedicating an entire day a week to my side-projects would satiate my hunger for purpose (at least for the time being). So I went ahead and asked for it. If my request was denied, I would quit altogether.&lt;/p&gt;
&lt;p&gt;I really saw this as an excuse to tell myself in order to justify quitting without a plan, I totally expected it to be denied. But to my surprise, they accepted. And this is how I started experiencing a 4-day workweek, and haven&#039;t looked back since. It&#039;s funny how two of the best decisions in my career came out of a period when I felt the most out of place: working in the open and the 4-day workweek.&lt;/p&gt;
&lt;p&gt;A couple of months after that, it seems like my job seeking efforts finally started paying off, because I got an offer I was excited for. I was offered a Mobile Developer position at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://moodle.com&quot;&gt;Moodle&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;2020-the-right-bus&quot;&gt;&lt;a href=&quot;#2020-the-right-bus&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;2020: The right bus?&lt;/h3&gt;
&lt;p&gt;In November 2019, I joined Moodle. I hadn&#039;t been unemployed for long, but I had been looking for work most of the time since January of 2018.&lt;/p&gt;
&lt;p&gt;In all that time, you must think I sent hundreds of applications, right? Well, I only sent 21. That&#039;s like 1 per month. Of those 21, I was rejected from 9, didn&#039;t hear back from 7, didn&#039;t get clear answers from 3, and was accepted in 2 (MusicList and Moodle). And 3 out of those 21 were Moodle. The first time I applied was for MoodleNet Technical Architect (this happened before joining MusicList) — I was rejected. The second one was for PHP developer — I didn&#039;t hear back. And the last one was for Mobile Developer — I was accepted.&lt;/p&gt;
&lt;p&gt;All of this is to say that job seeking is hard. At least it was for me with the parameters I set for myself. But I did it! I am finally working at a company with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://moodle.com/about/&quot;&gt;values I share&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, am I on the right bus now?&lt;/p&gt;
&lt;p&gt;I guess there&#039;s no way to know, but I would say that I am. I&#039;m not a &amp;quot;startup guy&amp;quot; anymore, although I still call myself an entrepreneur. I cringe a bit at the term, but I haven&#039;t found a better word for describing what I do. I could just say that I am a developer (and sometimes I do), but I enjoy working on other parts of the product besides code. I could also call myself a maker or something else, but I don&#039;t feel identified by any of those terms. So I&#039;m sticking with entrepreneur for the time being. Even though I don&#039;t care about earning money with my projects, so I guess that&#039;s not very entrepreneurial. Regardless of what I call myself, I think I&#039;m in the right path.&lt;/p&gt;
&lt;p&gt;I&#039;ve also found a good balance between being an employee and working on my own projects. I never went into entrepreneurship for the riches, I just wanted to do work I cared about. So I&#039;m fine being an employee if I&#039;m contributing to a worthy goal. But there are still things I want to do that will never happen as an employee, so having a 4-day workweek makes my side-projects sustainable. Even if my salary has nothing to do with them.&lt;/p&gt;
&lt;h3 id=&quot;2021-and-beyond&quot;&gt;&lt;a href=&quot;#2021-and-beyond&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;2021 and beyond&lt;/h3&gt;
&lt;p&gt;So, what are my plans for the future?&lt;/p&gt;
&lt;p&gt;The truth is that I have none, other than continue doing what I&#039;m already doing. That doesn&#039;t mean that I&#039;ll work at Moodle for the rest of my life, but I have no plans of leaving in the foreseeable future. And I&#039;m still very excited about my side-projects, so I&#039;m not running out of ideas anytime soon.&lt;/p&gt;
&lt;p&gt;Things have changed a lot in 10 years, so there&#039;s no way of knowing what will happen in the next 10. If anything, I have to say that I&#039;m extremely lucky to be where I am, because even though I have my gripes with the current state of the software industry, I love it.&lt;/p&gt;
&lt;h2 id=&quot;lessons-learned&quot;&gt;&lt;a href=&quot;#lessons-learned&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Lessons Learned&lt;/h2&gt;
&lt;p&gt;Now that we&#039;ve got that out of the way, let me start with the part that could actually be helpful to you.&lt;/p&gt;
&lt;p&gt;Here&#039;s 10 lessons I learned in 10 years.&lt;/p&gt;
&lt;h3 id=&quot;1-values--ux--dx&quot;&gt;&lt;a href=&quot;#1-values--ux--dx&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;1. Values &amp;gt; UX &amp;gt; DX&lt;/h3&gt;
&lt;p&gt;If you expected this post to be only about development, I&#039;m sorry to disappoint. Yes, I am a developer, and these are the lessons I&#039;ve learned as a software engineer. But it&#039;s impossible for me to see my career as &amp;quot;only tech&amp;quot;. I think we — as engineers and human beings — are responsible for what our work contributes to.&lt;/p&gt;
&lt;p&gt;This wasn&#039;t obvious when I embarked on this journey. But now, it&#039;s one of my core tenets. In the work I do, be it as an employee or not, the most important question I ask is &lt;em&gt;what is it for?&lt;/em&gt;. If I&#039;m contributing to something that is not aligned with my values, I don&#039;t care how nice it looks or how fun it is to code — I won&#039;t do it.&lt;/p&gt;
&lt;p&gt;As a consequence of that, and given my interest in design, I also place a great importance on UX (User Experience). I like to think about it in terms of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Kano_model&quot;&gt;Kano model&lt;/a&gt;, focusing on what actually has a real impact on people.&lt;/p&gt;
&lt;p&gt;But I&#039;m no designer, so I also care about DX (Developer Experience). I&#039;ve talked about how much I like Laravel and Vue, and that&#039;s how I want all my development experience to be. I want to spend my time solving real problems, instead of battling &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/No_Silver_Bullet&quot;&gt;accidental complexity&lt;/a&gt; or fighting against my tools.&lt;/p&gt;
&lt;p&gt;These three — Values, UX, and DX — build on each other, and it is possible to tend to all of them. That comes at a cost, you will be slower in the short term. But I believe &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://martinfowler.com/articles/is-quality-worth-cost.html&quot;&gt;it pays off in the long term&lt;/a&gt;. That&#039;s why most of the time I&#039;ll choose to cut the scope instead of degrading quality.&lt;/p&gt;
&lt;h3 id=&quot;2-write-good-code&quot;&gt;&lt;a href=&quot;#2-write-good-code&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;2. Write good code&lt;/h3&gt;
&lt;p&gt;Every developer loves good code. But there is something subjective in determining whether some code is &amp;quot;good&amp;quot; or &amp;quot;bad&amp;quot;. You could measure how well it solves a problem, how often it crashes, or how easy it is to extend. But if we&#039;re honest with ourselves, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.osnews.com/story/19266/wtfsm/&quot;&gt;the only valid measurement of code quality is WTFs/minute&lt;/a&gt;. So, good code is simple code.&lt;/p&gt;
&lt;p&gt;However, that&#039;s easier said than done. According to Rich Hickey, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://youtu.be/rI8tNMsozo0?t=200&quot;&gt;simplicity is objective&lt;/a&gt;. But I think that&#039;s an oversimplification. Sure, you could write the simplest code ever, but as soon as it needs to interact with other code, it won&#039;t be as useful. The opposite of that is overengineering. If you write your code so flexible that it can do anything, it&#039;ll become a complex mess. So the challenge is in balancing both. I try to resolve this tension with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://m.signalvnoise.com/conceptual-compression-means-beginners-dont-need-to-know-sql-hallelujah/&quot;&gt;conceptual compressions&lt;/a&gt;. Simple enough to be understood from the outside, yet powerful enough to be useful.&lt;/p&gt;
&lt;p&gt;There are many concepts that have influenced my idea of what makes &amp;quot;good code&amp;quot;: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/SOLID&quot;&gt;the SOLID principles&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it&quot;&gt;YAGNI&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/First_principle&quot;&gt;First principles&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Kata_(programming)&quot;&gt;doing code katas&lt;/a&gt;, etc. But there is something beyond that. There isn&#039;t a specific way to measure good code, but I can recognize it when I see it. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=o8NPllzkFhE&amp;amp;t=860s&quot;&gt;Some people call this &amp;quot;taste&amp;quot;&lt;/a&gt;, I often call it &amp;quot;elegance&amp;quot;. Regardless of how you call it, there is something I&#039;m convinced of. Programming is not just science, programming is an art. And that&#039;s why I love it so much.&lt;/p&gt;
&lt;p&gt;Write good code, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=plWexCID-kA&quot;&gt;make good art&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;3-be-opinionated&quot;&gt;&lt;a href=&quot;#3-be-opinionated&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;3. Be opinionated&lt;/h3&gt;
&lt;p&gt;One of the earliest ideas that is taught to developers is to &amp;quot;use the right tool for the job&amp;quot;. While I agree on the overall idea, I have to say that most of the time it doesn&#039;t matter.&lt;/p&gt;
&lt;p&gt;This is particularly irrelevant when it comes down to framework comparisons. There are tons of articles talking about Vue vs React vs Angular vs [insert new JS framework here]. The truth is that you&#039;ll be able to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://todomvc.com/&quot;&gt;do the same thing&lt;/a&gt; with all of them. And I&#039;m not saying that these comparisons are useless. But the chances that they actually matter for your project are slim. In the end, I chose &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/;40noeldemartin/105385774492006290&quot;&gt;the one that I enjoy working with the most&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;React is all the rage today, but for the life of me I don&#039;t see how anyone likes it more than Vue. Now, before you jump down my throat maybe wait until you finish reading the blog post. I never felt comfortable writing React (who ever thought that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://blog.zack.computer/suspenseful-coding-in-react&quot;&gt;throwing a Promise&lt;/a&gt; makes sense!?), whilst using Vue is effortless. I&#039;ll even go further and say that Vue helps me become a better developer. And that&#039;s something I&#039;d say for all my favorite tools: Laravel, Vue, TailwindCSS and Cypress. I don&#039;t think it&#039;s coincidence that all of them also have great documentation.&lt;/p&gt;
&lt;p&gt;I&#039;m aware that I&#039;m often misunderstood when I raise this point, so let me clarify. I am talking about &lt;em&gt;personal preference&lt;/em&gt; here. When I join a team, there are more important things I care about. So I&#039;m more than happy to work with the tools that are already in place. Even if I were in a position to make the choice, maybe I wouldn&#039;t chose my favorite tools for a team project anyways.&lt;/p&gt;
&lt;p&gt;This also doesn&#039;t mean that I never ever want to learn anything new, quite the opposite. I don&#039;t find technology worthy of taking this position every day. But when I do, they convert struggle into bliss. One common occurrence is that I&#039;ll start using patterns I learned in these tools elsewhere. For example, I&#039;m always porting &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravel.com/docs/8.x/eloquent#introduction&quot;&gt;Laravel facades&lt;/a&gt; to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/umai/blob/main/src/framework/core/facades.ts&quot;&gt;other languages&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And I&#039;ll finish by saying that frameworks and libraries are not the only tools I&#039;m referring to here. Your programming environment also matters, and I have to credit &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://makevscodeawesome.com/&quot;&gt;Caleb&#039;s awesome course&lt;/a&gt; for showing me that.&lt;/p&gt;
&lt;h3 id=&quot;4-never-stop-learning&quot;&gt;&lt;a href=&quot;#4-never-stop-learning&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;4. Never stop learning&lt;/h3&gt;
&lt;p&gt;If I think about it, I learned about my favorite technologies on my own. And if I had to say what made me grow the most as a developer, I&#039;m not sure if I would credit my work on &amp;quot;real projects&amp;quot;.&lt;/p&gt;
&lt;p&gt;I mentioned it before, but it bears repeating. There is a valley of difference between doing something as an employee and doing it for yourself. I&#039;ve also learned a lot from watching conference talks and reading books and blogs, but nothing beats doing something from scratch on your own. That&#039;s why I think it&#039;s important to be deliberate about improving yourself, instead of expecting it to happen as a side-effect of doing your job.&lt;/p&gt;
&lt;p&gt;I know there are a lot of developers who don&#039;t want to dedicate any time outside their working hours to coding. And that is totally fine, I don&#039;t think that should be a requirement. The problem comes when companies don&#039;t allocate resources to self-improvement. And even when they do, most of the time it is only for technologies that are relevant to the company. I&#039;m sure there are times when you come across a new technology or paradigm that gets you excited, but you don&#039;t do anything about it because it&#039;s not relevant to the project you&#039;re working on (and there are deadlines). However, following that curiosity is what will make you a better developer in the long run.&lt;/p&gt;
&lt;p&gt;To be clear, I don&#039;t think this is inherently wrong from the company&#039;s point of view. After all, in our capitalist society, employment is an exchange of labor for money. Which can be done as humanly and fairly as possible, but that&#039;s what it is. And you could choose to live outside of capitalism, but good luck with that (I&#039;m not being snarky, I&#039;m trying to do some of that myself).&lt;/p&gt;
&lt;p&gt;But there is a loophole. We, developers, are in an extremely privileged position. There is certainly no shortage of jobs, salaries are among the highest in many professions, and remote work opens many doors. If you use this to your advantage, you can navigate this capitalist system to keep improving while having great work-life balance.&lt;/p&gt;
&lt;p&gt;I&#039;m taking advantage of this situation with a 4-day workweek. I don&#039;t see it as a 4-day workweek at all, I see it as a 4-day main project and 1-day side-project workweek. If you think this is crazy, maybe it&#039;s because you haven&#039;t tried it yet (I certainly did before giving it a shot). But it&#039;s not the only way. You can also take sabbaticals or switch to freelancing for a while.&lt;/p&gt;
&lt;p&gt;Now, I know what you&#039;re thinking, and I don&#039;t want to get into financial independence, cost of living, and all that jazz. But I&#039;ll say that if you don&#039;t have that kind of buffer (in your lifetime, not at any given point), you&#039;ve got bigger problems to worry about. We are privileged enough to not have to worry about this. If you want to learn more about these topics, I recommend checking out the blogs of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://jlcollinsnh.com/2011/06/08/how-i-failed-my-daughter-and-a-simple-path-to-wealth&quot;&gt;JLCollins&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.mrmoneymustache.com/2015/04/15/great-news-early-retirement-doesnt-mean-youll-stop-working/&quot;&gt;Mr. Money Mustache&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;5-think-long-term&quot;&gt;&lt;a href=&quot;#5-think-long-term&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;5. Think long term&lt;/h3&gt;
&lt;p&gt;Code is read more than it is written. You&#039;ll only write it once, but there is no limit to how many times it can be read. Whenever I look at code I wrote years ago, I&#039;m often glad that I cared about readability and following best practices (although be careful with so-called &amp;quot;best practices&amp;quot;, there&#039;s no silver bullet). If this made a difference for me, you can only imagine how important it is for other people reading your code.&lt;/p&gt;
&lt;p&gt;At the beginning of my career, I wasn&#039;t sure if agonizing over details was worth it (and it seems like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://softwareengineering.stackexchange.com/questions/90954/is-there-any-benefit-to-obsession-with-making-code-look-pretty&quot;&gt;I wasn&#039;t alone&lt;/a&gt;). I would spend too much time thinking about things like variable names or code. I did it because I couldn&#039;t help myself (and to be honest, I enjoy it). But I had the impression that it wasn&#039;t the best use of my time. Over the years, I&#039;ve found that eventually it pays off. Sure, there is code that nobody will read. There is code that doesn&#039;t even make it to a commit. But the point is that the way you do anything is the way you do everything. There is a fine line between things that matter and nitpicking though, so I try to be practical about it.&lt;/p&gt;
&lt;p&gt;Looking at the broader picture, it is essential to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.productplan.com/glossary/eisenhower-matrix/&quot;&gt;separate the urgent from the important&lt;/a&gt;. There are things that are urgent and important, so you&#039;ll naturally do those first. However, the trouble begins when you start prioritizing the urgent things that are not important over the important things that are not urgent. We always want to get things done as soon as possible. But things take time, and there&#039;s no shortcut that can change that. So give them the time they deserve. When I get stuck on a problem, the most effective solution is always to give it time. I leave it for the next day, or I go work on something else. When I come back, it always gets easier.&lt;/p&gt;
&lt;p&gt;And you have to apply this mindset to your mental bandwidth as well. If you&#039;re mindlessly checking tasks off a TODO list, you&#039;re only being reactive and you&#039;ll never get anywhere. You need to be proactive, you need time to ponder and to follow your curiosity. That&#039;s how you&#039;ll make your best breakthroughs. It can feel like this is slowing you down in the short term, but these are the types of actions that will compound into your best results in the long term.&lt;/p&gt;
&lt;p&gt;Zooming out even more, you can also apply this to your career. It&#039;s fine if you&#039;re lost for a while, if you keep working on it eventually you will get what you deserve. In the short term, luck is a big factor. If you don&#039;t succeed passing an interview, or if your project doesn&#039;t get the response you expected, that doesn&#039;t mean that you did anything wrong. By the same token, if you succeed that doesn&#039;t mean you did everything well. But in the long term, luck is diluted.&lt;/p&gt;
&lt;p&gt;However, there is something crucial to keep in mind. The &amp;quot;long term&amp;quot; can be longer than you&#039;ll be on this path. Longer than you&#039;ll be alive, for that matter. So you should be comfortable with &lt;a href=&quot;https://noeldemartin.com/blog/you-cant-always-get-what-you-want&quot;&gt;not getting what you want&lt;/a&gt;. Don&#039;t put yourself in a bad position with the hopes that it will eventually pay off. I&#039;ve had my ups and downs, but I&#039;ve never been done something I didn&#039;t want to do. Plan for tomorrow, live for today.&lt;/p&gt;
&lt;h3 id=&quot;6-use-systems-and-processes&quot;&gt;&lt;a href=&quot;#6-use-systems-and-processes&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;6. Use systems and processes&lt;/h3&gt;
&lt;p&gt;Regardless of how much experience you have, you&#039;re still human, you will make errors. Not only that, our brains are not wired for long-term thinking, so if we only follow our gut, we&#039;ll be all over the place. This can be improved with discipline and deliberate practice, but we will never become perfect beings. That&#039;s why I think it&#039;s important to have systems in place.&lt;/p&gt;
&lt;p&gt;Peer reviews, schedules, workflows, linting rules, etc. All of them help us reduce human error and become more consistent. But you should also be careful that your systems don&#039;t get in your way. There&#039;s a reason why most people hate bureaucracy. Even though it&#039;s inevitable to a certain extreme, it should be minimized.&lt;/p&gt;
&lt;p&gt;And systems are not something set in stone. You should create your own processes, see how they are working (or how they aren&#039;t) and improve them accordingly. And that, in itself, is an ongoing process. I&#039;m always trying new things and reflecting on how my systems are doing.&lt;/p&gt;
&lt;p&gt;I have written about this before, so if you are interested you should check out &lt;a href=&quot;https://noeldemartin.com/blog/rigid-flexible-planning&quot;&gt;&lt;br /&gt;
Rigid-Flexible Planning&lt;/a&gt; and &lt;a href=&quot;https://noeldemartin.com/blog/order-vs-chaos&quot;&gt;Order vs Chaos&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;7-remember-nothing&quot;&gt;&lt;a href=&quot;#7-remember-nothing&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;7. Remember nothing&lt;/h3&gt;
&lt;p&gt;Some years ago, I talked about &lt;a href=&quot;https://noeldemartin.com/blog/the-power-of-ignorance&quot;&gt;the power of ignorance&lt;/a&gt;, and it is still one of my most controversial ideas. But 5 years after writing that post, I still agree with most of it.&lt;/p&gt;
&lt;p&gt;In programming in particular, it may seem counter-intuitive to say that, because there is so much jargon you &amp;quot;have to know&amp;quot;. But actually, when I say &amp;quot;remember nothing&amp;quot; I really mean &amp;quot;remember nothing &lt;em&gt;on purpose&lt;/em&gt;&amp;quot;. When you are learning about a new technology, a new design pattern, or a new paradigm, the name of the thing is the least important. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=px_4TxC2mXU&quot;&gt;It&#039;s not the same to know the name of something than knowing something&lt;/a&gt;. If you really understand something, you&#039;ll learn its name without trying. So you should strive to understand, not to remember. The names will come naturally, and they will serve to compress ideas. Instead of explaining a design pattern every time, you&#039;ll just use the name as a shorthand for the entire concept.&lt;/p&gt;
&lt;p&gt;At the beginning of my career, I used to take courses and read about the basics. Things I should already know, and I mostly did, but I still enjoyed drilling the basics. I did that until it got boring. And I think that&#039;s really important in order to interiorize the principles.&lt;/p&gt;
&lt;p&gt;Another way of looking at this is the way you tackle problems. Whenever I am working on a project and something doesn&#039;t pan out, I will often spin up a hello world application and try to reproduce the problem in isolation. This is helpful to remove the existing baggage on the project, and helps giving me a fresh view on the problem. I also make a conscious effort not to remember the rationale behind some of my decisions (that&#039;s why I don&#039;t write comments too often). If later on I am reading some code and I don&#039;t understand it, or I&#039;m calling a method that doesn&#039;t work as I expected, that&#039;s a great way to see it like a newcomer would. If it&#039;s not obvious, it&#039;s probably not right.&lt;/p&gt;
&lt;h3 id=&quot;8-tdd-is-the-way&quot;&gt;&lt;a href=&quot;#8-tdd-is-the-way&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;8. TDD is the way&lt;/h3&gt;
&lt;p&gt;Like most people, I wasn&#039;t too keen to get into TDD at first (Test Driven Development). But after having seen the other side, I can&#039;t go back anymore.&lt;/p&gt;
&lt;p&gt;Let me be clear in saying that I don&#039;t believe in TDD as a dogmatic approach to coding. For example, I don&#039;t look at code coverage at all, because I think it&#039;s a perfect example of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Goodhart%27s_law&quot;&gt;Goodhart&#039;s law&lt;/a&gt;. But now that I&#039;ve gotten used to writing tests very often, I feel crippled when I can&#039;t do it. So let&#039;s call it TDDish.&lt;/p&gt;
&lt;p&gt;The main reason why I think testing is great is that we all do it. When you are developing a new feature, you&#039;re probably running some code to see that it actually works: calling a script, opening the browser, etc. So you are effectively doing TDD already. The only step you&#039;re missing to follow the &amp;quot;TDD way&amp;quot; is to automate those tests. At first, this will slow you down and that&#039;s why many developers dread testing, as I did. But if you persist, you&#039;ll eventually reach a point where writing a test becomes as natural as calling a script or opening the browser. Once you get over that hump, testing will become an essential tool in your toolbox.&lt;/p&gt;
&lt;p&gt;In the short term, this will give you a faster feedback loop when you&#039;re writing new code. I use Cypress very often instead of a normal browser, because it&#039;s so easy to automate what I would do by hand and I can time-travel between steps.&lt;/p&gt;
&lt;p&gt;In the long term, it will let you sleep at night. And more importantly, it will allow you to refactor without fear of breaking existing functionality. And refactoring is crucial, I probably &lt;a href=&quot;https://noeldemartin.com/blog/everything-is-a-draft&quot;&gt;spend more time refactoring&lt;/a&gt; than I do writing new code. Without tests, you&#039;re often afraid of breaking things so you think twice before refactoring. And that leads down a dark path.&lt;/p&gt;
&lt;p&gt;Testing is also great for maintenance. When you find a bug, you can just fix it and move on. But if you write a test reproducing the bug, you&#039;ve fixed it forever. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://share.transistor.fm/s/3d4f802b&quot;&gt;It&#039;s only fixed if there&#039;s a test&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I don&#039;t follow the doctrine of the testing pyramid, which dictates that you should have more unit tests than integration tests. I just write the tests I find useful, and those vary depending on what I&#039;m working on. For example, when I&#039;m writing a library I usually write a lot more unit tests, because it&#039;s more likely that those units end up being used in isolation. But when I&#039;m writing apps, I rely almost exclusively on integration tests.&lt;/p&gt;
&lt;p&gt;There are a couple of heuristics I use to gauge how my tests are doing. The first one is how often the software breaks. You&#039;ll always find bugs in your software, specially in edge cases. But if you&#039;re finding too many obvious problems that your tests weren&#039;t picking up, that&#039;s a bad sign. And the other heuristic I use is how often I need to change my tests when I&#039;m refactoring. It is one thing if the refactor involves some change in functionality, but if every time you change something your entire test suite goes nuts, you&#039;re probably doing something wrong. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://blog.cleancoder.com/uncle-bob/2017/10/03/TestContravariance.html&quot;&gt;Your tests should not replicate the structure of your code&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;9-be-a-team-player&quot;&gt;&lt;a href=&quot;#9-be-a-team-player&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;9. Be a team player&lt;/h3&gt;
&lt;p&gt;In this blog and my online persona I talk mostly about the work I do as an independent developer. However, that&#039;s not what I&#039;m doing most of the time. And if given the choice, I&#039;m not sure if I&#039;d want to.&lt;/p&gt;
&lt;p&gt;It doesn&#039;t matter how good you (think) you are, you won&#039;t get anywhere by yourself. Success and quality wise. There is a saying that goes &amp;quot;you are the average of the 5 people you spend the most time with&amp;quot;. It can seem shallow to think this way, like you don&#039;t have a personality of your own. But whether I like it or not, it&#039;s true to a certain extent. And I&#039;m not sure if that&#039;s because you seek people like yourself or because your environment shapes your personality. I guess it&#039;s a bit of both.&lt;/p&gt;
&lt;p&gt;These 5 can be people who don&#039;t even know that you exist. If I had to list mine, I&#039;m sure more than one would come up — because I spend a lot of time listening to podcasts, reading blogs and watching presentations. More often than not, however, you&#039;ll be surrounded by the people you work with. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/naval/status/511715728899473408&quot;&gt;Naval Ravikant said&lt;/a&gt; &amp;quot;if you can&#039;t see yourself working with someone for life, don&#039;t work with them for a day&amp;quot;. The first time I heard it, I disregarded it as idealistic. But the older the advice gets, the truer it sounds.&lt;/p&gt;
&lt;p&gt;In most occasions, you won&#039;t be able to pick your peers. But you can pick the company you work for. If you&#039;re starting at a company with strong values, chances are that the people around you will share these values. Even better, because you didn&#039;t pick them, they&#039;ll bring diversity to your points of view and you will get out of your filter bubble.&lt;/p&gt;
&lt;p&gt;But there is something you need to understand when you&#039;re joining an organization. It is extremely difficult to change the culture, in the same way that it is extremely difficult to change people. And to be honest, even though it can be frustrating at times, it&#039;s probably for the better. I often think about &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Four_stages_of_competence&quot;&gt;the four stages of competence&lt;/a&gt;, which explain how a person can know so little about a topic that they don&#039;t see the complexity and think it&#039;s easier than it seems. You are that person in more areas than you think. Most of the time, there&#039;s a reason why &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://fs.blog/2020/03/chestertons-fence/&quot;&gt;things are like they are&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But that doesn&#039;t mean you shouldn&#039;t strive to influence the culture anyways. I think the most important thing for a project to succeed is communication and awareness. It isn&#039;t following good practices, nor having a great technical solution, nor even having money (although these are important). The most important thing is communication. That&#039;s also one of the reasons why I prefer working at small companies, because I think it&#039;s easier to talk with the right person and understand what&#039;s going on. So, even though they can feel like chores, I think doing 1:1 meetings, managing expectations, and having regular updates is really important. Overcommunicating is way better than undercommunicating.&lt;/p&gt;
&lt;h3 id=&quot;10-know-thyself&quot;&gt;&lt;a href=&quot;#10-know-thyself&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;10. Know Thyself&lt;/h3&gt;
&lt;p&gt;If you&#039;ve read this far (thanks!), chances are that you disagreed with something I said. And that is totally fine, I don&#039;t think what I say applies to everyone. Certainly not everything applied to me 10 years ago, and it may not apply to me 10 years from now. But there&#039;s something that is important for everyone: You should know yourself.&lt;/p&gt;
&lt;p&gt;When I started working, I had this idea about what my career would be. I would start working as a &amp;quot;junior developer&amp;quot;, then I would be a &amp;quot;senior developer&amp;quot;, and eventually I would graduate to become a &amp;quot;manager&amp;quot;. Now that couldn&#039;t be further from the truth. I have dabbled in managerial positions, and I enjoyed them to a certain extent. But programming has always been at the forefront of my job. And I would hate stepping away from the keyboard (or the whiteboard). Not everyone is like this, some people actually enjoy managing other people. Or — as good managers say — enabling others to do their best work. And I&#039;m glad they exist, but I&#039;m not one of them.&lt;/p&gt;
&lt;p&gt;Later on, I started to have some doubts whether I wanted to work for someone else or I&#039;d rather work for myself. I think the jury&#039;s still out on that one, but I know for sure I could be happy with either one. It depends more on what I&#039;m doing — and who I&#039;m doing it with — than how I&#039;m doing it. Some people only care about the technology they use, or how much money they make. I&#039;m not sure if I&#039;m glad they exist, but I&#039;m not one of them.&lt;/p&gt;
&lt;p&gt;Since the beginning, I&#039;ve been inclined to &amp;quot;do things right&amp;quot;. Maybe too inclined, even, because I have been an &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://mastodon.social/%40vinnl/105666882333713754&quot;&gt;architecture astronaut&lt;/a&gt; at times. And I worry that my experience is often a crutch more than it is an advantage. But I&#039;m aware of that; of the good parts and the bad parts. And it&#039;s something I try to control with the systems I&#039;ve put in place.&lt;/p&gt;
&lt;p&gt;One great way to know yourself, is to work in the open. I have said it before, but for me working in the open is valuable in and of itself, &lt;a href=&quot;https://noeldemartin.com/blog/working-in-the-open-when-no-one-is-looking&quot;&gt;even if no one is looking&lt;/a&gt;. And if you don&#039;t even know what working in the open means for you, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social/;40noeldemartin/104555935175686728&quot;&gt;just write&lt;/a&gt;. If you&#039;re not writing, you are not thinking.&lt;/p&gt;
&lt;p&gt;You&#039;ll never finish this journey of introspection, but you must walk it. All along the way, you will change. We&#039;re all chameleons, so our colors won&#039;t be the same tomorrow as they were yesterday. And experience colors our vision of the world. If you think the way you do, it&#039;s because of what you&#039;ve lived through. There&#039;s no other way to learn, and with new experiences there will come new lessons.&lt;/p&gt;
&lt;h2 id=&quot;onward&quot;&gt;&lt;a href=&quot;#onward&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Onward&lt;/h2&gt;
&lt;p&gt;So, that&#039;s a good chunk of my thoughts right there! I hope it was useful to you, and I&#039;m grateful for what my journey has been thus far.&lt;/p&gt;
&lt;p&gt;I will continue working in the open, so if you want to keep up and see what I learn in real time, you&#039;re welcome to &lt;a href=&quot;/now&quot;&gt;follow along&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;2024 Update:&lt;/strong&gt; I&#039;m not working at Moodle anymore, you can learn more about why and what I&#039;m doing next in &lt;a href=&quot;/blog/the-end-of-the-chapter&quot;&gt;The End of The Chapter&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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>
                2024-06-25T16:01:02+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;...is nothing.&lt;/p&gt;
&lt;p&gt;You do, and I do. But technology doesn&#039;t.&lt;/p&gt;
&lt;p&gt;Everything you love about technology, and everything you hate, is not its own doing. Technology is only a multiplier.&lt;/p&gt;
&lt;p&gt;Use it for good, and it will flourish. Use it for evil, and it will corrupt everything in its path.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/what-technology-wants"
            >
                &lt;p&gt;...is nothing.&lt;/p&gt;
&lt;p&gt;You do, and I do. But technology doesn&#039;t.&lt;/p&gt;
&lt;p&gt;Everything you love about technology, and everything you hate, is not its own doing. Technology is only a multiplier.&lt;/p&gt;
&lt;p&gt;Use it for good, and it will flourish. Use it for evil, and it will corrupt everything in its path.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/blog/WhatTechnologyWants.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;my-vision&quot;&gt;&lt;a href=&quot;#my-vision&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;My Vision&lt;/h2&gt;
&lt;p&gt;For a long time now, I&#039;ve had this abstract idea of how I think technology should be. Today, I want to share some of that vision and reflect on what I&#039;m working towards.&lt;/p&gt;
&lt;p&gt;It will be extremely idealistic. I don&#039;t think it will materialize tomorrow (or maybe ever). It&#039;ll also be focused on software. I know other types of technology are important, and there&#039;s plenty of problems in society that cannot be solved with technology alone. But this is a vision seen through my eyes, and it serves as an ideal to strive for &lt;a href=&quot;https://noeldemartin.com/blog/working-in-the-open-when-no-one-is-looking&quot;&gt;in my work&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When I think about technology, I am excited about the limitless possibilities. It has radically changed the way we view the world. If you had a time machine, drove 100 years into the past, and explained people from that era the information you can get in less than a second; they&#039;d take you for a lunatic. And that&#039;s not limited to things you can do online, you are carrying in your pocket a device more powerful than anything they could ever imagine. We take it for granted, but if you could send a mobile device back in time it would change everything.&lt;/p&gt;
&lt;p&gt;But it doesn&#039;t always work this way. Some technology builders are closing their gates, and limiting the possibilities for their own gain. This is detrimental to society because it only benefits the individual (even if that &amp;quot;individual&amp;quot; is an organization). But technology is not a zero-sum game, so we&#039;re shooting ourselves in the foot. Imagine if the mobile phone you sent to the past required in-app payments or internet connection to work. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://world.hey.com/dhh/apple-can-brick-your-computer-if-you-miss-a-payment-to-goldman-sachs-on-the-apple-card-87ef1755&quot;&gt;It would be no more useful than paper weight&lt;/a&gt;. That is the reality we&#039;re living in today, and most people just accept it. But it could be better.&lt;/p&gt;
&lt;h2 id=&quot;taking-a-closer-look&quot;&gt;&lt;a href=&quot;#taking-a-closer-look&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Taking a closer look&lt;/h2&gt;
&lt;p&gt;One of my major frustrations are streaming services. Technology would allow us to consume any piece of media, anywhere in the world, anytime. And yet what we have today is a mishmash of platforms, each with their own walled garden, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.whats-on-netflix.com/leaving-soon/&quot;&gt;with catalogs that lose content on a regular basis&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If there&#039;s a movie you want to watch, your first step is to start fishing for platforms that have it available. If the ones you happen to be subscribed to don&#039;t have it, you&#039;re out of luck. You may still be able to rent it in some other platform - if it&#039;s available in your country. By this point, you can consider yourself lucky if you&#039;ve spent 20 minutes searching, filling up forms and accepting terms and conditions you didn&#039;t read. If you&#039;re not lucky, you just wasted 20 minutes of your life.&lt;/p&gt;
&lt;p&gt;And I know what some of you are thinking, this doesn&#039;t happen to you. Sure, if you are going to watch last week&#039;s hollywood blockbuster this won&#039;t be your experience. But try to watch an obscure japanese movie from the 80s and let me know how that goes.&lt;/p&gt;
&lt;p&gt;That&#039;s why most people don&#039;t do that. Most people don&#039;t keep a list of movies they want to watch. Instead, they log into their walled garden of choice and start browsing. Or watch movies recommended by other people. Movies those people found on the same walled garden, of course.&lt;/p&gt;
&lt;p&gt;In this situation, human behaviour is driven by the algorithm. Technology is using you. It should be the other way around, you should be using technology.&lt;/p&gt;
&lt;p&gt;Not to mention how preposterous it is that these platforms are called &amp;quot;streaming services&amp;quot; to begin with. Why is it so hard to download media for offline consumption in an open format? You know the answer is not some technical limitation.&lt;/p&gt;
&lt;p&gt;What&#039;s even more preposterous, why don&#039;t these platforms have all the movies from public domain available within their catalogs? You know the answer is not some technical limitation either.&lt;/p&gt;
&lt;p&gt;With all this non-sense going around, sometimes we end up with some &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://duckduckgo.com/?q=blizzcon+twitch+metallica&quot;&gt;pretty ridiculous situations&lt;/a&gt;. From technology&#039;s point of view, this is inexcusable. But if you look beyond technology, there are some &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://world.hey.com/dhh/the-totalitarians-of-the-attention-economy-3e239524&quot;&gt;pretty good explanations&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There is another world out there, though. The so-called world of Piracy. I&#039;m saying so-called because there is nothing illegal about the technology powering the sites that are deemed so.&lt;/p&gt;
&lt;p&gt;In that world, the gates are wide open. The problems I&#039;ve mentioned are replaced with a different set of problems, none of which arise from technology itself. But this paradigm has been threatened an ostracized for a long time, so it&#039;s becoming ever more obscure.&lt;/p&gt;
&lt;p&gt;And yet, their catalog is unrivaled. You can only imagine how life would be if technology were completely freed from its shackles.&lt;/p&gt;
&lt;p&gt;I know what you&#039;re thinking though, so let&#039;s talk about the elephant in this post.&lt;/p&gt;
&lt;h2 id=&quot;on-business-models&quot;&gt;&lt;a href=&quot;#on-business-models&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;On Business Models&lt;/h2&gt;
&lt;p&gt;The main reason why any of these limitations exist is money. Don&#039;t get me wrong, I know that creators should be paid for their work. And I&#039;m well aware of the disease of &amp;quot;free&amp;quot; products (spoiler: nothing is free). But I think the way we are monetizing isn&#039;t great, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://seths.blog/2021/03/in-search-of-amusement/&quot;&gt;business models shape the world&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let&#039;s go over the most common ones.&lt;/p&gt;
&lt;h3 id=&quot;free-products-ads&quot;&gt;&lt;a href=&quot;#free-products-ads&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;&lt;del&gt;Free products&lt;/del&gt; Ads&lt;/h3&gt;
&lt;p&gt;There are no free products, those companies are usually selling ads. Or straight up selling customer data... or selling the users themselves (more commonly referred to as &amp;quot;making an exit&amp;quot;).&lt;/p&gt;
&lt;p&gt;I won&#039;t even get into why I don&#039;t like these business models, because I could write an entire blog post about it and I don&#039;t even know where to start.&lt;/p&gt;
&lt;p&gt;I&#039;ll just leave you with this: If something is free, you are the product.&lt;/p&gt;
&lt;h3 id=&quot;subscriptions&quot;&gt;&lt;a href=&quot;#subscriptions&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Subscriptions&lt;/h3&gt;
&lt;p&gt;Next up are subscriptions. This business model has become more pervasive over the years, and I don&#039;t have any issues with the model itself. Some subscription services make perfect sense, and I&#039;m happy to pay for those. The problems start when &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/NoelDeMartin/status/1371121689820602378&quot;&gt;this gets out of hand&lt;/a&gt;. It comes down to this: when you are paying a subscription, what are you paying for?&lt;/p&gt;
&lt;p&gt;I suspect a lot of people would say that you are covering server costs. After all, these subscription shenanigans started when syncing data to the cloud became more prevalent. But I don&#039;t think that warrants a subscription. The current ecosystem works under the assumption that managing your data is the service provider&#039;s responsibility. Instead of having your own cloud, your data is stored in somebody else&#039;s cloud. And this is an assumption I&#039;m very much against, as surfaced by movements like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidproject.org&quot;&gt;Solid&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://unhosted.org&quot;&gt;Unhosted&lt;/a&gt; and &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, server costs are not an excuse.&lt;/p&gt;
&lt;p&gt;Another common reason is to support ongoing development. However, when you buy into a product, it doesn&#039;t mean that you&#039;ll automatically like every new feature that comes out (sometimes it&#039;s the opposite). Sure, you can always cancel your subscription if you&#039;re unhappy with new versions. But at that point, you&#039;ve already funded its development. And because you don&#039;t own your data, you probably can&#039;t abandon the service without paying the switching costs of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Vendor_lock-in&quot;&gt;vendor lock-in&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&#039;m also not a fan of the short lifecycle of apps nowadays. I&#039;ll talk more about this in a moment, but suffice to say that software should strive to live &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://basecamp.com/about/policies/until-the-end-of-the-internet&quot;&gt;until the end of the internet&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, supporting the ongoing development is not a valid reason either.&lt;/p&gt;
&lt;p&gt;Which takes me to the only argument I will concede for subscriptions: Maintenance. Things like answering support emails, fixing bugs, and the like. But this one comes with a lot of caveats. It&#039;s a well known fact that no software is perfect and no software is finished. But there is also plenty of software out there that has done great with minimum maintenance costs. Especially when the gates are open for the community to help each other.&lt;/p&gt;
&lt;p&gt;So, if the only real cost is maintenance, why are subscriptions so popular nowadays?&lt;/p&gt;
&lt;p&gt;The real answer, that no company will ever confess, is that some of them are just milking their customers. It is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ar.al/notes/encouraging-individual-sovereignty-and-a-healthy-commons/&quot;&gt;people farming&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;sponsorship&quot;&gt;&lt;a href=&quot;#sponsorship&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Sponsorship&lt;/h3&gt;
&lt;p&gt;Now we&#039;re getting somewhere. I like sponsorships, because they are basically voluntary subscriptions. If you want to support the ongoing development, why not do it explicitly instead of being strong armed into it?&lt;/p&gt;
&lt;p&gt;But there is such a thing as &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Tragedy_of_the_commons&quot;&gt;the tragedy of the commons&lt;/a&gt;, so it&#039;s not realistic to think that this will work for everyone. That&#039;s why sometimes, sponsorships end up being subscriptions in disguise (when the perks are too sweet).&lt;/p&gt;
&lt;p&gt;There is something in between that I like: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://calebporzio.com/sponsorware&quot;&gt;Sponsorware&lt;/a&gt;. The idea is that a product will be private until it reaches a certain level of funding, at which point it becomes a public good. Unfortunately, I haven&#039;t seen many people following this model. But I hope it becomes more widespread, because I think it fits really well in the intersection between making your work sustainable and not limiting the technology.&lt;/p&gt;
&lt;h3 id=&quot;buying&quot;&gt;&lt;a href=&quot;#buying&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Buying&lt;/h3&gt;
&lt;p&gt;Buying, instead of renting, is the purest form of value exchange. If you own something, you can do whatever you want with it. And this business model should remove any incentives to limit the technology. But there is such a thing as &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=j5v8D-alAKE&quot;&gt;planned obsolescence&lt;/a&gt;, and sometimes &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sneak.berlin/20201112/your-computer-isnt-yours/&quot;&gt;you don&#039;t even own what you buy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Do you remember that time when you bought a DVD and you knew you&#039;d be able to watch that movie ten years later? Those days are gone. Sure, you can still buy DVDs. But do you?&lt;/p&gt;
&lt;p&gt;There are good reasons for DVDs to go out of fashion though. But why don&#039;t we have the online equivalent? It would be great if you could buy the license for a movie, and that license stayed with you forever. In that world, when you want to watch a movie you can choose your favorite streaming service (who competes on UX, not catalog) and pay them according to your consumption. That&#039;s it, no subscriptions.&lt;/p&gt;
&lt;p&gt;Most subscriptions should be pay-per-use services instead. I don&#039;t want to stop paying for a service when I realize I haven&#039;t used it in the last 3 months.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Ultimately, I believe the way a business makes money should be aligned with their value proposition. If it isn&#039;t, customer interests will eventually clash against financial incentives. And you know who will lose in that situation.&lt;/p&gt;
&lt;p&gt;Ads or &amp;quot;free products&amp;quot; are completely misaligned, that&#039;s why they are the ones I like the least.&lt;/p&gt;
&lt;p&gt;Subscriptions can be aligned, but they are often used to milk customers. That incentivizes making a product that people use on a regular basis, even if the problem at hand could be solved in one instance. Or locking away customer data, even if the product itself does not add any value.&lt;/p&gt;
&lt;p&gt;Buying can have the best alignment, but it can also be abused because increasing lifetime value is often disincentivized.&lt;/p&gt;
&lt;p&gt;In this post I am arguing from the point of view of building technology with the end goal of being useful to people. But the reason why this is idealistic is that it&#039;s often used as a vehicle for personal gain. This is especially obvious with some companies&#039; &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://news.ycombinator.com/item?id=25956360&quot;&gt;relentless pursuit of growth&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, there is no silver bullet. But there is definitely room for improvement, and hopefully we can learn from the current situation and make things better.&lt;/p&gt;
&lt;p&gt;What can you do about this? Vote with your dollars, and put your money where your mouth is. Nothing will make a greater impact on the ecosystem than customers rejecting business models that are against their interests.&lt;/p&gt;
&lt;h2 id=&quot;on-open-source&quot;&gt;&lt;a href=&quot;#on-open-source&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;On Open Source&lt;/h2&gt;
&lt;p&gt;Now that we&#039;ve got that out of the way, let&#039;s go back to talk about technology.&lt;/p&gt;
&lt;p&gt;Why isn&#039;t all software Open Source? Or even better, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Free_software&quot;&gt;free&lt;/a&gt; (as in freedom)? You may think it&#039;s because of security, but &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Security_through_obscurity&quot;&gt;it isn&#039;t&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In my rant against subscriptions I mentioned that customers end up funding the development of new features. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://hey.com/&quot;&gt;HEY&lt;/a&gt; is an example of that.&lt;/p&gt;
&lt;p&gt;I am a big fan of Basecamp, but they &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/jasonfried/status/1363962530519949313&quot;&gt;pride themselves&lt;/a&gt; on going against the grain. Most of the time that&#039;s good, because that&#039;s how innovation happens. And if they were to implement every feature requested, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://world.hey.com/dhh/less-software-c69de1e8&quot;&gt;things would get ugly fast&lt;/a&gt;. But an unfortunate consequence is that they&#039;ll often focus their efforts in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://hey.com/world/&quot;&gt;features I don&#039;t want&lt;/a&gt;, instead of making the ones I yearn for (converting &amp;quot;The Feed&amp;quot; to a real RSS feed, better classification rules, etc.).&lt;/p&gt;
&lt;p&gt;There is a solution to this conundrum: Open Source. If HEY were Open Source, I could implement these features myself. Or somebody else would have done it already.&lt;/p&gt;
&lt;p&gt;But of course, there is a caveat to this solution. If HEY were Open Source, how would Basecamp keep people from using HEY without paying? They wouldn&#039;t be able to do it, not without limiting the technology. And that&#039;s the tradeoff we live in today.&lt;/p&gt;
&lt;p&gt;I chose this example precisely because I like Basecamp, as you can tell if you&#039;ve been clicking through the links in this post. They are awesome, and I&#039;m happy to be a paying customer because I love their work beyond HEY (and HEY is nice, even if overpriced for my use-case). But this shows how endemic the problem is, if we are in an ecosystem where the best of the companies is limiting their technology.&lt;/p&gt;
&lt;h2 id=&quot;the-bright-side-of-technology&quot;&gt;&lt;a href=&quot;#the-bright-side-of-technology&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The Bright Side of Technology&lt;/h2&gt;
&lt;p&gt;So far I&#039;ve focused on the negative, or rather limiting, uses of technology. But there are also great examples of technology empowering people. So I&#039;ll end the post by focusing on the positive.&lt;/p&gt;
&lt;p&gt;There is one technology I love above all others, and that is The Web. The Web is free (as in freedom), &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;The Web is open&lt;/a&gt;, and The Web is here to stay.&lt;/p&gt;
&lt;p&gt;There are also other technologies that are great, for example Email and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://seths.blog/2011/01/in-defense-of-rss/&quot;&gt;RSS&lt;/a&gt;. And there are some up and comers that I&#039;m cheering for, like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidproject.org/&quot;&gt;Solid&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/ActivityPub&quot;&gt;Activity Pub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Can you notice anything in common? These are all protocols, not implementations. And those often thrive on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Interoperability&quot;&gt;interoperability&lt;/a&gt;. If a technology is interoperable, it means that anyone can adapt it to their own needs.&lt;/p&gt;
&lt;p&gt;If you are a solo developer and want to focus on your own projects, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://herman.bearblog.dev/my-product-is-my-garden/&quot;&gt;you can&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you want to build a community that contributes to humanity as a whole, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Wikipedia&quot;&gt;you can&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Unfortunately, if you want to build a multi billion dollar empire that is a closed silo, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.theguardian.com/commentisfree/2016/aug/28/tim-berners-lee-open-web-mark-zuckerberg-facebook&quot;&gt;you also can&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But those aren&#039;t technology&#039;s fault, so it&#039;s on us to make it better.&lt;/p&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;h4 id=&quot;afterword&quot;&gt;&lt;a href=&quot;#afterword&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Afterword&lt;/h4&gt;
&lt;p&gt;Hey, you&#039;re still here? Consider the post finished, but here&#039;s some things I wanted to mention before you take off.&lt;/p&gt;
&lt;p&gt;I am aware that the title of this post is the same as &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://kk.org/books/what-technology-wants/&quot;&gt;Kevin Kelly&#039;s book&lt;/a&gt;. However, it has nothing to do with it and I haven&#039;t read the book. But I like the way it sounds :).&lt;/p&gt;
&lt;p&gt;I am also aware that &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://seths.blog/2014/02/most-of-all-money-is-a-story/&quot;&gt;money is a story&lt;/a&gt;, and most companies would not agree with the way I characterized subscriptions. But I don&#039;t like this story, and I can&#039;t help but feel that subscription models are hurting more than they are helping.&lt;/p&gt;
&lt;p&gt;Finally, you may see this post as a modest critique of Capitalism, not very well articulated. If you&#039;re interested in that, you should read DHH&#039;s take on the topic: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://world.hey.com/dhh/the-enclosure-of-internet-commons-613ed798&quot;&gt;The enclosure of internet commons&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you enjoyed this, I wrote a spiritual follow-up: &lt;a href=&quot;/blog/skeuomorphic-software&quot;&gt;Skeuomorphic Software&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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:17+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;It&#039;s been more than a year since I started working in the open. Here&#039;s an update.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/working-in-the-open-when-no-one-is-looking"
            >
                &lt;p&gt;It&#039;s been more than a year since &lt;a href=&quot;https://noeldemartin.com/blog/open-productivity&quot;&gt;I started working in the open&lt;/a&gt;. Here&#039;s an update.&lt;/p&gt;
&lt;h2 id=&quot;is-no-one-really-looking&quot;&gt;&lt;a href=&quot;#is-no-one-really-looking&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Is no one really looking?&lt;/h2&gt;
&lt;p&gt;What do I mean when I say &amp;quot;no one is looking&amp;quot;? Isn&#039;t working in the open the opposite of that, &amp;quot;everyone is looking&amp;quot;?&lt;/p&gt;
&lt;p&gt;Well, the thing is that &lt;a href=&quot;https://noeldemartin.com/site&quot;&gt;I have no tracking&lt;/a&gt; on the site. I have no idea if there is one person reading this post or a hundred. It &lt;em&gt;feels&lt;/em&gt; like nobody is looking. But someone surely must. Right?&lt;/p&gt;
&lt;p&gt;There are some metrics I can look at to see how popular my content is. I can look at the server load to have an idea if a lot of people is visiting my site. But I am using the smallest DigitalOcean droplet, and I use it to host multiple sites. I can also look at social media interactions, and I don&#039;t usually get any reactions to my publications.&lt;/p&gt;
&lt;p&gt;So yeah, it really feels like nobody is looking.&lt;/p&gt;
&lt;p&gt;But the truth is that I don&#039;t mind. I don&#039;t do tracking because it&#039;s against my values, but I could use a privacy-respecting analytics provider. I prefer not knowing because I can focus on what I care about the most. With analytics, the numbers game could become a distraction.&lt;/p&gt;
&lt;h2 id=&quot;what-is-it-for&quot;&gt;&lt;a href=&quot;#what-is-it-for&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;What is it for?&lt;/h2&gt;
&lt;p&gt;So then, what is it that I care about?&lt;/p&gt;
&lt;p&gt;I care about writing eloquent code. I care about having clarity of thought in my blog posts. I care about designing elegant software. I care about making usable interfaces. I care about creating enjoyable experiences.&lt;/p&gt;
&lt;p&gt;In short, I care about my craft.&lt;/p&gt;
&lt;p&gt;When it comes to judging quality, there is always a tension between my opinion and that of others. Quality is subjective. In my craft, my opinion is paramount. Which is not to say that I don&#039;t care about external opinions, my palate is certainly influenced by others. But my opinion is the ultimate measure of satisfaction.&lt;/p&gt;
&lt;p&gt;In the last couple of years, my side-projects have consisted of scratching my own itch. I used to strive in making products for others, and fail because only crickets showed up. I still strive to make products usable by an audience broader than myself, but it is no longer my definition of success.&lt;/p&gt;
&lt;p&gt;This change in strategy started when I realized that being successful at making products for others takes a lot more than working on the product. I also started thinking about a different way to build applications, using an architecture 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;. Which created a lot of itches to scratch. Shortly afterward, I learned about the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://solidproject.org/&quot;&gt;Solid protocol&lt;/a&gt; and decided to embrace it because it is strongly aligned with my vision. I believe this the best way to build applications, and I want to see more of them. So I embarked on a journey to rebuild my online experience with tools that work in accordance with my values.&lt;/p&gt;
&lt;p&gt;Now, what I do is valuable in and of itself.&lt;/p&gt;
&lt;h2 id=&quot;on-building-an-audience&quot;&gt;&lt;a href=&quot;#on-building-an-audience&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;On building an audience&lt;/h2&gt;
&lt;p&gt;When I wrote &lt;a href=&quot;https://noeldemartin.com/blog/open-productivity&quot;&gt;the first post about working in the open&lt;/a&gt; I mentioned the importance of building an audience. I still think it&#039;s important, but given my recent experience and change of mindset it has become secondary.&lt;/p&gt;
&lt;p&gt;Having an audience would give greater meaning and impact to my work. I also think feedback is very important and it helps me improve. However, building an audience doesn&#039;t come for free.&lt;/p&gt;
&lt;p&gt;One of the significant aspects to build an audience is being constant. And I&#039;m very irregular with the content I put out. The most regular outlet I have is &lt;a href=&quot;https://noeldemartin.com/now&quot;&gt;my journal&lt;/a&gt;, and sometimes I don&#039;t update it for weeks. It&#039;s also very unstructured and I don&#039;t think anyone but the more hard-core followers would be interested. But that gives me the freedom to work at my own pace, unrushed and undirected. A luxury I don&#039;t have in other parts of my life.&lt;/p&gt;
&lt;p&gt;Another important aspect is creating value. This is something &lt;a href=&quot;https://noeldemartin.com/blog/in-the-search-of-value&quot;&gt;I&#039;ve been thinking about for a long time&lt;/a&gt;, and I still struggle to define it. I&#039;d say the gist of it is that people are interested in what you do and it&#039;s useful to them. In my case, what I do is too niche and I switch topics frequently. Maybe at some point my apps will be good enough for people outside of the Solid community to use, but I don&#039;t think that&#039;ll happen anytime soon. And it&#039;s not like I am 100% focused in Solid either, I dabble in other things.&lt;/p&gt;
&lt;p&gt;To build an audience it&#039;s also important to make your work visible. Right now, the only way to keep up with my work is to subscribe to one of two RSS feeds: &lt;a href=&quot;https://noeldemartin.com/blog/rss.xml&quot; target=&quot;_blank&quot;&gt;my blog feed&lt;/a&gt; or &lt;a href=&quot;https://noeldemartin.com/now/rss.xml&quot; target=&quot;_blank&quot;&gt;my journal feed&lt;/a&gt;. I could create a newsletter or be more active in Social Media, but I&#039;m not willing to dedicate the time to do it right. I&#039;d much rather spend the time practicing my craft.&lt;/p&gt;
&lt;p&gt;Is it possible to build an audience without any of this? Could these be a bunch of excuses to avoid realizing that my work sucks? Sure, it could be. Maybe you know someone who built an audience just by virtue of working in the open. But I don&#039;t think that is going to happen to me anytime soon. And that&#039;s ok.&lt;/p&gt;
&lt;p&gt;It&#039;s worth mentioning that the work I&#039;m talking about here is my personal projects. At the moment, I am working 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 doing side-projects the rest of the time. My work at Moodle covers a lot of the advantages I mentioned about having an audience. It certainly has greater impact and meaning, and I interact with team mates and members of the community. That allows me to focus in my craft on the side.&lt;/p&gt;
&lt;h2 id=&quot;the-reason-to-work-in-the-open&quot;&gt;&lt;a href=&quot;#the-reason-to-work-in-the-open&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The reason to work in the open&lt;/h2&gt;
&lt;p&gt;If you&#039;ve read thus far, you may be wondering why do I even bother working in the open. I certainly could do everything I&#039;ve mentioned in private. I do it for a couple of reasons.&lt;/p&gt;
&lt;p&gt;First, openness is one of &lt;a href=&quot;/#my-values&quot;&gt;my core values&lt;/a&gt;. I wish there was more open-source software and more people working in the open. So I&#039;m doing my part in making the world I&#039;d like to live in. And that isn&#039;t limited to code, documenting the journey and sharing lessons learned is part of that. I want people to benefit from my experience as I have from others.&lt;/p&gt;
&lt;p&gt;Documenting the journey forces me to take the time to reflect on what I do. And that is valuable by itself. It&#039;s easy to get lost in the trenches, and I still do it often. But it&#039;s important to look from above on a regular basis, and working in the open is nudges me into that direction. It also helps me see it from an external point of view.&lt;/p&gt;
&lt;p&gt;Another reason is personal branding and building a body of work. I&#039;ve had this website for 6 years, and I&#039;ve been writing software for 9 years. However, I didn&#039;t have anything to show until I started working openly. For some people, programming is just a job, and that&#039;s ok. For me, it is a mix between job, hobby and vocation. I strongly believe in Small Tech and the Indie Web. Individuals should have a place of their own, instead of being just an account on Github, Twitter, or any Big Tech platform. Working in the open is making my corner of the Internet more interesting.&lt;/p&gt;
&lt;h2 id=&quot;open-productivity-continued&quot;&gt;&lt;a href=&quot;#open-productivity-continued&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Open Productivity continued&lt;/h2&gt;
&lt;p&gt;On that note, I think there is something missing from my current set up. As I mentioned before, there isn&#039;t many people who react to my content when it&#039;s published. However, what I have seen is some people reacting to content I published months ago.&lt;/p&gt;
&lt;p&gt;This made me realize there is a use-case I am neglecting: catering for people who don&#039;t follow my work but want to know more about it. Currently, the way I am communicating what I do is through updates in &lt;a href=&quot;/tasks&quot;&gt;my journal&lt;/a&gt;, but that isn&#039;t useful unless someone is really interested and wants to dig deep. And the only content for first time visitors is the introduction in the home page.&lt;/p&gt;
&lt;p&gt;For that reason, I added a new section at &lt;a href=&quot;/projects&quot;&gt;noeldemartin.com/projects&lt;/a&gt;. In this page, I&#039;ll keep a list of the projects I&#039;m working on and their current status. I hope this will be useful to passersby who are visiting my site.&lt;/p&gt;
&lt;h2 id=&quot;say-hello&quot;&gt;&lt;a href=&quot;#say-hello&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Say hello!&lt;/h2&gt;
&lt;p&gt;Another reason why I don&#039;t use analytics is because I figured a better way to learn about my audience would be to talk with people. But I never asked for feedback... until now!&lt;/p&gt;
&lt;p&gt;The best way to contact me is to &lt;a href=&quot;mailto:{{contact.email}}?subject=Hi+there!&quot;&gt;send an email&lt;/a&gt;. You can also reach me in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://noeldemartin.social&quot;&gt;Mastodon&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/NoelDeMartin&quot;&gt;Twitter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&#039;ve been following my work, I&#039;d really like to hear about you. Maybe I already know you, or maybe I don&#039;t. Or maybe no one is really looking!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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:46+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;The Stones knew it.&lt;/p&gt;
&lt;p&gt;Maybe you want to get a successful business by making a great product, but you need Marketing.&lt;/p&gt;
&lt;p&gt;Maybe you want to get your dream job by honing your skills, but you need Networking.&lt;/p&gt;
&lt;p&gt;Maybe you want to get lean and eat cake, but you need a healthy diet.&lt;/p&gt;
&lt;p&gt;Sometimes, what you want is not what you get.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/you-cant-always-get-what-you-want"
            >
                &lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=Ef9QnZVpVd8&quot;&gt;The Stones knew it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Maybe you want to get a successful business by making a great product, but you need &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://seths.blog/tim&quot;&gt;Marketing&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Maybe you want to get your dream job by honing your skills, but you need Networking.&lt;/p&gt;
&lt;p&gt;Maybe you want to get lean and eat cake, but you need a healthy diet.&lt;/p&gt;
&lt;p&gt;Sometimes, what you want is not what you get.&lt;/p&gt;
&lt;h2 id=&quot;pick-your-battles&quot;&gt;&lt;a href=&quot;#pick-your-battles&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Pick your battles&lt;/h2&gt;
&lt;p&gt;We are wired to believe that life is fair. In our minds, we know it isn&#039;t. But in our hearts, we feel it must be. And so, we get surprised and outraged when we meet unfairness. Specially when we are the ones getting the short end of the stick.&lt;/p&gt;
&lt;p&gt;This is not a good strategy.&lt;/p&gt;
&lt;p&gt;A better approach is to decide what you care about and ignore the rest. It comes down to efficiency. You can improve anything, but you can&#039;t improve everything. You may as well focus on the things you care about the most.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/blog/SpheresOfControl.png&quot; alt=&quot;Spheres of control&quot; /&gt;&lt;/p&gt;
&lt;div class=&quot;text-center&quot;&gt;&lt;em&gt;Spheres of Control&lt;/em&gt;&lt;/div&gt;
&lt;p&gt;If you care a lot about something, there isn&#039;t much you can do about it if it&#039;s outside your sphere of control. If it is only in your sphere of influence, that&#039;s all you can do: have influence over it.&lt;/p&gt;
&lt;p&gt;Mental bandwidth is one of the most important assets at your disposal, you shouldn&#039;t waste it worrying on what you can&#039;t control. Actually, you should never worry about anything. If you&#039;ve got a problem and you can do something about it, do it. If you can&#039;t, accept it and move on.&lt;/p&gt;
&lt;h2 id=&quot;the-illusion-of-control&quot;&gt;&lt;a href=&quot;#the-illusion-of-control&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The illusion of control&lt;/h2&gt;
&lt;p&gt;If you think you know what&#039;s in your control, take a look at the tragedy of the commons.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The tragedy of the commons is a situation in a shared-resource system where individual users, acting independently according to their own self-interest, behave contrary to the common good of all users by depleting or spoiling the shared resource through their collective action.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Tragedy_of_the_commons&quot;&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In these situations, by definition, the actions of a single individual can&#039;t decide the outcome. Collective behaviour does. You can only have influence over the results.&lt;/p&gt;
&lt;p&gt;The prime examples are environmental issues like global warming. But these principles can be applied to many situations in life. They explain the uneven distribution of wealth, why scientific innovation stagnates, and in general why life is not fair. Once you start thinking about it, you&#039;ll see that the tragedy of the commons applies everywhere. It&#039;s the essence of human struggle.&lt;/p&gt;
&lt;p&gt;Garrett Hardin wrote &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://science.sciencemag.org/content/sci/162/3859/1243.full.pdf&quot;&gt;one of the first pieces&lt;/a&gt; on this topic. In that article, he explains why it is up to the system&#039;s rules and not individuals to affect the results. He also reveals that individuals acting in good faith can be harmful to the commons without realizing. And that tells us a lot about the nature of the problem, it proves that there isn&#039;t always a secret evil plan going on. It&#039;s just how things are.&lt;/p&gt;
&lt;p&gt;Maybe you are thinking of a person with a lot of control over others. Whoever that is, it isn&#039;t real control. It&#039;s an illusion of control held by social contracts. Money? It&#039;s a social contract. Laws and governments? Social contracts. Love? Yes, a social contract. Society is bent on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=Ks8WH3xUo_E&quot;&gt;maintaining the status quo&lt;/a&gt;, that&#039;s why the illusion of control is so strong.&lt;/p&gt;
&lt;p&gt;Ultimately, the only thing you can control is yourself.&lt;/p&gt;
&lt;h2 id=&quot;embracing-the-unexpected&quot;&gt;&lt;a href=&quot;#embracing-the-unexpected&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Embracing the unexpected&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Anything of which you are entitled the owner is in your possession but is not your own; for there is no strength in that which is weak, nor anything lasting.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_98&quot;&gt;Seneca, On the Fickleness of Fortune&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If there is a philosophy that embraces this idea, that is Stoicism. One of the tenets of Stoicism is to accept things as they come, with no expectations and no lamenting. The Stoics see &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Ataraxia&quot;&gt;Ataraxia&lt;/a&gt; as the ultimate state of mind, similar to how Buddhists see Nirvana. However, this is not something Stoics aim for, but a consequence of living with equanimity.&lt;/p&gt;
&lt;p&gt;In a way, understanding the inherent lack of control in life is the essence of Stoicism. One advice you will find reading Stoic philosophy is to surrender to your fate. This can seem counterproductive, because we often associate the word &amp;quot;surrender&amp;quot; with defeat. But in this context, it&#039;s interpreted as an aptitude of acceptance.&lt;/p&gt;
&lt;p&gt;Stop struggling.&lt;/p&gt;
&lt;p&gt;There are many stoic exercises you can do to practice this. Negative visualization will help you appreciate how privileged you are. And practicing hardships like fasting or retreat will improve your endurance.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;My idea of the modern Stoic sage is someone who transforms fear into prudence, pain into information, mistakes into initiation, and desire into undertaking.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Antifragile&quot;&gt;Nassim Nicholas Taleb, Antifragile&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;One step beyond accepting the unexpected is to gain from it. Antifragility, a concept developed by Nassim Nicholas Taleb, describes the property of systems which improve with shock instead of deteriorating.&lt;/p&gt;
&lt;p&gt;Since we have asserted that life is full of things we can&#039;t control, leading an antifragile life is guaranteed to make you better. You can use obstacles to your advantage.&lt;/p&gt;
&lt;p&gt;Imagine that you are suddenly fired because your employer goes out of business. This is usually seen as a bad thing. However, if you have enough savings to avoid depending on your salary in the short term, you can use this opportunity to grow. It can be reframed as a good thing because it kicked you out of your comfort zone. Like the quote attributed to Taleb says, &amp;quot;the three most harmful addictions are heroin, carbohydrates, and a monthly salary&amp;quot;.&lt;/p&gt;
&lt;p&gt;There are other parts of your life where you can apply the same principles to be antifragile. Rent instead of buying, diversify your skillset, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://nav.al/kelly-criterion&quot;&gt;avoid ruin&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;ditch-goals-and-expectations-embrace-compasses-and-maps&quot;&gt;&lt;a href=&quot;#ditch-goals-and-expectations-embrace-compasses-and-maps&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Ditch goals and expectations, embrace compasses and maps&lt;/h2&gt;
&lt;p&gt;Goals are only good insofar as they help you move in the right direction. Expectations only lead to disappointment.&lt;/p&gt;
&lt;p&gt;Instead, use heuristics like maps and compasses. But the map is not the territory and there is no perfect compass. Always expect the unexpected, the only constant is change.&lt;/p&gt;
&lt;p&gt;And remember. You can&#039;t always get what you want. But if you try sometimes, you just might find you get what you need.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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>
                2020-07-23T14:14:40+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;&lt;/p&gt;
&lt;p&gt;You won&#039;t usually see technical posts in this blog, but this time I decided to shake things up. I&#039;ve been working with Laravel for many years now, and one of the main advantages is its easy of use and eloquence. In those areas, I don&#039;t find libraries that rival Laravel often.&lt;/p&gt;
&lt;p&gt;But some months ago I found Cypress and it does. These two technologies don&#039;t seem like a good fit out of the box, but in this post I&#039;ll tell you what I&#039;ve done to mix their magic.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/testing-laravel-applications-using-cypress"
            >
                &lt;p&gt;&lt;img src=&quot;/img/blog/LaravelCypress.jpg&quot; alt=&quot;Laravel + Cypress&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You won&#039;t usually see technical posts in this blog, but this time I decided to shake things up. I&#039;ve been working with Laravel for many years now, and one of the main advantages is its easy of use and eloquence. In those areas, I don&#039;t find libraries that rival Laravel often.&lt;/p&gt;
&lt;p&gt;But some months ago I found Cypress and it does. These two technologies don&#039;t seem like a good fit out of the box, but in this post I&#039;ll tell you what I&#039;ve done to mix their magic.&lt;/p&gt;
&lt;h2 id=&quot;what-we-are-going-to-achieve&quot;&gt;&lt;a href=&quot;#what-we-are-going-to-achieve&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;What we are going to achieve&lt;/h2&gt;
&lt;p&gt;Before getting down to the nitty-gritty, let me show you what we&#039;re going to achieve:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;describe(&#039;Welcome&#039;, () =&amp;gt; {
    it(&#039;Shows &amp;quot;Laravel&amp;quot;&#039;, () =&amp;gt; {
        cy.visit(&#039;/&#039;);

        cy.contains(&#039;Laravel&#039;);
    });
});
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;describe(&#039;Authentication&#039;, () =&amp;gt; {
    it(&#039;Logs in users&#039;, () =&amp;gt; {
        cy.create(&#039;User&#039;).then((user) =&amp;gt; {
            cy.visit(&#039;/login&#039;);

            cy.get(&#039;input[name=&amp;quot;email&amp;quot;]&#039;).type(user.email);
            cy.get(&#039;input[name=&amp;quot;password&amp;quot;]&#039;).type(&#039;password&#039;);
            cy.get(&#039;button[type=&amp;quot;submit&amp;quot;]&#039;).click();

            cy.contains(user.name);
            cy.contains(&#039;You are logged in!&#039;);
        });
    });

    it(&#039;Maintains sessions for logged in users&#039;, () =&amp;gt; {
        cy.login();

        cy.visit(&#039;/&#039;);

        cy.contains(&#039;You are logged in!&#039;);
    });
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Does that look simple and easy to understand? I&#039;m happy it does, that&#039;s the point.&lt;/p&gt;
&lt;p&gt;If you&#039;re familiar with Cypress, there are a couple of things that may have jumped at you. Cypress knows how to interact with the browser, but what&#039;s going on with &lt;code&gt;cy.create(&#039;User&#039;)&lt;/code&gt; and &lt;code&gt;cy.login()&lt;/code&gt;?&lt;/p&gt;
&lt;p&gt;Those are actually calling Laravel&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravel.com/docs/6.x/database-testing#using-factories&quot;&gt;factories&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laravel.com/docs/6.x/authentication&quot;&gt;authentication&lt;/a&gt; services under the hood. That&#039;s the magic we&#039;re going to build now.&lt;/p&gt;
&lt;p&gt;For the remainder of this post, I will assume you are familiar with Laravel and Cypress. If you aren&#039;t, I encourage you to check out this &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://laracasts.com/series/laravel-6-from-scratch/episodes/1&quot;&gt;introduction to Laravel&lt;/a&gt; and this &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;h2 id=&quot;preparing-cypress-tests-no-magic-yet&quot;&gt;&lt;a href=&quot;#preparing-cypress-tests-no-magic-yet&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Preparing Cypress tests, no magic yet&lt;/h2&gt;
&lt;p&gt;Cypress is often associated with Javascript applications because it&#039;s a frontend testing tool. But it&#039;s just interacting with a browser to test your application. So any application that is running in a browser is testable with Cypress. That includes Ruby on Rails, Django and of course Laravel.&lt;/p&gt;
&lt;p&gt;That&#039;s why in order to write our first test, we don&#039;t need to do anything special. If you launch your Laravel application and prepare your Cypress configuration with the &lt;code&gt;baseUrl&lt;/code&gt; pointing to your Laravel app, you&#039;re ready to go.&lt;/p&gt;
&lt;p&gt;Your first test can be something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;it(&#039;Shows &amp;quot;Laravel&amp;quot;&#039;, () =&amp;gt; {
    cy.visit(&#039;/&#039;);

    cy.contains(&#039;Laravel&#039;);
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Unfortunately, that&#039;s as far as we can go without making some customizations. Laravel tests will typically populate the database and interact with other services. Let&#039;s do it.&lt;/p&gt;
&lt;h2 id=&quot;adding-backend-communication&quot;&gt;&lt;a href=&quot;#adding-backend-communication&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Adding backend communication&lt;/h2&gt;
&lt;p&gt;If you look around the Cypress documentation, you will find that they mention &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://docs.cypress.io/guides/getting-started/testing-your-app.html&quot;&gt;test environment specific routes&lt;/a&gt;. This is a good approach to establish communication between our tests and our backend.&lt;/p&gt;
&lt;p&gt;You can add this to your Laravel routes file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;if (App::environment(&#039;testing&#039;)) {
    Route::get(&#039;/_testing/login&#039;, function () {
        Auth::login(factory(\App\User::class)-&amp;gt;create());
    });
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will allow us to write a test like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;it(&#039;Maintains sessions for logged in users&#039;, () =&amp;gt; {
    cy.request(&#039;/_testing/login&#039;);

    cy.visit(&#039;/&#039;);

    cy.contains(&#039;You are logged in!&#039;);
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Remember to be running your app in &lt;code&gt;testing&lt;/code&gt; environment.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;That gets the job done, but let&#039;s not stop here. In a way this kills the readability we love so much. It&#039;s still &amp;quot;readable&amp;quot;, but if we continue down this path you&#039;ll notice how it becomes more and more cumbersome.&lt;/p&gt;
&lt;h2 id=&quot;making-it-readable&quot;&gt;&lt;a href=&quot;#making-it-readable&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Making it readable&lt;/h2&gt;
&lt;p&gt;One way to encapsulate this behaviour is by defining a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://docs.cypress.io/api/cypress-api/custom-commands.html&quot;&gt;custom Cypress command&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All we need to do is adding the following to the &lt;code&gt;cypress/support/commands.js&lt;/code&gt; file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;Cypress.Commands.add(&#039;login&#039;, () =&amp;gt; cy.request(&#039;/_testing/login&#039;));
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And now our test will be that much readable:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;it(&#039;Maintains sessions for logged in users&#039;, () =&amp;gt; {
    cy.login();

    cy.visit(&#039;/&#039;);

    cy.contains(&#039;You are logged in!&#039;);
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You may be surprised if I tell you that this is actually all you need to know in order to test your Laravel applications with Cypress!&lt;/p&gt;
&lt;p&gt;Anything else you need can be added following the same pattern. Define a Laravel route, and then define a custom Cypress command that encapsulates the request.&lt;/p&gt;
&lt;p&gt;For the sake of clarity, let&#039;s do another example.&lt;/p&gt;
&lt;h2 id=&quot;hooking-up-model-factories&quot;&gt;&lt;a href=&quot;#hooking-up-model-factories&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Hooking up model factories&lt;/h2&gt;
&lt;p&gt;As I mentioned earlier, another common operation in Laravel tests is populating the database. This is normally done using factories, so let&#039;s create a new command for that.&lt;/p&gt;
&lt;p&gt;Add the following to your routes file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;if (App::environment(&#039;testing&#039;)) {
    Route::get(&#039;/_testing/create&#039;, function () {
        $modelClass = &#039;App\\&#039; . request(&#039;model&#039;);

        return factory($modelClass)-&amp;gt;create();
    });
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And then define the following command:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;Cypress.Commands.add(&#039;create&#039;, (model) =&amp;gt; {
    return cy.request(&#039;/_testing/create?model=&#039; + model).its(&#039;body&#039;);
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now we can write this test:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;it(&#039;Logs in users&#039;, () =&amp;gt; {
    cy.create(&#039;User&#039;).then((user) =&amp;gt; {
        cy.visit(&#039;/login&#039;);

        cy.get(&#039;input[name=&amp;quot;email&amp;quot;]&#039;).type(user.email);
        cy.get(&#039;input[name=&amp;quot;password&amp;quot;]&#039;).type(&#039;password&#039;);
        cy.get(&#039;button[type=&amp;quot;submit&amp;quot;]&#039;).click();

        cy.contains(user.name);
        cy.contains(&#039;You are logged in!&#039;);
    });
});
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;going-further&quot;&gt;&lt;a href=&quot;#going-further&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Going further&lt;/h2&gt;
&lt;p&gt;This is as far as we&#039;ll go in this post, but you&#039;ll find a couple of things that can be improved if you want to use this approach. Things such as moving the testing routes to controllers, implementing tests setup and teardown, adding other arguments to the create command, etc.&lt;/p&gt;
&lt;p&gt;In order to get you started, I&#039;ve released a Cypress plugin and a Laravel package that add this functionality. Check out &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; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/laravel-cypress&quot;&gt;laravel-cypress&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Another meaningful aspect of testing applications is running them automatically with every code change. It&#039;s also important to run tests in an environment that is not dependant on your local machine. For this purpose, I&#039;ve also created a sandbox repository configured with Github Actions for CI. Use it to get started with your own projects, or just to tinker around. Check it out at &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/NoelDeMartin/laravel-cypress-sandbox/&quot;&gt;laravel-cypress-sandbox&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I hope this was useful, let me know what you think and don&#039;t hesitate in asking anything!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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>
                2020-12-07T18:18:47+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;Communication is an essential part of our lives. And there are two ways of communicating: in real-time and asynchronously.&lt;/p&gt;
&lt;p&gt;Are you using both effectively?&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/real-time-vs-asynchronous-communication"
            >
                &lt;p&gt;Communication is an essential part of our lives. And there are two ways of communicating: in real-time and asynchronously.&lt;/p&gt;
&lt;p&gt;Are you using both effectively?&lt;/p&gt;
&lt;h2 id=&quot;how-do-you-communicate&quot;&gt;&lt;a href=&quot;#how-do-you-communicate&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;How do you communicate?&lt;/h2&gt;
&lt;p&gt;Most people are not aware of how they are communicating.&lt;/p&gt;
&lt;p&gt;If you are having an in-person conversation, you expect to get a reply as soon as you finish your sentence. If you send an email, you are aware that it may take hours or even days to get a response. Those are clear examples of real-time and asynchronous communication.&lt;/p&gt;
&lt;p&gt;But what about everything else? If you are having an online conversation, do you expect the other person to reply instantly? If you call someone with your phone, do you expect them to drop whatever they are doing and attend to your request?&lt;/p&gt;
&lt;p&gt;I&#039;m sure everyone has experienced at some point being fully immersed in an online conversation just to have the other person take minutes to reply.&lt;/p&gt;
&lt;p&gt;Conversely, everyone has also experienced being immersed in any activity just to be interrupted by a phone call.&lt;/p&gt;
&lt;p&gt;We&#039;ve come to accept these situations as the way things are, but there is a better way.&lt;/p&gt;
&lt;p&gt;In this post I will introduce many ideas that are applicable both to professional and personal contexts. But this piece will be focused on how to improve communication at work.&lt;/p&gt;
&lt;h2 id=&quot;real-time-communication&quot;&gt;&lt;a href=&quot;#real-time-communication&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Real-time communication&lt;/h2&gt;
&lt;p&gt;In the workplace, real-time is the defacto standard of communicating. The only thing that is not expected to be real-time are emails, but even those are expected to be attended ASAP sometimes.&lt;/p&gt;
&lt;p&gt;I get why people think this always-on aptitude is good for collaboration. But, like the guys at Basecamp say, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://m.signalvnoise.com/interruption-is-not-collaboration&quot;&gt;interruption is not collaboration&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It&#039;s true that the &lt;em&gt;fastest&lt;/em&gt; way to solve a question is to ask someone who already knows the answer. But maybe it&#039;s not the &lt;em&gt;best&lt;/em&gt; way. Sometimes, the question shouldn&#039;t have been asked in the first place.&lt;/p&gt;
&lt;p&gt;Whenever we encounter a problem, our tendency is to ask for help right away. There are two reasons why this isn&#039;t optimal.&lt;/p&gt;
&lt;p&gt;First, we don&#039;t work through the problem ourselves, and just getting the answer doesn&#039;t teach us as much as digging into it.&lt;/p&gt;
&lt;p&gt;And second, we&#039;re probably interrupting someone else&#039;s work. Barring the fact that interrupting a co-worker is rude and annoying, context switching is expensive. What I prefer to do instead is send an asynchronous message they&#039;ll be able to answer at their discretion. Many times they&#039;ll reply instantly anyway, but at least it&#039;s them who manage their focus and I am not imposing my urgency upon them.&lt;/p&gt;
&lt;p&gt;Doing this will also give our more knowledgeable co-workers an opportunity to share their experience with us. Instead of giving a quick answer and get back to work, they can elaborate on how they see the problem and teach us a thing or two. Which brings me to my next point.&lt;/p&gt;
&lt;h2 id=&quot;asynchronous-communication&quot;&gt;&lt;a href=&quot;#asynchronous-communication&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Asynchronous communication&lt;/h2&gt;
&lt;p&gt;One of the most important things that asynchronous communication allows is the ability to think things through. Most of the time, saying the first thing that comes to mind is not a great idea. I love this piece from Derek Sivers where he talks about this: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sivers.org/slow&quot;&gt;I&#039;m a very slow thinker&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Another often overlooked aspect of asynchronous communication is that most of the time it leaves a record. Meaning that it&#039;s easy for anyone to re-read in order to better understand it. And that person can be your future self. A lot of information is lost over verbal communication, which makes for redundant conversations and wasted time.&lt;/p&gt;
&lt;p&gt;And finally, the key factor that asynchronous communication enables is focus. It will depend on your type of work, but you most likely benefit from entering a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.m.wikipedia.org/wiki/Flow_%28psychology%29&quot;&gt;flow state&lt;/a&gt; (most commonly called being in the zone).&lt;/p&gt;
&lt;p&gt;One common excuse to resort to real-time communication and interrupting others is being blocked. I like a term I learned from the guys at X-Team called being &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://github.com/x-team/handbook/blob/9ae4153208fb673ebe29a1a901314d99c8a1cc93/onboarding-guide/core-values/README.md#proactiveness-proactiveness&quot;&gt;unblockable&lt;/a&gt;. If you &lt;em&gt;really&lt;/em&gt; need someone else&#039;s involvement to keep working, there are probably worse organizational problems to be worried about.&lt;/p&gt;
&lt;h2 id=&quot;balancing-both&quot;&gt;&lt;a href=&quot;#balancing-both&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Balancing both&lt;/h2&gt;
&lt;p&gt;It may seem like I&#039;m bashing real-time communication a lot. But that&#039;s because it&#039;s usually what comes out naturally, and we need to make an effort to compensate for that tendency. Of course, there are also benefits to real-time communication; emotions and human connection are best created with real-time conversation. So the art is in using both.&lt;/p&gt;
&lt;p&gt;Real-time communication is great when it&#039;s necessary to exchange information with a rapid feedback loop. Asynchronous communication is better for deep work and to transmit information clearly.&lt;/p&gt;
&lt;p&gt;In order to get more specific, here&#039;s some things I&#039;ve found that can be used to improve your communication:&lt;/p&gt;
&lt;h3 id=&quot;implement-office-hours&quot;&gt;&lt;a href=&quot;#implement-office-hours&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Implement office hours&lt;/h3&gt;
&lt;p&gt;Instead of being always on, you can achieve the same results by having office hours. These are hours when you&#039;re available to have real-time conversations. Outside of these hours, your peers should expect asynchronous communication unless there&#039;s some urgency (which rarely happens, if ever).&lt;/p&gt;
&lt;p&gt;This doesn&#039;t mean in those hours you&#039;re just waiting for someone to talk with; you&#039;re working all the same. But you&#039;re open to interruptions and that&#039;s why you&#039;ll schedule your tasks around that. For most people, these &amp;quot;office hours&amp;quot; are actually all working hours, and that&#039;s a mistake.&lt;/p&gt;
&lt;p&gt;These hours are also ideal to schedule real-time communication, for example meetings.&lt;/p&gt;
&lt;h3 id=&quot;write-down-decisions-and-rationale&quot;&gt;&lt;a href=&quot;#write-down-decisions-and-rationale&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Write down decisions and rationale&lt;/h3&gt;
&lt;p&gt;I already hinted at this before, but many times we fall into the habit of communicating decisions verbally and without any rationale. Which is prone to generate doubts, questions and more communication overhead.&lt;/p&gt;
&lt;p&gt;I&#039;d argue for the opposite instead, make an effort every time you communicate a decision to explain how you got to that conclusion. You&#039;ll save repeating the same thing 10 times and having it lost over verbal communication.&lt;/p&gt;
&lt;p&gt;It doesn&#039;t mean the decision has to be final, but at least everyone&#039;s got all the background and will be on the same page.&lt;/p&gt;
&lt;h3 id=&quot;ping&quot;&gt;&lt;a href=&quot;#ping&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Ping&lt;/h3&gt;
&lt;p&gt;I was hesitant on adding this one because of how much I dread the term, but the core idea is good. A ping is a message that lets you know when someone needs your help ASAP.&lt;/p&gt;
&lt;p&gt;Doing this, interruptions are not really interruptions, as they allow the other person to finish whatever they are doing. If we combine this idea with office hours, it&#039;s a great way to start a real-time conversation.&lt;/p&gt;
&lt;p&gt;Still, be careful not to abuse this because it can easily become obnoxious and counterproductive.&lt;/p&gt;
&lt;h2 id=&quot;wrapping-up&quot;&gt;&lt;a href=&quot;#wrapping-up&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Wrapping Up&lt;/h2&gt;
&lt;p&gt;In the end, everyone is different and each person will have a different tendency on what they&#039;re more comfortable with.&lt;/p&gt;
&lt;p&gt;I prefer a combination in a forum-like platform mixed with real-time conversations from time to time, preferably in person or video-call. Emails are cool, but they can become messy over time and not everyone can refer back to them (only the recipients). And chats are ok, but they can often get out of hand without proper organization and discipline.&lt;/p&gt;
&lt;p&gt;I hope this served you to think more about the way we communicate. And I&#039;d suggest that you continue by reading this other piece by Derek Sivers: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sivers.org/ccom&quot;&gt;Considerate communication&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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-14T12:00:19+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;Musashi is an outstanding novel that I&#039;d recommend to anyone. I recently finished reading it, and after reviewing the notes I took and mulling over them, I&#039;ve decided to publish them here.&lt;/p&gt;
&lt;p&gt;This isn&#039;t a book summary, it&#039;s a Lessons Learned summary. Don&#039;t be afraid to keep reading if you plan to read the book, this will be spoiler-free. I will include quotes from the book, and I hope they serve as motivation for you to actually read it. If you already have, I invite you to let me know what you learned and how that compares with my takeaways.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/lessons-learned-musashi-by-eiji-yoshikawa"
            >
                &lt;p&gt;Musashi is an outstanding novel that I&#039;d recommend to anyone. I recently &lt;a href=&quot;https://noeldemartin.com/tasks/reading-musashi-by-eiji-yoshikawa&quot;&gt;finished reading it&lt;/a&gt;, and after reviewing the notes I took and mulling over them, I&#039;ve decided to publish them here.&lt;/p&gt;
&lt;p&gt;This isn&#039;t a book summary, it&#039;s a Lessons Learned summary. Don&#039;t be afraid to keep reading if you plan to read the book, this will be spoiler-free. I will include quotes from the book, and I hope they serve as motivation for you to actually read it. If you already have, I invite you to let me know what you learned and how that compares with my takeaways.&lt;/p&gt;
&lt;h2 id=&quot;about-the-book&quot;&gt;&lt;a href=&quot;#about-the-book&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;About The Book&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/img/blog/Musashi.jpg&quot; alt=&quot;Miyamoto Musashi&quot; /&gt;&lt;/p&gt;
&lt;div class=&quot;text-center&quot;&gt;*Depiction of [Miyamoto Musashi](https://en.wikipedia.org/wiki/Miyamoto_Musashi)*&lt;/div&gt;
&lt;p&gt;Musashi is a japanese novel written in 1953 by Eiji Yoshikawa. It relates the journey of Miyamoto Musashi, a real-life samurai from the 1600s who decided to follow the Way of the Sword. It&#039;s an interesting novel because some of the events related in the book are documented to have happened in real life. I&#039;m not sure how much of the book is real or fiction, but I don&#039;t think it matters. Some works remain written by the real Miyamoto Musashi, the most famous of which is The Book of Five Rings.&lt;/p&gt;
&lt;p&gt;In essence, this book relates the journey of a man who dedicates his life to self-improvement and self-discipline, and how he reaches enlightenment.&lt;/p&gt;
&lt;p&gt;I know, &amp;quot;enlightenment&amp;quot;, that&#039;s one of those words that can have thousands of connotations. What it means to me is reaching a state of mental clarity and calmness. Nothing less, nothing more. I think of this as an ideal to strive for, and not as something that can be grasped.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Without further ado, let&#039;s get into what I learned reading Musashi.&lt;/p&gt;
&lt;h2 id=&quot;the-path-and-the-way&quot;&gt;&lt;a href=&quot;#the-path-and-the-way&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The Path and The Way&lt;/h2&gt;
&lt;p&gt;One of the most prominent ideas mentioned throughout the book is the Path and the Way. We are all walking our own path, and it is our actions that lead us to the place we want to reach. Continuous learning and self-discipline will get us where we want, only if we follow the Path.&lt;/p&gt;
&lt;p&gt;This can feel like an abstract concept to understand, but after reading the book I get what it means. It makes a lot of sense for how I see the world and my life. This quote from the book encompasses its meaning:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;He well knew that to live was more than merely to survive. The problem was how to imbue his life with meaning.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For Musashi, meaning comes from being a samurai. Early in the book he decides to follow the Way of the Sword:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To Musashi&#039;s way of thinking, there was one way of life for ordinary people, another for the warrior. It was vitally important for him to live like a samurai and to die like one.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Don&#039;t be discouraged if you don&#039;t know what&#039;s your path. I&#039;m not sure I&#039;d be able to put mine in words, but I know I&#039;m on it. I know because I make progress every day and I am satisfied with my life. There is always room for improvement, but that&#039;s ok. It&#039;s part of the Path to never reach its end.&lt;/p&gt;
&lt;p&gt;You shouldn&#039;t evaluate whether you&#039;re on the Path or not by looking at your current situation. And your circumstances don&#039;t matter either. Being on the Path means walking on the right direction, doing what you know you need to do. And it&#039;s a long journey. Temporal digressions don&#039;t make a difference as long as the overall direction is correct.&lt;/p&gt;
&lt;p&gt;This passage comes from another important character in the book, Takuan. He explains how different paths are in reality the same:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;People talk about combining the Way of Learning with the Way of the Samurai, but when properly combined, they aren&#039;t two—they&#039;re one. Only one Way.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You should be looking for your own path and what brings meaning to your life.&lt;/p&gt;
&lt;p&gt;And it doesn&#039;t have to stay the same. Musashi&#039;s opinion of his path evolves throughout his journey:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;He had come to see the Way of the Sword in a new light. [...] To cut people down, to triumph over them, to display the limits of one&#039;s strength, seemed increasingly vain. He wanted to conquer himself, to make life itself submit to him, to cause people to live rather than die.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;the-limits-we-set-for-ourselves&quot;&gt;&lt;a href=&quot;#the-limits-we-set-for-ourselves&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The Limits We Set for Ourselves&lt;/h2&gt;
&lt;p&gt;In Musashi&#039;s time, status and position were very important. Part of which came from family bloodline. That&#039;s why it&#039;s surprising that him, who&#039;s got no prominent relatives, becomes increasingly uninterested with the idea of obtaining status.&lt;/p&gt;
&lt;p&gt;Here&#039;s a description of what a rōnin (a samurai without a master) should be:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A true rōnin did not seek fame or profit, did not curry favor with the powerful, did not attempt to use political power for his own ends, did not exempt himself from moral judgments. Rather he was as broad-minded as floating clouds, as quick to act as the rain and quite content in the midst of poverty. He never set himself any targets and never harbored any grudges.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Society imposes judgement and limitations upon us. Some are unintended, and some are self-imposed. It&#039;s important to understand those and define our own standards.&lt;/p&gt;
&lt;p&gt;We must reassess our perspective frequently and not make any assumptions. Musashi is well aware of his shortcomings, and he&#039;s constantly evaluating his knowledge and how far he&#039;s from reaching his goals:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I&#039;m afraid I&#039;m still immature, imprudent—far from being truly enlightened. The more I travel, the longer the road becomes. I have the feeling I&#039;m climbing an endless mountain path.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And this also needs to be applied when things are going our way. Don&#039;t sit complacent when you get someone else&#039;s seal of approval. One of the things I admire the most about Musashi is his humbleness and how he responds to undeserved praise:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Don&#039;t embarrass me. I&#039;m still an amateur. But the world&#039;s full of people who don&#039;t seem to be as good as I am.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That&#039;s why the Path is a journey of constant learning. To me, learning is one of the fundamentals of life.&lt;/p&gt;
&lt;p&gt;Another fundamental is the Self.&lt;/p&gt;
&lt;h2 id=&quot;the-self-and-looking-within&quot;&gt;&lt;a href=&quot;#the-self-and-looking-within&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The Self and Looking Within&lt;/h2&gt;
&lt;p&gt;We get wrapped up in external stimuli, and we end up with a skewed view of reality.&lt;/p&gt;
&lt;p&gt;We mustn&#039;t forget that we are the center of our life, and I don&#039;t mean it in a selfish way. Helping others is one of the best things you can do for yourself.&lt;/p&gt;
&lt;p&gt;Here&#039;s another gem uttered by Takuan:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One&#039;s self is the basis of everything. Every action is a manifestation of the self. A person who doesn&#039;t know himself can do nothing for others.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Something that can lead us astray from looking within is envy or aspiring to be like someone else. It&#039;s always good to have someone to look up to, having goals and ideals is what helps you make progress. But don&#039;t lie to yourself thinking that anyone is perfect. At the end, we&#039;re all going through the same struggles:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Whether people were great or not, there was not much variety in their inner life experience. Any difference lay merely in how they dealt with common human weaknesses.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Which ties neatly into this other quote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It is easy to crush an enemy outside oneself but impossible to defeat an enemy within.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What it comes down to is being comfortable in your own skin. Musashi spends a good deal of time alone. And it&#039;s in those moments of introspection where he feels the most alive.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Counting his footsteps, listening to the silent voice of the heavens above, he could forget everything and rejoice in his own being. When he was surrounded by crowds of busy people, his spirit often seemed sad and isolated, but now he felt alive and buoyant.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;the-value-of-experience&quot;&gt;&lt;a href=&quot;#the-value-of-experience&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The Value of Experience&lt;/h2&gt;
&lt;p&gt;This has been introspective and abstract so far. But this book relates a samurai&#039;s journey, so there is a good deal of action.&lt;/p&gt;
&lt;p&gt;It&#039;s good to reflect and ponder, but it&#039;s also necessary to put thoughts into practice.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The truth of the scholar, alone in his study, does not always accord with what the world at large considers to be true.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Growing consists of a cycle of thinking and doing. And none can be fully effective without the other.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The knowledge that comes from books is of no use to the warrior, if a man worries too much about what others think or do, he&#039;s apt to be slow to act.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is not only for the sake of our physical existence. The world of ideas is intangible, and our minds need to be fed with experiences to thrive. A feedback loop between our experiences and our thoughts is necessary for growth.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Only those who had actually grown their own grain and vegetables really understood how sacred and valuable they were. Those who hadn&#039;t were like priests who did not practice what they preached or swordsmen who learned combat techniques but knew nothing of the Way.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This leads us to reevaluate our view on obstacles and adversity.&lt;/p&gt;
&lt;h2 id=&quot;a-different-look-on-hardships&quot;&gt;&lt;a href=&quot;#a-different-look-on-hardships&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;A Different Look on Hardships&lt;/h2&gt;
&lt;p&gt;This is one prayer that Musashi makes in a temple on his journey:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Please test the lowly Musashi with hardship. Let him become the greatest swordsman in the land, or let him die.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Quite extreme, but gets the point across. The fact is that going through difficult situations is essential to reevaluating our assumptions and getting outside our comfort zone. You should not necessarily see them as bad or something to avert.&lt;/p&gt;
&lt;p&gt;If something scares you, analyze objectively if it&#039;s worth doing. And most of the times, it will. Fear often comes from inexperience and lack of knowledge. By facing our fears we can expand our self where we need it the most.&lt;/p&gt;
&lt;p&gt;The path that Musashi chose tested him constantly on this regard:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Any person who followed the Way of the Sword was constantly in danger of being killed. [...] Danger was the grindstone on which the swordsman whetted his spirit. Enemies were teachers in disguise.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In those situations, it&#039;s difficult to remain calm and absorb all the lessons. But we need to take control and get a handle on our emotions. We need to learn how to detach and make objective judgement.&lt;/p&gt;
&lt;p&gt;The ability of detaching from a situation doesn&#039;t come naturally, specially from high-pressure situations. It may even be contrary to our nature. But it isn&#039;t something that cannot be tamed:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;While custom was bred by daily experience, being on the boundary between life and death was something that occurred only a few times during a lifetime. Yet the ultimate aim of the Way of the Sword was to be able to stand on the brink of death at any time: facing death squarely, unflinchingly, should be as familiar as all other daily experiences. And the process had to be a conscious one, though movement should be as free as if it were purely reflexive.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Granted, we don&#039;t have to be as extreme as him. But that&#039;s because we&#039;re not on the Way of the Sword. So find the equivalent for your Way, and do it. By exposing yourself to those environments you&#039;ll absorb all the stimuli and improve drastically.&lt;/p&gt;
&lt;p&gt;But don&#039;t limit your experiences only to what you consider your Way.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Fighting isn&#039;t all there is to the Art of War. [...] A serious student is much more concerned with training his mind and disciplining his spirit than with developing martial skills. [...] He wants, essentially, to go everywhere he can and learn everything he can.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Go everywhere you can and learn everything you can.&lt;/p&gt;
&lt;h2 id=&quot;being-one-with-the-universe&quot;&gt;&lt;a href=&quot;#being-one-with-the-universe&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Being One With The Universe&lt;/h2&gt;
&lt;p&gt;I have talked about the importance of both mind and body. And this is something that&#039;s expressed throughout the book as being one with the universe. It encompasses everything: our inner experiences, our outter experiences and everything around us.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I&#039;ve also spent some time traveling about the country side, learning from the mountains and the rivers. I regard them, too, as teachers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Be in contact with your environment and become a spectator to your life. Looking at the true essence of the world will allow you to move freely. But don&#039;t try to bend it to your will.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Do not attempt to oppose the way of the universe. But first make sure you know the way of the universe.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Things are what they are, there&#039;s no point in complaining about things we can&#039;t control. The sooner we realize that, the sooner we&#039;ll start walking the Path.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I feel like I&#039;ve only scratched the surface and there are many ideas I didn&#039;t get into. If you found this useful, I commend you to read the book for yourself. It&#039;ll be a journey you won&#039;t regret.&lt;/p&gt;
&lt;p&gt;And don&#039;t let all of this get to your head. At its core, life is simple:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The Buddha&#039;s Law is simple: Eat your rice, drink your tea, wear your clothes.&lt;/p&gt;
&lt;/blockquote&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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>
                2020-12-18T07:33:51+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;I&#039;ve been a proponent of transparency and working openly for a while, but I struggled to translate this into something actionable myself. So I came up with this new methodology: Open Productivity.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/open-productivity"
            >
                &lt;p&gt;I&#039;ve been a proponent of transparency and working openly for a while, but I struggled to translate this into something actionable myself. So I came up with this new methodology: Open Productivity.&lt;/p&gt;
&lt;h2 id=&quot;the-human-factor&quot;&gt;&lt;a href=&quot;#the-human-factor&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The Human Factor&lt;/h2&gt;
&lt;p&gt;I recently joined Seth Godin&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://thebootstrappersworkshop.com&quot;&gt;The Bootstrapper&#039;s Workshop&lt;/a&gt;, and one of the concepts introduced is that of finding the Smallest Viable Audience. This is related to something I learned from Chase Jarvis, he calls it &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.chasejarvis.com/blog/the-part-of-success-that-nobody-talks-about&quot;&gt;building a community&lt;/a&gt;. It&#039;s also similar to something Derek Sivers suggests: focus on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://sivers.org/caremore&quot;&gt;who you want to help&lt;/a&gt; instead of the product you&#039;re building.&lt;/p&gt;
&lt;p&gt;These concepts are not the same, but they are closely related. And they mean that you need a human factor for success. I used to think that it was possible to focus only on the product, but every day I&#039;m more convinced that&#039;s not true for the kind of work that I want to do.&lt;/p&gt;
&lt;p&gt;That&#039;s why it&#039;s necessary to expose your work, create human connections and know your audience. Communicating your work is as important as the quality of your work.&lt;/p&gt;
&lt;p&gt;I have been aware of this for some time, but I haven&#039;t been great at doing something about it. My initial reaction was &amp;quot;Ok, I&#039;ll interact more with others. I&#039;ll join communities that resonate with me and I&#039;ll start giving more feedback to creators that I follow&amp;quot;. And this has been positive so far, but it isn&#039;t nearly enough.&lt;/p&gt;
&lt;p&gt;Right now I don&#039;t really expose my work, so I don&#039;t think anyone actually knows &lt;em&gt;what I do&lt;/em&gt; other than myself. It&#039;s time to change that.&lt;/p&gt;
&lt;h2 id=&quot;social-interaction-vs-productivity&quot;&gt;&lt;a href=&quot;#social-interaction-vs-productivity&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Social Interaction vs Productivity&lt;/h2&gt;
&lt;p&gt;Over the last years, I&#039;ve actively reduced my exposure to social channels. I don&#039;t use Facebook, I&#039;m not subscribed to any news outlets, I try to suppress as many notifications as I can, I turn my phone off every day when I go to sleep and I don&#039;t turn it on until I&#039;ve completed my morning routine the following day.&lt;/p&gt;
&lt;p&gt;The only social networks that I use are Twitter and Mastodon, and I don&#039;t even check them that often.&lt;/p&gt;
&lt;p&gt;I&#039;m all about productivity, and I&#039;ve written about it &lt;a href=&quot;https://noeldemartin.com/blog/rigid-flexible-planning&quot;&gt;multiple&lt;/a&gt; &lt;a href=&quot;https://noeldemartin.com/blog/order-vs-chaos&quot;&gt;times&lt;/a&gt;. That&#039;s why my time is allocated to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.m.wikipedia.org/wiki/Timeboxing&quot;&gt;planned activities&lt;/a&gt;. And I consume content mostly from &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.m.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_2&quot;&gt;sources that I trust&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In summary, for me productivity is related to isolation. I reduce the noise around me and work from first principles, studying and learning on my own accord.&lt;/p&gt;
&lt;p&gt;But this clashes with the idea of building human connections. And I&#039;m also aware that I have a lot to learn from interacting with others. I tried to allocate some tasks to &amp;quot;interact&amp;quot; but it felt forced and unnatural. What&#039;s helped me is changing my mindset about consumption, interacting more with the content that I already consume.&lt;/p&gt;
&lt;p&gt;Thinking how to align these two is how I came up with this new approach.&lt;/p&gt;
&lt;h2 id=&quot;enter-open-productivity&quot;&gt;&lt;a href=&quot;#enter-open-productivity&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Enter Open Productivity&lt;/h2&gt;
&lt;p&gt;I thought I was already &amp;quot;working in the open&amp;quot; because I started publishing my code on GitHub, but if no one is watching it&#039;s like it isn&#039;t there. There is also a lot of context and reasoning that&#039;s missing from the code. So I could do a better job at that.&lt;/p&gt;
&lt;p&gt;Some months ago I came across &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://dougbelshaw.com/blog/&quot;&gt;Doug Belshaw&lt;/a&gt;, and I&#039;ve been following his work ever since. I think he&#039;s a great example of what working in the open means, and he&#039;s inspired me to take action.&lt;/p&gt;
&lt;p&gt;I&#039;ve come to the conclusion that a great way to do it for me is merging the productivity system I already have with my communication channels. And that&#039;s what I call practicing Open Productivity. Here&#039;s a diagram trying to convey what I mean:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/blog/OpenProductivity.png&quot; alt=&quot;Diagram&quot; title=&quot;Open Productivity Diagram&quot; /&gt;&lt;/p&gt;
&lt;p&gt;With this, I&#039;ll begin to document my journey and it&#039;ll be easier for anyone who finds me to learn what I do. I also expect to increase my interactions, so ping me when you have anything to say!&lt;/p&gt;
&lt;p&gt;Starting today, you&#039;ll be able to follow my progress in my &amp;quot;now&amp;quot; page at &lt;a href=&quot;https://noeldemartin.com/now&quot;&gt;noeldemartin.com/now&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I plan to mix it up with my communication channels, so you should also see a difference if you&#039;re following me on Twitter, Mastodon or my blog.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;2020 Update:&lt;/strong&gt; I&#039;ve written a follow up to this post after applying these ideas for a while, check it out: &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;/em&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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>
                2019-05-02T10:10:17+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;For the better part of this year, I have been looking for a new job and struggling to find a good match.&lt;/p&gt;
&lt;p&gt;The problem is not the &amp;quot;skills&amp;quot;. My background is on web and mobile development, so I am looking for a fullstack, frontend or backend development position. There are thousand of jobs matching those skills. But how do you optimize to search for a job matching your values?&lt;/p&gt;
&lt;p&gt;I have to confess that I didn&#039;t even know what I wanted. So I put my head down and tried to define what are the criteria for the job I am seeking. This is what came out.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/finding-opportunities-that-fit-your-values"
            >
                &lt;p&gt;For the better part of this year, I have been looking for a new job and struggling to find a good match.&lt;/p&gt;
&lt;p&gt;The problem is not the &amp;quot;skills&amp;quot;. My background is on web and mobile development, so I am looking for a fullstack, frontend or backend development position. There are thousand of jobs matching those skills. But how do you optimize to search for a job matching your values?&lt;/p&gt;
&lt;p&gt;I have to confess that I didn&#039;t even know what I wanted. So I put my head down and tried to define what are the criteria for the job I am seeking. This is what came out.&lt;/p&gt;
&lt;h2 id=&quot;vision&quot;&gt;&lt;a href=&quot;#vision&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Vision&lt;/h2&gt;
&lt;p&gt;I want to work somewhere with a vision that motivates me and shares &lt;a href=&quot;https://noeldemartin.com/#my-values&quot;&gt;my values&lt;/a&gt;. Putting this in less abstract terms, I want to help solving a problem I care about and I don’t think is already solved or has a market saturated with solutions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Examples of suitable visions: privacy, education, open source.&lt;/li&gt;
&lt;li&gt;Examples of unsuitable visions: yet another task manager, consulting, analytics/marketing, blockchain.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Of course none of those is a deal breaker nor a sure bet, it depends a lot on the specifics. But overall those are good approximations.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;work&quot;&gt;&lt;a href=&quot;#work&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Work&lt;/h2&gt;
&lt;p&gt;I want to surround myself with talented and motivated individuals, because I want to continue learning and share my passion. I also want to nurture and teach others, but “If you’re the best in the room, you’re in the wrong room”.&lt;/p&gt;
&lt;p&gt;I am also looking for a place where they share my work philosophy, which is greatly influenced by Basecamp. Quality &amp;gt; quantity. I don’t care that much about growth, I care about serving customers well and creating value. For obvious reasons I do care about profitability, but I don’t think it correlates with growth as most companies seem to be obsessed with.&lt;/p&gt;
&lt;h2 id=&quot;company-size&quot;&gt;&lt;a href=&quot;#company-size&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Company Size&lt;/h2&gt;
&lt;p&gt;I believe the environment where I can thrive is a small to medium organization. Reasons for this are based more in theory than in practice, but I think I won’t be able to make an impact in a big company if I am only a cog in the wheel.&lt;/p&gt;
&lt;p&gt;My experience is also better suited, since my abilities span multiple areas and I enjoy interacting with other departments.&lt;/p&gt;
&lt;h2 id=&quot;remote&quot;&gt;&lt;a href=&quot;#remote&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Remote&lt;/h2&gt;
&lt;p&gt;This is as much a restriction as it is a criterion. I live in Barcelona and I’m not willing to relocate permanently (I would for a training period). Focusing my efforts only in opportunities located in Barcelona would limit my options even more. That’s why I am looking for a remote opportunity.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;After reading this, there is a variety of reactions you may have. One I hear often is thinking that my standards are too high. Maybe it&#039;s true, but hear me out.&lt;/p&gt;
&lt;p&gt;We spend 8+ hours a day working. Considering 8 hours of sleep and other activities necessary for survival, working is the biggest chunk of time we spend in life. And time is without a doubt the most important thing you will spend. So I would argue it&#039;s one of the most important things to get right.&lt;/p&gt;
&lt;h2 id=&quot;the-plan&quot;&gt;&lt;a href=&quot;#the-plan&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The plan&lt;/h2&gt;
&lt;p&gt;I am a big proponent of Stoicism, so I am not restless about my situation. I&#039;ll just continue striving to be the best I can be while enjoying what life&#039;s given me.&lt;/p&gt;
&lt;p&gt;However, there is one thing I need to improve and that is networking. That sounds like a catch-all concept, but what I mean in particular is how I communicate my work and where I choose to spend my efforts. I have been contributing to Open Source for a while, but it&#039;s been mostly on my own projects. I will be more intentional with my work, and I&#039;ll expose myself to other communities and get outside of my bubble.&lt;/p&gt;
&lt;p&gt;I hope my views on job seeking can inspire others. And of course, if you know of a company or an opportunity that can fit my values, let me know!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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-20T20:17:41+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;With so much happening with blockchains, there is an ongoing discussion on the impact they have. In order to form my own opinion, I have studied three and I will give my take of them and the ecosystem. If you are not familiar with blockchain technology, make sure to read my previous article where I introduce the foundations and explain what makes it different from other technologies.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/blockchains-innovation-or-sham"
            >
                &lt;p&gt;With so much happening with blockchains, there is an ongoing discussion on the impact they have. In order to form my own opinion, I have studied three and I will give my take of them and the ecosystem. If you are not familiar with blockchain technology, make sure to read &lt;a href=&quot;https://noeldemartin.com/blog/blockchains-how-do-they-work-&quot;&gt;my previous article&lt;/a&gt; where I introduce the foundations and explain what makes it different from other technologies.&lt;/p&gt;
&lt;h2 id=&quot;bitcoin&quot;&gt;&lt;a href=&quot;#bitcoin&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Bitcoin&lt;/h2&gt;
&lt;p&gt;This is probably the most famous blockchain, and it is sometimes confused with blockchain technology overall.&lt;/p&gt;
&lt;p&gt;Its main purpose is to process payments, and that&#039;s why it&#039;s called a cryptocurrency. The original intention was to provide secure and cheap online transactions, without the hurdles of trusting third parties to mediate. However, it has since evolved in different directions. Although the technology is the same, people have been using it for other purposes. Some of them are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Replacing physical currencies&lt;/strong&gt;: Most ambitious proponents of Bitcoin argue that it&#039;s the future and it will eventually replace physical currencies.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Speculation&lt;/strong&gt;: One of the main trends is to buy Bitcoin with the expectation of making a profit. Or manipulating public opinion in order to benefit from price fluctuations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Anonymous transactions&lt;/strong&gt;: Since there is no real ownership in Bitcoin other than holding a private key, transactions can be anonymous. And this makes it a real benefit for some.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Smart contracts&lt;/strong&gt;: The fact that the system is secure and immutable has prompted some actors to use it as witness that an agreement was made.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Others&lt;/strong&gt;: Using transaction metadata, other applications have been built on top of the Bitcoin network for multiple purposes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most of those are not unique to Bitcoin and can be seen in other cryptocurrencies as well.&lt;/p&gt;
&lt;p&gt;My opinion of the current state of Bitcoin is not great. The key problem I see is precisely what makes it special: it has no regulations. Some people are of the opinion that that&#039;s good. But I believe having bad regulations is generally better than no regulations. I&#039;m not saying that today&#039;s laws are perfect, but hundreds of years ago things like slavery were common-place. And I&#039;m sure that having no regulations brings the worst in humanity. I don&#039;t think that people is inherently bad, on the contrary, I believe most people wants to do good. But without rules, a few bad actors can have a huge impact and influence the entire ecosystem.&lt;/p&gt;
&lt;p&gt;The reality is that today most successful use cases for Bitcoin are speculation and illegal activity. Unfortunately, the use cases that I find more beneficial are less viable every day or don&#039;t compensate for all the problems that are created in exchange (volatility, scalability, environmental impact, etc.). And without regulations, I don&#039;t see how this will ever change.&lt;/p&gt;
&lt;p&gt;An alternative blockchain called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.bitcoincash.org&quot;&gt;Bitcoin Cash&lt;/a&gt; was created to fix some of those issues, but I am sceptic for what I just mentioned. In any case, I haven&#039;t looked much into it, so I cannot have a definite opinion.&lt;/p&gt;
&lt;h2 id=&quot;ethereum&quot;&gt;&lt;a href=&quot;#ethereum&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Ethereum&lt;/h2&gt;
&lt;p&gt;I mentioned that Bitcoin has been used to develop other applications on top of the network. But it has some limitations because it wasn&#039;t designed with that purpose in mind. That&#039;s where Ethereum comes in. It supports a programming language that is run using their built-in cryptocurrency.&lt;/p&gt;
&lt;p&gt;Since it has been built with a broader scope, it covers more use cases than Bitcoin, and multiple blockchains have been built entirely on top of the Ethereum blockchain. However, since I don&#039;t know much about its use in the wild I will refrain from talking about this. What I do know is how it works after reading the white paper and digging a couple of concepts. And my initial opinion is not great.&lt;/p&gt;
&lt;p&gt;Applications built with Ethereum are executed in every node of the network, which results in a lot of wasted computation. I can understand how this is necessary for security reasons, but I&#039;m not sure that many applications justify this trade-off.&lt;/p&gt;
&lt;p&gt;In order to run code on the blockchain it&#039;s necessary to spend Ether, their built-in cryptocurrency. The problem is that the price of Ether is not stable. For someone who is not part of the network, operations may be too expensive and unreliable.&lt;/p&gt;
&lt;p&gt;All in all, I think the approach is better than Bitcoin, but in the end it suffers from the same core problems. And I struggle to find a use case that could not be solved with other technologies.&lt;/p&gt;
&lt;h2 id=&quot;steem&quot;&gt;&lt;a href=&quot;#steem&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Steem&lt;/h2&gt;
&lt;p&gt;The last blockchain I want to talk about is Steem. This one does a couple of things differently and its main purpose is to provide a distributed content and blogging platform.&lt;/p&gt;
&lt;p&gt;Everything works around a cryptocurrency called Steem. This currency can be earned by using the platform, for example writing posts, comments or upvoting. And it has two derivations: Steem Power (SP) and Steem Dollars (SBD). Steem Power is used to potentiate your activity. The more SP you have, the more impact your activity will have and more Steem you&#039;ll get. Steem Dollars, on the other hand, are used as a way to have stability within the system. One SBD can be exchanged for the equivalent of one USD in Steem at the current evaluation.&lt;/p&gt;
&lt;p&gt;The founders of this blockchain also created a platform called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://steemit.com&quot;&gt;Steemit&lt;/a&gt;, where it&#039;s easy for anyone to create an account and start interacting with the blockchain in a seamless way. In fact, you won&#039;t notice that you&#039;re using blockchain technology, since it behaves like any other media platform. The one thing that will stand out is that posts and comments have an amount of dollars next to them. This amount is how much Steem has been generated for the author of the content, represented in Steem Dollars.&lt;/p&gt;
&lt;p&gt;I have to say that Steem is the first blockchain I like. The main thing that got me interested is providing a viable alternative to fund content creators. In contrast with the advertisement model, which I am heavily against. If you want to learn more about this from a content creator&#039;s point of view, read this post by David Kadavy which covers the basics: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://steemit.com/steem/@kadavy/a-writer-s-guide-to-making-money-on-the-steem-blockchain-for-beginners&quot;&gt;A writer’s guide to making money on the STEEM blockchain – for beginners&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://steemit.com/@noeldemartin&quot;&gt;Having used the platform&lt;/a&gt; for a while has been a good experience so far. I am worried about a couple of things like bot activity, but nothing dramatic yet. The fact that Steemit is a layer on top of the blockchain can help fixing some of these issues. It may seem counter intuitive to say that, given the main point of blockchains to be distributed. But if Steemit goes sideways, the underlying blockchain with all the information is still open. And it&#039;s possible for anyone to create alternative platforms.&lt;/p&gt;
&lt;p&gt;Some alternatives to Steemit already exist, like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://busy.org&quot;&gt;Busy.org&lt;/a&gt;. And a decentralized alternative to YouTube called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://d.tube&quot;&gt;D.tube&lt;/a&gt; has been built on top of the Steem blockchain. But keep in mind that videos are stored on &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ipfs.io&quot;&gt;IPFS&lt;/a&gt;, not the blockchain, so the same rules won&#039;t apply.&lt;/p&gt;
&lt;h2 id=&quot;final-veredict-awesome-or-awful&quot;&gt;&lt;a href=&quot;#final-veredict-awesome-or-awful&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Final veredict: awesome or awful?&lt;/h2&gt;
&lt;p&gt;With all this said, what is my final opinion on blockchains?&lt;/p&gt;
&lt;p&gt;First let me point out that technology is a multiplier. If you want to do good, technology will help you. But it will also potentiate bad intentions. That&#039;s why I believe the real question here is how are blockchains being used today.&lt;/p&gt;
&lt;p&gt;Unfortunately, I don&#039;t like the current state they are at. I&#039;ve found a lot of arguments for and against, and the ones with more impact are the ones against. Seems like most prominent scenarios are speculating and introducing ill-informed hype. And the solutions to existing problems are mostly based on hope and hypothesis, but the current situation does not seem to be changing.&lt;/p&gt;
&lt;p&gt;It is also possible that Bitcoin and sketchy blockchains take much of the spotlight, and smaller blockchains are not taken into account. But as I said, the important part about technology is how it&#039;s being used, so it isn&#039;t inherently wrong to judge based on that.&lt;/p&gt;
&lt;p&gt;I agree with most of the principles, but not the execution. I believe it&#039;s possible to fix the problems. In particular I think the keys are improving efficiency and introducing self-regulation mechanisms. This is already happening with some blockchains, but it will not happen for the entire ecosystem in the short term.&lt;/p&gt;
&lt;p&gt;That&#039;s why I think it is important for us to be aware of what kind of blockchain we are supporting. Next time you see a new fancy blockchain being announced, make an effort to learn what&#039;s actually going on under the hood.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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>
                2021-01-16T08:05:34+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;&lt;/p&gt;
&lt;p&gt;The word is out about blockchains and how awesome they are. Or how awful, depending who you ask. I have been spectating the discussion for years, but I recently decided to give it a real look.&lt;/p&gt;
&lt;p&gt;In this article I will introduce the foundations on how does blockchain technology work.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/blockchains-how-do-they-work"
            >
                &lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://unsplash.com/photos/_QoAuZGAoPY&quot; title=&quot;Cityscape and interchange photo by Denys Nevozhai on Unsplash.com&quot;&gt;&lt;img src=&quot;/img/blog/Blockchains-1.jpg&quot; alt=&quot;Blockchains: How do they work?&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The word is out about blockchains and how awesome they are. Or how awful, depending who you ask. I have been spectating the discussion for years, but I recently decided to give it a real look.&lt;/p&gt;
&lt;p&gt;In this article I will introduce the foundations on how does blockchain technology work.&lt;/p&gt;
&lt;h2 id=&quot;sources&quot;&gt;&lt;a href=&quot;#sources&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Sources&lt;/h2&gt;
&lt;p&gt;In order to cover a good amount of diversity, I chose three blockchains to look into: Bitcoin, Ethereum and Steem. I think those are representative enough to get started, but if you think I missed any game changer, let me know!&lt;/p&gt;
&lt;p&gt;With so much controversy it is difficult to find impartial learning sources. I decided to start by reading the original whitepapers and search specific information based on that. They can be found on the following links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://bitcoin.org/bitcoin.pdf&quot; title=&quot;Bitcoin original whitepaper&quot;&gt;Bitcoin: A Peer-to-Peer Electronic Cash System&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ethereum.org/en/whitepaper/&quot; title=&quot;Ethereum original whitepaper&quot;&gt;Ethereum: A Next-Generation Smart Contract and Decentralized Application Platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://steem.io/SteemWhitePaper.pdf&quot; title=&quot;Steem original whitepaper&quot;&gt;Steem: An Incetivized, Blockchain-based, Public Content Platform&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;The key concept to understand is that blockchains are made to store information, that’s why sometimes you see them described as some kind of database. A blockchain is nothing more than a collection of records storing data. These records are called “blocks”. They have an intrinsic chronological order, because they store information about previous blocks. Together they are called &amp;quot;the blockchain&amp;quot;.&lt;/p&gt;
&lt;p&gt;The easiest way to understand the underlying nature of blockchains is to think of them as &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Linked_list&quot;&gt;Linked Lists&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Other than the basic architecture, there are some key properties which make blockchain technology unique: distribution, encryption and immutability.&lt;/p&gt;
&lt;h2 id=&quot;distribution&quot;&gt;&lt;a href=&quot;#distribution&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Distribution&lt;/h2&gt;
&lt;p&gt;This is probably the most important property of blockchains and what makes them extremely resilient.&lt;/p&gt;
&lt;p&gt;It is possible to clone a blockchain, and such clone will be the same as the original. Computers running those clones are called “nodes”. And it doesn’t matter if the original blockchain is lost, as long as there is at least one active node, the system won’t be disrupted. All nodes together make the “blockchain network”.&lt;/p&gt;
&lt;p&gt;Given that there isn&#039;t one true blockchain, you may be wondering how is the system protected from malicious nodes. This is solved using a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Consensus_%28computer_science%29&quot;&gt;consensus algorithm&lt;/a&gt;, where a malicious node would need to control more than 50% of the network to manipulate records. It makes a blockchain more secure the bigger it grows.&lt;/p&gt;
&lt;h2 id=&quot;encryption&quot;&gt;&lt;a href=&quot;#encryption&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Encryption&lt;/h2&gt;
&lt;p&gt;Since anyone can join the network, it is necessary to validate information without trusting other nodes. And that is achieved with encryption. All the information in the blockchain is cryptographically tied together. In order to modify even one byte in a block, all subsequent blocks would need to be modified as well.&lt;/p&gt;
&lt;p&gt;One interesting side-effect of this is how ownership works. In blockchain there aren’t any owners or “users”. Think about a traditional application, where a user is authenticated with a password. Because those applications are controlled by one entity, if the password is lost they can perform recovery operations and create a new password. But in blockchain the only thing that represents a “user” is the possession of the password, in this case a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Public-key_cryptography&quot;&gt;private key&lt;/a&gt;. If the password is lost or stolen, it cannot be recovered.&lt;/p&gt;
&lt;p&gt;That&#039;s why it isn&#039;t so much who owns anything, but what you can or cannot decrypt the data.&lt;/p&gt;
&lt;h2 id=&quot;immutablity&quot;&gt;&lt;a href=&quot;#immutablity&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Immutablity&lt;/h2&gt;
&lt;p&gt;As a consequence of distribution and encryption, blockchains are immutable. This doesn’t mean that the final application using the blockchain is immutable. Applications built on top of blockchains have a derived state, which can be inferred from traversing the entire chain. What this means is that anything from the derived state can be changed, but the history of modifications will always be recorded.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Having all this into account, it’s important to keep in mind something that isn’t immediately obvious. Operations performed on a blockchain can be really slow and resource-consuming.&lt;/p&gt;
&lt;p&gt;The problem is not the operation itself. In order to trust an operation as valid, it should be spread through the network until it is considered secure. For example, in the Bitcoin blockchain it can take as long as &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.bitcoin.it/wiki/Confirmation&quot;&gt;one hour&lt;/a&gt; to have a confirmed transaction. And Ethereum nodes have to do a lot of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://ethereum.stackexchange.com/questions/357/does-every-node-execute-the-contract-code-for-each-transaction&quot;&gt;extra work&lt;/a&gt; just to maintain security. Other blockchains have different timeframes and limitations, but this goes to show how unexpected consequences can arise from not knowing the specifics of a technology.&lt;/p&gt;
&lt;p&gt;Blockchain is becoming a buzz word these days, and a lot of scams are disguising themselves with the cloak of this technology. Not to mention the amount of people who &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether&quot;&gt;have no idea&lt;/a&gt; about what they are doing. So be careful and get informed before getting involved in any blockchain endeavor.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Part II:&lt;/strong&gt; &lt;a href=&quot;https://noeldemartin.com/blog/blockchains-innovation-or-sham-&quot;&gt;Blockchains: Innovation or Sham?&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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>
                2021-07-11T07:52:42+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;&lt;/p&gt;
&lt;p&gt;Conventional wisdom says order and planning are the key to achieve great productivity. But I&#039;ve found the importance of chaos as well. In this post, I will tell you how to embrace both to get better results.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/order-vs-chaos"
            >
                &lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://unsplash.com/photos/6ywyo2qtaZ8&quot;&gt;&lt;img src=&quot;/img/blog/OrderVsChaos.jpg&quot; alt=&quot;Order vs Chaos&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Conventional wisdom says order and planning are the key to achieve great productivity. But I&#039;ve found the importance of chaos as well. In this post, I will tell you how to embrace both to get better results.&lt;/p&gt;
&lt;h2 id=&quot;order&quot;&gt;&lt;a href=&quot;#order&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Order&lt;/h2&gt;
&lt;p&gt;I&#039;m always improving my workflow, and productivity is one of my favorite reading subjects. I also wrote &lt;a href=&quot;https://noeldemartin.com/blog/rigid-flexible-planning&quot;&gt;how I approach planning&lt;/a&gt; before.&lt;/p&gt;
&lt;p&gt;Over the years many techniques have proven to be effective: Timeboxing, Getting Things Done, Flow, etc. I actually enjoy them, so it isn&#039;t a drag accommodating my workflow to some rules. I also think work/life balance is tremendously important and has a positive impact on the quality of your results. That&#039;s why it&#039;s important to follow a schedule.&lt;/p&gt;
&lt;p&gt;Jocko Willink &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.transcripts.io/transcripts/tim_ferriss_show/2016/11/21/jocko-willink.html#00:55:14&quot;&gt;emphasizes the importance of order&lt;/a&gt; comparing discipline vs motivation: &amp;quot;Motivation is fickle. Motivation comes and goes. Motivation is unreliable and when you’re counting on motivation to get your goals accomplished, you’re likely gonna fall short. So don’t count on motivation, count on discipline. You know what you have to do. Go make yourself do it.&amp;quot;&lt;/p&gt;
&lt;p&gt;It makes perfect sense, but it isn&#039;t until I embraced it that I really understood it. Productivity is a matter of action. It isn&#039;t enough just to learn about it, you need to apply it and create your own workflow.&lt;/p&gt;
&lt;h2 id=&quot;chaos&quot;&gt;&lt;a href=&quot;#chaos&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Chaos&lt;/h2&gt;
&lt;p&gt;Interestingly enough, my most effective approach is the most recent. I am constantly changing tools, and they are always more effective at their earliest stages. They may accomplish the same end goal, but I&#039;ll switch on and off techniques such as Pomodoro Timer and I change my task management app frequently.&lt;/p&gt;
&lt;p&gt;An important aspect of setting your own workflow is to know that you can change it. It should empower you, not become your shackles. This is dangerous though, because part of having an effective workflow is force of habit and being able to stick with it.&lt;/p&gt;
&lt;p&gt;The way I approach this conundrum is by allowing chaos to live within the order. I allow myself to do experimental work and break my routine because I know it will pay off. But I&#039;m always aware of my goals and deadlines, so I know when it&#039;s more appropriate to do it at the risk of wasting time.&lt;/p&gt;
&lt;p&gt;It&#039;s not the same as scheduling chaos, and l get better results like this. After all what is more effective: 10 hours of disciplined work you don&#039;t feel like doing or 5 hours when you are in the zone?&lt;/p&gt;
&lt;h2 id=&quot;the-equilibrium-of-both&quot;&gt;&lt;a href=&quot;#the-equilibrium-of-both&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The equilibrium of both&lt;/h2&gt;
&lt;p&gt;There is value in both sides of the coin. The challenge is how to balance them, and the answer depends on your work and your personality.&lt;/p&gt;
&lt;p&gt;Order and discipline are more appropriate to get things done. Chaos and motivation are more appropriate for creative work. And both are necessary to achieve great results.&lt;/p&gt;
&lt;p&gt;A sustainable workflow is benefited from having a routine and planning. In order to get work done, you need to focus your efforts in solving the task at hand. So reducing decision fatigue is very important to perform better. David Allen says to keep anything potentially meaningful out of your head and parked in some trusted place. This will free up your mental bandwidth and make you better.&lt;/p&gt;
&lt;p&gt;On the flip side, it&#039;s important to use moments of inspiration. It&#039;s true that creativity can be manufactured. The blank canvas syndrome can be mitigated, and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://medium.com/getting-art-done/productivity-is-limited-creativity-is-infinite-4d41ddb25ae9&quot;&gt;creativity is infinite&lt;/a&gt;. But using motivation and creativity when they are stronger works better than scheduling.&lt;/p&gt;
&lt;p&gt;If we&#039;re 100% disciplined, and our working schedule is 9 to 5, we should stop working at 5 sharp. If we&#039;re in the zone at that time, we are cutting it short. Breaking the rules and pushing through the schedule can be beneficial at times. Gut feeling is not a reliable tool for sustainable work, but it shouldn&#039;t be omitted either.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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>
                2023-11-27T18:37:57+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;Have you ever thought how programming languages relate to one another? I recently did, and to my surprise there is a lot of similarities with human languages.&lt;/p&gt;
&lt;p&gt;I’m sure you will see programming languages in a different way after reading this. If you don’t know much about programming, this will help you understand them a bit more.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/programming-and-human-languages"
            >
                &lt;p&gt;Have you ever thought how programming languages relate to one another? I recently did, and to my surprise there is a lot of similarities with human languages.&lt;/p&gt;
&lt;p&gt;I’m sure you will see programming languages in a different way after reading this. If you don’t know much about programming, this will help you understand them a bit more.&lt;/p&gt;
&lt;h2 id=&quot;first-things-first-what-is-a-programming-language&quot;&gt;&lt;a href=&quot;#first-things-first-what-is-a-programming-language&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;First things first, what is a programming language?&lt;/h2&gt;
&lt;p&gt;I won’t go into defining what a human language is, because I assume we already have a common understanding. But what is a programming language?&lt;/p&gt;
&lt;p&gt;According to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Programming_language&quot;&gt;wikipedia&lt;/a&gt;: “a programming language is a formal language that specifies a set of instructions that can be used to produce various kinds of output.” This is a good formal definition, but there are other aspects I want to consider. The main purpose of a programming language is to “transfer information into a computer”, with the goal of the computer producing a result. And here is where I find the first analogy. What is the main purpose of a human language? Well, I would say it is to “transfer information into a human”. In the same way that the receiving human needs to understand the human language, a computer running code needs to interpret the programming language. Luckily for them, it&#039;s easy for them to understand new languages by installing software.&lt;/p&gt;
&lt;p&gt;Other than the core purpose of transferring information, there is a clear difference on how they operate. Programming languages are 100% logical (ok, 99% if we consider &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Heisenbug&quot;&gt;Heisenbugs&lt;/a&gt;). It may seem irrational when &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Software_bug&quot;&gt;bugs&lt;/a&gt; appear, but there is always an underlying logical explanation. Everything a program does can be boiled down to 3 concepts: Inputs, State and Outputs. Inputs are the information given to run the program. State is the information existing within the system. And outputs are the information generated from the computation. All programs are structured like this, formed by submodules that interact with each other to create complex systems.&lt;/p&gt;
&lt;p&gt;Humans arguably do this as well, if we consider senses inputs, memory state and actions outputs. But it’s not yet clear if we work like this at a fundamental level. &lt;a href=&quot;https://noeldemartin.com/posts/let-s-agree-to-disagree&quot;&gt;I have talked about it before&lt;/a&gt;, and it’s an ongoing debate in fields such as philosophy and physics. This is also why I won’t be considering quantum computing in this article (that, and the fact that I don’t have experience with it).&lt;/p&gt;
&lt;h2 id=&quot;languages-birth&quot;&gt;&lt;a href=&quot;#languages-birth&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Languages birth&lt;/h2&gt;
&lt;p&gt;The first thing I want to talk about is how programming languages come into existence. Contrary to human languages that are created naturally, programming languages are created artificially, and there is a design process involving conscious decisions behind their creation. However, there is no programming language that comes out of nowhere. Similar to human languages, programming languages have a genealogy (family tree). Creating a new programming language always involves using existing concepts and ideas. One particularity is that their family tree is actually messier than the human languages’. Because they are often influenced by many others, they have multiple ancestors.&lt;/p&gt;
&lt;p&gt;Here you can see an example to compare both genealogies (click to see more details):&lt;/p&gt;
&lt;div class=&quot;flex flex-col items-center justify-center md:flex-row&quot;&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://rigaux.org/language-study/diagram.html&quot;&gt;&lt;img src=&quot;/img/blog/ProgrammingLanguagesGeneaology.jpg&quot; alt=&quot;Programming Languages Geneaology&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
 &lt;br /&gt;
 &lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://sssscomic.com/comic.php?page=196&quot;&gt;&lt;img src=&quot;/img/blog/HumanLanguagesGeneaology.jpg&quot; alt=&quot;Human Languages Geneaology&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;If you are curious, the first programming language was Fortran, and it was born in 1954. So the history of programming languages is only about 64 years old.&lt;/p&gt;
&lt;h2 id=&quot;languages-structure&quot;&gt;&lt;a href=&quot;#languages-structure&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Languages structure&lt;/h2&gt;
&lt;p&gt;When looking at programming languages, there is always an underlying structure that is common to all of them. All have variables, methods, loops, conditionals, etc. And the same can be said for human languages; all of them have verbs, adjectives, conjunctions, etc. It also goes beyond simple structural components; in programming we can find &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Design_pattern&quot;&gt;design patterns&lt;/a&gt; that can be used in any language, and with humans we find concepts like eating or feeling emotions common to everyone.&lt;/p&gt;
&lt;p&gt;This bears to conclude that all languages stem from one abstract mother language. For humans, this is the mental model we all share regardless of culture and race. There is an hypothesis considering this which calls it &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Language_of_thought_hypothesis&quot;&gt;language of thought&lt;/a&gt;. For programming it is called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Pseudocode&quot;&gt;pseudocode&lt;/a&gt;, which is used to define code regardless of implementation and platform. This idea of having a mother language is further supported by the fact that they can be translated into one another. Human languages are constantly being translated, but programming languages are also translated with a process called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Compiler&quot;&gt;compilation&lt;/a&gt;. At the end, anything can be implemented or said in any language, but each one is more suitable for a specific context. This explains why &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Eskimo_words_for_snow&quot;&gt;Eskimos have so many different words to say “snow”&lt;/a&gt;, or why &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://stackoverflow.com/questions/1490745/why-is-perl-the-best-choice-for-most-string-manipulation-tasks&quot;&gt;Perl has so much string manipulation functionality&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;sounding-native&quot;&gt;&lt;a href=&quot;#sounding-native&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Sounding native&lt;/h2&gt;
&lt;p&gt;Thinking about this concept of “sounding native” is what got me started thinking on this topic. Languages have syntax rules indicating what is correct and what isn&#039;t. And there are tools that can validate those. For humans we call them spell checkers and for programming they are called &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Lint_%28software%29&quot;&gt;linters&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But there are also non-written rules that vary from one context to another and aren&#039;t standard. And that’s something remarkable, because the same thing happens with human speech. I could speak in Spanish with a Mexican and we’d understand each other perfectly. But we’d both notice many subtle differences that give away that we are not native from the same context. One stark example in programming is tabulations, some languages tend to use 2 spaces instead of 4 (or, god forbid, tabs). If you ever want to become fluent in a language, keep this in mind. Small subtleties make all the difference.&lt;/p&gt;
&lt;p&gt;An extension to this can be found in dialects. When a human language changes too much, we call it a dialect. In some occasions, speaking a language is not enough to understand other dialects. For programming we find this behavior with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Software_framework&quot;&gt;frameworks&lt;/a&gt;. Being written with the same language, the differences can still make it hard for a developer to understand the code.&lt;/p&gt;
&lt;h2 id=&quot;languages-proliferation&quot;&gt;&lt;a href=&quot;#languages-proliferation&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Languages proliferation&lt;/h2&gt;
&lt;p&gt;Something definitely different is the pace at which they are created. As I commented before, the first programming language appeared 64 years ago. In only those few years, programming languages&#039; count could be about to surpass human languages&#039;. According to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://languagelog.ldc.upenn.edu/nll/?p=1467&quot;&gt;this article&lt;/a&gt;, it is possible that we already have more programming than human languages. And according to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.ocadogroup.com/news-and-media/news-centre/2015/20150901python.aspx&quot;&gt;this other article&lt;/a&gt;, Python is apparently the most popular language to be taught in primary schools (including human languages). I have to be skeptic about those, but keep in mind that they were published in 2009 and 2015 respectively. Today this may be an exaggeration. But if they keep this pace, in another 64 years programming languages will have surpassed human languages for sure. I wouldn’t be surprised if 50 years from now people who don’t know to code are like people who don&#039;t know how to read today. Programming is definitely the new literacy.&lt;/p&gt;
&lt;p&gt;One possible explanation for this phenomenon is how easy it is to learn new languages. We already established how computers can learn new programming languages just by installing software, but for humans it isn’t that difficult either. If I count, I would say I know about 8 programming languages, while I only speak 3 human languages. I have been studying a new human language for more than a year, and I’m barely getting started. But I can learn a new programming language quite thoroughly in less than a month. Learning a new programming language is often easier than people think.&lt;/p&gt;
&lt;p&gt;Another possible explanation is how easy it is to create a new programming language. There is even a category of programming languages that are literally created without purpose, called esoteric programming languages. One I find particularly amusing is &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://esolangs.org/wiki/Taxi&quot;&gt;Taxi&lt;/a&gt;; a programming language that consists on a virtual taxi moving “data passengers” from one place to another in order to execute operations.&lt;/p&gt;
&lt;h2 id=&quot;languages-usage&quot;&gt;&lt;a href=&quot;#languages-usage&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Languages usage&lt;/h2&gt;
&lt;p&gt;Tying into this we can talk about how they are used. When choosing a programming language, there is a saying of choosing “the right tool for the job”. This tries to convey that programming languages are not better nor worse, but more appropriate depending on the task at hand. But that statement is only true in theory. In practice, there are other reasons why someone would choose one language over another. I would argue the strongest arguments for picking a language to use are the languages you already know and how many people are using it. Again, we find the same pattern for human languages, and it’s more extreme given the complexity to learn a new language. It’s obvious that a person will prefer to work with others speaking the same language, or learn one that many others speak.&lt;/p&gt;
&lt;p&gt;This becomes crystal clear when looking at the current trends of programming languages.&lt;/p&gt;
&lt;h2 id=&quot;lets-talk-about-the-king-javascript&quot;&gt;&lt;a href=&quot;#lets-talk-about-the-king-javascript&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Let’s talk about the king: Javascript&lt;/h2&gt;
&lt;p&gt;Javascript was originally created for the web, and its main purpose was to make websites (the front-end) more dynamic. But fast-forward to today, and people is writing software using Javascript everywhere: Front-end, Backend (Node.js), Mobile (Ionic), Desktop (Electron), etc. And I have something to confess: I used to hate Javascript.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/blog/JavascriptHate.jpg&quot; alt=&quot;Javascript Hate&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align:center&quot;&gt;&lt;i&gt;One of the &lt;a href=&quot;https://www.slideshare.net/NoelDeMartinFernande/awesome-tools-2017&quot; target=&quot;_blank&quot;&gt;slides&lt;/a&gt; in a talk I gave in 2017.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;I’m probably not the only one who did. In university, I learned programming using Java and C++; and going to Javascript after that was not a nice experience (specially back in 2011). Fortunately, things are looking much better today.&lt;/p&gt;
&lt;p&gt;But the reason for this to happen is not that Javascript was a great language at the beginning. This happened because it is the most accessible language. Everyone has everything they need to learn and run Javascript code: a browser. The popularity of Javascript is tied in no small measure to the growth of the Web. And the open source movement has made it even more accessible, given that it is the most used language in GitHub repositories.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a href=&quot;#conclusion&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;After this, I’m sure you see programming in a different light, regardless of your previous background with it. At first glance it may seem stiff and boring, but it can be one of the most creative activities that you will find. I certainly think that, and it plays a big part on why I love programming so much. The same program can be implemented in a thousand different ways, and choosing one is part of the craft. This is something Linus Torvalds refers to as &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://youtu.be/o8NPllzkFhE?t=14m20s&quot;&gt;having good taste&lt;/a&gt;. And let me finish with something you may not realize: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://duckduckgo.com/?q=naming+things+in+programming&quot;&gt;naming things&lt;/a&gt; is the most difficult thing programmers have to do. Let that sink in.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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-22T15:07:59+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;I have always seen myself as a very rational and logical person. I have no problems acknowledging my ignorance when due, but if I have an opinion it’s usually a strong one. However, I have lately been looking at opinions and conversations in a different way.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/let-s-agree-to-disagree"
            >
                &lt;p&gt;I have always seen myself as a very rational and logical person. I have no problems &lt;a href=&quot;https://noeldemartin.com/posts/the-power-of-ignorance&quot;&gt;acknowledging my ignorance&lt;/a&gt; when due, but if I have an opinion it’s usually a strong one. However, I have lately been looking at opinions and conversations in a different way.&lt;/p&gt;
&lt;h2 id=&quot;conversations-using-logic&quot;&gt;&lt;a href=&quot;#conversations-using-logic&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Conversations using logic&lt;/h2&gt;
&lt;p&gt;First let me start explaining how I used to approach conversations about opposing opinions. Logical thinking fascinates me, and it’s something I try to base all my reasoning upon. That’s why in many of my conversations I end up saying “you’re not being logical”. I don’t mean to dismiss anyone’s arguments or call them stupid. I mean, literally, that they are not being logical. Logic is not something subjective, it has a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Logic#Logical_form&quot;&gt;formal definition&lt;/a&gt; and it’s guided by two simple concepts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Axiom&quot;&gt;Axioms&lt;/a&gt;:&lt;/strong&gt; Statements taken to be true.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Rule_of_inference&quot;&gt;Rules of inference&lt;/a&gt;:&lt;/strong&gt; Rules indicating how to correctly combine axioms to create new ones.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Therefore, a conversation using logic can be reduced to contrasting axioms upon where an opinion is formed. When there is a disagreement, it means somewhere along the train of thought there is an axiom both parties don’t agree with. But once that happens, that axiom can be broken down further into more axioms, and this process keeps repeating.&lt;/p&gt;
&lt;p&gt;This can be modeled as a statements &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Tree_%28graph_theory%29&quot;&gt;Tree&lt;/a&gt;. Each node represents a statement, and their children are connected by rules of inference. A conversation driven by logic would consist in navigating the tree in a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Tree_traversal#Pre-order&quot;&gt;pre-order traversal&lt;/a&gt;. When both parties agree on a node, it’s not visited further and taken as valid.&lt;/p&gt;
&lt;p&gt;Since this is a bit too abstract, let me illustrate with an example. Here’s a conversation between person A and person B both in text and in tree form:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; Cats are better than dogs.&lt;br /&gt;
&lt;strong&gt;B:&lt;/strong&gt; What? That&#039;s not true!&lt;br /&gt;
&lt;strong&gt;A:&lt;/strong&gt; Yes, because cats are more self-sufficient and smarter.&lt;br /&gt;
&lt;strong&gt;B:&lt;/strong&gt; They are more self-sufficient, but not smarter.&lt;br /&gt;
&lt;strong&gt;A:&lt;/strong&gt; They are, because they learn faster and cannot be taught so easily.&lt;br /&gt;
&lt;strong&gt;B:&lt;/strong&gt; They may learn faster, but you can definitely train your cat.&lt;br /&gt;
...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/img/blog/CatsVsDogs.png&quot; alt=&quot;Conversation tree&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I’m not saying that I like cats more than dogs, maybe I’ll leave my opinion on that for a different post.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;conversations-with-human-beings&quot;&gt;&lt;a href=&quot;#conversations-with-human-beings&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Conversations with human beings&lt;/h2&gt;
&lt;p&gt;What I just explained is obviously an idyllic approach. In reality, when I had a conversation, one of the following situations would arise:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Situation 1:&lt;/strong&gt; A point is reached were one party (or both) agree that some axiom is not sound. After that, the breakdown of axioms is backtracked and opinions are readjusted. Both parties now agree 🎉.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Situation 2:&lt;/strong&gt; The breakdown of axioms goes on and on, and a dead end is reached. The conversation becomes too abstract for the topic that started it. This is similar to how &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Wikipedia:Getting_to_Philosophy&quot;&gt;most pages in wikipedia lead to Philosophy&lt;/a&gt;. I have often unwillingly moved the conversation into “how do you know I exist and I’m not a product of your imagination?” territory.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Situation 3:&lt;/strong&gt; One party does not apply rules of inference correctly. And that’s when I say “you’re not being logical” and the conversation starts deteriorating.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After all, how can an opinion be valid if it can’t be argumented properly? Most of the time, what happened is that statements were argumented with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/List_of_fallacies&quot;&gt;fallacies&lt;/a&gt; instead of proper rules of inference. And for me that was the end of it: I was right, they were wrong.&lt;/p&gt;
&lt;p&gt;But reality is not that simple. One clear example is experience; if a statement is argumented with experience, that’s technically a fallacy, because the fact that something happened in one instance does not justify generalizing. But in human terms, it’s undeniable that experience can be a valuable argument. And it’s not only that, there’s also efficiency. If a conversation is approached like that, it can be dragged for too long. That’s ok if you like to ramble, but in practical scenarios that’s not the most efficient use of your time.&lt;/p&gt;
&lt;p&gt;If you read up to this point, you may be thinking that this structured view of conversations cannot be used by humans and it’s worthless. But there is a middle ground. Other than agreeing on a statement, there is a different way to continue: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Heuristic&quot;&gt;Heuristics&lt;/a&gt;. That is, to let a statement slide even if it’s not 100% valid.&lt;/p&gt;
&lt;p&gt;We already do this naturally, or conversations would never end, but there is one heuristic in particular I want to highlight: accepting disagreement.&lt;/p&gt;
&lt;h2 id=&quot;why-its-fine-to-disagree&quot;&gt;&lt;a href=&quot;#why-its-fine-to-disagree&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Why it’s fine to disagree&lt;/h2&gt;
&lt;p&gt;Let’s face it, nobody is perfect. You can see how I used to think before, but &lt;em&gt;really&lt;/em&gt; I wasn’t that logical either. If I were, my opinions would never change, and I’ve certainly changed my opinion in multiple occasions. So the first thing to realize is that there is no absolute opinion, not even yours. If you could talk with yourself a year in the future, you would probably disagree on multiple things. Heck, even talking with yourself a week from now. And that doesn’t mean that you are more right or more wrong, it means that you’ve changed and that’s part of human nature, so let’s embrace it.&lt;/p&gt;
&lt;p&gt;There is also what I mentioned about efficiency. I have started treating opinions differently. I never actually thought that I was always right, it’s just that I thought having two opposing opinions meant that one was wrong and one was right. More often than not, both opinions have part of truth so in the end it’s not a question of which one is 100% right, but rather how true is each one. And maybe it’s 50/50. And maybe that changes everyday. At the end, what this means is that sometimes it’s ok to disagree on something and accept that as part of the conversation.&lt;/p&gt;
&lt;p&gt;Since I started thinking that, I have to say that I’ve learned more than ever. In fact, I’ll go even further, I’ll say that opposing opinions are necessary. If you are not exposed to different opinions and take them seriously, you risk staying inside of your own small opinion bubble. And I can assure you, regardless of how smart you are or how much you know of a specific topic, different opinions are the secret to growing and learning. It’s now easier for me to accept a different opinion, and contrary to making my opinions less powerful they are enriched by this. As one misquote I find very useful says: “The real voyage of discovery consists not in seeking new lands but in seeing with new eyes”. Another way of interpreting this is thinking about Food for Thought. If I don’t agree with something but it makes me reconsider my assumptions, that’s great. Just be sure to separate actual food for thought from time wasting.&lt;/p&gt;
&lt;p&gt;Something I am contemplating as of late is how many of my opinions are really mine. It may seem stupid to ask this for someone who said “I usually have strong opinions” at the beginning. But it really is something worth thinking about. How do you know your opinions aren’t just a mix of what you read, what you see, what you listen to every day? Your environment affects you more than you think, that’s why cultural and environmental differences explain how some similar people have radically different opinions. The more opinions you&#039;re open to, the broader your bubble will be and you&#039;ll be more &lt;em&gt;you&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&quot;some-parting-thoughts&quot;&gt;&lt;a href=&quot;#some-parting-thoughts&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Some parting thoughts&lt;/h2&gt;
&lt;p&gt;At the end of the day, thinking about the statements-tree model in a real conversation is really interesting, because I’m sure an analysis of how the tree is traversed would look like chaos. The way we drive conversations is more art than logic, even for the most logical individuals. And being able to do that is remarkable, that’s why I think machines still have a long way to go to replace humans.&lt;/p&gt;
&lt;p&gt;Now don’t go to the other end of the spectrum and be contempt by disagreeing on everything and not using logic anywhere. There isn’t a singular mindframe that’s perfect for everyone, but I’m sure thinking about this and contemplating both extremes will help you be more self-aware and become a better learner.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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">
                &lt;p&gt;I have always been a fan of planning everything. Over the years I&#039;ve come to create a methodology which I call “Rigid-Flexible Planning”. More than a methodology, it&#039;s a philosophy with guidelines. So please, take this post as food for thought more than strict rules.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/rigid-flexible-planning"
            >
                &lt;p&gt;I have always been a fan of planning everything. Over the years I&#039;ve come to create a methodology which I call “Rigid-Flexible Planning”. More than a methodology, it&#039;s a philosophy with guidelines. So please, take this post as food for thought more than strict rules.&lt;/p&gt;
&lt;h2 id=&quot;why-plan-everything&quot;&gt;&lt;a href=&quot;#why-plan-everything&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Why plan everything?&lt;/h2&gt;
&lt;p&gt;When you read “plan everything” you might think I am crazy and my life is dull and predictable. You&#039;d be wrong (maybe not so much about the crazy part). When I say that I plan everything, I mean that I try to be aware of where all my work is headed, which is the goal I am aiming for and which is the estimated effort. Just because the alternative is ignorance.&lt;/p&gt;
&lt;p&gt;A plan may fail, it may be delayed, it may be underestimated, etc. But any of those is better than no plan at all, because all of those scenarios provide awareness, lack of planning does not.&lt;/p&gt;
&lt;p&gt;And of course, we are humans. So we need mental bandwidth and freedom to perform correctly. Here, the rigurosity or looseness of your planning comes into place. Don&#039;t let the plan get in your way, let it be your tool.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When you fail to plan, you plan to fail&lt;/p&gt;
&lt;p&gt;― &lt;cite&gt;Benjamin Franklin&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So now, which are the basic concepts for this? In my opinion, a planning should have two core properties: Rigidity and Flexibility (You think these are contradictory? Keep reading).&lt;/p&gt;
&lt;h2 id=&quot;rigidity&quot;&gt;&lt;a href=&quot;#rigidity&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Rigidity&lt;/h2&gt;
&lt;p&gt;The rigidity is essential in anything that must give us trusted and solid information. For something to be congruent, rules have to be applied. And this is what I mean, all the rigidity to always know with certainty what you have in your hands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Every task must have time estimation.&lt;/strong&gt; If you think you don&#039;t have an estimation for a task, you will at least have a rough approximation, so use that (I&#039;m sure you know if it&#039;s in the order of hours, days or even months). Be aware that sub-tasks can span from working on a task.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Every task must have a priority.&lt;/strong&gt; This can be represented in different formats: priority order, priority weights, chronological precedence, etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Every task must have a “before” and an “after” task.&lt;/strong&gt; This is important, if you think some task can&#039;t have it, let the before task be the “beginning of the project” and the after task be the “end of the project”.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Every task must have a status (ongoing, frozen, waiting, etc.).&lt;/strong&gt; This can be a little tedious, but it depends how the statuses are defined. If ongoing means “working on it right now” it&#039;ll be tedious indeed, but if ongoing means “started but not finished”, that&#039;s a different story.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Every task must be &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/SMART_criteria&quot;&gt;SMART&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;flexibility&quot;&gt;&lt;a href=&quot;#flexibility&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Flexibility&lt;/h2&gt;
&lt;p&gt;The flexibility is important for not letting the planning get in our way. If we want our planning to really help us, we need to be aware that life gets in the way, and plans are ever-changing.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Anything must be able to be modified at any time.&lt;/strong&gt; A problem that may arise from this is how changing something affects other parts of the planning. That should be had into account in order to maintain congruency.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Planning will go wrong, so it is important to be aware of this and have a system to introduce unexpected events into your planning. A counter measure to modifying existing tasks may be adding sub-tasks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;The system used for planning must be easy to use and natural.&lt;/strong&gt; If you find yourself in doubt of how to reflect something in your planning, that means the tool is getting in the way and the rules you&#039;ve set in place are too strict.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;It must be easy to pick the necessary information at any moment.&lt;/strong&gt; This is important in order to focus on the appropriate thought process. There are lots of representations of a plan (Gantt diagram, list of TODOs, etc), but it is important not to be overwhelmed with information and keep in mind only what&#039;s necessary at the moment.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-challenge&quot;&gt;&lt;a href=&quot;#the-challenge&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The challenge&lt;/h2&gt;
&lt;p&gt;The challenge then given this ideas, is to create a workflow which allows for this properties and doesn&#039;t make us crazy about it. Complex yet simple.&lt;/p&gt;
&lt;p&gt;How would you do it?&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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-11T11:42:39+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;Value is an interesting concept. Everyone talks about it, and everyone says it&#039;s the make it or break it for a business. But... how do you find it?&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/in-the-search-of-value"
            >
                &lt;p&gt;Value is an interesting concept. Everyone talks about it, and everyone says it&#039;s the make it or break it for a business. But... how do you find it?&lt;/p&gt;
&lt;h2 id=&quot;the-secret-ingredients&quot;&gt;&lt;a href=&quot;#the-secret-ingredients&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The secret ingredients&lt;/h2&gt;
&lt;p&gt;So, according to &lt;a href=&quot;/posts/my-appsworld-2014-digest&quot;&gt;previous experiences&lt;/a&gt;, there are two secret ingredients for a project to be successful: Value and Discovery.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Discovery&lt;/strong&gt; is easy to understand. You should leverage your marketing budget, your existing connections and your creativity in order to make as big an impact as possible. Not only that, but the product should lend itself to organic growth, and if possible, have built-in sharing and spreading mechanisms. Please note that I am saying it&#039;s easy to &lt;em&gt;understand&lt;/em&gt;, that doesn&#039;t mean it&#039;s easy to achieve. In my case, the Google Play Appstore, doesn&#039;t seem to be a good platform for discovery:&lt;/p&gt;
&lt;blockquote class=&quot;twitter-tweet tw-align-center&quot; lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;I wonder how the heck does appstore search work when searching for &quot;Quick Pick&quot; you get Booking as a second result... &lt;a href=&quot;http://t.co/wE66kzI4xi&quot;&gt;pic.twitter.com/wE66kzI4xi&lt;/a&gt;&lt;/p&gt;— Noel De Martín (@NoelDeMartin) &lt;a href=&quot;https://twitter.com/NoelDeMartin/status/577860741715390464&quot;&gt;marzo 17, 2015&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;p&gt;&lt;span class=&quot;description&quot;&gt;Basically, almost no users will find your application using Appstore search unless you already have a good user base. So you have to get them elsewhere.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Value&lt;/strong&gt;, on the other hand, is more tricky. What is value? I like &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Value_%28marketing%29&quot;&gt;wikipedia&#039;s description of the concept&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Value is the difference between a prospective customer&#039;s evaluation of the benefits and costs of one product when compared with others&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;But it still doesn&#039;t fully explain it. Value is the single most important property of any product. It is what makes it special and the main reason why users should want it. Put simply, it is what makes a business work.&lt;/p&gt;
&lt;h2 id=&quot;in-the-search-of-value&quot;&gt;&lt;a href=&quot;#in-the-search-of-value&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;In the search of value&lt;/h2&gt;
&lt;p&gt;Personally I have always been aware of this concept of Value. But whenever I really think about it, it&#039;s so difficult to achieve.&lt;/p&gt;
&lt;p&gt;Here&#039;s the situation: you hear about the wonders (and hustles) of entrepreneurship, you believe in that and you believe in yourself, so you decide to finally go for it, and build your thing. You know it won&#039;t work soon, you know it will take months or years (or maybe never). But the idea behind that, what keeps you going, is following your believes and working in something to make the world better. If you work hard, it will eventually pay off.&lt;/p&gt;
&lt;p&gt;But, once you&#039;re sold on the idea and you decide to take the step, reality hits, and you ask yourself “&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/NoelDeMartin/status/593349254388776960&quot;&gt;What should I build?&lt;/a&gt;”. The answer is something that solves a problem, something that will really help its users, … something of value. And there we go again, what is value?&lt;/p&gt;
&lt;p&gt;So far I haven&#039;t really faced this important issue, because my first projects with &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.lincolnschilli.com/&quot;&gt;Lincoln&#039;s Chilli&lt;/a&gt; have been games (&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=com.lincolnschilli.quickpick&quot;&gt;Quick Pick&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://play.google.com/store/apps/details?id=com.lincolnschilli.brainduels&quot;&gt;Brain Duels&lt;/a&gt;), and the value in games is relatively simple and straightforward: having fun, prevent boredom, socialize, etc. Now I will face this head on, and really try to find something I am proud of building and something which is solving a problem.&lt;/p&gt;
&lt;p&gt;And that&#039;s what I&#039;d like to present in this post, my way of searching for value: The value pipeline.&lt;/p&gt;
&lt;h2 id=&quot;the-value-pipeline&quot;&gt;&lt;a href=&quot;#the-value-pipeline&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The value pipeline&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/img/blog/ValuePipeline.jpg&quot; alt=&quot;value pipeline&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The value pipeline is a process I will follow in order to find something worth building, something of value, and I hope it can help someone who is in a similar situation. It is designed to maximize the real value created without wasting too many resources and going to deep in any particular idea. I&#039;ve divided this process in 4 stages. Up until now my process had been jumping directly from stage 1 to stage 4 (Idea → MVP). So let&#039;s change that.&lt;/p&gt;
&lt;h3 id=&quot;stage-1-value-candidates&quot;&gt;&lt;a href=&quot;#stage-1-value-candidates&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Stage 1: Value Candidates&lt;/h3&gt;
&lt;p&gt;This first stage is the starting point in the search for value. There are different ways of looking for something that could potentially be valuable. And it doesn&#039;t only include brainstorming and looking for ideas. It also includes investigation and research. The final output in this stage (which will be the input for the next stage) is a ton of “possible projects”, or put more bluntly, ideas. I call these &lt;strong&gt;Value Candidates&lt;/strong&gt;. They should be generated using the following techniques:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Brainstorming:&lt;/strong&gt; Doing brainstorms at regular intervals. Not only when “it&#039;s time to start something new”, but keeping a habit of brainstorming every two weeks or once a month. Too many brainstorms are bad because you start to repeat yourself, but too few and some amazing ideas &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Platonic_epistemology&quot;&gt;will be kept burried&lt;/a&gt;. For this particular scenario I recommend to do themed brainstorms, trying to find a different source of inspiration for each session. Some that worked for me to start off are &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://chrisguillebeau.com/convergence/&quot;&gt;Chris Guillebeau&#039;s convergence&lt;/a&gt; or &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.americanexpress.com/us/small-business/openforum/articles/how-to-find-your-passion-and-turn-it-into-a-profitable-business/&quot;&gt;thinking what you&#039;re committed to&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ideas Backlog:&lt;/strong&gt; You should already have an ideas backlog. If you don&#039;t have it, start right now. An ideas backlog is something very simple. Every time you have an idea for a product, write it in your ideas backlog and forget about it. From time to time, review this backlog and discard whatever you think is not that good or not applicable anymore. Don&#039;t worry if this backlog grows big (I have 85 ideas right now!), that&#039;s normal and doesn&#039;t harm because you&#039;ll review this very sparingly.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Problem Research:&lt;/strong&gt; A good way of finding problems to solve... is to look for problems! There are many places where you can find people trying to have problems solved: Google, Yahoo Answers, etc. Another way is not to solve problems, but to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.fastcompany.com/1838924/how-serial-innovators-find-best-problems-solve&quot;&gt;reframe existing problems&lt;/a&gt; from a different point of view. And finally, ask people! Ask you friends and family what problems they have which technology could help them solve, you may be surprised.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;stage-2-value-validation&quot;&gt;&lt;a href=&quot;#stage-2-value-validation&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Stage 2: Value Validation&lt;/h3&gt;
&lt;p&gt;From the previous stage, we should now have a ton of ideas and problems to solve. Now, this next stage is very important (if not the most important). These should be validated as real problems, and also, our solution should be validated to really solve this problems. Each value candidate should pass at least one of the following filters (if not all of them!).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Experiments:&lt;/strong&gt; I guess the more traditional term for this is a prototype. But I like to call them experiments for two reasons. First, because that&#039;s the name of the section on my website where I will place them (ha!). And second, because they should be completely and 100% experimental. Some times, prototypes can be confused with MVPs, but at this stage that shouldn&#039;t even matter. The only goal here is to test if a problem is solved properly as soon as possible (and wasting as little resources as possible), without thinking about viability.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Hackathons:&lt;/strong&gt; I think hackathons are a great way of testing an idea. Of course, you should go to a hackathon in order to win, but if you also want to test an idea, this way you can win even if you lose, because you would have tested your idea. Hackathons are also great to give you a good focus and work a lot in an idea in a relatively small amount of time (and who knows, you may even start recruiting for the team to build the real thing!).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Existing products:&lt;/strong&gt; This is so obvious, but yet so many people forget to do it. Search for existing solutions to what you&#039;re trying to solve. And this doesn&#039;t mean a quick search in Google. Really, spend some time trying to solve the problem with existing tools (maybe some products are not advertised to solve a problem but they do it quite well; don&#039;t underestimate spreadsheets!).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Feedback:&lt;/strong&gt; Also so obvious, but people wait too much for this. Start asking for feedback as soon as possible, don&#039;t wait until you have already wasted resources. One of the best ways to validate an idea, is to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://blog.bufferapp.com/idea-to-paying-customers-in-7-weeks-how-we-did-it&quot;&gt;get real customers before you build anything&lt;/a&gt;. If someone is interested in your product, that&#039;s the best feedback you can get. As well as simply asking for feedback, try to use some techniques to make sure the idea is explained correctly, like story telling, or have them explain what they understand of the problem, not the solution. And finally, the good old technique to surveying some people.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;stage-3-value-definition&quot;&gt;&lt;a href=&quot;#stage-3-value-definition&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Stage 3: Value Definition&lt;/h3&gt;
&lt;p&gt;If some value candidates have gotten to this place, that should mean they are promising enough to start thinking about them as a real product. Here&#039;s when we should really start to think where most people start, and not sooner. Make a business case (product lifecycle, customer acquisition plan, monetization, etc.) and define what the real product (not prototype) should be. Start looking for the resources you will need, like the team and costs that will need to be covered, and there you go, start a new project!&lt;/p&gt;
&lt;h3 id=&quot;stage-4-mvp&quot;&gt;&lt;a href=&quot;#stage-4-mvp&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Stage 4: MVP&lt;/h3&gt;
&lt;p&gt;Here&#039;s when the “work hard and in months or years it will pay off” begins. Even if something is really valuable, it doesn&#039;t mean it will succeed from the start. There are thousand of reasons why it may not work: you lack discovery, the market is not ready, the MVP doesn&#039;t reflect the value correctly, etc. But at least you know you are finally working in something of &lt;strong&gt;value&lt;/strong&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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>
                2021-07-02T06:08:14+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;Do you think you are capable of doing something perfectly in your first attempt?&lt;/p&gt;
&lt;p&gt;Do you think anyone does?&lt;/p&gt;
&lt;p&gt;Do you think perfection exists?&lt;/p&gt;
&lt;p&gt;My answer to all of those questions is: NO.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/everything-is-a-draft"
            >
                &lt;p&gt;Do you think you are capable of doing something perfectly in your first attempt?&lt;/p&gt;
&lt;p&gt;Do you think anyone does?&lt;/p&gt;
&lt;p&gt;Do you think perfection exists?&lt;/p&gt;
&lt;p&gt;My answer to all of those questions is: NO.&lt;/p&gt;
&lt;h2 id=&quot;my-view-on-perfection&quot;&gt;&lt;a href=&quot;#my-view-on-perfection&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;My View on Perfection&lt;/h2&gt;
&lt;p&gt;Before beginning, let me tell you that yes, of course this is about your work. I am not referring to perfection in the overall sense of the word. I am referring to having something 100% finished with no room for improvement. Be it a piece of code, a graphic design, a business model or anything in between.&lt;/p&gt;
&lt;p&gt;When I start something from scratch, if it is some area where I have a lot of experience and I am used to (for example, programming), I always have the feeling that the solution is already in my head. I only need to spend the time to actually do it. But many times, I find there is something I was assuming which is not true. Or maybe I believe something is “finished”, but later I take a second look and something obvious is wrong or could be improved. It is easy to think of something as perfect or finished, but it always turns out not to be. That&#039;s why I don&#039;t think perfection exists. Even in big projects, with thousands of hours spent in development, something (if not everything) can be improved.&lt;/p&gt;
&lt;p&gt;That can happen to problems whose optimality is measurable (how fast an algorithm is, how many users clicked on an ad), but most of the time the problem with perfection is that it is something subjective. Usability, context and personal experience come into place.&lt;/p&gt;
&lt;p&gt;And that is why I think everything is a draft.&lt;/p&gt;
&lt;h2 id=&quot;why-it-matters&quot;&gt;&lt;a href=&quot;#why-it-matters&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Why it matters&lt;/h2&gt;
&lt;p&gt;Ok, nothing is perfect or finished, so what? I would like to use this reasoning to reflect on some behavior I have observed in many individuals (myself included). And by doing that I hope to improve it.&lt;/p&gt;
&lt;h3 id=&quot;fear-of-deleting&quot;&gt;&lt;a href=&quot;#fear-of-deleting&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Fear of deleting&lt;/h3&gt;
&lt;p&gt;There is generally an aversion against deleting work done. I guess the main reason is feeling that the time spent doing the work has been wasted. To be frank, sometimes that is the case. But most of the time something has been learned in the process and it may be worth it to delete everything and redo it with the new knowledge and experience.&lt;/p&gt;
&lt;p&gt;Some quotes related to this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bruce Lee&lt;/strong&gt; – “One does not accumulate but eliminate. It is not daily increase, but daily decrease. The height of cultivation always runs to simplicity.”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=9LfmrkyP81M#t=3515&quot;&gt;&lt;strong&gt;David Heinemeier Hansson (Creator of Ruby on Rails)&lt;/strong&gt;&lt;/a&gt; – “The delete key, my favorite key.”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://97-things-every-x-should-know.gitbooks.io/97-things-every-programmer-should-know/content/en/thing_75/&quot;&gt;&lt;strong&gt;Paul W. Homer in 97 Things Every Programmer Should Know&lt;/strong&gt;&lt;/a&gt; – &amp;quot;More time gets wasted in trying to salvage bad work than it should.&amp;quot;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.williamzinsserwriter.com/&quot;&gt;&lt;strong&gt;William Zinsser in On Writing Well&lt;/strong&gt;&lt;/a&gt; - &amp;quot;I especially like to cut: to press the DELETE key and see an unnecessary word or phrase or sentence vanish into the electricity.&amp;quot;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;nonacceptance-of-critiques&quot;&gt;&lt;a href=&quot;#nonacceptance-of-critiques&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Nonacceptance of critiques&lt;/h3&gt;
&lt;p&gt;This point is more widely accepted: You should accept critique. Still, there is so many people who don&#039;t take feedback well. First, I think I made my point clear when I said that nobody does something perfectly in their first attempt (or ever). But sometimes, people think because they are experienced, opinion from less experienced individuals is not worth listening to. &lt;a href=&quot;https://noeldemartin.com/blog/the-curse-of-being-a-developer&quot;&gt;There is something dangerous about experience&lt;/a&gt;, we take shortcuts instead of using reasoning and common sense, because &lt;a href=&quot;https://noeldemartin.com/blog/let-s-agree-to-disagree&quot;&gt;we use layers of assumptions&lt;/a&gt;. Most of the time that is good because you don&#039;t have to reason everything you do, but that also means you&#039;re less thorough and it can be easy to miss something.&lt;/p&gt;
&lt;p&gt;Following that, that&#039;s why I give feedback and expect to be criticized on my work. Of course, constructive criticism. I specially like to present a problem I&#039;m working on in a simplified version to someone with no experience on the topic, because the new point of view can be something completely different. Sometimes, it can result in something that makes no sense, but at least give it a thought instead of rejecting it (see &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Ad_hominem&quot;&gt;Ad Hominem Fallacy&lt;/a&gt;).&lt;/p&gt;
&lt;h3 id=&quot;simplicity-is-not-king&quot;&gt;&lt;a href=&quot;#simplicity-is-not-king&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Simplicity is not King&lt;/h3&gt;
&lt;p&gt;There is this saying that Simplicity is King, as well as &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/KISS_principle&quot;&gt;the KISS principle&lt;/a&gt;. And I actually agree for the most part. But don&#039;t be fooled into thinking that if something is really really simple, it is perfect. “If it cannot be simplified, it cannot be improved” is wrong. Even if a wheel is the embodiment of simplicity, maybe you&#039;d been better of using a lever instead.&lt;/p&gt;
&lt;p&gt;Simplicity is King always it goes hand in hand with context.&lt;/p&gt;
&lt;h3 id=&quot;mark-something-as-finished&quot;&gt;&lt;a href=&quot;#mark-something-as-finished&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Mark something as Finished&lt;/h3&gt;
&lt;p&gt;For practical purposes, we need to mark some things as finished to move on to new tasks. But be aware of that. We live in a Draft, every system, product or service you use is a draft. And that&#039;s why &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://duckduckgo.com/?q=everything+can+be+hacked&quot;&gt;everything can be hacked&lt;/a&gt; some way or another. Have you ever heard this expression? “90% of the projects are 90% finished”. It is spot on.&lt;/p&gt;
&lt;p&gt;Also, the idea that if we had infinite time to work on something it would eventualy be finished is completely wrong. It is similar to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://platonicrealms.com/encyclopedia/Zenos-Paradox-of-the-Tortoise-and-Achilles/&quot;&gt;Zeno&#039;s Paradox of the Tortoise and Achiles&lt;/a&gt;; every step you take will take you half of the remaining closer to the goal, but you&#039;ll never reach it.&lt;/p&gt;
&lt;h2 id=&quot;practical-applications&quot;&gt;&lt;a href=&quot;#practical-applications&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Practical Applications&lt;/h2&gt;
&lt;p&gt;All of that was food for thought, so I would like to finish this post with some practical applications of these ideas.&lt;/p&gt;
&lt;p&gt;First, I think this is the root explanation of why &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Copy_and_paste_programming&quot;&gt;Copy &amp;amp; Paste Programming&lt;/a&gt; is so wrong. The whole point of doing something is to learn from it, so if you&#039;re going to copy/paste a piece of code, you better understand exactly what you are adding to your project.&lt;/p&gt;
&lt;p&gt;From the fact that everything you do is a draft, it can be infered that the probability of doing your best at first is not 100%. That&#039;s why it is important, at the start, to think different solutions to a problem. Or said differently, it is important to make different drafts before choosing which one to go on with. One technique that leverages this concept is Brainstorming, and I would recommend to use it quite often.&lt;/p&gt;
&lt;p&gt;Every time you want to improve something, maybe you should start by deleting unnecessary parts. If the project is old, it&#039;s likely that some things that were important at the time are not relevant anymore. It is then an improvement to remove the unessential. And it helps you to understand the problem better if you have clarity on what is there. For example, every time I start something from a template or boilerplate, my first step is to check everything that has been included and delete whatever I think is not necessary for my project.&lt;/p&gt;
&lt;p&gt;And of course, this post is a draft. So let me know if you think that something could be improved!&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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">
                &lt;p&gt;Some time has passed since I started working on my own. One of the ideas I value the most is the power of feedback, experience and different points of view.&lt;/p&gt;
&lt;p&gt;That&#039;s why I am starting a search for a Mentor or starting a Mastermind Group as one of my 2015 New Year Resolutions.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/call-for-mentor-mastermind"
            >
                &lt;p&gt;Some time has passed since &lt;a href=&quot;/posts/starting-something-new&quot;&gt;I started working on my own&lt;/a&gt;. One of the ideas I value the most is the power of feedback, experience and different points of view.&lt;/p&gt;
&lt;p&gt;That&#039;s why I am starting a search for a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Mentorship&quot;&gt;Mentor&lt;/a&gt; or starting a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://lifehacker.com/go-beyond-simple-networking-and-organize-your-own-mast-824329576&quot;&gt;Mastermind Group&lt;/a&gt; as one of my 2015 New Year Resolutions.&lt;/p&gt;
&lt;h2 id=&quot;presenting-myself&quot;&gt;&lt;a href=&quot;#presenting-myself&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Presenting myself&lt;/h2&gt;
&lt;p&gt;About me, I introduced some of myself in the &lt;a href=&quot;/posts/starting-something-new&quot;&gt;first post&lt;/a&gt; of this blog. If I had to say which is my main occupation, it would without a doubt be a software developer, which is what I have done all of my professional life. Most of my experience is based on Web development (backend &amp;amp; frontend) and Mobile development (Android). But I really think about myself as platform agnostic, with Artificial Intelligence as an area that passionates me but I haven&#039;t got into intensely. All this can be inspected further in my &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.linkedin.com/pub/noel-de-martin-fernandez/41/a7b/64&quot;&gt;LinkedIn profile&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Technical matters are well inside my comfort zone, but I also enjoy Design and Business topics. Although I have to say in practice I turn to focus too much on the product, that&#039;s one of my flaws. I read and follow experts in different roles in order to keep my vision broad. And I enjoy trading ideas and reflect upon subjects.&lt;/p&gt;
&lt;h2 id=&quot;what-am-i-looking-for&quot;&gt;&lt;a href=&quot;#what-am-i-looking-for&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;What am I looking for?&lt;/h2&gt;
&lt;p&gt;Now, why am I doing this? I have read multiple times about the benefits of having peers to whom I could explain my doubts and intentions in order to get feedback. I think now it would be a good time to start doing this in a more structured way. I am looking for either a Mentor or a Mastermind Group, because any of those fulfill my requirement of having some regular review of my goals and progress, and would bring a greatly appreciated external point of view to all this.&lt;/p&gt;
&lt;p&gt;The profile I am most interested in is certainly not technical. It can be, but where I would get more insight is definitely on the personal management and business areas.&lt;/p&gt;
&lt;p&gt;In case someone is reading this and wondering what a Mastermind Group is (I assume everybody knows what a Mentor is); as I understand it, a Mastermind is a group of like-minded individuals who have meetings at regular intervals in order to discuss some matters of interest, with the final goal of helping each other and grow together. The perfect scenario is having people with different backgrounds in order to have a significant pool of experience and knowledge to leverage. Of course, in case of a Mastermind I could fulfill a role of strong technical knowledge. A full description of what it is can be read in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://lifehacker.com/go-beyond-simple-networking-and-organize-your-own-mast-824329576&quot;&gt;this post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My intentions are to meet approximately twice a month (every two weeks). I always prefer to have interactions in person, but I would like to have feedback from someone with a different perspective to mine (and I am not sure this idea of mentorship/mastermind is practiced in Spain). So I am not against having peers from far away, we&#039;d use video chat and/or email.&lt;/p&gt;
&lt;p&gt;If you are interested or know anyone who could be, please let me know at &lt;a href=&quot;mailto:{{contact.email}}&quot;&gt;{{contact.email}}&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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">
                &lt;p&gt;I have something to confess, I am surprisingly ignorant in many topics of general knowledge. I don&#039;t know much about economics, literature, sports or world news. And I&#039;m not ashamed nor do I regret it. But before I explain why, let me tell you who&#039;s also ignorant this way: Sherlock Holmes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Dr. Watson:&lt;/strong&gt; His ignorance was as remarkable as his knowledge. Of contemporary literature, philosophy and politics he appeared to know next to nothing. […]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sherlock Holmes:&lt;/strong&gt; You see, I consider that a man&#039;s brain originally is like a little empty attic, and you have to stock it with such furniture as you choose. A fool takes in all the lumber of every sort that he comes across, so that the knowledge which might be useful to him gets crowded out, or at best is jumbled up with a lot of other things so that he has a difficulty in laying his hands upon it. Now the skillful workman is very careful indeed as to what he takes into his brain-attic. He will have nothing but the tools which may help him in doing his work, but of these he has a large assortment, and all in the most perfect order. It is a mistake to think that that little room has elastic walls and can distend to any extent. Depend upon it there comes a time when for every addition of knowledge you forget something that you knew before. It is of the highest importance, therefore, not to have useless facts elbowing out the useful ones.&lt;/p&gt;
&lt;p&gt;― &lt;cite&gt;Sir Arthur Conan Doyle, A Study in Scarlet&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/the-power-of-ignorance"
            >
                &lt;p&gt;I have something to confess, I am surprisingly ignorant in many topics of general knowledge. I don&#039;t know much about economics, literature, sports or world news. And I&#039;m not ashamed nor do I regret it. But before I explain why, let me tell you who&#039;s also ignorant this way: Sherlock Holmes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Dr. Watson:&lt;/strong&gt; His ignorance was as remarkable as his knowledge. Of contemporary literature, philosophy and politics he appeared to know next to nothing. […]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sherlock Holmes:&lt;/strong&gt; You see, I consider that a man&#039;s brain originally is like a little empty attic, and you have to stock it with such furniture as you choose. A fool takes in all the lumber of every sort that he comes across, so that the knowledge which might be useful to him gets crowded out, or at best is jumbled up with a lot of other things so that he has a difficulty in laying his hands upon it. Now the skillful workman is very careful indeed as to what he takes into his brain-attic. He will have nothing but the tools which may help him in doing his work, but of these he has a large assortment, and all in the most perfect order. It is a mistake to think that that little room has elastic walls and can distend to any extent. Depend upon it there comes a time when for every addition of knowledge you forget something that you knew before. It is of the highest importance, therefore, not to have useless facts elbowing out the useful ones.&lt;/p&gt;
&lt;p&gt;― &lt;cite&gt;Sir Arthur Conan Doyle, A Study in Scarlet&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;why&quot;&gt;&lt;a href=&quot;#why&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Why&lt;/h2&gt;
&lt;p&gt;I have to say I didn&#039;t start this on purpose, but rather I&#039;m naturally not interested in some things. I&#039;m sure the brain has a mechanism to forget things we don&#039;t find interesting, and that&#039;s why it&#039;s so difficult to study or learn something you dislike. You don&#039;t enjoy it and your brain is doing you a favor.&lt;/p&gt;
&lt;p&gt;But it goes beyond the natural absorption of the brain. There is a cultural tendency to see ignorance as something bad, I know many people will see the title of this post and think I&#039;m stupid. But it&#039;s important to see what I mean with this. I am talking about ignorance in something which is not relevant to oneself. If I couldn&#039;t locate Taiwan in a map three years ago, maybe it was because It didn&#039;t affect my life in the least. You can know about everything and you&#039;ll end up being a jack of all trades, but master of none. The point is that in this era, we have access to &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://archive.org/about/&quot;&gt;so much information&lt;/a&gt; that we get overwhelmed, and it&#039;s completely fine to be ignorant of a ton of stuff, and we should focus on whatever we&#039;re interested in.&lt;/p&gt;
&lt;p&gt;There is also another side to this. Besides the polluting gaining of information, there are some times when even good information should be stopped. There is this concept of someone working in their “flow”. You work best when you&#039;re in your flow. I would say most people&#039;s flow is obtained when not being bothered with distractions. And that&#039;s not only external distractions, internal distractions as well. If you want to be productive working, focus on one thing at a time, and batch all your information gaining activities (twitter, reading news, etc.).&lt;/p&gt;
&lt;p&gt;The power of ignorance is the power to have room left in your brain-attic.&lt;/p&gt;
&lt;h2 id=&quot;some-similar-concepts&quot;&gt;&lt;a href=&quot;#some-similar-concepts&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Some similar concepts&lt;/h2&gt;
&lt;p&gt;The fragment from A Study in Scarlet I quoted at the beginning is not the only reference which brought me to this realization, there are also some similar concepts which bring insight to this topic:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://en.wikiquote.org/wiki/Albert_Einstein&quot;&gt;&lt;strong&gt;Never memorize what you can look up in books&lt;/strong&gt;&lt;/a&gt;: Albert Einstein, turns out he didn&#039;t know the speed of sound. When asked how was that possible he replied: “[I do not] carry such information in my mind since it is readily available in books. ...The value of a college education is not the learning of many facts but the training of the mind to think.”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.youtube.com/watch?v=CHxhjDPKfbY&quot;&gt;&lt;strong&gt;Pulling your focus away&lt;/strong&gt;&lt;/a&gt;: David Allen, author of Getting Things Done, talks about the importance of writing things down and forgetting about them, so that they stop bothering you and pulling your focus away of the task at hand. Your brain is not a good place to store all your TODOs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.ted.com/talks/ken_robinson_says_schools_kill_creativity&quot;&gt;&lt;strong&gt;Education is Broken&lt;/strong&gt;&lt;/a&gt;: Ken Robinson, in the most popular TED talk of all time, explains why evaluating intelligence based on the knowledge of some pre-established topics is wrong.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://changethis.com/manifesto/34.04.LowInfo/pdf/34.04.LowInfo.pdf&quot;&gt;&lt;strong&gt;Low Information Diet&lt;/strong&gt;&lt;/a&gt;: Tim Ferris, author of the 4 hour work week, defends that selective ignorance and a low information diet is the way to stop the default mode of working for most people, which is an infinite interruption.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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">
                &lt;p&gt;With time, I&#039;ve come to observe there are three key components necessary for a healthy product to exist: Business, Design and Development. This post is by no means a deep revelation or anything new, but it is an analysis I would like to perform as an exercise to obtain some insights.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/the-three-pillars-of-product-success"
            >
                &lt;p&gt;With time, I&#039;ve come to observe there are three key components necessary for a healthy product to exist: Business, Design and Development. This post is by no means a deep revelation or anything new, but it is an analysis I would like to perform as an exercise to obtain some insights.&lt;/p&gt;
&lt;h2 id=&quot;the-three-pillars&quot;&gt;&lt;a href=&quot;#the-three-pillars&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;The three pillars&lt;/h2&gt;
&lt;p&gt;This so-called pillars are areas of action which can be taken towards everything regarding a product. Of course there is not a fine line separating the three of them, there is rather a gray boundary of uncertainty. But I&#039;ll try to explain how I see them and which matters concern each one.&lt;/p&gt;
&lt;p&gt;The first pillar to talk about is &lt;strong&gt;Business&lt;/strong&gt;. “Money” is probably what comes to mind when you read that word, but that&#039;s not the only important aspect to think about. In this context, Business is the reason to be of the product, what is called the vision, and how is it going to change the world. This is the most intangible of the three pillars, because it has arguably nothing to do with the product itself. It&#039;s important to always keep in line what is being done with what is trying to be achieved. Of course, money is necessary to do a lot of things, and that is why it is a core part of Business. So, basically, Business is everything related to the ultimate goal (vision), how to achieve it (resources) and keeping control of the progress (management).&lt;/p&gt;
&lt;p&gt;The second pillar is &lt;strong&gt;Design&lt;/strong&gt;. This includes graphic design, user experience and image. It is about the product seen from an outsider&#039;s point of view. Traditionally it is something ignored by developers, and it is often substituted with the bad practice of “prettifying”. Design is something that should be had into account from the start, and goes way beyond graphics or marketing. Some people even talk about design-led organizations.&lt;/p&gt;
&lt;p&gt;And finally, &lt;strong&gt;Development&lt;/strong&gt; is the third pillar, the actual building of the product. It has everything to do with the technology. It&#039;s the insights of the product, the inner workings and the gears. The importance of this area is in building a product in line with Design and Business. It&#039;s easy to drown into technicalities and lose focus, but the real challenge is to build the perfect infrastructure for a product to grow in the correct direction (under-engineering or &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Overengineering&quot;&gt;over-engineering&lt;/a&gt; are completely Development mistakes).&lt;/p&gt;
&lt;p&gt;To finalize the understanding of this pillars, if we had to do a simile with a human being, Business would be the soul, Development would be the body and Design would be the clothes.&lt;/p&gt;
&lt;h2 id=&quot;analysis-and-practical-applications&quot;&gt;&lt;a href=&quot;#analysis-and-practical-applications&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Analysis and practical applications&lt;/h2&gt;
&lt;p&gt;Now we understand what this three pillars refer to. Let&#039;s see why they are the key combination for a successful product.&lt;/p&gt;
&lt;p&gt;The Business provides the longevity, resources and reason to be of the project. Everything which is necessary for the project to be sustained, it represents the core and the foundation everything depends upon. The Design is in charge of making a product for the present, how to take an idea into reality and make a viable product. It means being in contact with clients and measuring the actual usage of the product. And finally the Development will make possible all the necessities Design and Business have in the most efficient, flexible way possible.&lt;/p&gt;
&lt;p&gt;With this explanation it is clear that none is more important than the others, because there cannot be a product without covering all this necessities. You may be thinking of a scenario where one product reached success totally ignoring one of this aspects: Viral applications like Flappy Birds come to life overseeing the Business; clone showcase HTML5 cross-platform apps driven by marketing ignore and even sub-contract Development; and Geeky applications like command-line games ignore Design. But by successful product I mean an organically created product, born from the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.entrepreneur.com/article/232683&quot;&gt;Entrepreneur Marathon&lt;/a&gt;, which can live for decades. Note that the kind of applications I just mentioned are no more than one hit wonders or temporal gold mines.&lt;/p&gt;
&lt;p&gt;With the understanding that all of these aspects are necessary, it&#039;s important to give attention to all of them when working on a product. I would defend that any unsuccessful project is due to the mismanagement on any of these parts (if you built a product the market doesn&#039;t accept, it&#039;s probably because &lt;a href=&quot;http://www.noeldemartin.com/posts/the-curse-of-being-a-developer&quot;&gt;you didn&#039;t do the due validation of the idea&lt;/a&gt;, that would be because you failed on the Business pillar).&lt;/p&gt;
&lt;p&gt;The take away for this analysis is to always balance this three aspects in a project. Ideally, at the start of a project we would have one person in charge of each of the pillars. But in the case any is missing, it is important to cover it with external services (consulting, research, etc.) or have a person take multiple roles. It would be an error to procrastinate it until a later stage of the project.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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>
                2020-12-07T18:19:13+00:00
            </updated>
            <summary type="html">
                &lt;p&gt;I am a software developer, and many people I speak with tell me how lucky I am of being able of doing everything myself. If I have an idea I can define, prototype and implement the whole thing myself.&lt;/p&gt;
&lt;p&gt;There is a problem with that, though. I don&#039;t prototype. And chances are, if you&#039;re a developer, you don&#039;t do either.&lt;/p&gt;
&lt;p&gt;I think people have a tendency of working always at their higher level, using their top skills when possible. As it has been said many times, simplifying is difficult, and purposefully downgrading yourself is quite unnatural. That&#039;s why I don&#039;t prototype, because I have a tendency of thinking something will be “easy”. But inevitably things start getting complicated and something I could have spotted with a simple prototype becomes a problem I am working on (and wasting my time on). I reckon there is a problem there, and my goal in this writing is to analyze the problem and start making an effort to improve my approach.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/the-curse-of-being-a-developer"
            >
                &lt;p&gt;I am a software developer, and many people I speak with tell me how lucky I am of being able of doing everything myself. If I have an idea I can define, prototype and implement the whole thing myself.&lt;/p&gt;
&lt;p&gt;There is a problem with that, though. I don&#039;t prototype. And chances are, if you&#039;re a developer, you don&#039;t do either.&lt;/p&gt;
&lt;p&gt;I think people have a tendency of working always at their higher level, using their top skills when possible. As it has been said many times, simplifying is difficult, and purposefully downgrading yourself is quite unnatural. That&#039;s why I don&#039;t prototype, because I have a tendency of thinking something will be “easy”. But inevitably things start getting complicated and something I could have spotted with a simple prototype becomes a problem I am working on (and wasting my time on). I reckon there is a problem there, and my goal in this writing is to analyze the problem and start making an effort to improve my approach.&lt;/p&gt;
&lt;h2 id=&quot;lets-analyze-why-this-is-bad&quot;&gt;&lt;a href=&quot;#lets-analyze-why-this-is-bad&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Let&#039;s analyze why this is bad&lt;/h2&gt;
&lt;p&gt;First, it delays the completion of the first milestone for your project, which should be getting feedback to validate the potential of the idea. That is, unless you know for a fact that your project will be a success, which I doubt you really do. Anything that doesn&#039;t work towards the goal of getting feedback must be avoided when possible. The only reason why you would do something now is because you think it will save you some time in the future: “Let&#039;s implement this feature so that we can reuse it later”. And I can assure you the feedback you can get from a simple prototype far exceeds any time savings you can get from code reusage. It will not only tell you if the idea is good or not, you will even change entire features which will make your “reusable code” completely useless.&lt;/p&gt;
&lt;p&gt;Another excuse is that you simply enjoy building it. That is true to some degree, but do you really want to systematically implement everything and anything just because you enjoy it? That&#039;s what I used to do, and it brought me to this realization that I never prototype. It&#039;s a bad habit that shouldn&#039;t be the default approach. If you really do it for the sake of programming, I recommend other type of &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.codingame.com&quot;&gt;activities&lt;/a&gt; that are more enjoyable and have a framed time of dedication (which prevents you from over-complicating things from the start).&lt;/p&gt;
&lt;p&gt;Finally, there is the fact that your programming skills are a valuable asset of yours. You shouldn&#039;t be throwing them away for free. When you start working on something, make sure it&#039;ll bring some value at the end. That&#039;s something &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=ZBwraEDwuBk&quot;&gt;The Joker&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://xkcd.com/951/&quot;&gt;Randall Munroe&lt;/a&gt; know well.&lt;/p&gt;
&lt;h2 id=&quot;so-then-what-is-a-prototype&quot;&gt;&lt;a href=&quot;#so-then-what-is-a-prototype&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;So then, what is a prototype?&lt;/h2&gt;
&lt;p&gt;I hope I&#039;ve convinced you (and myself) that prototyping is the way to go. So, then, what is a prototype? As I understand it, a prototype is an artifact designed to get you feedback about an idea. That&#039;s it. The feedback may be different in each scenario: it can be feedback about the correctness of the idea (will it work?), it can be reactions of potential customers to some product (will anyone buy it?), it can be an estimation of the appropriate pricing, a search for the correct public, etc.&lt;/p&gt;
&lt;p&gt;In any case, this prototype will probably be something anyone could do, without having any programming skills. It can be some hand drawn wireframe, a market study or even a simple explanatory text (you know, an &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=Tq0tan49rmc&quot;&gt;elevator pitch&lt;/a&gt;). And I am also sure there are thousands of applications better for creating prototypes than an IDE.&lt;/p&gt;
&lt;p&gt;So, the next time you eagerly open your IDE ready to start your next project, think twice about it.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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">
                &lt;p&gt;&lt;/p&gt;
&lt;p&gt;Last week I attended AppsWorld 2014 in London, a conference about mobile applications and the mobile industry overall. As I expected, It was a valuable experience, and I thought it would be a good idea to make a summary of what was said and what I learned. This will serve for myself as a way to process all the content and for anyone who is interested to see what happened.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/my-appsworld-2014-digest"
            >
                &lt;p&gt;&lt;img src=&quot;/img/blog/AppsWorldLogo.jpg&quot; alt=&quot;Apps World Logo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Last week I attended &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.apps-world.net/europe/&quot;&gt;AppsWorld 2014&lt;/a&gt; in London, a conference about mobile applications and the mobile industry overall. As I expected, It was a valuable experience, and I thought it would be a good idea to make a summary of what was said and what I learned. This will serve for myself as a way to process all the content and for anyone who is interested to see what happened.&lt;/p&gt;
&lt;h2 id=&quot;my-point-of-view&quot;&gt;&lt;a href=&quot;#my-point-of-view&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;My Point of View&lt;/h2&gt;
&lt;p&gt;First, I have to say it was quite a big venue with lots of talks and events. If you take a look at the agenda, you&#039;ll see there were many presentations, most of them overlapping. So my summary and my remarks will be based on what I had time to see, which is a combination of what happened in Developer Zone, Droid World and Gaming World.&lt;/p&gt;
&lt;p&gt;The events I attended were the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Keynote panel: Creating a successful app business&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Apps: From inception to expansion (&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/peterbriffett&quot;&gt;Petter Briffet&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://yplanapp.com/&quot;&gt;Yplan&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Panel: Monetisation, discovery, engagement &amp;amp; retention&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The first 48 hours: How to know now if you&#039;ve got a hit or are DOA and what to do about it (&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/jwalshfuse&quot;&gt;Jon Walsh&lt;/a&gt; and &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/lizpriestman&quot;&gt;Elisabeth Priestman&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.fusepowered.com/&quot;&gt;Fuse Powered Inc&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Panel: Building geo-location into your Android app&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Panel: The evolving role of the publisher&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fast Failure - risk management in a mobile gaming studio (&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/creativemCEO&quot;&gt;Vladimir Funtikov&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://creative-mobile.com/&quot;&gt;Creative Mobile&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mini WIP JAM&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Android app marketing: Tips for app publishers (&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/RuthBarnett&quot;&gt;Ruth Barnett&lt;/a&gt;, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://swiftkey.com/en/&quot;&gt;SwiftKey&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Going Mobile: Challenges for indie game developers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Discovering Android design guidelines (&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.apps-world.net/europe/speakers/marten-joensson/&quot;&gt;Marten Joensson&lt;/a&gt;, Google)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Panel: Designing your next beautiful Android App&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;core-ideas&quot;&gt;&lt;a href=&quot;#core-ideas&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Core Ideas&lt;/h2&gt;
&lt;p&gt;There were some core ideas repeated throughout multiple talks, which make them even more important. It&#039;s true that some of them are quite “obvious” and I&#039;ve heard them like a thousand times already, but in my opinion that&#039;s a sign that they are so important. And should be definitely had into account.&lt;/p&gt;
&lt;h3 id=&quot;product-value--idea-validation&quot;&gt;&lt;a href=&quot;#product-value--idea-validation&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Product Value &amp;amp; Idea Validation&lt;/h3&gt;
&lt;p&gt;What&#039;s the most important of a product? Of course, it is the value. The added value. This was repeated many times in different ways, but it is so hugely important to understand this, that I&#039;m sure many applications live or die by this concept. The added value of a product is what makes it appealing to a user. It is simple, the user will be giving you money (or time, which is more important), so you have to give something back. Value is not features, so defining an application in terms of its features is mostly wrong, and it is something that us developers do a lot. So I am grateful to have heard the importance of added value 10 times this two days, so that next time I start thinking on an application I really see it from the user&#039;s point of view.&lt;/p&gt;
&lt;p&gt;When in doubt, there is a simple question that tests the validity of an idea: Which problem does it solve? If you really cannot answer that, there is something wrong there. Users will download the application for that sole purpose, so it is important to really solve something well. In order to validate an idea it is necessary to pitch it to real customers, or run a &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Focus_group&quot;&gt;focus group session&lt;/a&gt;. That&#039;s how you will really know if a product will work or not. Another way of seeing it is having a use case which defines the context of the application. All this is well expressed in the &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Lean_startup&quot;&gt;Lean Startup methodology&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There was something interesting mentioned for games, but I think it can be applied for any application. There are three aspects which need to be defined before starting to build anything: Mechanics, Monetization and Fun Factor (or Added Value).&lt;/p&gt;
&lt;h3 id=&quot;advertisement--discovery&quot;&gt;&lt;a href=&quot;#advertisement--discovery&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Advertisement &amp;amp; Discovery&lt;/h3&gt;
&lt;p&gt;I have something to admit, before listening to some of the talks I had quite a bad idea about application advertisement and discovery. My idea was simple: “spend money in advertisements and create visibility in social networks and users will come”. Now after listening some insights, I realize that a bad application can never succeed only with this (although it really makes you wonder what happened with Yo, but I guess there are always exceptions). But also, a good application cannot succeed without it, you really need to be able of communicating effectively and know your audience. So it really has to be a combination of both to have winner.&lt;/p&gt;
&lt;p&gt;A good advice was to find out which is your addictive user base niche before spending money in advertisements. And also, advertisements that are detectable as the company having paid are not that good (I actually know for experience with Facebook advertisements). If we have to talk about good methods for advertisement and discovery of apps, there are three:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bloggers &amp;amp; Media:&lt;/strong&gt; If users see the application for the first time from a trusted source, like a blog or the media in general, they are much more open to give it a try. On this note, a good way of achieving this kind of coverage is to put yourself on the media&#039;s shoes, and make it easy for them to want to write about your app (it is noteworthy, appealing, there is plenty of information, etc.).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Organic Growth:&lt;/strong&gt; Friends sharing with friends. If you can make that your application is spreading itself, you&#039;re gold. This is how most big applications really grow.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AppStore Optimization (ASO):&lt;/strong&gt; I&#039;m sure most of you are familiar with the term Search Engine Optimization (SEO). Turns out there is a new trend for applications, which is called ASO. It follows the same reasoning as SEO, optimizing the content, description and marketing of your application in order to appear more easily when users search for apps on their own. But I guess it has a different approach given there are many app stores with different mechanisms (Google Play, iTunes, Windows Phone Store, etc.). In particular, there was someone specialized in this, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/nickduddy&quot;&gt;Nick Duddy&lt;/a&gt; and his company &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://miratrix.co.uk/&quot;&gt;Miratrix&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It was also noted the power of having a brand supporting the launch of an application, this can be obtained for indie developers with publishers. And depending on the brand, this can make a huge difference at the beginning.&lt;/p&gt;
&lt;h3 id=&quot;metrics&quot;&gt;&lt;a href=&quot;#metrics&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Metrics&lt;/h3&gt;
&lt;p&gt;And of course, there was a lot of talking about metrics. Most of these are valuable to me as a baseline, because really I didn&#039;t have much of an idea about what determined a good or bad app (besides downloads and rating). I have to say that most of them were particular to game applications, so I am not sure they can be applied for all kind of applications. But as I said, it serves as a baseline (better than knowing nothing).&lt;/p&gt;
&lt;p&gt;So these are some of the metrics I found useful:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Returning Users:&lt;/strong&gt; The percentage of users that open your application for a second time. Turns out a good value is having 40~45% of returning users. 35% is already pretty bad.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Free to Play:&lt;/strong&gt; In general, having free to play versus paid applications ends up with 10x audience and 3x revenue.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Paying Users:&lt;/strong&gt; The percentage of paying users (how many people using your application actually spend money) doesn&#039;t seem to go up with time. So, you shouldn&#039;t expect this to improve much without changing anything. Also, applications with a low percentage of paying users seem to do well with advertisements (if placed properly). A good value for this metric is having 2,5% of paying users.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Player Value &amp;gt; Player Cost:&lt;/strong&gt; Player value should be how much your paying users spend divided by the amount of total users. Player cost is the amount you spend on acquiring users divided by how many new users you acquire. So as you may guess, in order to do well, your player value should be bigger than your player cost.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most of this was explained in the talk by &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://www.fusepowered.com/&quot;&gt;Fuse Powered Inc&lt;/a&gt;, which can be found as a blog post here: &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.gamesbrief.com/2014/08/the-first-48-hours-how-to-know-now-if-youve-got-a-hit-or-are-doa/&quot;&gt;The First 48 Hours: How to know NOW if you’ve got a hit or are DOA&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;An interesting concept that was mentioned was having a “magic number”. It means having a metric that makes the difference for your business, for example in Spotify this metric is the time required to stream a song.&lt;/p&gt;
&lt;h3 id=&quot;pitching--networking&quot;&gt;&lt;a href=&quot;#pitching--networking&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Pitching &amp;amp; Networking&lt;/h3&gt;
&lt;p&gt;There were also some other things to have into account from a personal point of view. In case of searching for investors, when pitching the idea you should know that you&#039;re pitching you and your team as well (that can influence a lot if the investor will go in or not). Also, at the beginning of businesses it is important to get into the community, attending &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.meetup.com/&quot;&gt;meetups&lt;/a&gt; and doing networking to strengthen your contacts network and creating collaboration opportunities.&lt;/p&gt;
&lt;h2 id=&quot;conclusions&quot;&gt;&lt;a href=&quot;#conclusions&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Conclusions&lt;/h2&gt;
&lt;p&gt;An that is a summary of what I found more interesting about all the presentations and discussions. It is obvious how important it is to get out of the comfort zone as a developer and start thinking about other important topics: Value, Networking and Visibility.&lt;/p&gt;

            </content>
        </entry>
            <entry>
            <title type="text">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">
                &lt;p&gt;There is a feeling I enjoy a lot. The feeling of Starting Something New.&lt;/p&gt;
&lt;p&gt;This is my first blog post, and because of my personality the first thing I did to prepare it was reading the first posts of blogs I follow. It didn&#039;t help too much, so I did a list of what I should include here and that&#039;s it, I started writing. It wasn&#039;t so painful as I thought it&#039;d be.&lt;/p&gt;

            </summary>
            <content
                type="html"
                xml:base="https://noeldemartin.com/blog/starting-something-new"
            >
                &lt;p&gt;There is a feeling I enjoy a lot. The feeling of Starting Something New.&lt;/p&gt;
&lt;p&gt;This is my first blog post, and because of my personality the first thing I did to prepare it was reading the first posts of blogs I follow. It didn&#039;t help too much, so I did a list of what I should include here and that&#039;s it, I started writing. It wasn&#039;t so painful as I thought it&#039;d be.&lt;/p&gt;
&lt;h2 id=&quot;who-am-i&quot;&gt;&lt;a href=&quot;#who-am-i&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Who Am I&lt;/h2&gt;
&lt;p&gt;I don&#039;t really know if anyone who doesn&#039;t already know me will even read this, but well in case that happens here you have what you can also read in the &lt;a href=&quot;/about&quot;&gt;about&lt;/a&gt; section at the moment.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi there!&lt;/p&gt;
&lt;p&gt;My name is Noel De Martin Fernandez. I am a Problem Solver, Software Architect and Entrepreneur. I created &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.lincolnschilli.com&quot;&gt;Lincoln&#039;s Chilli&lt;/a&gt; and I am in the process of exploring the market and creating my own framework to deliver services and products. I enjoy innovation and collaboration, so I am interested in different technologies and projects that open me to different possibilities.&lt;/p&gt;
&lt;p&gt;I live in Catalonia (Spain) and you can check me out in &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https://twitter.com/NoelDeMartin&quot;&gt;Twitter&lt;/a&gt; or &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.linkedin.com/pub/noel-de-martin-fernandez/41/a7b/64&quot;&gt;LinkedIn&lt;/a&gt; for more information. If you want to contact me, don&#039;t hesitate on &lt;a href=&quot;mailto:{{contact.email}}?subject=Hi+there!&quot;&gt;sending an email&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Cheers&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As of my current situation, I recently quit my job (3 months ago) and I&#039;m now trying to follow my dreams and passions. It&#039;s not as easy as it sounds, because for starters I don&#039;t even know what those are, but as they say “You don’t have to get it right, you just have to get it going”.&lt;/p&gt;
&lt;p&gt;By the way, I already started something, and that&#039;s &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;http://www.lincolnschilli.com&quot;&gt;Lincoln&#039;s Chilli&lt;/a&gt;. Check it out, I call it my “entreprenurial sandbox”, and I want to someday convert it into a profitable company.&lt;/p&gt;
&lt;h2 id=&quot;what-this-blog-will-be-about&quot;&gt;&lt;a href=&quot;#what-this-blog-will-be-about&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;What this blog will be about&lt;/h2&gt;
&lt;p&gt;I have been thinking about writing a blog for a while. I would say as much as 4 years (more or less when I finished university and started reading some blogs). In all this time I have been taking note of ideas I had, but I never actually started a blog (you know, we&#039;re all too busy and that kind of excuses). But now there are no more excuses, so here it goes: Noel De Martin&#039;s Blog.&lt;/p&gt;
&lt;p&gt;They say blogs should be focused in one topic, and I half agree with that. On the one hand, that&#039;s how a blog would get readers and create an audience, which gives the blog a reason to be. On the other hand, I don&#039;t really know if that&#039;ll happen even if I try, and the main focus for now is to write all this ideas I have floating in my head.&lt;/p&gt;
&lt;p&gt;Happily for me, there is a way to fulfill both aspects of that. Because of my current situation, my passions and what I&#039;d like to write about, I have realized everything can be summarized in one topic: Developer Entrepreneurship. Being myself a developer who is trying to become an entrepreneur (so I guess right now I am a wantrepreneur), this can be the perfect place to narrate my journey and the ideas I have during this evolution. I am particularly interested in this topic, because I think it is not covered as much as I would like. There is a lot of content about development, and also about entrepreneurship, but I haven&#039;t seen as much about the combination of both.&lt;/p&gt;
&lt;h2 id=&quot;final-words&quot;&gt;&lt;a href=&quot;#final-words&quot; class=&quot;heading-permalink&quot; aria-hidden=&quot;true&quot; title=&quot;Permalink&quot;&gt;&lt;/a&gt;Final Words&lt;/h2&gt;
&lt;p&gt;So, that&#039;s what you can expect from this, kind of. Like always that I start something new, I am very excited about this and I am looking forward to see your opinions on my thoughts.&lt;/p&gt;

            </content>
        </entry>
    </feed>
