<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Luka Peharda on Medium]]></title>
        <description><![CDATA[Stories by Luka Peharda on Medium]]></description>
        <link>https://medium.com/@lukapeharda?source=rss-3e65c4d54579------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/2*Aq7H-vNSwt__MDaxbY0t2Q.png</url>
            <title>Stories by Luka Peharda on Medium</title>
            <link>https://medium.com/@lukapeharda?source=rss-3e65c4d54579------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 11 Jun 2026 12:27:40 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@lukapeharda/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Do We Still Need NoSQL in 2026? — Luka Peharda — PHP and JS developer]]></title>
            <link>https://lukapeharda.medium.com/do-we-still-need-nosql-in-2026-luka-peharda-php-and-js-developer-163a13d8b3c3?source=rss-3e65c4d54579------2</link>
            <guid isPermaLink="false">https://medium.com/p/163a13d8b3c3</guid>
            <category><![CDATA[relational-databases]]></category>
            <category><![CDATA[nosql]]></category>
            <dc:creator><![CDATA[Luka Peharda]]></dc:creator>
            <pubDate>Mon, 23 Feb 2026 07:04:55 GMT</pubDate>
            <atom:updated>2026-02-23T07:04:55.100Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ckx6vU6y-5cTC40PNlcV9Q.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@jankolar?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Jan Antonin Kolar</a> on <a href="https://unsplash.com/photos/brown-wooden-drawer-lRoX0shwjUQ?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>I graduated university in 2007. Back then, databases meant one thing: tables, rows, and relationships. A user has orders. Orders have products. Everything is connected, and you draw those connections carefully on a whiteboard (or a notebook) before you write a single line of code.</p><p>That’s just how data works, right? Things in the real world are related to each other. It makes sense to model that. Similar how classes in OOP are a natural way to model real-world entities, relational databases felt like the natural way to model real-world data.</p><p>Then NoSQL came along. Suddenly, you could just throw data into a big flexible blob without worrying too much about structure or relationships. It was like someone had looked at a filing cabinet and said “what if we just used a pile on the floor instead?”</p><p>Maybe that’s my bias showing, or my old age. But I’ve been sitting with this question for a while now: <strong>do we actually need NoSQL databases in 2026, or have I just not updated my thinking since 2007?</strong></p><p>Let me try to work through it “on-paper” here.</p><h3>What even is NoSQL?</h3><p>If you’re not a developer, here’s the short version. A traditional relational database (like PostgreSQL or MySQL) stores data in structured tables, kind of like spreadsheets, and lets you link those tables together. NoSQL is a term for databases that don’t do that. They store data differently, often as flexible documents (imagine JSON files), key-value pairs (like a dictionary), or other formats.</p><p>The pitch for NoSQL is roughly: more flexibility, easier to scale to massive amounts of data, no need to define your structure upfront. This “no need to define structure” was a big part of the appeal. Just throw data in and figure out how to use it later.</p><h3>Where NoSQL makes sense</h3><p><strong>When speed is everything and the data is simple.</strong> Think of things like a leaderboard in a game, user session data, or a cache. You’re not doing complex queries, you just need to store something and retrieve it incredibly fast. Key-value stores like Redis are brilliant at this. A relational database would be overkill.</p><p><strong>When your data doesn’t have a fixed shape.</strong> Imagine a product catalog where a t-shirt has “size” and “color” attributes, but a laptop has “RAM”, “CPU”, and “screen size”. These are very different. Forcing them into the same table structure is awkward. A document store like MongoDB lets each product just be what it is.</p><p><strong>When you’re dealing with enormous scale across multiple regions.</strong> Big tech companies (think Amazon, Netflix, or Facebook) have data spread across data centers all over the world. Some NoSQL databases are specifically built to handle that kind of scale, accepting some trade-offs (like the data not being perfectly up-to-date everywhere at all times) to stay fast.</p><p><strong>For highly connected data, like social networks.</strong> Ironically, one area where NoSQL really shines is relationships, but a specific kind. Graph databases (like Neo4j) are built to answer questions like “who are the friends of my friends who also like jazz?” across millions of people. A relational database can do this, but it gets slow fast.</p><p>So yes, there are real use cases. But those use cases are pretty specific. They’re not the kind of thing most apps need.</p><h3>But here’s where my head still hurts</h3><p>The thing is, most apps aren’t Netflix. Most apps I’ve worked on, and most apps most developers build, have data that is relational. Users have profiles. Profiles belong to organizations. Organizations have subscriptions. Subscriptions have invoices.</p><p>That stuff has relationships. And relational databases were literally invented to model exactly that.</p><p>When I look at a NoSQL document store handling that kind of data, I often see one of two things. Either the data ends up duplicated everywhere (the user’s name stored in fifty different places), or the app code ends up doing the work that the database used to do — manually stitching data together, checking consistency, making sure nothing gets out of sync.</p><p>That’s not a win. That’s moving complexity from a place designed to handle it (the database) to a place that’s much worse at handling it (your application code, written by humans, at 11pm, day before Black Friday).</p><h3>Meanwhile, relational databases haven’t been standing still</h3><p>This is something I think gets missed in the NoSQL conversation. Tools like PostgreSQL have been quietly adding features that close the gap significantly.</p><p>For example — PostgreSQL has a column type called jsonb that lets you store flexible, document-like data inside a relational database. So you can have the best of both worlds - structured, relational data where you need it, and flexible blobs where you don&#39;t. And all of that in one place, with proper transactions and data integrity guarantees.</p><p>Modern relational databases can also handle a lot more scale than people give them credit for. The “NoSQL scales better” argument made a lot of sense in 2010. In 2026, it’s a much more nuanced picture.</p><h3>The honest downsides of NoSQL</h3><p>I want to be clear I’m not just being a grumpy old dev here. There are real trade-offs with NoSQL that don’t always get talked about enough.</p><p><strong>You lose consistency guarantees.</strong> Many NoSQL databases are “eventually consistent,” which means for a short time, different users might see different versions of the data. For some apps that’s fine. For anything involving money or critical records, it can be a serious problem.</p><p><strong>You become responsible for your data’s integrity.</strong> Relational databases enforce rules. For example, you can’t link an order to a user that doesn’t exist. With many NoSQL databases, that’s your problem now. One bug in your code and you’ve got orphaned, inconsistent data with no safety net.</p><p><strong>Flexible schemas are a double-edged sword.</strong> Yes, it’s nice to not have to define everything upfront. But six months into a project, when your documents all look slightly different because three developers made different assumptions, you’ll wish someone had drawn a schema on a whiteboard.</p><p><strong>Querying can get awkward.</strong> SQL (despite its age) is a remarkably powerful and expressive way to ask questions of your data. Equivalent operations in some NoSQL databases require more code, more effort, and sometimes just aren’t possible at all.</p><h3>So where does that leave me?</h3><p>Honestly? Still pretty relational in my thinking. And I think I’m okay with that. At least for now, until I get a project that genuinely needs NoSQL’s strengths.</p><p>I don’t think my instinct to model data as interconnected things is a limitation from my education. I think it reflects something true about how a lot of real-world data actually works. And relational databases are really good at modeling that.</p><p>Does that mean I’d never use NoSQL? No. But I’d want to be very sure I needed it before I went down that path.</p><p>My overall take: <strong>if you’re building most apps, a well-used PostgreSQL database will take you further than you think, for longer than you think, with fewer surprises than you think.</strong> And if you ever genuinely outgrow it, you’ll know. And the NoSQL option will still be there and you’ll be able to migrate your data if needed.</p><p>I just wouldn’t start there.</p><p>If you like this article consider <a href="https://twitter.com/intent/tweet?text=Do%20We%20Still%20Need%20NoSQL%20in%202026?%20on%20https://lukapeharda.com/article/nosql-vs-relational/%20by%20@lukapeharda">tweeting</a> or check out my other <a href="https://lukapeharda.com/articles/">articles</a>.</p><p><em>Originally published at </em><a href="https://lukapeharda.com/article/nosql-vs-relational/"><em>https://lukapeharda.com</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=163a13d8b3c3" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Use EXISTS instead of COUNT > 0 when checking if records exist — Luka Peharda — PHP and JS…]]></title>
            <link>https://lukapeharda.medium.com/use-exists-instead-of-count-0-when-checking-if-records-exist-luka-peharda-php-and-js-142820898b36?source=rss-3e65c4d54579------2</link>
            <guid isPermaLink="false">https://medium.com/p/142820898b36</guid>
            <category><![CDATA[laravel]]></category>
            <category><![CDATA[sql]]></category>
            <category><![CDATA[php]]></category>
            <dc:creator><![CDATA[Luka Peharda]]></dc:creator>
            <pubDate>Fri, 28 Nov 2025 09:19:17 GMT</pubDate>
            <atom:updated>2025-11-28T09:19:17.648Z</atom:updated>
            <content:encoded><![CDATA[<h3>Use EXISTS instead of COUNT &gt; 0 when checking if records exist — Luka Peharda — PHP and JS developer</h3><p>TL;DR Use EXISTS when querying if SQL records exists instead of using COUNT. EXISTS is much more efficient and breaks out of the loop when first record is found.</p><h3>Using COUNT</h3><p>Until recently, when I had to check if a DB record that satisfies some conditions exists, I’ve used a COUNT and then check if returned result is greater than 0.</p><p>Plain SQL query:</p><pre>SELECT COUNT(*)<br>FROM `post_likes`<br>WHERE `member_id` = 1<br>AND `post_id` = 1</pre><blockquote><em>MySQL has </em><em>COUNT(*) optimised and it is faster and more efficient than using </em><em>COUNT(id) for example.</em></blockquote><p>Laravel Eloquent query (using postLikes relationship):</p><pre>// Did member like a post<br>$member-&gt;postLikes()-&gt;count() &gt; 0;</pre><blockquote><em>Notice the brackets after </em><em>postLikes() relationship name. This means we are using the relationship to generate query on the related table and setting up foreign key for us. If we used </em><em>$member-&gt;postLikes-&gt;count() , without the brackets, we would fetch all related records and then do a count afterwards. This would result in a much costlier DB query, and more memory used as all those records needs to saved to memory.</em></blockquote><p>This would “force” a DB to count through all of the records that satisfies these conditions. And if your table is large enough it could take some time. Granted, probably in milliseconds but still it would do unnecessary work as it does not know that you are just interested in “existence” of the record and not the exact count.</p><p>Of course, if you indexed the table “properly” and use a composite index on member_id and post_id columns result would be pretty fast in this scenario but in some others it still may be optimised.</p><h3>Using EXISTS subquery</h3><p>Better way would be to use an EXISTS subquery. This is available in MySQL from version 5.7 so there is no reason not to use it.</p><p>You can check MySQL docs on EXISTS <a href="https://dev.mysql.com/doc/refman/8.0/en/exists-and-not-exists-subqueries.html">here</a>. There is also NOT EXISTS subquery.</p><p>EXISTS works by encapsulating a query in SELECT subquery:</p><pre>SELECT EXISTS(<br> SELECT *<br> FROM `post_likes`<br> WHERE `member_id` = 1<br> AND `post_id` = 1<br>)</pre><blockquote><em>Doesn’t matter if your SELECT fetches all columns (</em><em>*) or plain </em><em>1 , SELECT will be discarded in EXISTS query.</em></blockquote><p>This query will return true if subquery has at least one record or false if there are no records that satisfies your conditions. MySQL will break out of the &quot;loop&quot; when it finds the first record and this is what makes it more performant than the COUNT.</p><p>In Laravel you can use exists method on the query builder:</p><pre>// Did member like a post<br>$member-&gt;postLikes()-&gt;exists();</pre><p>Eloquent will encapsulate the query in the EXISTS subquery.</p><p>Eloquent also provides whereExists , whereNotExists , doesntExist, withExists and several more to allow you to build a query that you need.</p><h3>Proper example of using EXISTS</h3><p>I’ve been using this to check existence of all kinds of records and relationships. Like permissions, likes and even as a nested subquery.</p><p>For example, when fetching a list of posts to display on the page, I want to know if member did like a post in order to show a proper UI icon. This could lead to a N+1 situation where for each post we’d have to do a separate SQL query to check if record exits.</p><p>Or we can use EXISTS subquery:</p><pre>SELECT `id`, `title`, `content`, exists(<br> SELECT *<br> FROM `post_likes`<br> WHERE `posts`.`id` = `post_likes`.`post_id`<br> AND `member_id` = 1<br>) AND `is_liked`<br>FROM `posts`</pre><p>This will be done in a single optimised SQL query and provide information if member liked a post in a generated is_liked column. To be precise, MySQL will do N+1 subqueries to check for existence but this will be optimised and done internally.</p><p>In Laravel you’d use withExists to do the same thing:</p><pre>$posts = Post::query()<br> -&gt;select([&#39;id&#39;, &#39;title&#39;, &#39;content&#39;])<br> -&gt;withExists([<br>        &#39;postLikes as is_liked&#39; =&gt; function ($query) {<br>      $query-&gt;where(&#39;member_id&#39;, $member-&gt;id);<br>     }<br>    ]);</pre><p>is_liked will be added as an attribute on each $post model.</p><p>This optimisation may not seem as important and it may look like a “micro” improvement. But if your tables have millions of records then you already know that every millisecond counts.</p><p><em>Originally published at </em><a href="https://lukapeharda.com/article/use-exists-instead-of-count/"><em>https://lukapeharda.com</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=142820898b36" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Using Tailwind CSS classes in markdown — Luka Peharda — PHP and JS developer]]></title>
            <link>https://lukapeharda.medium.com/using-tailwind-css-classes-in-markdown-luka-peharda-php-and-js-developer-bf2449c4cbaa?source=rss-3e65c4d54579------2</link>
            <guid isPermaLink="false">https://medium.com/p/bf2449c4cbaa</guid>
            <category><![CDATA[tailwind-css]]></category>
            <category><![CDATA[markdown]]></category>
            <dc:creator><![CDATA[Luka Peharda]]></dc:creator>
            <pubDate>Fri, 28 Nov 2025 09:15:19 GMT</pubDate>
            <atom:updated>2025-11-28T09:15:19.336Z</atom:updated>
            <content:encoded><![CDATA[<h3>Using Tailwind CSS classes in markdown — Luka Peharda — PHP and JS developer</h3><p>One of the biggest reasons why I moved my blog from Gatsby to Astro was its markdown integration and ease of creating new articles using markdown syntax.</p><p>Not only markdown but <a href="https://mdxjs.com/">MDX</a> — using JSX and component imports in markdown content.</p><h3>Using Tailwind CSS typography plugin</h3><p>As my blog is built using Tailwind CSS, content for the blog articles were also using Tailwind’s classes to style it. This means that instead of using regular</p><pre>&lt;p&gt;</pre><p>tags I’m using</p><pre>&lt;p class=&quot;pb-3 text-slate-400 text-xl&quot;&gt;</pre><p>to create a “simple” paragraph. As you can see this isn’t really simple nor does it enable me to write articles fast.</p><p>Not that the speed of converting my thoughts and ideas into HTML markup was my biggest problem.</p><p>Sensible person would use Tailwind’s <a href="https://tailwindcss.com/docs/typography-plugin">typography plugin</a> to style all content markup using CSS classes on the markdown content parent element. Their page even says that the plugin’S intended use is to to add beautiful typographic defaults to any vanilla HTML you don’t control, like HTML rendered from Markdown.</p><p>How would the paragraph look like using Tailwind’s prose classes?</p><pre>&lt;article class=&quot;prose prose-p:pb-3 prose-p:text-slate-400 prose-p:text-xl&quot;&gt;</pre><p>You’d have to add modifiers to the parent element class attribute. And repeat those modifiers for all other “target” like a, h1, h2, ul and all others.</p><p>And you’d have to reset some of the defaults that typography plugin brings to the table. It looks less and less as a sensible solution. Right?</p><h3>Assigning Custom Components to HTML elements</h3><p>Fortunately smart folks from MDX were already thinking of scenarios like that.</p><p>That is why you can import your custom component and then export a components object that maps the standard HTML to your custom component:</p><pre>import Paragraph from &#39;../components/Paragraph.astro&#39;;<br>export const components = {p: Paragraph}<br><br>This will be styled custom paragraph.</pre><p>Paragraph.astro component is pretty simple:</p><pre>&lt;p class=&quot;pb-3 text-slate-400 text-xl&quot;&gt;<br>    &lt;slot /&gt;<br>&lt;/p&gt;</pre><p>&lt;slot /&gt; is where the &quot;child&quot; content (paragraph&#39;s text) will go.</p><p>This whole article was written using standard markdown syntax with styling applied by overwritting the HTML with custom components. I must say that the speed of writing this article surprised even me. Whole article was written in VS Code without any need for custom HTML markup nor CSS nor messy copy/pasting from older articles.</p><p>Now I’m off to find a good VS Code extension for Grammarly so I literaly don’t have to use any other tool to publish an article.</p><p>To learn more, visit Astro’s <a href="https://docs.astro.build/en/guides/markdown-content/#assigning-custom-components-to-html-elements">Markdown Content</a> guide or <a href="https://mdxjs.com/table-of-components/">MDX Website</a> for a full list of HTML elements that can be overwritten as custom components.</p><p><em>Originally published at </em><a href="https://lukapeharda.com/article/using-tailwindcss-classes-in-markdown/"><em>https://lukapeharda.com</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bf2449c4cbaa" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[100 lines of code per file]]></title>
            <link>https://lukapeharda.medium.com/100-lines-of-code-per-file-f95babbacd07?source=rss-3e65c4d54579------2</link>
            <guid isPermaLink="false">https://medium.com/p/f95babbacd07</guid>
            <category><![CDATA[code-review]]></category>
            <category><![CDATA[code-readability]]></category>
            <category><![CDATA[code-refactoring]]></category>
            <dc:creator><![CDATA[Luka Peharda]]></dc:creator>
            <pubDate>Tue, 25 Oct 2022 07:37:24 GMT</pubDate>
            <atom:updated>2022-10-25T07:37:24.530Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bJaSI5wkDXrKGlBYbEnwug.jpeg" /></figure><p>It has gotten to my attention that one of the biggest dev agencies in the region has a pull-request requirement that checks whether each file committed is under 100 lines long.</p><p>It seems like a pretty stupid requirement, right?</p><p><em>Then I tried it.</em></p><p>I had a class that was 133 lines long and I want to see whether I can get it under 100. As the class was already “doing one thing” it didn’t make sense to refactor it and split it into two files.</p><p>First to go were the comments 😀 Method docblocks were replaced with proper type declarations and return types. To preserve the readability, variable and method names had to be changed to be self-explanatory although a bit longer. Conditionals were extracted into separate methods.</p><p>Multiple simple <em>IFs</em> were combined into one, which did hurt readability a bit but it saved 5 lines 😀</p><p>Somewhat duplicated code was extracted and parametrized which allowed me to reuse methods in several locations.</p><p>And I got to 99 lines 🚀</p><p>I was skeptical about this requirement when I started but now I see its benefits. It makes you think about your code a bit more and forces you to make it more readable while also removing clutter from your files. And as strange as this may sound, it was fun doing it 😆</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f95babbacd07" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Write Before You Think]]></title>
            <link>https://lukapeharda.medium.com/write-before-you-think-e454ae634fb5?source=rss-3e65c4d54579------2</link>
            <guid isPermaLink="false">https://medium.com/p/e454ae634fb5</guid>
            <category><![CDATA[writing]]></category>
            <category><![CDATA[thinking]]></category>
            <category><![CDATA[decision-making]]></category>
            <dc:creator><![CDATA[Luka Peharda]]></dc:creator>
            <pubDate>Fri, 14 Jan 2022 10:13:27 GMT</pubDate>
            <atom:updated>2022-01-14T10:16:40.100Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZN8aafhYChZcxGODIOhr7g.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@lilartsy?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">@lilartsy</a> on Unsplash</figcaption></figure><p>A friend of mine published a short post, an Instagram post really, called “Six ethics of life” among which was “Before you write, THINK.” In the context of his post, it makes sense. But it still triggered me and got me thinking.</p><p>There are a lot of scenarios where writing makes me think clearly and what is more important, more efficiently. And it helps me to structure my thoughts.</p><h3>Solving coding problems</h3><p>When I’m stuck on some coding problem or having a hard time debugging an issue I use writing to move everything from my head to make space for thinking and defining a context. Normally I use paper and pencil, but when they aren’t available I use Notion.</p><p>I use a process sprawling across a series of steps that guides me to my solution. The process and the steps were influenced by <a href="https://fs.blog/feynman-technique/">the Feynman Technique of Learning</a> but were heavily modified.</p><ol><li>First, I succinctly describe the problem, often I posit it as a question. This sets a context for me.</li><li>Then, similarly to Feynman Technique, I write down the stuff I know and stuff that I’m certain is true. In case of debugging an issue, I write down the consequences of the issue at hand, data (or database) state, and code (classes) involved.</li><li>I write down the unknowns and things I need to learn more about before making any judgment. And how to convert “unknowns” to “knowns”.</li><li>Afterward, I move on to possible causes. After listing the most obvious culprits, I try to look outside the box and come up with barely plausible scenarios. For each of the items here I specify how to validate, confirm or discard the idea.</li><li>After clearing these steps pretty much everything is cleared up and there usually aren’t any big obstacles for developing a solution.</li></ol><p>Naturally, sometimes these aren’t enough so additional steps are added to the process.</p><p>If the problem at hand is not urgent the I let it simmer for a while and let my unconscious thoughts work on it. I either take a walk, change the working environment (work from a coffee place, work from home), or even sleep on it.</p><p>The last step is basically waiting for a solution to strike me in my head :-)</p><h3>Making decisions</h3><p>I use a similar process when I’m stuck at deciding which solution or idea to pursue.</p><p>One difference is using second-order thinking, especially if I’m dealing with legacy code or working on code I didn’t write (or forgot about). I tend to really worry about <a href="https://fs.blog/chestertons-fence/">Chesterton’s Fence</a> kicking me in the but :-)</p><p>The additional benefit of writing down your decision process is that you can easily convert conclusions in your <a href="https://fs.blog/decision-journal/">decision diary</a>. You are keeping that, right? How else would you preserve knowledge in your org?</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e454ae634fb5" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Become Better (Developer)]]></title>
            <link>https://lukapeharda.medium.com/how-to-become-better-developer-25beabf60595?source=rss-3e65c4d54579------2</link>
            <guid isPermaLink="false">https://medium.com/p/25beabf60595</guid>
            <category><![CDATA[personal-growth]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[become-better]]></category>
            <category><![CDATA[mental-models]]></category>
            <category><![CDATA[fundamentals]]></category>
            <dc:creator><![CDATA[Luka Peharda]]></dc:creator>
            <pubDate>Fri, 29 Jan 2021 11:44:40 GMT</pubDate>
            <atom:updated>2021-01-29T11:44:40.084Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lHVz-zbOMa2kYmZ8rbauTA.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@austinchan?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Austin Chan</a> on <a href="https://unsplash.com/s/photos/personal-growth?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>Trends, as well as frameworks, comes and goes. Heck, JavaScript frameworks come and go each day 😂</p><p>Fundamentals are forever. So it would be wise to invest your time to grow those.</p><p><em>Although this article is written for software developers, I believe there are some universal truths here everybody can learn from.</em></p><h3>Fundamentals</h3><ul><li>Teamwork — Great teams build great software so don’t take teamwork and your team for granted. Cultivate and prune your team. And, what is more, try to see situations from a different team member’s perspective.</li><li>Trust and cohesion — “Team without trust isn’t a team: it’s just a group of individuals, working together, often making disappointing progress”. Teams move at the speed of trust. Be the kind of dependable person you would want to work with.</li><li>Communication — Communicate honestly and proactively. Do not assume that because you understand something and it is simple and easy for you that everybody else perceives it the same. Listen before speaking.</li><li>Seek Consensus — It is really helpful if the whole team is on the same page so make sure to take the time for your whole team to get aboard. Discussion and disagreement are not necessarily bad as they can lead you to the best solution.</li><li>Automated Testing — Well-tested code allows you (and your team) to move fast with confidence. And not only that, using TDD (where you write tests simultaneously as you code) can speed up your development by providing faster means of testing (clicking through your UI to test some scenario is tedious, error-prone, and slow).</li><li>Clean, understandable, and navigable code and design — Think of the next engineer that will take over your code as your customer. Build code that your successor won’t have any trouble reading, maintaining, and updating. More often than not you will be your own “customer” and you’ll have to modify some parts several months later and you’ll have trouble navigating your work if not properly taken care of. So imagine how hard this would be for someone else.</li></ul><h3>Multiplicative System</h3><p>One extra thing to consider is the multiplicative system mental model.</p><p>Let’s say you value your coding skills as “10”, writing clean code as “8”, your testing skills as “9” but your communication skills as “0” (because your work should speak for itself, right :)). Then if we do basic multiplication 10 x 8 x 0 x 0 result would be 0!</p><p>If you are missing one of the traits for a great developer (great either by your standards or by community standards) your value could be 0. Does not matter whether you’re a 10x if you do not know how to communicate with your peers, your PMs. Or if you do not know how to communicate your value to the community.</p><h3>Sources</h3><p>Here are my sources for this article and links you should visit to learn more:</p><ul><li><a href="https://www.bti360.com/what-ive-learned-in-45-years-in-the-software-industry/">What I’ve Learned in 45 Years in the Software Industry</a></li><li><a href="https://fs.blog/2016/08/multiplicative-systems/">Multiplicative System Mental Model</a></li><li><a href="https://www.mindtools.com/pages/article/building-trust-team.htm">Building Trust Inside Your Team</a></li><li><a href="https://en.wikipedia.org/wiki/Curse_of_knowledge">Curse of Knowledge</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=25beabf60595" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Writing Year in Review Article]]></title>
            <link>https://lukapeharda.medium.com/writing-year-in-review-article-e672ee9d1350?source=rss-3e65c4d54579------2</link>
            <guid isPermaLink="false">https://medium.com/p/e672ee9d1350</guid>
            <category><![CDATA[goals]]></category>
            <category><![CDATA[failure]]></category>
            <category><![CDATA[year-in-review]]></category>
            <dc:creator><![CDATA[Luka Peharda]]></dc:creator>
            <pubDate>Thu, 14 Jan 2021 08:04:18 GMT</pubDate>
            <atom:updated>2021-01-14T08:04:18.650Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NcFWChzq1k-cqXDah3PsJg.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@cristian1?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Cristian Escobar</a> on <a href="https://unsplash.com/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>Like the whole internet and their grandma, I started writing a “2020: Year in review” article.</p><p><em>For those living under a rock, or who do not have a grandma, a “Year in review” article is an overview of your business, professional, personal, and family accomplishments in the last year. “Enlightened” ones tend to sprinkle it with few failures just to appear modest and down to earth :-)</em></p><p>After finishing a draft of all major sections and subsections my list of accomplishments was turning into a list of failures. Everywhere I just saw things I failed to do. Projects I failed to finish. Or even start. I know that when reading this article, a good friend of mine with whom I usually share my aspirations and ideas (you know who you are) would list my accomplishments from the top of his head.</p><p>Does that mean that I am a negative person? Unsuccessful person? Or maybe an objective one? :-D Or just a person without a focus, without grit, or clearly defined goals? Do I need to have goals defined when the year starts for me to be able to critically review them? To be able to objectively see which ones I’ve accomplished and which ones I failed? And to use failed ones as a plan for the next year’s goals? Can you be successful without defined goals?</p><p>Therefore I’ve decided to skip writing the “Year in review” article and instead write a list of goals in order to check against them objectively at the end of this year :-)</p><p><em>I had a good year. Especially considering the global pandemic with coronavirus. I and my loved ones were and are healthy. Financially and business-wise the year was solid. I’ve read a lot of books (52 to be exact, one for each week of the year) and learned a lot from them. Had a lot of time to pursue my hobbies and spend time outdoors. Hang out with dear people. Those that are across the “pond” only virtually but hey :-)</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e672ee9d1350" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Interesting Reads — volume #13]]></title>
            <link>https://lukapeharda.medium.com/interesting-reads-volume-13-d9f17b0e1294?source=rss-3e65c4d54579------2</link>
            <guid isPermaLink="false">https://medium.com/p/d9f17b0e1294</guid>
            <category><![CDATA[laravel]]></category>
            <category><![CDATA[bullet-journaling]]></category>
            <category><![CDATA[tailwind-css]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[github-sponsors]]></category>
            <dc:creator><![CDATA[Luka Peharda]]></dc:creator>
            <pubDate>Thu, 06 Aug 2020 09:23:33 GMT</pubDate>
            <atom:updated>2020-08-06T09:23:33.048Z</atom:updated>
            <content:encoded><![CDATA[<h3>Interesting Reads — volume #13</h3><p>Woohoo, we’re already at lucky number 13! Did you know that number 13 is considered lucky to the Chinese?</p><p>Right, better get right into scrolling (and clicking hopefully)! Featuring <a href="https://twitter.com/adamwathan">@adamwathan</a>, <a href="https://twitter.com/marcelpociot">@marcelpociot</a>, <a href="https://twitter.com/calebporzio/">@calebporzio</a> and many others.</p><h4><a href="https://beyondco.de/docs/expose/introduction">Expose</a> &amp; <a href="https://laravelplayground.com/">Laravel Playground</a></h4><p><a href="https://twitter.com/marcelpociot">Marcel Pociot</a> was productive in the last couple of months and created <a href="https://beyondco.de/docs/expose/introduction">Expose</a>, free open-source tunneling service (ngrok alternative) written in pure PHP. It allows you to share your local websites with others via the internet.</p><p>He also created <a href="https://laravelplayground.com/">Laravel Playground</a> — a free-to-use service that allows you to try out Laravel code (and all its features) directly in your browser.</p><p>I greatly admire people who can create and deliver products in such rapid succession. I’d be happy with myself if I was able to create and release one of my side projects. This is why this year I’m trying to work on smaller projects and tools and get my self in “release” state of mind.</p><h4><a href="https://adamwathan.me/tailwindcss-from-side-project-byproduct-to-multi-mullion-dollar-business/">Tailwind CSS: From Side-Project Byproduct to Multi-Million Dollar Business</a></h4><p>Learn how <a href="https://twitter.com/adamwathan">Adam Wathan</a> created Tailwind CSS and turned a helper library from his graveyard side projects into a multi-million dollar business. Succinct but inspiring as you never know where your possibility to make a “dent in the universe” lays :-)</p><p>And while we’re talking about Tailwind CSS — they recently released a plugin (called <a href="https://github.com/tailwindlabs/tailwindcss-typography">Tailwind Typography</a>) that provides typographic styling for vanilla HTML you don’t control (like from a markdown or a CMS). A lot of users were complaining that Tailwind CSS was hard to use for CMS content (to me it was the only downside to it) and now they’ve addressed it, and they’ve fixed it pretty elegantly if I may say so.</p><h4><a href="https://blog.bitsrc.io/features-of-javascript-you-probably-never-used-4c117ba3f025">11+ JavaScript Features You’ve Probably Never Used</a></h4><p>Although I’m not a JavaScript developer, the title seems like a clickbait but my curiosity got better of me 🤨 There really are a few features that I’ve never heard or used before which seems useful and will definitely come in handy. Did you hear or used all of them?</p><h4><a href="https://github.com/bvaughn/react-error-boundary">Simple reusable React error boundary component</a></h4><p>As the title says it is a simple React error boundary component that can be used to handle all errors thrown during React’s lifecycles. Plus it has a pretty nifty helper function for handling async errors. What are the error boundaries I hear you ask? Well, take a look at this <a href="https://kentcdodds.com/blog/use-react-error-boundary-to-handle-errors-in-react">Kent C. Dodds article</a> for in detail explanation.</p><p>You’re already halfway through. Did you click on any of the links or are you just skimming through? :-) I’ll know if you did!</p><h4><a href="https://www.reddit.com/r/Entrepreneur/comments/hrkctu/in_the_last_two_years_i_read_a_library_of/">In the last two years, I read a library of copywriting and content marketing books. Here are my 15 takeaways to write better and faster.</a></h4><p>Cool article with a lot of amazing tips for writing. I already included some of the tips in this volume. Can you guess which I’ve used? :-) <a href="http://www.hemingwayapp.com/">Hemingway App</a> (suggested here) is amazing as well — it calculates your text readability and suggests how to make it more so.</p><p>It even suggests replacing some more complicated words with their easier to understand replacements. This is strange because in my writing I wanted to expand my vocabulary and used a wider range of words to appear more knowledgeable — when in doing so I might have turned off some non-native speakers (one of the tips from the article ;-)).</p><h4><a href="https://www.campaignmonitor.com/blog/email-marketing/2020/07/basecamps-hey-what-you-need-to-know/">Will Basecamp’s HEY Change Email Marketing Forever?</a></h4><p>Overview of how email marketing might change due to Basecamp’s HEY email service provider and their screening and non-tracking features. This article provides advice and tips on how to approach these new trends and how to adjust your marketing emails.</p><h4><a href="https://calebporzio.com/i-just-hit-dollar-100000yr-on-github-sponsors-heres-how-i-did-it">I Just Hit $100k/yr On GitHub Sponsors! 🎉❤️ (How I Did It)</a></h4><p>Story of how <a href="https://twitter.com/calebporzio/">Caleb Porzio</a> (whose products I’ve mentioned several times in the last few of the Interesting Reads volumes) got to over $100K on GitHub Sponsors. Besides navigating through the story of how that came to be, he also gives us “nuggets” he picked along the way and some of them might be helpful for just about anybody.</p><p>Caleb is extremely productive lately (<a href="https://laravel-livewire.com/">Laravel Livewire</a>, <a href="https://github.com/alpinejs/alpine">AlpineJs</a>, and <a href="https://github.com/calebporzio/sushi">Sushi</a> to name a few of my favorites) and his success story is an inspiration for how to be (financially) successful when creating open-source software without resorting to creating a SaaS product.</p><h4><a href="https://bulletjournal.com/pages/learn">The Bullet Journal System</a></h4><p>Excellent system for rapid logging that I’ve started using lately. It relies on just a few concepts but it is pretty powerful.</p><p>It uses bullets paired with different visual symbols (●, ○, and -) to categorize your data entries into tasks, events, or notes.</p><h4><a href="https://www.mrlacey.com/2020/07/youve-only-added-two-lines-why-did-that.html">You’ve only added two lines — why did that take two days!</a></h4><p>A list of great explanations why the number of lines of code does not tell anything about effort, value, or quality of work that was done. I’ve used almost all of the reasons listed here at one time in my career.</p><p><em>What kind of person (or a robot) are you to finish an article and not give an appreciation by clapping? What kind of message are you trying to send me? :-)</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d9f17b0e1294" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Interesting reads — volume #12]]></title>
            <link>https://lukapeharda.medium.com/interesting-reads-volume-12-93eeef973008?source=rss-3e65c4d54579------2</link>
            <guid isPermaLink="false">https://medium.com/p/93eeef973008</guid>
            <category><![CDATA[react]]></category>
            <category><![CDATA[php]]></category>
            <category><![CDATA[wordpress]]></category>
            <category><![CDATA[symfony]]></category>
            <category><![CDATA[laravel]]></category>
            <dc:creator><![CDATA[Luka Peharda]]></dc:creator>
            <pubDate>Tue, 30 Jun 2020 07:35:19 GMT</pubDate>
            <atom:updated>2020-06-30T07:35:19.966Z</atom:updated>
            <content:encoded><![CDATA[<h3>Interesting reads — volume #12</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5GK1xiF8ZuYnZ-jVHYUuAw.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@ugur?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Ugur Akdemir</a> on <a href="/s/photos/reads?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>Hey! Another month has almost passed and that means that it is time for me to get motivated, write an intro, and carefully select interesting links from collected ones with a short text written for each of them.</p><p>We again have a selection of PHP (mostly Laravel but there are Symfony and WordPress reads as well) and JavaScript (React). Though there is a lot of assorted tech reads as well (and some CSS ones).</p><p>I hope you’ll enjoy the selection.</p><h4>Why we at $FAMOUS_COMPANY Switched to $HYPED_TECHNOLOGY</h4><blockquote><a href="https://saagarjha.com/blog/2020/05/10/why-we-at-famous-company-switched-to-hyped-technology/">https://saagarjha.com/blog/2020/05/10/why-we-at-famous-company-switched-to-hyped-technology/</a></blockquote><p>Did you recently switched technology stack at your company and want to tell the world? Well, look no further <a href="https://github.com/saagarjha">saagarjha</a> has already written the text for you. You just replace the name of the company and the new (and old) technology and you are good to go 😜</p><h4>The IKEA effect</h4><blockquote><a href="https://stitcher.io/blog/the-ikea-effect">https://stitcher.io/blog/the-ikea-effect</a></blockquote><p>Wikipedia defines the IKEA effect as “a cognitive bias in which consumers place a disproportionately high value on products they partially created”. Read how this applies to development and how to get rid of it. And while we’re at the subject of IKEA how cool <a href="https://www.itsnicethat.com/news/ikea-blanket-forts-instinct-advertising-190520">are these homemade forts instructions</a> released by IKEA?</p><h4>Tools for better thinking</h4><blockquote><a href="https://untools.co/">https://untools.co/</a></blockquote><p>Collection of thinking tools and frameworks to help you solve problems, make decisions, and understand systems. Make sure to visit this website once in a while as they are adding new stuff regularly.</p><h4>Ask HN: Am I the longest-serving programmer — 57 years and counting?</h4><blockquote><a href="https://news.ycombinator.com/item?id=23366546">https://news.ycombinator.com/item?id=23366546</a></blockquote><p>I’ve been having doubts about the longevity of a programmer’s career. Not sure if I’m hitting a mid-life crisis or just a regular existential one 🥳 It is nice and reassuring to see that I have over 30 years to go still and to see that “old developers” exist. Now, off to find if young pigeons exist as this is puzzling me as much as old developers 😃</p><h4>Practical privacy tips for your business</h4><blockquote><a href="https://blog.simpleanalytics.com/practical-privacy-tips-for-your-business">https://blog.simpleanalytics.com/practical-privacy-tips-for-your-business</a></blockquote><p>Overview of privacy issues (and solutions of course) that you may run into while building your products.</p><h4>A (Mostly) Complete Guide to React Rendering Behavior</h4><blockquote><a href="https://blog.isquaredsoftware.com/2020/05/blogged-answers-a-mostly-complete-guide-to-react-rendering-behavior/">https://blog.isquaredsoftware.com/2020/05/blogged-answers-a-mostly-complete-guide-to-react-rendering-behavior/</a></blockquote><p>Details on how React rendering behaves, and how the use of Context and React-Redux affect rendering. If you’re at all interested in deep diving into React abyss this is a must-read.</p><h4>Recoil — Another React State Management Library?</h4><blockquote><a href="https://medium.com/swlh/recoil-another-react-state-management-library-97fc979a8d2b">https://medium.com/swlh/recoil-another-react-state-management-library-97fc979a8d2b</a></blockquote><p>You think you know JavaScript? Guess again :) Read (and answer) this amazing set of questions to check your knowledge and fill its gaps. Great as a pre-interview repetition.</p><h4>Eloquent Performance Patterns</h4><blockquote><a href="https://eloquent-course.reinink.ca/">https://eloquent-course.reinink.ca/</a></blockquote><p>Awesome course for learning how to write performant Eloquent (and DB) queries to speed up your application and push more work to the database layer. This is definitely a purchase that has returns its value very soon. If you don’t believe me watch the two free preview lessons.</p><h4>Tweet(storm) of the month</h4><h3></h3><p></p><p>Awesome collection of tips for writing clean code in your Laravel products. Even commended by the Laravel man himself — Taylor Otwell.</p><h4>Protect your Symfony application against the OWASP Top 10 security risks</h4><blockquote><a href="https://nicwortel.nl/blog/2020/06/07/protect-symfony-application-against-owasp-top-10-security-risks">https://nicwortel.nl/blog/2020/06/07/protect-symfony-application-against-owasp-top-10-security-risks</a></blockquote><p>Excellent overview of the top 10 OWASP security risks with an explanation of how the Symfony framework is handling them as well as what you need to do to protect your app. I’d like to see an overview like this for Laravel though a lot of suggestions can be easily reused as-is.</p><h4>Modern CSS Solutions for Old CSS Problems</h4><blockquote><a href="https://moderncss.dev/">https://moderncss.dev/</a></blockquote><p>A cheatsheet with a list of evergreen CSS problems and modern solutions for them (with detailed explanations of given solutions) by Stephanie Eckles. Some of the solved problems included are equal heights column and fixed footer.</p><h4>Tailblocks</h4><blockquote><a href="https://mertjf.github.io/tailblocks/">https://mertjf.github.io/tailblocks/</a></blockquote><p>Free collection of blocks (or templates) for the Tailwind CSS framework.</p><h4>Kadence WooCommerce Email Designer</h4><blockquote><a href="https://en-gb.wordpress.org/plugins/kadence-woocommerce-email-designer/">https://en-gb.wordpress.org/plugins/kadence-woocommerce-email-designer/</a></blockquote><p>This is an essential WordPress plugin for any WooCommerce shop. With it, you can easily edit (both content and visually) all outgoing emails without needing to override templates or using hooks and filters. And best of all — it is free!</p><p><em>At the start of each month I’m stressing that I won’t find enough interesting links to share, but as month progresses and links keeps coming in, I’m stressing which one to leave out 🤔 If you’ve found anything that you’ve liked don’t forget to 👏</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=93eeef973008" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Interesting reads — volume #11]]></title>
            <link>https://lukapeharda.medium.com/interesting-reads-volume-11-5996c5f3abbe?source=rss-3e65c4d54579------2</link>
            <guid isPermaLink="false">https://medium.com/p/5996c5f3abbe</guid>
            <category><![CDATA[laravel]]></category>
            <category><![CDATA[wordpress]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[twitter]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Luka Peharda]]></dc:creator>
            <pubDate>Fri, 29 May 2020 07:19:14 GMT</pubDate>
            <atom:updated>2020-05-29T07:19:14.062Z</atom:updated>
            <content:encoded><![CDATA[<h3>Interesting reads — volume #11</h3><figure><img alt="Photo by Callum Shaw on Unsplash" src="https://cdn-images-1.medium.com/max/1024/1*OT2UWoBSwjbnQC4b1BQB4A.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@callumshaw?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Callum Shaw</a> on <a href="https://unsplash.com/s/photos/appetizing-read?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>This month there may be more React links than usual due to me building a new web app using React hooks and learning the intricacies of hooks to stop DDoSing my app 😜</p><p>As there are 12+ interesting articles and you don’t have the time to read all of them, do not skip over the last one — “68 Bits of Unsolicited Advice”. There are also few short but appetizing reads.</p><h4>Continuous Deployments for WordPress Using GitHub Actions</h4><p><a href="https://css-tricks.com/continuous-deployments-for-wordpress-using-github-actions/">Continuous Deployments for WordPress Using GitHub Actions | CSS-Tricks</a></p><p>I was planning to test out GitHub’s actions and deployment was the one that made the most sense to me. This awesome article from CSS Tricks teaches us how to deploy and build your WordPress theme but it definitely can be used for anything else as well. It builds your package with Composer and NPM and uses rsync to copy files over to your production server.</p><p>If you are interested in DB migrations and deploying Laravel apps check <a href="https://atymic.dev/blog/github-actions-laravel-ci-cd/">https://atymic.dev/blog/github-actions-laravel-ci-cd/</a>, <a href="https://samuelstancl.me/blog/push-deploy-a-laravel-app-for-free-with-github-actions/">https://samuelstancl.me/blog/push-deploy-a-laravel-app-for-free-with-github-actions/</a> or <a href="https://laravel-news.com/push-deploy-with-github-actions">https://laravel-news.com/push-deploy-with-github-actions</a> as they have good ideas and tips.</p><h4>How to Create Custom WordPress Editor Blocks in 2020</h4><p><a href="https://deliciousbrains.com/custom-gutenberg-block/">How to Create Custom WordPress Editor Blocks in 2020</a></p><p>Overview of how to build a WP Gutenberg block by <a href="https://medium.com/u/e3bdfe7f3308">Peter Tasker</a>. It leverages the latest tips, tricks, and tools such as create-guten-block. You don’t have to be a React expert to follow along and to build your own block.</p><h4>React Hooks — Understanding Component Re-renders</h4><p><a href="https://medium.com/@guptagaruda/react-hooks-understanding-component-re-renders-9708ddee9928">React Hooks - Understanding Component Re-renders</a></p><p>Overview of most used React hooks with a detailed explanation when each of them is being used during component rendering lifecycle. Do read it if you are starting using React hooks and before you start DDoSing your own API endpoints. And while we’re discussing React Hooks, <a href="https://kentcdodds.com/blog/usememo-and-usecallback">Kent C Dodds</a> has written an excellent article on useMemo and useCallback hooks.</p><h4>Logpoints: the best Chrome DevTools feature you aren’t using yet</h4><h3>Dan Abramov on Twitter</h3><p>Logpoints: the best Chrome DevTools feature you aren&#39;t using yet. https://t.co/m2h7rMknUx</p><p>Awesome little helper in Chrome DevTools that can be quite handy and can save you the time to manually write console.log. As I don’t write a lot of JavaScript, console.log is my go-to debugging tool. I know you still use it too 😉</p><h4>Sharingbuttons.io</h4><p><a href="https://sharingbuttons.io/">sharingbuttons.io | Super fast and easy Social Media Sharing Buttons. No JavaScript. No tracking.</a></p><p>“Super fast and easy Social Media Sharing Buttons. No JavaScript. No tracking.” They most certainly do deliver as promised.</p><h4>Favorite JavaScript utilities in a single line of code! No more!</h4><p><a href="https://1loc.dev/">Favorite JavaScript utilities in single line of code - 1 LOC</a></p><p>180 favorite JavaScript Utilities in a single line of code! This one is definitely worth bookmarking.</p><h4>TLDR: Writing a Slack bot to Summarize Articles</h4><p><a href="https://blog.concurlabs.com/how-to-write-a-tldr-chat-bot-ec02d9e1649c">TLDR: Writing a Slack bot to Summarize Articles</a></p><p>Learn how to integrate a state-of-the-art machine learning model into a Slack bot to generate a summary of articles shared by their URL commonly known as TLDR; (too long, didn’t read). It uses cortex.dev, serverless framework deployed on AWS Lambda and AWS SQS.</p><h4>You don’t have to be Twitter-famous to grow your blog</h4><p><a href="https://bloggingfordevs.com/">Blogging for Devs: Free Email Course &amp; Newsletter</a></p><p>Newsletter email course with great tips on blogging for newbs like me. JK, I believe everybody will find something useful there. Each day/email you get homework to work on :) If you’re interested in writing articles for money check out this great overview: <a href="https://dev.to/hyvortalk/10-companies-that-you-can-write-for-and-get-paid-as-a-developer-100-per-article-4dd7">https://dev.to/hyvortalk/10-companies-that-you-can-write-for-and-get-paid-as-a-developer-100-per-article-4dd7</a></p><h4>Use Twitter to find developer friends near you</h4><p><a href="https://dev.to/sudo_overflow/use-twitter-to-find-developer-friends-near-you-206">Use Twitter to find developer friends near you</a></p><p>A quick little tip on how to search through Twitter using geocoding.</p><h4>We now use 100% renewable energy at the office, and at home!</h4><p><a href="https://www.wholegraindigital.com/blog/we-now-use-100-renewable-energy-at-the-office-and-at-home/">We now use 100% renewable energy at the office, and at home!</a></p><p>By reading this amazing and inspiring article from one of the most coveted WordPress web agencies I’ve learned that B Corps exists and that the movement is marching ahead (<a href="https://bcorporation.net/about-b-corps">https://bcorporation.net/about-b-corps</a>). Faith in humanity and capitalism restored 😀</p><h4>Doordash and Pizza Arbitrage</h4><p><a href="https://themargins.substack.com/p/doordash-and-pizza-arbitrage">Doordash and Pizza Arbitrage</a></p><p>Fascinating article about food delivery business (Doordash and Uber Eats), which starts to look a lot like a negative-sum game (where at the end everybody is at loss). At best 😀</p><h4>68 Bits of Unsolicited Advice</h4><p><a href="https://kk.org/thetechnium/68-bits-of-unsolicited-advice/">68 Bits of Unsolicited Advice</a></p><p>Awesome pieces of advice by <a href="http://twitter.com/kevin2kelly">Kevin Kelly</a> (an author and former executive editor of Wired). The one that resonates with me the most is: “Acquiring things will rarely bring you deep satisfaction. But acquiring experiences will.” You need to bookmark this and read it once a week until you memorize them all.</p><p><em>So far sticking to daily scheduled 5 minutes of preparing content for Interesting Reads is working for me. Some days I’m spending less than 5 mins and just saving the links I find worthy, and on some, I spend more time and write a description for those links. I hope this becomes a habit soon so I can remove daily reminders.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5996c5f3abbe" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>