{"@attributes":{"version":"2.0"},"channel":{"title":"About on Jo\u00e3o Freitas","link":"https:\/\/joaomagfreitas.link\/","description":"Recent content in About on Jo\u00e3o Freitas","generator":"Hugo -- gohugo.io","language":"en-US","copyright":"Copyright \u00a9 2024, Jo\u00e3o Freitas.","lastBuildDate":"Sun, 08 Aug 2021 22:53:49 +0100","item":[{"title":"Login with PDF","link":"https:\/\/joaomagfreitas.link\/login-with-pdf\/","pubDate":"Wed, 17 Sep 2025 00:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/login-with-pdf\/","description":"In this blog post I teardown my thought process on how I discovered how to integrate an OAuth connector that authenticates with a pdf."},{"title":"For years I\u2019ve always wanted to be an open-source maintainer","link":"https:\/\/joaomagfreitas.link\/for-years-ive-always-wanted-to-be-an-open-source-maintainer\/","pubDate":"Thu, 28 Aug 2025 00:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/for-years-ive-always-wanted-to-be-an-open-source-maintainer\/","description":"In this blog post I reflect on my first really experience on maintaining an open-source project on GitHub."},{"title":"I vibe coded for two weeks","link":"https:\/\/joaomagfreitas.link\/i-vibe-coded-for-two-weeks\/","pubDate":"Wed, 11 Jun 2025 00:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/i-vibe-coded-for-two-weeks\/","description":"In this blog post I reflect on the positives and negatives on vibe coding, after taking on it for two weeks. Instead of following a traditional migration workflow (setup new project, use parts of existing codebase), my CTO wanted to conduct an experiment and test if LLMs can help us&hellip;"},{"title":"Abandoned Projects","link":"https:\/\/joaomagfreitas.link\/abandoned-projects\/","pubDate":"Thu, 09 Jan 2025 00:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/abandoned-projects\/","description":"A blog post about projects\/ideas I tried bringing to life but didn&rsquo;t exactly work out"},{"title":"Zero Monitor","link":"https:\/\/joaomagfreitas.link\/projects\/zero-monitor\/","pubDate":"Mon, 16 Dec 2024 00:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/projects\/zero-monitor\/","description":"Monitoring agents report live system information so machines can be easily supervisioned from a single dashboard view\nI self-host custom software under multiple machines (old laptops, raspberry pis) and needed a tool to supervision these machines state remotely. I couldn&rsquo;t find a tool that allowed me to drop a binary and silently connect the machine to a dashboard where I could monitor it. So I built this tool, which does just that."},{"title":"Instagram Archiver","link":"https:\/\/joaomagfreitas.link\/projects\/instagram-archiver\/","pubDate":"Sat, 12 Oct 2024 00:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/projects\/instagram-archiver\/","description":"Instagram Archiver is a tool that automates archiving Instagram user stories, allowing to rewatch them after they expire. It&rsquo;s a really neat tool if you want to build a timeline of your favorite creator activity.\nUpon entering the tool, users are prompted with an input to search for their creators username @handle\nAny time, users can view the user archived stories\nIf users have any question or want to contact the tool creators, they have an about &#43; contact page that allow them to do so I built this tool using Golang, Cloudflare Workers and Google Cloud Storage."},{"title":"Dotfiles","link":"https:\/\/joaomagfreitas.link\/projects\/dotfiles\/","pubDate":"Tue, 17 Sep 2024 00:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/projects\/dotfiles\/","description":"The dotfiles movement aims developers to share the configuration files that customize their working space. I&rsquo;ve also joined the movement when migrating from a Desktop Environment (GNOME) to using a Window Manager (AwesomeWM).\nAlong my rice (theme), local programs (scripts) and configuration files, I also track down all the packages that I&rsquo;ve installed (PACKAGES), and provide a script (INSTALL) that is capable of replicating my environment on a new machine."},{"title":"Scripts should be written using the project main language","link":"https:\/\/joaomagfreitas.link\/scripts-should-be-written-using-the-project-main-language\/","pubDate":"Sun, 24 Mar 2024 12:38:42 +0000","guid":"https:\/\/joaomagfreitas.link\/scripts-should-be-written-using-the-project-main-language\/","description":"In this blog post I explain the rationale for why I think that projects should be written using the project main language."},{"title":"Why you should use a terminal editor to write a commit message","link":"https:\/\/joaomagfreitas.link\/why-you-should-use-a-terminal-editor-to-write-a-commit-message\/","pubDate":"Wed, 20 Mar 2024 19:38:42 +0000","guid":"https:\/\/joaomagfreitas.link\/why-you-should-use-a-terminal-editor-to-write-a-commit-message\/","description":"In this blog post I describe seven reasons why you should use a terminal editor to write a commit message instead of passing the -m flag."},{"title":"I read a technical article everyday this year","link":"https:\/\/joaomagfreitas.link\/i-read-a-technical-article-everyday-this-year\/","pubDate":"Sun, 31 Dec 2023 17:23:23 +0000","guid":"https:\/\/joaomagfreitas.link\/i-read-a-technical-article-everyday-this-year\/","description":"In this blog post I cover what I&rsquo;ve learned as well as the difficulties I felt, by reading an article for an whole year."},{"title":"Deleting 50,000 Lines of Code in 3 Days","link":"https:\/\/joaomagfreitas.link\/reads\/deleting-50000-lines-of-code-in-3-days\/","pubDate":"Sun, 31 Dec 2023 17:00:59 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/deleting-50000-lines-of-code-in-3-days\/","description":"The following is a write-up of how a developer (author) deleted 80% of the codebase he started working on in just three days."},{"title":"Tracking Java Native Memory With JDK Flight Recorder","link":"https:\/\/joaomagfreitas.link\/reads\/tracking-java-native-memory-with-jdk-flight-recorder\/","pubDate":"Sat, 30 Dec 2023 20:28:55 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/tracking-java-native-memory-with-jdk-flight-recorder\/","description":"The following is an introduction to Flight Recorder, a profiling tool builtin the JVM to measure performance of a Java application. The author also uses JDK Mission control to import the recorded profiling sessions and further deeply analyse memory usage."},{"title":"Costs of running a macOS app studio business","link":"https:\/\/joaomagfreitas.link\/reads\/costs-of-running-a-macos-app-studio-business\/","pubDate":"Fri, 29 Dec 2023 11:34:19 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/costs-of-running-a-macos-app-studio-business\/","description":"The following is a summary of 2023 earnings for a dual developer indie company creating macOS apps and selling them in different app stores. It includes pre and post tax sales earnings."},{"title":"Explaining SSH to my Uber Driver","link":"https:\/\/joaomagfreitas.link\/reads\/explaining-ssh-to-my-uber-driver\/","pubDate":"Thu, 28 Dec 2023 11:29:31 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/explaining-ssh-to-my-uber-driver\/","description":"After the success of &ldquo;Explaining Kubernetes to my Uber driver&rdquo;, the author is back to story tell how she would explain how SSH works to his Uber driver."},{"title":"Explaining Kubernetes To My Uber Driver","link":"https:\/\/joaomagfreitas.link\/reads\/explaining-kubernetes-to-my-uber-driver\/","pubDate":"Wed, 27 Dec 2023 11:27:50 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/explaining-kubernetes-to-my-uber-driver\/","description":"A week ago, I attended Kubecon 2023 in Chicago. I read a few blogs and attended some 101 tutorials at the conference, but still didn\u2019t have a good understanding of the technology. The worst part was the last day of the conference - I ordered an Uber to bring me back to my hotel&hellip;"},{"title":"Paying Netflix $0.53\/h, etc.","link":"https:\/\/joaomagfreitas.link\/reads\/paying-netflix-053h-etc\/","pubDate":"Tue, 26 Dec 2023 11:22:56 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/paying-netflix-053h-etc\/","description":"The following is a summary on how much people spend per hour in streaming services."},{"title":"Discovery is the original sin of the modern age","link":"https:\/\/joaomagfreitas.link\/reads\/discovery-is-the-original-sin-of-the-modern-age\/","pubDate":"Mon, 25 Dec 2023 12:43:20 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/discovery-is-the-original-sin-of-the-modern-age\/","description":"The following is a review of today&rsquo;s massive source of information and how the hard part is to now find the right information to learn."},{"title":"Writing Documentation for Your House","link":"https:\/\/joaomagfreitas.link\/reads\/writing-documentation-for-your-house\/","pubDate":"Sun, 24 Dec 2023 12:41:34 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/writing-documentation-for-your-house\/","description":"The following article discusses the innovative idea of documenting housing chores, material bought, how to replace things, etc&hellip;"},{"title":"Populating the page: how browsers work","link":"https:\/\/joaomagfreitas.link\/reads\/populating-the-page-how-browsers-work\/","pubDate":"Sat, 23 Dec 2023 12:30:09 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/populating-the-page-how-browsers-work\/","description":"The following article provides an overview of how browsers render a webpage."},{"title":"How I test a website for accessibility","link":"https:\/\/joaomagfreitas.link\/reads\/how-i-test-a-website-for-accessibility\/","pubDate":"Thu, 21 Dec 2023 07:57:49 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-i-test-a-website-for-accessibility\/","description":"The following article explains how to test accessibility of a website in an automated and manual manner, how to identify and fix issues."},{"title":"Javascript Proxy Magic: How I built a 2kB state manager with zero dependencies (and how it got me two different job offers)","link":"https:\/\/joaomagfreitas.link\/reads\/javascript-proxy-magic-how-i-built-a-2kb-state-manager-with-zero-dependencies-and-how-it-got-me-two-different-job-offers\/","pubDate":"Wed, 20 Dec 2023 08:00:58 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/javascript-proxy-magic-how-i-built-a-2kb-state-manager-with-zero-dependencies-and-how-it-got-me-two-different-job-offers\/","description":"The following is the story of how the author created his own state manager using JavaScript Proxy API."},{"title":"All of the writing I did in a week as a software engineer","link":"https:\/\/joaomagfreitas.link\/reads\/all-of-the-writing-i-did-in-a-week-as-a-software-engineer\/","pubDate":"Tue, 19 Dec 2023 08:06:56 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/all-of-the-writing-i-did-in-a-week-as-a-software-engineer\/","description":"The following is a review on the amount of writing a Netflix Software Engineer puts in a on-call week."},{"title":"Evaluating new software forges","link":"https:\/\/joaomagfreitas.link\/reads\/evaluating-new-software-forges\/","pubDate":"Mon, 18 Dec 2023 07:34:48 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/evaluating-new-software-forges\/","description":"Today&rsquo;s read is all about GitHub alternatives and the main features you can find in these, that you don&rsquo;t find in GitHub, as expected from the author."},{"title":"Why SQLite Does Not Use Git","link":"https:\/\/joaomagfreitas.link\/reads\/why-sqlite-does-not-use-git\/","pubDate":"Sun, 17 Dec 2023 12:14:14 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/why-sqlite-does-not-use-git\/","description":"The following is an explanation of missing features in Git that SQLite needed, and how Fossil, the version control system conceived for SQLite, addresses them."},{"title":"Check if Your Wireless Adapter Supports Monitor Mode & Packet Injection","link":"https:\/\/joaomagfreitas.link\/reads\/check-if-your-wireless-adapter-supports-monitor-mode-packet-injection\/","pubDate":"Sat, 16 Dec 2023 12:39:23 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/check-if-your-wireless-adapter-supports-monitor-mode-packet-injection\/","description":"The following is a small guide on how to check if your Linux environment supports packet injection &amp; capturing (via monitor mode)"},{"title":"Navigating around in your shell","link":"https:\/\/joaomagfreitas.link\/reads\/navigating-around-in-your-shell\/","pubDate":"Fri, 15 Dec 2023 10:06:30 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/navigating-around-in-your-shell\/","description":"The following blog post reveals some tips &rsquo;n&rsquo; tricks you can use to boost your efficiency in a bash\/zsh terminal."},{"title":"Undefined behavior, and the Sledgehammer Principle","link":"https:\/\/joaomagfreitas.link\/reads\/undefined-behavior-and-the-sledgehammer-principle\/","pubDate":"Thu, 14 Dec 2023 09:59:29 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/undefined-behavior-and-the-sledgehammer-principle\/","description":"The following article covers vulnerabilities created by compilers when optimizing C\/C++ code, as these can skip checks that may lead to vulnerabilities like buffer overflows. This kind of vulnerabilities are identified as Undefined Behaviour (UB)."},{"title":"Learning from the real world: A hardware hobby project","link":"https:\/\/joaomagfreitas.link\/reads\/learning-from-the-real-world-a-hardware-hobby-project\/","pubDate":"Wed, 13 Dec 2023 14:47:56 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/learning-from-the-real-world-a-hardware-hobby-project\/","description":"The following article talks about transitioning from software-only projects, to projects that involve hardware and their hurdles."},{"title":"How to Clean Up Your Local Repository with Git Commands","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-clean-up-your-local-repository-with-git-commands\/","pubDate":"Tue, 12 Dec 2023 22:19:31 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-clean-up-your-local-repository-with-git-commands\/","description":"The following are some useful Git commands to cleanup the state of a repository."},{"title":"Get Rid of Your Old Database Migrations","link":"https:\/\/joaomagfreitas.link\/reads\/get-rid-of-your-old-database-migrations\/","pubDate":"Mon, 11 Dec 2023 22:24:51 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/get-rid-of-your-old-database-migrations\/","description":"The following is a blog post about database migrations, how developers usually treat them, and how Git commits can be used to keep track of them instead of keeping them as files in the project repository."},{"title":"How Google takes the pain out of code reviews, with 97% dev satisfaction","link":"https:\/\/joaomagfreitas.link\/reads\/how-google-takes-the-pain-out-of-code-reviews-with-97-dev-satisfaction\/","pubDate":"Sun, 10 Dec 2023 09:24:18 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-google-takes-the-pain-out-of-code-reviews-with-97-dev-satisfaction\/","description":"The following article covers Google code review process and their in-house code review tool, <em>Critique<\/em>, and why software engineers at Google love Critique features so much."},{"title":"Donkey code","link":"https:\/\/joaomagfreitas.link\/reads\/donkey-code\/","pubDate":"Sat, 09 Dec 2023 09:12:30 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/donkey-code\/","description":"The following read talks about the importance of defining and using correct terminologies and nomenclatures when designing and implementing software, based on the domain the product is built for."},{"title":"Exploring a 3D city with just HTML and CSS","link":"https:\/\/joaomagfreitas.link\/reads\/exploring-a-3d-city-with-just-html-and-css\/","pubDate":"Fri, 08 Dec 2023 09:24:43 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/exploring-a-3d-city-with-just-html-and-css\/","description":"The following article is just mind-blowing. It covers how to create a 3D city building game using only HTML + CSS, by manually transpiling 3D <code>.obj<\/code> files in CSS styles which are then applied to HTML elements."},{"title":"The Cost of Index Everything","link":"https:\/\/joaomagfreitas.link\/reads\/the-cost-of-index-everything\/","pubDate":"Thu, 07 Dec 2023 07:47:59 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-cost-of-index-everything\/","description":"The following post discusses why AI loves to index all data and why indexing too much data may hurt the trained Large Language Model (LLM).\nhttps:\/\/matt-rickard.ghost.io\/the-implications-of-more-developers\nMany AI products today are focused on indexing as much as possible. Every meeting, every document, every moment of your day. Every modality \u2014 images, audio, and text. Devices that are meant to capture your every moment.\nThen, they run every data point through a complex pipeline of vector searches, heuristics, draft models, large models, and more to make sense of it."},{"title":"Virtual Machine as a core Android Primitive","link":"https:\/\/joaomagfreitas.link\/reads\/virtual-machine-as-a-core-android-primitive\/","pubDate":"Wed, 06 Dec 2023 21:13:13 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/virtual-machine-as-a-core-android-primitive\/","description":"The following is a blog post about Android Virtualization Framework (AVF), explaining some of its details and internals, as well as how developers can benefit from it."},{"title":"How did I get here","link":"https:\/\/joaomagfreitas.link\/reads\/how-did-i-get-here\/","pubDate":"Tue, 05 Dec 2023 10:50:27 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-did-i-get-here\/","description":"The following article explains how computers connect to each other via DNS and many other network protocols"},{"title":"Most AI startups are doomed","link":"https:\/\/joaomagfreitas.link\/reads\/most-ai-startups-are-doomed\/","pubDate":"Mon, 04 Dec 2023 09:10:30 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/most-ai-startups-are-doomed\/","description":"The following read is a review on AI startups and how most of them live under an hype bubble. The author makes a really good argument in regards to what most AI startups are building: an application build over the weekend, that competitors can also do it too."},{"title":"Kotlin Unknotting \u2014 From Realizing Anti-Patterns to Becoming a Better Developer","link":"https:\/\/joaomagfreitas.link\/reads\/kotlin-unknotting-from-realizing-anti-patterns-to-becoming-a-better-developer\/","pubDate":"Sun, 03 Dec 2023 09:18:29 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/kotlin-unknotting-from-realizing-anti-patterns-to-becoming-a-better-developer\/","description":"The following article describes some mistakes often seen in Kotlin codebases and examples on how to improve them."},{"title":"Demystifying Web Push Notifications","link":"https:\/\/joaomagfreitas.link\/reads\/demystifying-web-push-notifications\/","pubDate":"Sat, 02 Dec 2023 09:31:45 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/demystifying-web-push-notifications\/","description":"The following article is an introduction and explanation of web push notifications: what are they, how they work and their internals."},{"title":"One Day Build: Expense Tracking","link":"https:\/\/joaomagfreitas.link\/reads\/one-day-build-expense-tracking\/","pubDate":"Fri, 01 Dec 2023 09:34:52 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/one-day-build-expense-tracking\/","description":"The following blog post is a summary on how to build a simple expense tracking application in one day, using HTML, Node.js and Google Sheets."},{"title":"S3 Express is All You Need","link":"https:\/\/joaomagfreitas.link\/reads\/s3-express-is-all-you-need\/","pubDate":"Thu, 30 Nov 2023 09:38:32 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/s3-express-is-all-you-need\/","description":"The following is an overview on the new cloud service available in AWS - S3 Express - and how big data companies can profit from it."},{"title":"Why do companies hire people to be idle a lot of the time?","link":"https:\/\/joaomagfreitas.link\/reads\/why-do-companies-hire-people-to-be-idle-a-lot-of-the-time\/","pubDate":"Wed, 29 Nov 2023 09:28:10 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/why-do-companies-hire-people-to-be-idle-a-lot-of-the-time\/","description":"In the following article the author reasons about possible theories for why companies hire a ton of tech people, although not having projects for them to work."},{"title":"Google Maps Redesign","link":"https:\/\/joaomagfreitas.link\/reads\/google-maps-redesign\/","pubDate":"Tue, 28 Nov 2023 09:18:29 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/google-maps-redesign\/","description":"The following is a Twitter thread about the redesign of Google Maps, and how its user experience is fading away, as explained by one of the original UX designers."},{"title":"LLM Visualization","link":"https:\/\/joaomagfreitas.link\/reads\/llm-visualization\/","pubDate":"Mon, 27 Nov 2023 10:50:27 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/llm-visualization\/","description":"The following is not a read or an article, it&rsquo;s just a mind blowing 3D representation of a Large Language Model (LLM)."},{"title":"Webmention","link":"https:\/\/joaomagfreitas.link\/reads\/webmention\/","pubDate":"Sun, 26 Nov 2023 09:05:39 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/webmention\/","description":"The following is an explanation to WebMention: an old protocol that connects users between different websites, allowing for one party (website) to receive notifications, comments, feedback from another party (website)."},{"title":"Why Nue?","link":"https:\/\/joaomagfreitas.link\/reads\/why-nue\/","pubDate":"Sat, 25 Nov 2023 09:14:11 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/why-nue\/","description":"The following is the Nue.js manifesto, a JavaScript framework for building website with only Nue markup that is very optimized for Web standards, both in terms of client side rendering, as well as bundling."},{"title":"Law of Demeter","link":"https:\/\/joaomagfreitas.link\/reads\/law-of-demeter\/","pubDate":"Fri, 24 Nov 2023 08:50:23 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/law-of-demeter\/","description":"The following article covers the Law of Demeter which implies that clients can only communicate with their direct dependencies (let&rsquo;s say friends) and never with transitive dependencies (dependency of my dependency)."},{"title":"Why I Tend Not To Use Content Negotiation","link":"https:\/\/joaomagfreitas.link\/reads\/why-i-tend-not-to-use-content-negotiation\/","pubDate":"Thu, 23 Nov 2023 08:42:50 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/why-i-tend-not-to-use-content-negotiation\/","description":"The following article explains why the <code>Accept<\/code> HTTP header should not be used to choose between an hyper-driven response or a plain JSON response."},{"title":"Structured Logging - Reference","link":"https:\/\/joaomagfreitas.link\/reads\/structured-logging-reference\/","pubDate":"Wed, 22 Nov 2023 08:14:39 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/structured-logging-reference\/","description":"The following is the reference for structured logging messages as well as how they should be rendered."},{"title":"Kotlin Multiplatform Development Roadmap for 2024","link":"https:\/\/joaomagfreitas.link\/reads\/kmp-roadmap-2024\/","pubDate":"Tue, 21 Nov 2023 08:03:30 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/kmp-roadmap-2024\/","description":"The following is the roadmap of Kotlin Multiplatform for 2024."},{"title":"Revenge Bedtime Procrastination: Why People Do It and How to Stop","link":"https:\/\/joaomagfreitas.link\/reads\/revenge-bedtime-procrastination-why-people-do-it-how-to-stop\/","pubDate":"Mon, 20 Nov 2023 07:58:39 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/revenge-bedtime-procrastination-why-people-do-it-how-to-stop\/","description":"The following article explains the concept of revenge bedtime procrastination, how it can happen, the downsides associated and how it relates to sleep procrastination."},{"title":"Building a unikernel that runs WebAssembly","link":"https:\/\/joaomagfreitas.link\/reads\/building-a-unikernel-that-runs-webassembly\/","pubDate":"Sun, 19 Nov 2023 09:55:44 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/building-a-unikernel-that-runs-webassembly\/","description":"The following post is a bit theoretical and is worth reading if you&rsquo;re delving in the concepts of WebAssembly. The author explains why he built an unikernel (think of an application that is bundled with the kernel itself) for WebAssembly, what components were used, but does not show any code along the way about how to do it (although sharing a link to a GitHub repository where the project lives)."},{"title":"A new way to bring garbage collected programming languages efficiently to WebAssembly","link":"https:\/\/joaomagfreitas.link\/reads\/a-new-way-to-bring-garbage-collected-programming-languages-efficiently-to-webassembly\/","pubDate":"Sat, 18 Nov 2023 13:23:11 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/a-new-way-to-bring-garbage-collected-programming-languages-efficiently-to-webassembly\/","description":"The following article introduces WASM GC: bringing garbage collection to Web Assembly. It explains topics such as memory fragmentation, inlining and VM compilation."},{"title":"My Company Died\u2014Learn From My Mistakes","link":"https:\/\/joaomagfreitas.link\/reads\/my-company-diedlearn-from-my-mistakes\/","pubDate":"Fri, 17 Nov 2023 09:07:44 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/my-company-diedlearn-from-my-mistakes\/","description":"The following article covers the life and death of Braid: a payments processing and money pool app. It covers the reasons why fraudulent customer are so risky for a company, how the Silicon Valley Bank disrupted the banks business and why it&rsquo;s hard to convince people to use your financial app."},{"title":"Serverless at Scale: Lessons From 200 Million Lambda Invocations","link":"https:\/\/joaomagfreitas.link\/reads\/serverless-at-scale-lessons-from-200-million-lambda-invocations\/","pubDate":"Thu, 16 Nov 2023 08:05:22 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/serverless-at-scale-lessons-from-200-million-lambda-invocations\/","description":"The following article covers what it needs to succeed in a serverless architecture using Lambdas (AWS). It also does the math related to what costs more: going pure serverless or renting server instances."},{"title":"GPU Survival Toolkit for the AI age: The bare minimum every developer must know","link":"https:\/\/joaomagfreitas.link\/reads\/gpu-survival-toolkit-for-the-ai-age-the-bare-minimum-every-developer-must-know\/","pubDate":"Wed, 15 Nov 2023 07:52:09 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/gpu-survival-toolkit-for-the-ai-age-the-bare-minimum-every-developer-must-know\/","description":"The following article covers the basics of GPU programming and explains how programs made to run in a CPU are completely different than those made to run in a GPU, both in the execution and programming model."},{"title":"Business questions worth asking","link":"https:\/\/joaomagfreitas.link\/reads\/business-questions-worth-asking\/","pubDate":"Tue, 14 Nov 2023 07:57:58 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/business-questions-worth-asking\/","description":"The following are a set of questions one may ask about his business in order to evaluate if it&rsquo;s a good idea and if it&rsquo;s going in the right direction."},{"title":"GitHub Actions are a Problem","link":"https:\/\/joaomagfreitas.link\/reads\/github-actions-are-a-problem\/","pubDate":"Mon, 13 Nov 2023 08:30:25 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/github-actions-are-a-problem\/","description":"The following article covers the cons of GitHub Actions as noted by the author. The author also proposes some new CI tooling which serves as a facade for different CI providers. The goal is to write all CI in a single language and then the facade would decide which CI provider to use and transpile the workflow in the chosen provider specification."},{"title":"How to Win Any Hackathon \ud83d\ude80\ud83e\udd11","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-win-any-hackathon\/","pubDate":"Sun, 12 Nov 2023 10:41:51 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-win-any-hackathon\/","description":"In the following article the author explains how having a project template ready to hack on is the primary key for winning an hackathon, since that will enable quick feedback and velocity towards shipping the project."},{"title":"I Skipped to the Ending","link":"https:\/\/joaomagfreitas.link\/reads\/i-skipped-to-the-ending\/","pubDate":"Sat, 11 Nov 2023 08:48:57 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/i-skipped-to-the-ending\/","description":"The following blog post talks about how the author worshiped Google and working there, to knowing what Google has become years later when he finally joined the company. He also shares some really bad insights on how you get promoted at Google and how Google approves engineers to not do anything and still get compensated."},{"title":"Nihilism and the anti-corruption layer","link":"https:\/\/joaomagfreitas.link\/reads\/nihilism-and-the-anti-corruption-layer\/","pubDate":"Fri, 10 Nov 2023 08:26:32 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/nihilism-and-the-anti-corruption-layer\/","description":"The following article touches on two different topics: the main one which is how the author and his team created an anti-corruption layer (wrapper) around the Android Gradle Plugin, and the offside one which involves philosophic points such as Nihilism, and politics."},{"title":"12 Signs You\u2019re Working in a Feature Factory","link":"https:\/\/joaomagfreitas.link\/reads\/12-signs-youre-working-feature-factory\/","pubDate":"Thu, 09 Nov 2023 07:43:05 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/12-signs-youre-working-feature-factory\/","description":"The following post introduces the term feature factory and discusses 12 obvious signs you&rsquo;re working in one. Feature factories tend to lower observability and retrospective of the product for the team, being management the ones who get to make all the calls."},{"title":"Emotion-driven development","link":"https:\/\/joaomagfreitas.link\/reads\/emotion-driven-development\/","pubDate":"Wed, 08 Nov 2023 08:14:23 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/emotion-driven-development\/","description":"The following blog post talks about emotion and how it plays a critical role in software development (or any other task\/job). The author also shares some personal feedback on how to increase happiness in a work environment, and the things to not commit for."},{"title":"The product manager role is a mistake","link":"https:\/\/joaomagfreitas.link\/reads\/the-product-manager-role-is-a-mistake\/","pubDate":"Tue, 07 Nov 2023 08:14:19 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-product-manager-role-is-a-mistake\/","description":"The following piece takes on processes and popular big company models that drive product decisions based on number of people in charge of &ldquo;data-driven&rdquo; decisions. The title is a bit misleading and the author is not bashing product managers as an whole, instead the number of niche managers who get to lead a product."},{"title":"Apple AirTag Reverse Engineering","link":"https:\/\/joaomagfreitas.link\/reads\/apple-air-tag-reverse-engineered\/","pubDate":"Mon, 06 Nov 2023 07:41:29 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/apple-air-tag-reverse-engineered\/","description":"The following article is all about AirTag and how they communicate with Apple devices."},{"title":"The architecture of today's LLM applications","link":"https:\/\/joaomagfreitas.link\/reads\/the-architecture-of-todays-llm-applications\/","pubDate":"Sun, 05 Nov 2023 08:58:06 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-architecture-of-todays-llm-applications\/","description":"The following article covers the steps to build a real world Large Language Model (LLM) based app or architecture, as visioned by GitHub ML engineers."},{"title":"CSS is fun again","link":"https:\/\/joaomagfreitas.link\/reads\/css-is-fun-again\/","pubDate":"Sat, 04 Nov 2023 10:51:49 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/css-is-fun-again\/","description":"The following article describes how native CSS now has features that once were only available in pre processors tools like Sass, providing real examples on how some functions can be used and explored."},{"title":"Unpackign Elixir: Resilience","link":"https:\/\/joaomagfreitas.link\/reads\/unpacking-elixir-resilience\/","pubDate":"Fri, 03 Nov 2023 07:50:45 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/unpacking-elixir-resilience\/","description":"The following article explains how Erlang\/Elixir is designed to provide strong reliability and resilience support for real-time and critical applications."},{"title":"Unpackign Elixir: Syntax","link":"https:\/\/joaomagfreitas.link\/reads\/unpacking-elixir-syntax\/","pubDate":"Thu, 02 Nov 2023 07:50:45 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/unpacking-elixir-syntax\/","description":"The following article explains Elixir syntax, features it provides and it&rsquo;s quirks."},{"title":"Unpackign Elixir: Concurrency","link":"https:\/\/joaomagfreitas.link\/reads\/unpacking-elixir-concurrency\/","pubDate":"Wed, 01 Nov 2023 07:50:45 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/unpacking-elixir-concurrency\/","description":"The following article explains the parallelism model in Erlang\/Elixir.\nhttps:\/\/underjord.io\/unpacking-elixir-concurrency.html\nElixir is the thing I do most of my public writing and speaking about. It is my default programming language for the last 5-6 years. It suits my brain. Performs well for the kind of work I typically do. And using it I have experienced very few drawbacks. Rather than writing yet another post trying to widely summarize what I think is beneficial about the language I want to try and go a bit deeper on one particular aspect I like."},{"title":"Unpackign Elixir: Real-Time Latency","link":"https:\/\/joaomagfreitas.link\/reads\/unpacking-elixir-real-time-latency\/","pubDate":"Tue, 31 Oct 2023 07:50:45 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/unpacking-elixir-real-time-latency\/","description":"The following article covers one of Erlang primitives\/premises, really low latency to achieve real-time results, as well as how Elixir takes advantage of it."},{"title":"Unpackign Elixir: Observability","link":"https:\/\/joaomagfreitas.link\/reads\/unpacking-elixir-observability\/","pubDate":"Mon, 30 Oct 2023 07:59:45 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/unpacking-elixir-observability\/","description":"The following article explains how Erlang\/Elixir VM (BEAM) has the capabilities of providing out-of-the-box support for observability: tracing, telemetry, logging."},{"title":"Simpsons Shorts","link":"https:\/\/joaomagfreitas.link\/projects\/simpsons-shorts\/","pubDate":"Mon, 30 Oct 2023 00:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/projects\/simpsons-shorts\/","description":"The app was developed and built with Compose Multiplatform, a framework to build applications for multiple platforms, without having to rewrite the same code multiple times. It&rsquo;s very similar to Flutter in terms of architecture, declarative programming model and API.\nArchitecture In terms of project structure, the application has been segregated in several different layers:\ncore, responsible for providing the app foundations like DI and state management. data, responsible for providing ways to communicate with external services and data sources."},{"title":"The Case of a Curious SQL Query","link":"https:\/\/joaomagfreitas.link\/reads\/the-case-of-a-curious-sql-query\/","pubDate":"Sun, 29 Oct 2023 08:55:41 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-case-of-a-curious-sql-query\/","description":"The following article introduces how database queries are formed and executed, and how popular databases behave differently in optimization scenarios, due to how queries are formed in their engines."},{"title":"Using extra Firefox profiles to make my life better","link":"https:\/\/joaomagfreitas.link\/reads\/using-extra-firefox-profiles-to-make-my-life-better\/","pubDate":"Sat, 28 Oct 2023 09:16:07 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/using-extra-firefox-profiles-to-make-my-life-better\/","description":"The following is the story on how the author managed to create a JavaScript free experience while browsing the web with Firefox. He has done this by having a main profile with JS disabled and maintaining multiple profiles for websites that require JavaScript for login and etc."},{"title":"My website is one binary","link":"https:\/\/joaomagfreitas.link\/reads\/my-website-is-one-binary\/","pubDate":"Fri, 27 Oct 2023 09:23:08 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/my-website-is-one-binary\/","description":"The following article presents the author ideas in regards Static Site Generators (SSG) and why he ditched them to create his own engine. Take this article with a grain of salt because the author seems to be very opinionated on his views and how he perceives his own world."},{"title":"How to find a lost phone in a no-cell-coverage camping site","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-find-a-lost-phone-in-a-no-cell-coverage-camping-site\/","pubDate":"Thu, 26 Oct 2023 12:26:49 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-find-a-lost-phone-in-a-no-cell-coverage-camping-site\/","description":"The following is the story of how the author was able to find his cousin smartphone in the jungle, where no cell satellite was available. Spoiler: they were able to detect the phone by creating a fake WiFi network that matches the same configuration as the cousin home WiFi."},{"title":"I\u2019m Too Addicted to My iPhone","link":"https:\/\/joaomagfreitas.link\/reads\/im-too-addicted-to-my-phone\/","pubDate":"Wed, 25 Oct 2023 08:00:32 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/im-too-addicted-to-my-phone\/","description":"The following is a write-up on the author&rsquo;s daily smartphone usage, and how he decided to reduce it without making drastic moves."},{"title":"Why We Don\u2019t Ship Software as Fast as We Used To","link":"https:\/\/joaomagfreitas.link\/reads\/why-we-dont-ship-software-as-fast-as-we-used-to\/","pubDate":"Tue, 24 Oct 2023 08:41:55 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/why-we-dont-ship-software-as-fast-as-we-used-to\/","description":"The following article is really interesting. It takes on the topic of today&rsquo;s software development and how it became slow and bloated in comparison to old developed software."},{"title":"The State of WebAssembly 2023","link":"https:\/\/joaomagfreitas.link\/reads\/the-state-of-webassembly-2023\/","pubDate":"Mon, 23 Oct 2023 09:47:37 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-state-of-webassembly-2023\/","description":"The following are statistics on the usage and adoption of web assembly in different programming languages, applications and use cases in 2023."},{"title":"The open source gift exchange","link":"https:\/\/joaomagfreitas.link\/reads\/the-open-source-gift-exchange\/","pubDate":"Sun, 22 Oct 2023 09:03:13 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-open-source-gift-exchange\/","description":"The following is an opinion on how people perceive open-source and how the author believes that commercial open-source is right."},{"title":"The Half-Life of the AI Stack","link":"https:\/\/joaomagfreitas.link\/reads\/the-half-life-of-the-ai-stack\/","pubDate":"Sat, 21 Oct 2023 08:51:33 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-half-life-of-the-ai-stack\/","description":"The following is a reflection on what&rsquo;s happening right now in AI development, and how infrastructure to support AI native applications is one of the core investments by companies and startups."},{"title":"Smart home notifications for when someone makes tea","link":"https:\/\/joaomagfreitas.link\/reads\/getting-daily-notifications-my-parent-is-okay\/","pubDate":"Fri, 20 Oct 2023 17:37:37 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/getting-daily-notifications-my-parent-is-okay\/","description":"The following articles describes how to setup a notification system for receiving alerts when your loved on boils water for tea."},{"title":"You can't get faster than No Build","link":"https:\/\/joaomagfreitas.link\/reads\/you-cant-get-faster-than-no-build\/","pubDate":"Thu, 19 Oct 2023 09:27:07 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/you-cant-get-faster-than-no-build\/","description":"The following is a bit on web application development specifically for the build phase where bundling of JavaScript files happens (bundling = putting all\/some files in a single file). David argues that with new browser capabilities and HTTP\/2, developers don&rsquo;t need to recur for bundling since fetching files has been faster than ever."},{"title":"Kotlin Reflection: Method and property references","link":"https:\/\/joaomagfreitas.link\/reads\/kotlin-reflection-method-and-property-references\/","pubDate":"Wed, 18 Oct 2023 10:10:45 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/kotlin-reflection-method-and-property-references\/","description":"The following article is a complete rundown on the available API to use and abuse of JVM reflection using Kotlin."},{"title":"Mastering Conflict Resolution: 8 Expert Tips to Transform Challenging Interactions into Opportunities","link":"https:\/\/joaomagfreitas.link\/reads\/mastering-conflict-resolution-8-expert-tips-to-transform-challenging-interactions-into-opportunities\/","pubDate":"Tue, 17 Oct 2023 08:34:26 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/mastering-conflict-resolution-8-expert-tips-to-transform-challenging-interactions-into-opportunities\/","description":"The following is a small guide on conflict resolution."},{"title":"Farmers turn to tech as bees struggle to pollinate","link":"https:\/\/joaomagfreitas.link\/reads\/farmers-artificial-tech-to-save-honeybees\/","pubDate":"Mon, 16 Oct 2023 07:54:46 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/farmers-artificial-tech-to-save-honeybees\/","description":"The following news article covers the current stress of maintaining a sustainable rate of existing bees, as their population is struggling because of climate changes and aggressive farming."},{"title":"A Guide to Open Source Platform Engineering","link":"https:\/\/joaomagfreitas.link\/reads\/a-guide-to-open-source-platform-engineering\/","pubDate":"Sun, 15 Oct 2023 07:50:58 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/a-guide-to-open-source-platform-engineering\/","description":"The following article talks about DevOps for app teams, how to setup an Internal Developer Platform (IDP) to fulfill the DevOps cycle, what is and how to mitigate Ops Sprawl, and why you must care about the cloud vendors you will rely on."},{"title":"Getting to the first 1K Github Stars is the hardest","link":"https:\/\/joaomagfreitas.link\/reads\/getting-to-the-first-1k-github-stars-is-the-hardest\/","pubDate":"Sat, 14 Oct 2023 08:31:11 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/getting-to-the-first-1k-github-stars-is-the-hardest\/","description":"The following article describes the journey of Lago reaching the 1000 stars milestone on GitHub."},{"title":"Bun: lessons from disrupting a tech ecosystem","link":"https:\/\/joaomagfreitas.link\/reads\/bun-lessons-from-disruption\/","pubDate":"Fri, 13 Oct 2023 07:57:39 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/bun-lessons-from-disruption\/","description":"The following is a take on the recent Bun disruption in the Web development ecosystem. It contrasts the benefits that Bun provides with the cons of being an almost solo development product."},{"title":"Android 14 Changelog","link":"https:\/\/joaomagfreitas.link\/reads\/android-developers-blog-android-14-is-live-in-aosp\/","pubDate":"Thu, 12 Oct 2023 07:26:24 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/android-developers-blog-android-14-is-live-in-aosp\/","description":"The following are all the features and updates that Android 14 brings in for developers."},{"title":"Multi-Modal AI is a UX Problem","link":"https:\/\/joaomagfreitas.link\/reads\/multi-modal-ai-problem\/","pubDate":"Wed, 11 Oct 2023 07:41:57 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/multi-modal-ai-problem\/","description":"The following bit explains why current AI solutions don&rsquo;t provide the best UX for common use cases, describing why chat bots are just a way to onboard people in AI tools."},{"title":"Clean Code with Kotlin","link":"https:\/\/joaomagfreitas.link\/reads\/clean-code-with-kotlin\/","pubDate":"Tue, 10 Oct 2023 18:13:36 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/clean-code-with-kotlin\/","description":"Although an old article (2017), it presents how Kotlin helps promote the Clean Code principles and how it can&rsquo;t help."},{"title":"Looney Tunables: Local Privilege Escalation in the glibc's ld.so (CVE-2023-4911)","link":"https:\/\/joaomagfreitas.link\/reads\/looney-tunables-local-privesc-writeup\/","pubDate":"Mon, 09 Oct 2023 08:10:06 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/looney-tunables-local-privesc-writeup\/","description":"The following is a writeup on the recent buffer overflow found in glibc dynamic loader (CVE-2023-4911)."},{"title":"Smart Programmers Write STUPID Code","link":"https:\/\/joaomagfreitas.link\/reads\/smart-programmers-write-stupid-code\/","pubDate":"Sun, 08 Oct 2023 06:55:44 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/smart-programmers-write-stupid-code\/","description":"The following is a interesting take on software complexity and how we design systems. The author proposes the STUPID principles, which stands for Simples, Testable, Ubiquitous, Proper, Incremental and Decoupled."},{"title":"Your Organization Probably Doesn't Want To Improve Things","link":"https:\/\/joaomagfreitas.link\/reads\/your-organization-probably-doesnt-want-to-improve-things\/","pubDate":"Sat, 07 Oct 2023 23:20:35 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/your-organization-probably-doesnt-want-to-improve-things\/","description":"The following article takes on the issues about data metrics in big organizations, people happiness, salary and how product managers derail a product to save their jobs."},{"title":"Sonoma\u2019s log gets briefer and more secretive","link":"https:\/\/joaomagfreitas.link\/reads\/sonomas-log-gets-briefer-and-more-secretive\/","pubDate":"Fri, 06 Oct 2023 23:13:30 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/sonomas-log-gets-briefer-and-more-secretive\/","description":"The following is a writeup on the changes to Unified Logs in macOS Sonoma - the system logging viewer for macOS."},{"title":"Role Of Algorithms","link":"https:\/\/joaomagfreitas.link\/reads\/role-of-algorithms\/","pubDate":"Thu, 05 Oct 2023 22:57:01 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/role-of-algorithms\/","description":"The following is an explanation on why practicing algorithm problems improves software engineers mindset, as well as presenting use cases for several algorithms and data structures."},{"title":"Anthropic Decomposing Language Models Into Understandable Components","link":"https:\/\/joaomagfreitas.link\/reads\/anthropic-decomposing-language-models-into-understandable-components\/","pubDate":"Wed, 04 Oct 2023 22:54:37 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/anthropic-decomposing-language-models-into-understandable-components\/","description":"The following is a brief but deep explanation on how Large Language Models work at the atomic level."},{"title":"Scrum Terminology","link":"https:\/\/joaomagfreitas.link\/reads\/scrum-terminology\/","pubDate":"Tue, 03 Oct 2023 08:02:12 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/scrum-terminology\/","description":"The following is the original Scrum terminology, as defined by the authors Jeff Sutherland and Ken Schwaber."},{"title":"Optimize thermal and CPU performance with the Android Dynamic Performance Framework","link":"https:\/\/joaomagfreitas.link\/reads\/optimize-thermal-and-cpu-performance-with-the-android-dynamic-performance-framework\/","pubDate":"Mon, 02 Oct 2023 07:56:44 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/optimize-thermal-and-cpu-performance-with-the-android-dynamic-performance-framework\/","description":"The following is a guide on how to debug and monitor an Android application performance impact if the device thermal state increases."},{"title":"Open Source does not win by being cheaper","link":"https:\/\/joaomagfreitas.link\/reads\/open-source-does-not-win-by-being-cheaper\/","pubDate":"Sun, 01 Oct 2023 09:48:25 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/open-source-does-not-win-by-being-cheaper\/","description":"The following article explains the business perspective of building an open-source product, and how it doesn&rsquo;t mean that the product will be successful by open and free."},{"title":"Kotlin just got Virtual Threads","link":"https:\/\/joaomagfreitas.link\/reads\/kotlin-just-got-virtual-threads\/","pubDate":"Sat, 30 Sep 2023 09:42:48 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/kotlin-just-got-virtual-threads\/","description":"The following article explains the new Virtual Threads feature available in Java 21 and how it can also be used in Kotlin."},{"title":"Kotlin \u2014 Shallow vs Deep Copy Explained","link":"https:\/\/joaomagfreitas.link\/reads\/kotlin-shallow-vs-deep-copy-explained\/","pubDate":"Fri, 29 Sep 2023 09:45:23 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/kotlin-shallow-vs-deep-copy-explained\/","description":"The following is quick explanation on the differences between shallow and deep copy, and both can be used in Kotlin."},{"title":"Wifi without internet on a Southwest flight","link":"https:\/\/joaomagfreitas.link\/reads\/wifi-without-internet-on-a-southwest-flight\/","pubDate":"Thu, 28 Sep 2023 09:38:26 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/wifi-without-internet-on-a-southwest-flight\/","description":"The following is a write-up on how a plane WiFi behaves to control if the user can access the Internet or not."},{"title":"The Musk Algorithm","link":"https:\/\/joaomagfreitas.link\/reads\/the-musk-algorithm\/","pubDate":"Wed, 27 Sep 2023 07:45:42 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/the-musk-algorithm\/","description":"The following is an introduction\/explanation to the &ldquo;algorithm&rdquo; that Elon Musk uses to ship products."},{"title":"Quadlets might make me finally stop using docker-compose","link":"https:\/\/joaomagfreitas.link\/reads\/introduction-to-quadlets\/","pubDate":"Tue, 26 Sep 2023 07:45:42 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/introduction-to-quadlets\/","description":"The following is an introduction to quadlets, a container manager built in podman, that can be used to replace docker-compose."},{"title":"Guidelines for Discussing UX","link":"https:\/\/joaomagfreitas.link\/reads\/guidelines-for-discuss-ux\/","pubDate":"Mon, 25 Sep 2023 08:10:50 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/guidelines-for-discuss-ux\/","description":"The following is a set of guidelines a team can use to discuss the user experience of their product."},{"title":"Improving Text Editing on Mobile","link":"https:\/\/joaomagfreitas.link\/reads\/improving-text-editing-on-mobile\/","pubDate":"Sun, 24 Sep 2023 08:10:50 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/improving-text-editing-on-mobile\/","description":"The following articles tackles the issue of editing text on mobile devices (both Android and iOS), explaining the pain points around it and how they can be solved."},{"title":"More Than Money: Finding Deeper Value in Coding","link":"https:\/\/joaomagfreitas.link\/reads\/more-than-money-finding-deeper-value-in-coding\/","pubDate":"Sat, 23 Sep 2023 07:21:07 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/more-than-money-finding-deeper-value-in-coding\/","description":"The following is an interesting take on coding for money, and why the market right now might feel closed because of the pandemic."},{"title":"What we talk about when we talk about impostor syndrome","link":"https:\/\/joaomagfreitas.link\/reads\/what-we-talk-about-when-we-talk-about-impostor-syndrome\/","pubDate":"Fri, 22 Sep 2023 06:56:34 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/what-we-talk-about-when-we-talk-about-impostor-syndrome\/","description":"The following article explains the why&rsquo;s and how&rsquo;s developers feel impostor syndrome, as well as ways to remediate this feeling in an organization."},{"title":"GitHub Bookmark","link":"https:\/\/joaomagfreitas.link\/projects\/github-bookmark\/","pubDate":"Fri, 22 Sep 2023 00:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/projects\/github-bookmark\/","description":"During 2023 I shared an article I&rsquo;ve read in my blog.\nUsually I bookmark articles to read in the next few days, but I rarely access my bookmark folder to revisit them \ud83e\udd37 My solution for this problem is to post the articles I certainly know I want to read, as an issue in my blog GitHub repository. This extension helps me automate the process of creating the issue, by mimicking the process of bookmarking a page in the browser."},{"title":"100 Parking Tickets","link":"https:\/\/joaomagfreitas.link\/reads\/100-parking-tickets\/","pubDate":"Thu, 21 Sep 2023 06:34:25 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/100-parking-tickets\/","description":"The following is a story of the scary non automated bureaucratic processes that each country has, specifically in the Departement of Motor Vehicles (DMV) of California. The author decided to pick a license plate with is initials (NV), which matches the label used to identify vehicles which the license plate is not visible, which made the author receive well over 100 parking tickets for different cars."},{"title":"Moneyball for engineers","link":"https:\/\/joaomagfreitas.link\/reads\/moneyball-for-engineers\/","pubDate":"Wed, 20 Sep 2023 06:46:41 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/moneyball-for-engineers\/","description":"The following article discusses the metric of &ldquo;GitHub green squares&rdquo; in getting a new job at a Tech company for Junior\/Interns."},{"title":"Fixing For Loops in Go","link":"https:\/\/joaomagfreitas.link\/reads\/fixing-for-loops-go\/","pubDate":"Tue, 19 Sep 2023 07:55:16 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/fixing-for-loops-go\/","description":"The following is a write-up by Google on one of the major bugs found in Go codebases: reusing variables scoped in for-loops."},{"title":"A look at Apple\u2019s new Transformer-powered predictive text model","link":"https:\/\/joaomagfreitas.link\/reads\/apple-new-predictive-text-model\/","pubDate":"Mon, 18 Sep 2023 07:41:57 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/apple-new-predictive-text-model\/","description":"The following article provides insights on how Apple&rsquo;s new language model for suggesting new words as an &ldquo;auto-complete&rdquo; feature in a phrase works."},{"title":"In a git repository, where do your files live?","link":"https:\/\/joaomagfreitas.link\/reads\/in-a-git-repository-where-do-your-files-live\/","pubDate":"Sun, 17 Sep 2023 00:05:35 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/in-a-git-repository-where-do-your-files-live\/","description":"The following article explains how Git stores different versions of files and their internals, using small python scripts."},{"title":"Don\u2019t mess with a genius","link":"https:\/\/joaomagfreitas.link\/reads\/dont-mess-with-a-genius\/","pubDate":"Sat, 16 Sep 2023 08:31:40 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/dont-mess-with-a-genius\/","description":"The following is a story of how Isaac Newton went on to become a warden\/guard and defending the royal mint over the years, becoming a detective, saving the economy and throwing countless of counterfeiters to jail and death."},{"title":"IP Geolocation Database from Scratch","link":"https:\/\/joaomagfreitas.link\/reads\/ip-geolocation-database-from-scratch\/","pubDate":"Fri, 15 Sep 2023 08:12:29 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/ip-geolocation-database-from-scratch\/","description":"The following is a write-up on how ipai.is built a geolocation database from scratch."},{"title":"Mermaid Cheat Sheet","link":"https:\/\/joaomagfreitas.link\/reads\/mermaid-cheat-sheet\/","pubDate":"Thu, 14 Sep 2023 07:03:55 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/mermaid-cheat-sheet\/","description":"The following is a cheat-sheet for creating diagrams with mermaid.js."},{"title":"Introducing Story Protocol","link":"https:\/\/joaomagfreitas.link\/reads\/story-protocol\/","pubDate":"Wed, 13 Sep 2023 08:10:22 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/story-protocol\/","description":"The following article is an introduction to the upcoming blockchain protocol that aims to solve the Intellectual Property (IP) problem on the internet. The authors claim that the protocol will be able to trace every usage of a registered IP in the blockchain and then claim monetization of it, based on the attributed licence."},{"title":"The Economics of Software Development: Beyond Cost","link":"https:\/\/joaomagfreitas.link\/reads\/economics-of-software-development-beyond-cost\/","pubDate":"Tue, 12 Sep 2023 07:51:11 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/economics-of-software-development-beyond-cost\/","description":"The following article tries to convince businesses looking for Software development agencies, to not look at the cost of software as a short term investment, but a long one instead."},{"title":"Memories from old LAN parties","link":"https:\/\/joaomagfreitas.link\/reads\/memories-from-old-lan-parties\/","pubDate":"Mon, 11 Sep 2023 06:43:33 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/memories-from-old-lan-parties\/","description":"The following is a blog post about how it was to participate\/run a LAN party in the 2000s. The author shares some techniques people used to boost their appearance, as well as stories of what happened to people when they were caught cheathing."},{"title":"Open source hooliganism and the TypeScript meltdown","link":"https:\/\/joaomagfreitas.link\/reads\/open-source-hooliganism-and-the-typescript-meltdown\/","pubDate":"Sun, 10 Sep 2023 08:25:21 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/open-source-hooliganism-and-the-typescript-meltdown\/","description":"The following is the story of how HEY suffered a massive influx of hate and disapprove, after they announced the drop of TypeScript for Turbo (a library\/framework to build web application with less JavaScript). Most of this hate comes from the fans of influencers who mocked HEY for this decision."},{"title":"We have left the cloud","link":"https:\/\/joaomagfreitas.link\/reads\/we-have-left-the-cloud\/","pubDate":"Sat, 09 Sep 2023 00:00:36 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/we-have-left-the-cloud\/","description":"The following is a write-up on the success story of Basecamp leaving the cloud. They share how they have done it, as well as how much money they saved."},{"title":"An Internet of PHP","link":"https:\/\/joaomagfreitas.link\/reads\/an-internet-of-php\/","pubDate":"Fri, 08 Sep 2023 07:53:43 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/an-internet-of-php\/","description":"The following articles explains how the Internet is built on PHP. The author also clarifies that developers claim that PHP is dead, because they want it dead, and not because it&rsquo;s actually dead (while providing statistical evidence of that)."},{"title":"Designing a Functional Library","link":"https:\/\/joaomagfreitas.link\/reads\/designing-a-functional-library\/","pubDate":"Thu, 07 Sep 2023 07:14:38 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/designing-a-functional-library\/","description":"The following article provides the basics of thinking in a functional way, by designing an implementing a templating library from scratch, in Kotlin."},{"title":"Kotlin Anti-Patterns \u2013 Also this is Null","link":"https:\/\/joaomagfreitas.link\/reads\/kotlin-anti-patterns-also-this-is-null\/","pubDate":"Wed, 06 Sep 2023 06:45:04 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/kotlin-anti-patterns-also-this-is-null\/","description":"The following article explains why null operators in Kotlin are an anti-pattern."},{"title":"Why I don\u2019t buy \u201cduplication is cheaper than the wrong abstraction\u201d","link":"https:\/\/joaomagfreitas.link\/reads\/duplication-cheaper-wrong-abstraction\/","pubDate":"Tue, 05 Sep 2023 07:45:18 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/duplication-cheaper-wrong-abstraction\/","description":"The following is a response to &ldquo;The Wrong Abstraction&rdquo; article. The author takes on the bit saying that, there&rsquo;s no such thing as wrong abstraction, it&rsquo;s just bad code. Following up on this premise, duplicated code is just wrong."},{"title":"Random Load Balancing is Unevenly Distributed","link":"https:\/\/joaomagfreitas.link\/reads\/random-load-balancing-is-uneven\/","pubDate":"Mon, 04 Sep 2023 07:55:36 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/random-load-balancing-is-uneven\/","description":"The following article takes on the problem of distributing load\/load balancing, critizing the bad usage of randomness for the job. The author uses statistical methods to explain that, if randomness comes to play, most servers will be on idle, instead of all of them being evenly distributed."},{"title":"Graph Slider","link":"https:\/\/joaomagfreitas.link\/reads\/graph-slider\/","pubDate":"Sun, 03 Sep 2023 09:06:39 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/graph-slider\/","description":"The following article teaches how you can create a beautiful graph slider with only SVG."},{"title":"Absurd Success (Marginalia Outage)","link":"https:\/\/joaomagfreitas.link\/reads\/marginalia-outage\/","pubDate":"Sat, 02 Sep 2023 11:14:36 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/marginalia-outage\/","description":"The following is a writeup on how Marginalia, an independent open-source search engine, was able to drill down a RAM and Disk scaling problem, which caused the project an outage of several days."},{"title":"How to publish a Java\/Kotlin library to Maven Central","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-publish-to-maven-central\/","pubDate":"Fri, 01 Sep 2023 07:53:39 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-publish-to-maven-central\/","description":"The following is a step-by-step guide on publishing a Java\/Kotlin library to Maven Central repository, going all from registering yourself\/organization as an identity in Sonatype, to automating the publising process with GitHub Actions."},{"title":"Publishing a Kotlin library as a gradle dependency to Jitpack or GitHub Packages repository","link":"https:\/\/joaomagfreitas.link\/reads\/publish-kotlin-library-as-gradle-dep\/","pubDate":"Thu, 31 Aug 2023 07:11:54 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/publish-kotlin-library-as-gradle-dep\/","description":"The following article teaches how to publish a Kotlin library to JitPack or GitHub Packages, using Gradle build tool."},{"title":"Grave flaws in BGP Error handling","link":"https:\/\/joaomagfreitas.link\/reads\/grave-flaws-in-bgp-error-handling\/","pubDate":"Wed, 30 Aug 2023 18:42:40 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/grave-flaws-in-bgp-error-handling\/","description":"The following articles explains how the BGP protocol (used to bridge ISP networks) is completely flawed, and how different protocol implementation can disrupt an entire network. Really good read!"},{"title":"Rethinking infrastructure as code from scratch","link":"https:\/\/joaomagfreitas.link\/reads\/rethinking-infrastructure-as-code-from-scratch\/","pubDate":"Tue, 29 Aug 2023 08:11:54 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/rethinking-infrastructure-as-code-from-scratch\/","description":"The following article takes on the cons of today&rsquo;s Infrastructure as Code (IaC), providing some ideas on how it could get better by learning from other declarative languages."},{"title":"Invisible Details of Interaction Design","link":"https:\/\/joaomagfreitas.link\/reads\/invisible-details-interaction-design\/","pubDate":"Mon, 28 Aug 2023 08:11:54 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/invisible-details-interaction-design\/","description":"The following is a comphrensive guide on the little things that make interactions really pleasing for humans, using real examples employed in Apple products."},{"title":"Running WASI binaries from your HTML using Web Components","link":"https:\/\/joaomagfreitas.link\/reads\/running-wasi-from-html-web-components\/","pubDate":"Sun, 27 Aug 2023 08:11:54 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/running-wasi-from-html-web-components\/","description":"The following article teaches about <code>WASM<\/code>, <code>WASI<\/code>, Web Components and how easy it is to plug a Web Component that runs pre-compiled WASM code in the browser."},{"title":"That Old NetBSD Server, Running Since 2010","link":"https:\/\/joaomagfreitas.link\/reads\/running-netbsd-since-2010\/","pubDate":"Sat, 26 Aug 2023 08:11:54 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/running-netbsd-since-2010\/","description":"The following is a critique on today&rsquo;s meaning of open-source, how it&rsquo;s branded, and how it affects the true value it provides, by masking the truth of open-source."},{"title":"Open-Source Washing","link":"https:\/\/joaomagfreitas.link\/reads\/open-source-washing\/","pubDate":"Fri, 25 Aug 2023 08:11:54 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/open-source-washing\/","description":"The following is a critique on today&rsquo;s meaning of open-source, how it&rsquo;s branded, and how it affects the true value it provides, by masking the truth of open-source."},{"title":"The ideal viewport doesn\u2019t exist","link":"https:\/\/joaomagfreitas.link\/reads\/the-ideal-viewport-doesnt-exist\/","pubDate":"Thu, 24 Aug 2023 19:51:55 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-ideal-viewport-doesnt-exist\/","description":"Today\u2019s read is about devices dimensions, sizes, viewports, pixels, you name it. The web page is so beautifully crafted, that I couldn\u2019t just archive the content as plain markdown."},{"title":"Default behaviour sticks (And so do examples)","link":"https:\/\/joaomagfreitas.link\/reads\/default-behaviour-sticks-and-so-do-examples\/","pubDate":"Wed, 23 Aug 2023 07:48:44 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/default-behaviour-sticks-and-so-do-examples\/","description":"The following articles discusses the pattern that humans stick to keywords and phrases that they read the first time they discover something new. This maybe an issue when providing examples of how things should be named, because humans might just use that example as the source-of-truth."},{"title":"GNU Parallel, where have you been all my life?","link":"https:\/\/joaomagfreitas.link\/reads\/gnu-parallel-where-have-you-been-all-my-life\/","pubDate":"Tue, 22 Aug 2023 06:54:47 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/gnu-parallel-where-have-you-been-all-my-life\/","description":"The following article describes <code>paralell<\/code> how it can be used to parallelize tasks in shell scripts."},{"title":"How is LLaMa.cpp possible?","link":"https:\/\/joaomagfreitas.link\/reads\/how-is-llamacpp-possible\/","pubDate":"Mon, 21 Aug 2023 07:07:17 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-is-llamacpp-possible\/","description":"The following articles provides some insights on how LLaMA.cpp was achieved and describes the features it provides, since it doesn&rsquo;t require a GPU to run it."},{"title":"Rolling Your Own Crypto","link":"https:\/\/joaomagfreitas.link\/reads\/rolling-your-own-crypto\/","pubDate":"Sun, 20 Aug 2023 21:28:09 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/rolling-your-own-crypto\/","description":"The following article discusses the failing points and gives advices when rolling your own cryptography usage."},{"title":"Why your blog still needs RSS \u2014 Paolo Amoroso's Journal","link":"https:\/\/joaomagfreitas.link\/reads\/why-your-blog-still-needs-rss\/","pubDate":"Sat, 19 Aug 2023 16:06:09 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/why-your-blog-still-needs-rss\/","description":"The following articles describes the value of RSS and why it shouldn&rsquo;t be thought as an old technology, and thus being deprecated."},{"title":"How we improved our Serverless API 300x","link":"https:\/\/joaomagfreitas.link\/reads\/how-we-improved-our-serverless-api-300x\/","pubDate":"Fri, 18 Aug 2023 06:57:25 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-we-improved-our-serverless-api-300x\/","description":"The following article is a writeup how a team ended up with responses of 20 seconds and being able to shorten it to 60 milliseconds. The main problem in their stack was the incorrect design of a DynamoDB table, which was solved by adding index keys to accelerate queries and drop usage of filters."},{"title":"My Everyday LLM Uses","link":"https:\/\/joaomagfreitas.link\/reads\/my-everyday-llm-uses\/","pubDate":"Thu, 17 Aug 2023 06:40:23 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/my-everyday-llm-uses\/","description":"The following is a list of use cases where author applies LLMs."},{"title":"How to bypass YouTube video downloading throttling","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-bypass-youtube-video-downloading-throttling\/","pubDate":"Wed, 16 Aug 2023 07:43:59 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-bypass-youtube-video-downloading-throttling\/","description":"The following is a guide on how tools and websites that provide users a way to download YouTube videos manage to bypass Google&rsquo;s throttling mechanisms, deployed to prevent downloading by 3rd party tools."},{"title":"Google Online Security Blog: Android 14 introduces first-of-its-kind cellular connectivity security features","link":"https:\/\/joaomagfreitas.link\/reads\/android-14-introduces-first-of-its-kind-cellular-connectivity-security-features\/","pubDate":"Tue, 15 Aug 2023 11:09:15 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/android-14-introduces-first-of-its-kind-cellular-connectivity-security-features\/","description":"The following is a description of the new cellular connectivity features that are rolling in Android 14."},{"title":"The Source of Readability","link":"https:\/\/joaomagfreitas.link\/reads\/the-source-of-readability\/","pubDate":"Mon, 14 Aug 2023 11:00:52 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-source-of-readability\/","description":"The following is an article on software source-code readability. It explains why readability isn&rsquo;t just a common agreement between team members, ways to promote readability and provides examples of how things can go wrong if software principles are not applied."},{"title":"How to Do a Clean Restart of a Docker Instance","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-do-a-clean-restart-of-a-docker-instance\/","pubDate":"Sun, 13 Aug 2023 10:54:35 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-do-a-clean-restart-of-a-docker-instance\/","description":"The following is a short snippet on how to perform a clean restart of a Docker container\/instance."},{"title":"I don't want to host services (but I do)","link":"https:\/\/joaomagfreitas.link\/reads\/i-dont-want-to-host-services-but-i-do\/","pubDate":"Sat, 12 Aug 2023 11:16:43 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/i-dont-want-to-host-services-but-i-do\/","description":"The following bit is about self-hosting and hosting software for others. It covers the maintenance it takes to host services, security and privacy topics and why things can get messy and boredom."},{"title":"Llama from scratch (or how to implement a paper without crying)","link":"https:\/\/joaomagfreitas.link\/reads\/llama-from-scratch-or-how-to-implement-a-paper-without-crying\/","pubDate":"Fri, 11 Aug 2023 11:06:44 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/llama-from-scratch-or-how-to-implement-a-paper-without-crying\/","description":"The following article provides a step by step walk through to implement LLaMA (&ldquo;foundational large language model&rdquo; by Meta AI) in Python solely using the paper. The official paper can be found here: <a href=\"https:\/\/arxiv.org\/pdf\/2302.13971.pdf\">https:\/\/arxiv.org\/pdf\/2302.13971.pdf<\/a>"},{"title":"Host a Llama 2 API on GPU for Free","link":"https:\/\/joaomagfreitas.link\/reads\/host-a-llama-2-api-on-gpu-for-free\/","pubDate":"Thu, 10 Aug 2023 11:12:14 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/host-a-llama-2-api-on-gpu-for-free\/","description":"The following is a tutorial on how to serve a LLaMA 2 API for free using Google Colab."},{"title":"The SEO scam: 62,000 dollars later","link":"https:\/\/joaomagfreitas.link\/reads\/the-seo-scam-62000-dollars-later\/","pubDate":"Wed, 09 Aug 2023 10:52:34 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-seo-scam-62000-dollars-later\/","description":"The following is a write-up on how a company lost $62K and ton of time trying to enrich their SEO presence via a SEO agency. Many mistakes and falsehoods provided by the agency can be found here."},{"title":"Some tactics for writing in public","link":"https:\/\/joaomagfreitas.link\/reads\/some-tactics-for-writing-in-public\/","pubDate":"Tue, 08 Aug 2023 19:45:16 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/some-tactics-for-writing-in-public\/","description":"The following is a set of tips for writing\/sharing\/learning in public."},{"title":"Catching up on the weird world of LLMs","link":"https:\/\/joaomagfreitas.link\/reads\/catching-up-on-the-weird-world-of-llms\/","pubDate":"Mon, 07 Aug 2023 19:02:13 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/catching-up-on-the-weird-world-of-llms\/","description":"The following is an in depth, but really good explanation of Large Language Models (LLMs), describing what exactly they are (programming and file perspectives), how you can use them, how they are made, their classes, existing LLMs and more!"},{"title":"Memex is already here, it\u2019s just not evenly distributed","link":"https:\/\/joaomagfreitas.link\/reads\/memex-is-already-here-its-just-not-evenly-distributed\/","pubDate":"Sun, 06 Aug 2023 14:12:53 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/memex-is-already-here-its-just-not-evenly-distributed\/","description":"The following articles explains the concept of Memex, it&rsquo;s history and how effective it can be. Memex is a knowledge management tool, designed by Vannevar Bush in 1945, that allows to store information (documents, images, notes) and access them quickly in a later stage, minimizing the need for searching information. The author shares a way to create your own memex with a simple layout system in a computer."},{"title":"BadAppleFont :: Oxidizing corner","link":"https:\/\/joaomagfreitas.link\/reads\/badapplefont-oxidizing-corner\/","pubDate":"Sat, 05 Aug 2023 10:21:10 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/badapplefont-oxidizing-corner\/","description":"The following is a write-up on how the author managed to embed an animation in type font."},{"title":"Transform Your Android Device into a Linux Desktop","link":"https:\/\/joaomagfreitas.link\/reads\/transform-your-android-device-into-a-linux-desktop\/","pubDate":"Fri, 04 Aug 2023 10:01:08 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/transform-your-android-device-into-a-linux-desktop\/","description":"The following is a comprehensive guide on how you can setup a Linux Desktop Environment using an Android phone and Termux."},{"title":"Five ways to increase API performance","link":"https:\/\/joaomagfreitas.link\/reads\/5-ways-to-increase-api-performance\/","pubDate":"Thu, 03 Aug 2023 10:44:53 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/5-ways-to-increase-api-performance\/","description":"Below are five ways to increase an API performance."},{"title":"Atomic Accountability","link":"https:\/\/joaomagfreitas.link\/reads\/atomic-accountability\/","pubDate":"Wed, 02 Aug 2023 16:26:55 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/atomic-accountability\/","description":"The following articles talks about the ultimate measure to fix procrastination: putting yourself at the shame of others."},{"title":"I'm betting on HTML","link":"https:\/\/joaomagfreitas.link\/reads\/im-betting-on-html\/","pubDate":"Tue, 01 Aug 2023 15:48:37 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/im-betting-on-html\/","description":"The following is a review on new official HTML elements that power a more semantic web. The author believes that building websites with these elements will make it more easier for scrapers and furthermore LLMs to interpret data, and ultimately, help humans."},{"title":"So, you want to deploy on the edge?","link":"https:\/\/joaomagfreitas.link\/reads\/so-you-want-to-deploy-on-the-edge\/","pubDate":"Mon, 31 Jul 2023 15:41:51 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/so-you-want-to-deploy-on-the-edge\/","description":"The following articles explains the problem of data consistency and replication when deploying instances on the edge."},{"title":"Stopping at 90%","link":"https:\/\/joaomagfreitas.link\/reads\/stopping-at-90\/","pubDate":"Sun, 30 Jul 2023 16:19:51 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/stopping-at-90\/","description":"The following articles discusses a common pattern that software engineers fall in related to leaving a project moments before crossing the finish line."},{"title":"The rise of makers \u2013 Dimitri Glazkov","link":"https:\/\/joaomagfreitas.link\/reads\/the-rise-of-makers-dimitri-glazkov\/","pubDate":"Sat, 29 Jul 2023 16:43:54 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-rise-of-makers-dimitri-glazkov\/","description":"The following is a definition of makers, what they do, their motivations and their usual life-cycle."},{"title":"Apple already shipped attestation on the web, and we barely noticed","link":"https:\/\/joaomagfreitas.link\/reads\/apple-already-shipped-attestation-on-the-web-and-we-barely-noticed\/","pubDate":"Fri, 28 Jul 2023 08:02:31 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/apple-already-shipped-attestation-on-the-web-and-we-barely-noticed\/","description":"The following is a summary on attestation and Web Integrity Environment, a new proposal by Google and Apple to verify servers. In short, these proposals require servers to complete a challenge based on a token that is sent by the browser, in order to complete an HTTP request. The main use case is to protect websites from bots, but this is obviously bad for the open web.\nAny old browser will fail to access a website (because it doesn&rsquo;t know it needs to initialize a challenge) and Google and Apple can decide which websites you can view."},{"title":"How Cloudflare is staying ahead of the AMD Zen vulnerability known as \u201cZenbleed\u201d","link":"https:\/\/joaomagfreitas.link\/reads\/cloudflare-measures-amd-zenbleed\/","pubDate":"Thu, 27 Jul 2023 07:48:05 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/cloudflare-measures-amd-zenbleed\/","description":"The following is also a write-up on zen bleed, but specifically on the measures Cloudflare is taking to mitigate the Zenbleed vulnerability on their machines."},{"title":"Zenbleed","link":"https:\/\/joaomagfreitas.link\/reads\/zenbleed\/","pubDate":"Wed, 26 Jul 2023 06:50:32 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/zenbleed\/","description":"The following article is a write up on the AMD Zen processors data leak vulnerability, detailing how it&rsquo;s possible to occur and exploit, and why speculation attacks may be on the rise."},{"title":"The massive bug at the heart of the npm ecosystem","link":"https:\/\/joaomagfreitas.link\/reads\/the-massive-bug-at-the-heart-of-the-npm-ecosystem\/","pubDate":"Tue, 25 Jul 2023 06:45:30 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-massive-bug-at-the-heart-of-the-npm-ecosystem\/","description":"The following is a write up on a huge NPM server side vulnerability, which allowed any bad actor to impersonate different packages. The vulnerability was at NPM API, which allowed package publishers to update their manifest metadata, but NPM did not perform any server side validation in terms of impersonation, which allowed a bad actor to pose as a different package."},{"title":"The man who won the lottery 14 times","link":"https:\/\/joaomagfreitas.link\/reads\/the-man-who-gamed-the-lottery\/","pubDate":"Mon, 24 Jul 2023 07:55:27 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/the-man-who-gamed-the-lottery\/","description":"The following is a story about how an accountant beat the math behind the lottery in several countries. It&rsquo;s a lesson in game theory."},{"title":" I have written a JVM in Rust","link":"https:\/\/joaomagfreitas.link\/reads\/i-have-written-a-jvm-in-rust\/","pubDate":"Sun, 23 Jul 2023 10:22:36 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/i-have-written-a-jvm-in-rust\/","description":"The following article details how to implement a simple JVM from a design and Rust perspective."},{"title":"LLaMA2 isn't \"Open Source\" - and why it doesn't matter","link":"https:\/\/joaomagfreitas.link\/reads\/llama2-isnt-open-source\/","pubDate":"Sat, 22 Jul 2023 09:28:53 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/llama2-isnt-open-source\/","description":"The following article describes how Large Language Models (LLMs) fit in the open-source world, covering LLaMA2 and why it isn&rsquo;t as open-source as we think."},{"title":"Easy SVG sparklines","link":"https:\/\/joaomagfreitas.link\/reads\/easy-svg-sparklines\/","pubDate":"Fri, 21 Jul 2023 07:13:37 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/easy-svg-sparklines\/","description":"The following article provides a basic introduction on how SVG works and you can use it to create charts without the need for external libraries."},{"title":"How To Do Anything in TypeScript With Type Guards","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-do-anything-in-typescript-with-type-guards\/","pubDate":"Thu, 20 Jul 2023 06:48:02 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-do-anything-in-typescript-with-type-guards\/","description":"The following article explains what are type guards in TypeScript, why they are useful for compile time checks and you can use them to improve your codebase robustness."},{"title":"The Android Cuttlefish emulator","link":"https:\/\/joaomagfreitas.link\/reads\/the-android-cuttlefish-emulator\/","pubDate":"Wed, 19 Jul 2023 06:45:57 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-android-cuttlefish-emulator\/","description":"The following article explains how to setup Android Cuttlefish emulator, which is an Android Open Source Project (AOSP) emulator that can be run in headless mode (no ui). It&rsquo;s pretty useful for having an Android instance running CI integration, for example."},{"title":"What's Wrong With Enterprise Linux - unix.foo","link":"https:\/\/joaomagfreitas.link\/reads\/whats-wrong-with-enterprise-linux\/","pubDate":"Tue, 18 Jul 2023 06:44:47 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/whats-wrong-with-enterprise-linux\/","description":"The following is a rant of a security research on most Enterprise Linux distributions that are offered today. The author does not like the approach they distribute releases and bugfixes, and ends up claiming that Oracle has made a surprisingly better job than competition when it comes to patches and software upgrade."},{"title":"How I run my servers","link":"https:\/\/joaomagfreitas.link\/reads\/how-i-run-my-servers\/","pubDate":"Mon, 17 Jul 2023 06:47:15 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-i-run-my-servers\/","description":"The following article explains how to setup and manage your own server infrastructure, with only <code>systemd<\/code>, <code>unix<\/code> and <code>nginx<\/code>."},{"title":"DisplayPort vs Mini DisplayPort","link":"https:\/\/joaomagfreitas.link\/reads\/displayport-vs-mini-displayport\/","pubDate":"Sun, 16 Jul 2023 10:05:30 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/displayport-vs-mini-displayport\/","description":"The following article explains the main differences of Display Port and Mini Display Port."},{"title":"Testing a new encrypted messaging app's extraordinary claims","link":"https:\/\/joaomagfreitas.link\/reads\/testing-a-new-encrypted-messaging-apps-extraordinary-claims\/","pubDate":"Sat, 15 Jul 2023 09:45:56 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/testing-a-new-encrypted-messaging-apps-extraordinary-claims\/","description":"The following articles explains the steps a researcher took to reverse engineer and find the flaws in a E2E encrypted messaging app."},{"title":"Saga Pattern Made Easy","link":"https:\/\/joaomagfreitas.link\/reads\/saga-pattern-made-easy\/","pubDate":"Fri, 14 Jul 2023 09:32:54 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/saga-pattern-made-easy\/","description":"The following article explains the Saga pattern, commonly used to design microservice systems."},{"title":"Reliable Microservices Data Exchange With Streaming Database","link":"https:\/\/joaomagfreitas.link\/reads\/reliable-microservices-data-exchange-with-streaming-database\/","pubDate":"Thu, 13 Jul 2023 06:49:02 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/reliable-microservices-data-exchange-with-streaming-database\/","description":"The following articles explains the concept of the outbox pattern and streaming database in the context of a micro-service architecture."},{"title":"Why I prefer trunk-based development","link":"https:\/\/joaomagfreitas.link\/reads\/why-i-prefer-trunk-based-development\/","pubDate":"Wed, 12 Jul 2023 06:49:57 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/why-i-prefer-trunk-based-development\/","description":"The following articles discusses the the pros of adopting Trunk-Based Development as the branching model for tight collaboration between team members."},{"title":"Why engineers should focus on writing - Dmitry Kudryavtsev","link":"https:\/\/joaomagfreitas.link\/reads\/why-engineers-should-focus-on-writing\/","pubDate":"Tue, 11 Jul 2023 06:47:39 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/why-engineers-should-focus-on-writing\/","description":"The following article explains why engineers should put some hours into writing, instead of writing code all day. An important lesson learnt here, is that writing is one of the best way&rsquo;s to stick knowledge in your brain."},{"title":"The beauty of Kotlin type system","link":"https:\/\/joaomagfreitas.link\/reads\/the-beauty-of-kotlin-type-system\/","pubDate":"Mon, 10 Jul 2023 07:15:04 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-beauty-of-kotlin-type-system\/","description":"The following articles does an in-depth description of what is Kotlin type system, how it works, and why it&rsquo;s design promotes a seamless, fast developer experience."},{"title":"Can I DevTools?","link":"https:\/\/joaomagfreitas.link\/reads\/can-i-devtools\/","pubDate":"Sun, 09 Jul 2023 16:57:42 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/can-i-devtools\/","description":"Not a read per say, but it&rsquo;s a cool tool to find the features you can use with different browsers dev tools."},{"title":"The secret life of .well-known","link":"https:\/\/joaomagfreitas.link\/reads\/the-secret-life-of-well-known\/","pubDate":"Sat, 08 Jul 2023 08:44:53 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-secret-life-of-well-known\/","description":"The following article describes the <code>.well-known<\/code> directory and the use cases existing tech is built around it."},{"title":"How to Design a Billing System for Your Startup","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-design-a-billing-system-for-your-startup-heavybit\/","pubDate":"Fri, 07 Jul 2023 07:01:19 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-design-a-billing-system-for-your-startup-heavybit\/","description":"The following article discusses the common failures when implementing billing models for an early product\/startup."},{"title":"Call Site Dependency Injection","link":"https:\/\/joaomagfreitas.link\/reads\/call-site-dependency-injection\/","pubDate":"Thu, 06 Jul 2023 07:14:38 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/call-site-dependency-injection\/","description":"The following article explains what is Call Site Dependency Injection (CSDI) and how using it in Rust benefits in achieving a safer program architecture."},{"title":"Zig And Rust","link":"https:\/\/joaomagfreitas.link\/reads\/zig-and-rust\/","pubDate":"Wed, 05 Jul 2023 19:00:51 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/zig-and-rust\/","description":"The following article does a slight comparison of the hot programming languages Zig and Rust, in combination to going in depth on the features which language outstands when building a distributed database (<a href=\"https:\/\/tigerbeetle.com\/\">TigerBeetle<\/a>)."},{"title":"Running headless android emulator on AWS EC2 Ubuntu instance (ARM64 \/ aarch64)","link":"https:\/\/joaomagfreitas.link\/reads\/running-goldfish-emulator-headless-cloud\/","pubDate":"Tue, 04 Jul 2023 08:08:39 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/running-goldfish-emulator-headless-cloud\/","description":"The following is a set of steps that will help you achieve running a <strong>Goldfish<\/strong> (Android Studio) emulator in an headless way in the cloud."},{"title":"Meet OpenAuto, an Android Auto emulator for Raspberry Pi","link":"https:\/\/joaomagfreitas.link\/reads\/meet-openauto-an-android-auto-emulator-for-raspberry-pi\/","pubDate":"Mon, 03 Jul 2023 19:12:21 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/meet-openauto-an-android-auto-emulator-for-raspberry-pi\/","description":"The following article describes OpenAuto: a tool that emulates <strong>Android Auto<\/strong> on a Raspberry Pi."},{"title":"Before your next frontend pull\u00a0request, use this checklist\u2014Martian Chronicles, Evil Martians\u2019 team blog","link":"https:\/\/joaomagfreitas.link\/reads\/before-your-next-frontend-pullrequest-use-this-checklist\/","pubDate":"Mon, 03 Jul 2023 18:43:32 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/before-your-next-frontend-pullrequest-use-this-checklist\/","description":"The following articles presents a set of rules every web frontend project should comply. It talks about tools that you can use to measure performance, manners to promote better accessibility, HTML sanitation and clean code."},{"title":"Islands Architecture","link":"https:\/\/joaomagfreitas.link\/reads\/islands-architecture\/","pubDate":"Sat, 01 Jul 2023 08:03:50 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/islands-architecture\/","description":"The following article explains the concept of components islands\/island architecture used in web development."},{"title":"Ukoreh","link":"https:\/\/joaomagfreitas.link\/projects\/ukoreh\/","pubDate":"Sat, 01 Jul 2023 00:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/projects\/ukoreh\/","description":"Ukoreh is a web tool that allows Flutter developers to deploy their projects as web applications, using only their GitHub repository link. The deployment process is pretty straight-forward:\nFirstly, the repository is cloned and project dependencies are installed. Secondly, we build the project targeting the web platform: flutter build web Thirdly, we copy build\/web folder to a GitHub repo root directory and then serve the files as a static website, using GitHub Pages."},{"title":"It's all about Bypassing Android SSL Pinning and Intercepting Proxy Unaware applications","link":"https:\/\/joaomagfreitas.link\/reads\/its-all-about-bypassing-android-ssl-pinning-and-intercepting-proxy-unaware-applications-by-kishor-balan-medium\/","pubDate":"Fri, 30 Jun 2023 07:40:56 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/its-all-about-bypassing-android-ssl-pinning-and-intercepting-proxy-unaware-applications-by-kishor-balan-medium\/","description":"The following article explains several ways and tools a person can use to successfully intercept an Android Application HTTPS requests."},{"title":"System Design Blueprint: The Ultimate Guide","link":"https:\/\/joaomagfreitas.link\/reads\/system-design-blueprint-the-ultimate-guide\/","pubDate":"Thu, 29 Jun 2023 06:35:27 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/system-design-blueprint-the-ultimate-guide\/","description":"The following article presents a blueprint for system design and explains the major domains and components that a system can be composed of."},{"title":"Is ORM still an 'anti pattern'?","link":"https:\/\/joaomagfreitas.link\/reads\/is-orm-still-an-anti-pattern\/","pubDate":"Wed, 28 Jun 2023 06:53:13 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/is-orm-still-an-anti-pattern\/","description":"The following article explains the biggest disadvantages of using an ORM, rationalizing on why people bash it&rsquo;s use or calling it an anti pattern."},{"title":"Bus Factor","link":"https:\/\/joaomagfreitas.link\/reads\/bus-factor\/","pubDate":"Tue, 27 Jun 2023 06:51:25 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/bus-factor\/","description":"The following is a description of the common term used in Software Engineering called &ldquo;Bus Factor&rdquo;."},{"title":"11 Ways to Shave a Yak","link":"https:\/\/joaomagfreitas.link\/reads\/11-ways-to-shave-a-yak\/","pubDate":"Mon, 26 Jun 2023 06:52:28 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/11-ways-to-shave-a-yak\/","description":"The following is a description of Yak Shaving and a list of 11 topics that will make you shave a yak."},{"title":"It's time to replace your axios","link":"https:\/\/joaomagfreitas.link\/reads\/its-time-to-replace-your-axios\/","pubDate":"Sun, 25 Jun 2023 09:35:06 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/its-time-to-replace-your-axios\/","description":"The following article is an introduction to <em>alova<\/em> library and a comparison with our old friend <strong>Axios<\/strong>. The author describes why Axios is outdated for today development with JS frameworks, and describes how alova steps in the game."},{"title":"Clear, Simple, and Wrong","link":"https:\/\/joaomagfreitas.link\/reads\/clear-simple-and-wrong\/","pubDate":"Sat, 24 Jun 2023 18:36:39 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/clear-simple-and-wrong\/","description":"The following is an explanation on simple things that are wrong\/shouldn&rsquo;t be done. This is especially insightful in software development, when in crunch times we must adopt a not so pretty solution that just works and can be delivered in the planned time box."},{"title":"How to be a -10x Engineer","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-be-a-10x-engineer\/","pubDate":"Fri, 23 Jun 2023 18:47:02 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-be-a-10x-engineer\/","description":"The following is a list of topics\/evidences that justify you are a <strong>-10x<\/strong> software engineer."},{"title":"Weeds & Bozo Explosions","link":"https:\/\/joaomagfreitas.link\/reads\/weeds-bozo-explosions\/","pubDate":"Thu, 22 Jun 2023 19:04:43 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/weeds-bozo-explosions\/","description":"The following is an explanation on the &ldquo;Weeds&rdquo; and &ldquo;Bozo&rdquo; terms, derived from Steve Jobs."},{"title":"IKEA-Oriented Development","link":"https:\/\/joaomagfreitas.link\/reads\/ikea-oriented-development\/","pubDate":"Wed, 21 Jun 2023 22:38:36 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/ikea-oriented-development\/","description":"The following article is really interesting. The author compares developers as homeowners who need to maintain their property (project). Given this relationship between maintaining software and maintaining an home, we can use Ikea as an inspiration for development processes since Ikea is recognized for their excellence in the products they deliver, the simplicity for assembling things and their customer experience."},{"title":"Merge Queues","link":"https:\/\/joaomagfreitas.link\/reads\/merge-queues\/","pubDate":"Tue, 20 Jun 2023 22:44:19 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/merge-queues\/","description":"The following article discusses merge queues: what are they, how they can help. and times you should use them."},{"title":"Kotlin Equality","link":"https:\/\/joaomagfreitas.link\/reads\/kotlin-equality\/","pubDate":"Mon, 19 Jun 2023 18:28:56 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/kotlin-equality\/","description":"Short, but interesting read. I&rsquo;ve been using Kotlin for some time and didn&rsquo;t know it also had the <code>===<\/code> equals operator, which shares the same syntax as JavaScript, but have meanings completely different."},{"title":"Mindmapping: The Underrated Skill for Success in Life and Software Development","link":"https:\/\/joaomagfreitas.link\/reads\/mindmapping-the-underrated-skill-for-success-in-life-and-software-development\/","pubDate":"Sun, 18 Jun 2023 19:32:55 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/mindmapping-the-underrated-skill-for-success-in-life-and-software-development\/","description":"The following article explains how the art of creating mental models of your work, can help you getting more efficient in task management and not falling into overwhelming moments when starting to work a new task."},{"title":"No, GPT4 can\u2019t ace MIT","link":"https:\/\/joaomagfreitas.link\/reads\/no-gpt4-cant-ace-mit\/","pubDate":"Sat, 17 Jun 2023 22:28:53 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/no-gpt4-cant-ace-mit\/","description":"The following article discusses the results of a recent paper which claims that GPT-4 aced a MIT exam, but turns out that the authors of the paper cheated by training GPT-4 with the answers of the exam."},{"title":"Everything Must Be Paid for Twice","link":"https:\/\/joaomagfreitas.link\/reads\/everything-must-be-paid-for-twice\/","pubDate":"Fri, 16 Jun 2023 18:34:58 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/everything-must-be-paid-for-twice\/","description":"The following article is really interesting. It explains the concept of paying twice for a product, being it tangible or intangible."},{"title":"Keep The Main Thing The Main Thing","link":"https:\/\/joaomagfreitas.link\/reads\/keep-the-main-thing-the-main-thing\/","pubDate":"Thu, 15 Jun 2023 07:27:27 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/keep-the-main-thing-the-main-thing\/","description":"The following article emphasizes that we should focus on the initial idea and vision we projected, instead of losing focus when a new interest shows in town."},{"title":"Deleting a file in Linux that even sudo user can't delete","link":"https:\/\/joaomagfreitas.link\/reads\/deleting-a-file-in-linux-that-even-sudo-user-cant-delete\/","pubDate":"Wed, 14 Jun 2023 06:59:49 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/deleting-a-file-in-linux-that-even-sudo-user-cant-delete\/","description":"The following is a question-answer on how to delete a file in Linux that neither the normal or sudo user can delete."},{"title":"How I've retained top engineers for a decade","link":"https:\/\/joaomagfreitas.link\/reads\/how-ive-retained-top-engineers-for-a-decade\/","pubDate":"Tue, 13 Jun 2023 18:42:49 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-ive-retained-top-engineers-for-a-decade\/","description":"The following article explains effective ways to retain software engineers in a startup. How? Engineers love productivity and feel like they are working in their own playground, so giving them the toys they want will make them feel joyful, invincible and in return productive."},{"title":"How to draw any regular shape with just one JavaScript function","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-draw-any-regular-shape-with-just-one-javascript-function-mdn-blog\/","pubDate":"Mon, 12 Jun 2023 20:59:06 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-draw-any-regular-shape-with-just-one-javascript-function-mdn-blog\/","description":"The following article explains how HTML Canvas works and how you can use it to draw anything that comes to your mind. Think of Canvas as painting frame and JavaScript as your painting skills. Combine both and you are set to fulfill your imagination."},{"title":"The Last Innings of Web 2.0","link":"https:\/\/joaomagfreitas.link\/reads\/the-last-innings-of-web-20\/","pubDate":"Sun, 11 Jun 2023 14:48:48 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-last-innings-of-web-20\/","description":"The following article explains why we are in the edge of moving forward with &ldquo;Web 2.0&rdquo; and adopting &ldquo;Web 3.0&rdquo;."},{"title":"PS2 Jailbreak MCBoot, OPL and Configuration Ultimate Guide","link":"https:\/\/joaomagfreitas.link\/reads\/ps2-jailbreak-mcboot-opl-and-configuration-ultimate-guide\/","pubDate":"Sat, 10 Jun 2023 20:36:35 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/ps2-jailbreak-mcboot-opl-and-configuration-ultimate-guide\/","description":"The following is a guide on how to jailbreak a PlayStation 2 with only a DVD and USB. Finally I got my PS2 jailbroken, it&rsquo;s been a dream since I childhood."},{"title":"Next level data privacy with easy, free and secure self hosting at home","link":"https:\/\/joaomagfreitas.link\/reads\/next-level-data-privacy-with-easy-free-and-secure-self-hosting-at-home\/","pubDate":"Fri, 09 Jun 2023 09:02:30 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/next-level-data-privacy-with-easy-free-and-secure-self-hosting-at-home\/","description":"The following article describes how to configure a secure self-hosting web infrastructure with support for multiple apps. It&rsquo;s really detailed and you don&rsquo;t feel overwhelmed to be encouraged to setup on your home server."},{"title":"Levels of Autonomy in AI Agents","link":"https:\/\/joaomagfreitas.link\/reads\/levels-of-autonomy-in-ai-agents\/","pubDate":"Thu, 08 Jun 2023 20:27:31 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/levels-of-autonomy-in-ai-agents\/","description":"The following is a comparison on how he would classify AI Agents in autonomy levels, just like self driving cars are classified."},{"title":"Secret To Optimizing SQL Queries\u200a-\u200aUnderstand The SQL Execution Order \ud83d\ude80","link":"https:\/\/joaomagfreitas.link\/reads\/secret-to-optimizing-sql-queries-understand-the-sql-execution-order\/","pubDate":"Wed, 07 Jun 2023 09:52:15 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/secret-to-optimizing-sql-queries-understand-the-sql-execution-order\/","description":"The following is an explanation on how SQL Queries work and you can leverage their internals to optimize query performance."},{"title":"A Visual Guide: To Sustainable Software Engineering","link":"https:\/\/joaomagfreitas.link\/reads\/a-visual-guide-to-sustainable-software-engineering\/","pubDate":"Tue, 06 Jun 2023 21:55:04 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/a-visual-guide-to-sustainable-software-engineering\/","description":"The following are the 8 principles of green software engineering"},{"title":"Never trust a programmer who says they know C++","link":"https:\/\/joaomagfreitas.link\/reads\/never-trust-a-programmer-who-says-they-know-c\/","pubDate":"Mon, 05 Jun 2023 22:45:44 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/never-trust-a-programmer-who-says-they-know-c\/","description":"The following is an explanation of two types of programmers perspective in regards to C++: those who think it&rsquo;s C with classes, and those who are frustrated by each different feature the language provides."},{"title":"GitHub private repos considered private-\u00adish","link":"https:\/\/joaomagfreitas.link\/reads\/github-private-repos-considered-private-ish\/","pubDate":"Sun, 04 Jun 2023 20:53:11 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/github-private-repos-considered-private-ish\/","description":"The following is an explanation how human behaviour leads to leak of private GitHub repos information, or in the worst case scenario, total leak of the source code. To fight this issue, the author provides some tips when working with private repos."},{"title":"Feedback: I try to answer \"how to become a systems engineer\"","link":"https:\/\/joaomagfreitas.link\/reads\/feedback-i-try-to-answer-how-to-become-a-systems-engineer\/","pubDate":"Sat, 03 Jun 2023 07:10:54 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/feedback-i-try-to-answer-how-to-become-a-systems-engineer\/","description":"The following is a weird rant. The author starts talking on how he was requested to describe what a system engineer was, and that there are few system engineers on the field, because they require excellence and excellence in what they do. He then goes on to say that system engineering has nothing to do with life-cycle, because no one works through the whole life-cycle of a product."},{"title":"The End of Public APIs","link":"https:\/\/joaomagfreitas.link\/reads\/the-end-of-public-apis\/","pubDate":"Fri, 02 Jun 2023 06:36:01 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-end-of-public-apis\/","description":"The following is a retrospective on the current change to a payed only API by giant platforms like Twitter and Reddit. The author explains that this trend is most likely due to greediness of these platforms to profit from people using API data to train Large Language Models."},{"title":"Templating Magic Isn't Free","link":"https:\/\/joaomagfreitas.link\/reads\/templating-magic-isnt-free\/","pubDate":"Thu, 01 Jun 2023 06:58:14 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/templating-magic-isnt-free\/","description":"The author discusses the construction and maintenance of Dockerfiles difficulty for the average developer and provides alternatives for configuring work environments with templates. He further explains that templates come with the cost of being hard to extend and debug, which often take developers to create their own solution (say framework) or heavily customize the templating tool."},{"title":"I gave commit rights to someone I didn't know, I could never have guessed what happened next!","link":"https:\/\/joaomagfreitas.link\/reads\/i-gave-commit-rights-to-someone-i-didnt-know-i-could-never-have-guessed-what-happened-next\/","pubDate":"Wed, 31 May 2023 21:56:24 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/i-gave-commit-rights-to-someone-i-didnt-know-i-could-never-have-guessed-what-happened-next\/","description":"The following is the story of how one maintainer gave maintainer permissions to his old Django project repo, that he felt was abandoned. Years later, the project grew a lot and the author couldn&rsquo;t believe people recognized him for building the project."},{"title":"AI Means More Developers","link":"https:\/\/joaomagfreitas.link\/reads\/ai-means-more-developers\/","pubDate":"Tue, 30 May 2023 06:44:16 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/ai-means-more-developers\/","description":"There&rsquo;s a popular belief that AI\/ChatGPT will replace developers. The author presents an explanation on why this is wrong and explains why AI may lead to more developers."},{"title":"The Dangers of Google\u2019s .zip TLD","link":"https:\/\/joaomagfreitas.link\/reads\/the-dangers-of-googles-zip-tld\/","pubDate":"Mon, 29 May 2023 07:11:58 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-dangers-of-googles-zip-tld\/","description":"The following is a summary on the dangers imposed by Google&rsquo;s new top level domain: .zip. In short, attackers can fake themselves as links to trustful <code>.zip<\/code> files."},{"title":"NO_COLOR: disabling ANSI color output in various Unix commands","link":"https:\/\/joaomagfreitas.link\/reads\/nocolor-disabling-ansi-color-output-in-various-unix-commands\/","pubDate":"Sun, 28 May 2023 08:07:47 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/nocolor-disabling-ansi-color-output-in-various-unix-commands\/","description":"The following is a manifesto against the usage of text color on CLI programs. The author proposed the <code>NO_COLOR<\/code> environment variable, that when set, programs should check for its presence and not output text with colors."},{"title":"Prompt Engineering is Configuration Engineering","link":"https:\/\/joaomagfreitas.link\/reads\/prompt-engineering-is-configuration-engineering\/","pubDate":"Sat, 27 May 2023 07:39:42 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/prompt-engineering-is-configuration-engineering\/","description":"The following is a comparison of Prompt Engineering with Configuration Engineering. The author believes the two relate to each other because Prompt Engineering is evolving in the same cycle as the &ldquo;Heptagon of Configuration&rdquo;."},{"title":"Kubernetes Deployment Troubleshooting - Cheatsheet","link":"https:\/\/joaomagfreitas.link\/reads\/kubernetes-deployment-troubleshooting\/","pubDate":"Fri, 26 May 2023 22:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/kubernetes-deployment-troubleshooting\/","description":"The following is a cheatsheet on how to troubleshoot deployment issues when using Kubernetes"},{"title":"You Don't Always Need Indexes","link":"https:\/\/joaomagfreitas.link\/reads\/you-dont-always-need-indexes\/","pubDate":"Thu, 25 May 2023 20:44:55 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/you-dont-always-need-indexes\/","description":"The following discusses the importance of indexing data for efficient searches and highlights cases where full scans prove to be better engineering choices than implementing indexing."},{"title":"The ChatGPT Plugin Specification","link":"https:\/\/joaomagfreitas.link\/reads\/the-chatgpt-plugin-specification\/","pubDate":"Wed, 24 May 2023 20:07:50 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-chatgpt-plugin-specification\/","description":"The following is a review on the process of submission\/publishing a plugin to be integrated with ChatGPT."},{"title":"The Local Development Story","link":"https:\/\/joaomagfreitas.link\/reads\/local-development-story\/","pubDate":"Tue, 23 May 2023 21:46:34 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/local-development-story\/","description":"Testing software products locally is most of the times seen as an not important task. This leads to wasting time on repeating steps no one wants to automate, just because \u201cit\u2019s only local, not production\u201d."},{"title":"StackOverflow\/ChatGPT","link":"https:\/\/joaomagfreitas.link\/reads\/stackoverflow-chatgpt\/","pubDate":"Mon, 22 May 2023 21:46:32 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/stackoverflow-chatgpt\/","description":"The following is brief analysis on the StackOverflow vs ChatGPT ban."},{"title":"Dart 3.0: Best New Features & Why You Should Care","link":"https:\/\/joaomagfreitas.link\/reads\/dart-30-best-new-features-why-you-should-care\/","pubDate":"Sun, 21 May 2023 22:56:11 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/dart-30-best-new-features-why-you-should-care\/","description":"The following is a summary of the new features introduced to the Dart programming language, now that it hit version 3.0."},{"title":"Piecewise","link":"https:\/\/joaomagfreitas.link\/reads\/piecewise\/","pubDate":"Sat, 20 May 2023 22:49:59 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/piecewise\/","description":"The following is the description of <em>piecewise<\/em>: a way to structure thoughts, ideas and implementations of a bigger scope in smaller scopes."},{"title":"How to Succeed in Open Source Without Really Trying (Really)","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-succeed-in-open-source-without-really-trying-really\/","pubDate":"Fri, 19 May 2023 17:47:08 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-succeed-in-open-source-without-really-trying-really\/","description":"The following is the story of a developer who published a library to NPM some years ago, which is downloaded weekly for more than one million times. Platforms classify him as an open-source maintainer, but he does not agree with that, because the library is rarely updated and maintained by him."},{"title":"I Was Hacked: What I\u2019ve Learned Since","link":"https:\/\/joaomagfreitas.link\/reads\/i-was-hacked-what-ive-learned-since\/","pubDate":"Thu, 18 May 2023 06:58:51 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/i-was-hacked-what-ive-learned-since\/","description":"The following is an experience sharing of a cybersecurity incident that happened to the author. In short, the author&rsquo;s Amazon account was compromised even with a two-factor authentication layer, because the author had exposed his personal info on a website that would later be breached."},{"title":"Native Code and Debug Symbols","link":"https:\/\/joaomagfreitas.link\/reads\/native-code-and-debug-symbols\/","pubDate":"Wed, 17 May 2023 07:15:33 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/native-code-and-debug-symbols\/","description":"The following is an explanation on debug symbols and how you can detect if you are bundling an Android Application with native libraries that include them."},{"title":"How to build a Hackathon","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-build-a-hackathon\/","pubDate":"Tue, 16 May 2023 06:53:57 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-build-a-hackathon\/","description":"The following is a small but experienced guide on how to host your own hackathon, and the things you can learn from hosting one."},{"title":"HTMX is the future","link":"https:\/\/joaomagfreitas.link\/reads\/htmx-is-the-future\/","pubDate":"Mon, 15 May 2023 07:23:16 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/htmx-is-the-future\/","description":"The author introduces the concept of <em>htmx<\/em>: a way to express dynamic HTML manipulation without JavaScript in the client browser. In short, htmx proposes a set of attributes that are marked in any HTML element of your webpage. Then, in your server, based on the presence of these attributes, you decide what you should do, ultimately returning rich HTML with hypermedia capabilities instead of JSON."},{"title":"Unix Philosophy for AI","link":"https:\/\/joaomagfreitas.link\/reads\/unix-philosophy-for-ai\/","pubDate":"Sun, 14 May 2023 22:34:19 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/unix-philosophy-for-ai\/","description":"The following is the analysis on how Unix design can be applied in AI."},{"title":"Taylor Swift and Launch Cadence","link":"https:\/\/joaomagfreitas.link\/reads\/taylor-swift-and-launch-cadence\/","pubDate":"Sat, 13 May 2023 20:22:03 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/taylor-swift-and-launch-cadence\/","description":"The following is a review on Taylor Swift discipline and progress towards her music career. It shows off that you can put yourself in a position where you keep launching things if you have the &ldquo;know how&rdquo;."},{"title":"On-Demand Package Manager","link":"https:\/\/joaomagfreitas.link\/reads\/on-demand-package-manager\/","pubDate":"Fri, 12 May 2023 06:40:07 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/on-demand-package-manager\/","description":"The following is the description of what a on-demand package manager would look like and its use cases."},{"title":"The real \"must have\" tools for programmers","link":"https:\/\/joaomagfreitas.link\/reads\/the-real-must-have-tools-for-programmers\/","pubDate":"Thu, 11 May 2023 06:53:16 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-real-must-have-tools-for-programmers\/","description":"The following is an interesting read about productivity in programming. The author takes on the issue of tools that help you make a better programmer, discarding software tools, but instead focuses on well-being and mental health tools."},{"title":"Beyond Content Creation: How Open Source Contributions Can Help You Get Noticed","link":"https:\/\/joaomagfreitas.link\/reads\/beyond-content-creation-how-open-source-contributions-can-help-you-get-noticed\/","pubDate":"Wed, 10 May 2023 06:43:26 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/beyond-content-creation-how-open-source-contributions-can-help-you-get-noticed\/","description":"The following is an explanation on how open source contributions help you get noticed, helping you in things such as getting that dream job you wanted. Open Source contributions are more than social points on GitHub, they are highlights in your portfolio. Building a rich portfolio proves your skills."},{"title":"How to build your side business when you have a 9-5 job and you can't code","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-build-side-business-when-you-have-9-5-job\/","pubDate":"Tue, 09 May 2023 07:58:19 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-build-side-business-when-you-have-9-5-job\/","description":"The following is a Twitter thread that explains how to build a side business when you put most of your time on a 9-5 job."},{"title":"Even Amazon can't make sense of serverless or microservices","link":"https:\/\/joaomagfreitas.link\/reads\/even-amazon-cant-make-sense-of-serverless-or-microservices\/","pubDate":"Mon, 08 May 2023 06:41:39 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/even-amazon-cant-make-sense-of-serverless-or-microservices\/","description":"In regards to my <a href=\"https:\/\/joaomagfreitas.link\/reads\/scaling-up-the-prime-video-audio-video-monitoring-service-and-reducing-costs\/\">previous read<\/a>, David Hansson (creator of the Ruby on Rails framework) shares his thoughts on the bad decisions took by Amazon."},{"title":"Scaling up the Prime Video audio\/video monitoring service and reducing costs by 90%","link":"https:\/\/joaomagfreitas.link\/reads\/scaling-up-the-prime-video-audio-video-monitoring-service-and-reducing-costs\/","pubDate":"Sun, 07 May 2023 11:31:27 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/scaling-up-the-prime-video-audio-video-monitoring-service-and-reducing-costs\/","description":"The following is an analysis of the migration from a microservice\/serverless to a monolith architecture, for a media stream application on Amazon Prime Video. Initially, the team at Amazon designed the architecture to scale each component independently, but it turned out to be a money nightmare for Amazon, since all the scaling resulted in expensive bills."},{"title":"Leaked Google document: \u201cWe Have No Moat, And Neither Does OpenAI\u201d","link":"https:\/\/joaomagfreitas.link\/reads\/no-moat\/","pubDate":"Sat, 06 May 2023 08:23:56 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/no-moat\/","description":"The following is an analysis on Google&rsquo;s leaked document: &ldquo;We Have No Moat, And Neither Does OpenAI&rdquo;. In short, Google is very scared on the advancements of AI in LLM in the Open-Source world, as it seems that Google is losing gap of competition and will likely lose the race."},{"title":"A Completely Non-Technical Explanation of AI and Deep Learning","link":"https:\/\/joaomagfreitas.link\/reads\/a-completely-non-technical-explanation-of-ai\/","pubDate":"Fri, 05 May 2023 07:02:43 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/a-completely-non-technical-explanation-of-ai\/","description":"The following is an ELI5 explanation on how Machine and Deep Learning, Neural and Convolutational Networks work in the real world."},{"title":"The Wrong Abstraction","link":"https:\/\/joaomagfreitas.link\/reads\/the-wrong-abstraction\/","pubDate":"Thu, 04 May 2023 06:53:31 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-wrong-abstraction\/","description":"The following is an explanation on why abstracting code when facing code duplication may turn into bad idea, since the domain area where duplication lives may not be <em>abstractable<\/em>."},{"title":"GitHub Actions Workflow Triggers Cheat Sheet","link":"https:\/\/joaomagfreitas.link\/reads\/github-actions-workflow-triggers-cheat-sheet\/","pubDate":"Wed, 03 May 2023 06:50:53 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/github-actions-workflow-triggers-cheat-sheet\/","description":"The following is a guide\/cheatsheet on all the different flavors you can configure your GitHub Actions workflows to trigger on certain actions."},{"title":"Applications of Category Theory","link":"https:\/\/joaomagfreitas.link\/reads\/applications-of-category-theory\/","pubDate":"Tue, 02 May 2023 06:42:01 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/applications-of-category-theory\/","description":"The following is a brief summary (with examples) of what category theory is."},{"title":"Micro Libraries","link":"https:\/\/joaomagfreitas.link\/micro-libraries\/","pubDate":"Mon, 01 May 2023 09:48:24 +0100","guid":"https:\/\/joaomagfreitas.link\/micro-libraries\/","description":"In this blog post I cover the topic of micro libraries: small software libraries that expose a single or small subset of functionalities."},{"title":"Implementing LLMs in the Browser","link":"https:\/\/joaomagfreitas.link\/reads\/implementing-llms-in-the-browser\/","pubDate":"Mon, 01 May 2023 08:26:13 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/implementing-llms-in-the-browser\/","description":"The following is an highlight to a feature that many ML platforms will start to integrate: Large Language Models in the browser. This will allow people to train or use LLMs in a &ldquo;free manner&rdquo;, since they are the ones paying the computation costs for training these models."},{"title":"React Components as the API","link":"https:\/\/joaomagfreitas.link\/reads\/react-components-as-the-api\/","pubDate":"Sun, 30 Apr 2023 08:46:01 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/react-components-as-the-api\/","description":"The following is the explanation of the idea of using React components as components with responsibility for a certain domain within an application (e.g., authentication, images, forms), promoting segregation of responsibilities, reduced coupling, testing, etc&hellip;"},{"title":"On Lindenmayer Systems","link":"https:\/\/joaomagfreitas.link\/on-lindenmayer-systems\/","pubDate":"Sat, 29 Apr 2023 10:51:17 +0100","guid":"https:\/\/joaomagfreitas.link\/on-lindenmayer-systems\/","description":"In this blog post I quickly cover L-Systems: a formal grammar specification used for procedural generation."},{"title":"Jira Anti-Patterns","link":"https:\/\/joaomagfreitas.link\/reads\/jira-anti-patterns\/","pubDate":"Sat, 29 Apr 2023 09:34:20 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/jira-anti-patterns\/","description":"The following is a review on Jira - probably the most used task management tool in the world, especially now in the Agile and Scrum world - and how it is misused by everyone, turning simple tasks into complex processes, reduces communication between teams and favors micro management instead of team management."},{"title":"Visual Explanation and Comparison of CSR, SSR, SSG and ISR","link":"https:\/\/joaomagfreitas.link\/reads\/visual-explanation-and-comparison-of-csr-ssr-ssg-and-isr\/","pubDate":"Fri, 28 Apr 2023 07:44:02 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/visual-explanation-and-comparison-of-csr-ssr-ssg-and-isr\/","description":"The following is a comparison on four different techniques used in web applications and websites to show and render content."},{"title":"The problem with importing css","link":"https:\/\/joaomagfreitas.link\/reads\/importing-css\/","pubDate":"Thu, 27 Apr 2023 07:04:59 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/importing-css\/","description":"The following is an explanation on how modern frameworks treat your imports for optimization when bundling\/shipping to production environments. The author explains how current frameworks treat imports in three different contexts - application files (js), assets (images), and style sheets (css) - explaining that for style sheets, there is still a lot of room for improvement."},{"title":"Naming: Every Developer's Nightmare","link":"https:\/\/joaomagfreitas.link\/reads\/naming-every-developers-nightmare\/","pubDate":"Wed, 26 Apr 2023 07:27:07 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/naming-every-developers-nightmare\/","description":"The following is a guide on how to name things in a way that is more readable for developers."},{"title":"Test-Driven Daydreams","link":"https:\/\/joaomagfreitas.link\/reads\/test-driven-daydreams\/","pubDate":"Tue, 25 Apr 2023 09:15:58 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/test-driven-daydreams\/","description":"The following is the author personal opinion on TDD (Test-Driven Development) and is more of a rant than explanation why you should put TDD into practice."},{"title":"Alien Artefacts","link":"https:\/\/joaomagfreitas.link\/reads\/alien-artefacts\/","pubDate":"Mon, 24 Apr 2023 07:01:35 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/alien-artefacts\/","description":"The following is a description of Alien Artefacts - a category of legacy software that works well, but is resistant to change."},{"title":"Pick Up What They Put Down","link":"https:\/\/joaomagfreitas.link\/reads\/puwtpd\/","pubDate":"Sun, 23 Apr 2023 09:43:08 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/puwtpd\/","description":"The following is an explanation of why you should follow your tech idols and pick the things they have recently started looking into, in order to get continuous feedback from them. The important thing here is feedback from them, which is really valuable."},{"title":"Autonomous LLM Agents Are At Least 10 Years Out","link":"https:\/\/joaomagfreitas.link\/reads\/autonomous-llm-agents-are-10-years\/","pubDate":"Sat, 22 Apr 2023 10:49:17 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/autonomous-llm-agents-are-10-years\/","description":"The following is a review on the recent trend of &ldquo;fully autonomous robots&rdquo; that are powered by LLM. The author disproves the hype around this tool and says that we are at least 10 years at seeing some of these tools become a reality, and beginning to reduce the need for certain professions, such as computer engineers."},{"title":"When to create a GitHub organization","link":"https:\/\/joaomagfreitas.link\/when-to-create-a-github-organization\/","pubDate":"Fri, 21 Apr 2023 19:53:23 +0100","guid":"https:\/\/joaomagfreitas.link\/when-to-create-a-github-organization\/","description":"In this blog post I compile a list of reasons I use to decided when I should create a new GitHub organization for a new project."},{"title":"Learn In Public","link":"https:\/\/joaomagfreitas.link\/reads\/learn-in-public\/","pubDate":"Fri, 21 Apr 2023 07:27:01 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/learn-in-public\/","description":"The following is an explanation on why should learn in public: read, write, document, put into practice, ask questions, consume knowledge and share that knowledge to public over again."},{"title":"New on the web: How to detect disabled JavaScript in CSS","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-detect-disabled-javascript-in-css\/","pubDate":"Thu, 20 Apr 2023 21:35:23 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-detect-disabled-javascript-in-css\/","description":"The following is a guide on how to detect if JS is enabled in a browser at the CSS level. The author mentions the way you can do this with an \u201chack\u201d, and then goes on to present a new feature in media query rule that applies styling only if JS is disabled."},{"title":"From Problems to Solutions: Understanding Design Patterns","link":"https:\/\/joaomagfreitas.link\/reads\/rom-problems-to-solutions-understanding-design-patterns\/","pubDate":"Wed, 19 Apr 2023 23:00:42 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/rom-problems-to-solutions-understanding-design-patterns\/","description":"The following is a recap on some design patterns we use everyday, but don&rsquo;t know we are using them or don&rsquo;t know them by their name."},{"title":"Internet Magic Numbers","link":"https:\/\/joaomagfreitas.link\/reads\/internet-magic-numbers\/","pubDate":"Tue, 18 Apr 2023 06:48:45 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/internet-magic-numbers\/","description":"The following is a visit to Internet history mark points when big products like Google and Amazon were launched."},{"title":"The Heptagon of Configuration","link":"https:\/\/joaomagfreitas.link\/reads\/heptagon-of-configuration\/","pubDate":"Mon, 17 Apr 2023 06:53:59 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/heptagon-of-configuration\/","description":"The following is a description of the pattern &ldquo;Heptagon of Configuration&rdquo;, a term which the author invented to describe the endless life cycle of program configuration. The author says that we start from simple, but that is less flexible, and end up increasing complexity in trade of flexibility. When we notice that we start being in a less simple but more flexible environment, we start reducing complexity and in trade, also less flexibility."},{"title":"Reflections on 10,000 Hours of Programming","link":"https:\/\/joaomagfreitas.link\/reads\/reflections-on-10-000-hours-of-programming\/","pubDate":"Sun, 16 Apr 2023 08:28:09 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/reflections-on-10-000-hours-of-programming\/","description":"The following is a reflection of 10,000 hours put in programming. The author presents a list of topics and rules he learned along the way, and shares with everyone what others should put into practice."},{"title":"50 Ideas That Changed My Life","link":"https:\/\/joaomagfreitas.link\/reads\/50-ideas-that-changed-my-life\/","pubDate":"Sat, 15 Apr 2023 09:02:10 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/50-ideas-that-changed-my-life\/","description":"The following is a list of 50 rules\/ideas\/points that the author believes had make an impact in the way he sees the world."},{"title":"Shiny object syndrome in software development","link":"https:\/\/joaomagfreitas.link\/reads\/shiny-object-syndrome-in-software-development\/","pubDate":"Fri, 14 Apr 2023 06:49:04 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/shiny-object-syndrome-in-software-development\/","description":"The following is a reflection on the Shiny Object Syndrome (SOS). This syndrome describes that we shift interest from the current thingy, when a new shiny thingy is around the block. This is seen a lot in Software Development: from leaving side projects to work on new ones, JavaScript frameworks released weekly, &ldquo;new&rdquo; programming languages (looking at you Rust); and it hurts not only yourself, but also the product you&rsquo;re building."},{"title":"How to lose half a billion dollars with bad feature flags","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-lose-half-a-billion-dollars-with-bad-feature-flags\/","pubDate":"Thu, 13 Apr 2023 07:11:52 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-lose-half-a-billion-dollars-with-bad-feature-flags\/","description":"The following is a story on how a trader company that was seen as the largest in US equities trading, got insolvent from day to night due to a miss-configuration on their software. They used feature flags to decide which algorithm they should use for trading, and the issue happened when a testing algorithm was selected to be used as the main algorithm."},{"title":"Reflections on 10,000 Hours of DevOps - Matt Rickard","link":"https:\/\/joaomagfreitas.link\/reads\/reflections-on-10000-hours-of-devops\/","pubDate":"Wed, 12 Apr 2023 06:57:56 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/reflections-on-10000-hours-of-devops\/","description":"The following is a reflection of 10,000 hours put in DevOps practices and work. The author presents a list of rules and tips he thinks everyone should follow if they work in a DevOps environment.&quot;"},{"title":"Xrdp on Lubuntu 18.04 without black srceen","link":"https:\/\/joaomagfreitas.link\/reads\/xrdp-on-lubuntu-without-black-screen\/","pubDate":"Tue, 11 Apr 2023 06:58:02 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/xrdp-on-lubuntu-without-black-screen\/","description":"The following is a follow-up on the topic of establishing an RDP connection via xrdp for my Lubuntu home server."},{"title":"Usability heuristics in game design","link":"https:\/\/joaomagfreitas.link\/reads\/usability-heuristics-in-game-design\/","pubDate":"Mon, 10 Apr 2023 07:03:00 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/usability-heuristics-in-game-design\/","description":"The following is a guide on how to achieve good user experience when designing a video or board game. The author presents 10 heuristics (problems) in game design and explains why and how you should tackle them, presenting examples with real video and board games to make it easier to understand."},{"title":"How To Enable Remote Desktop Protocol Using xrdp on Ubuntu 22.04","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-enable-remote-desktop-protocol-using-xrdp-on-ubuntu-22-04\/","pubDate":"Sun, 09 Apr 2023 08:55:49 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-enable-remote-desktop-protocol-using-xrdp-on-ubuntu-22-04\/","description":"The following is not a read per se, but rather a bullet-proof guide on how to setup an RDP connection on Ubuntu\/Debian devices"},{"title":"Why Intelligent Minds Like Jeff Bezos Embrace the Rule of Writing","link":"https:\/\/joaomagfreitas.link\/reads\/why-intelligent-minds-like-jeff-bezos-embrace-the-rule-of-writing\/","pubDate":"Sat, 08 Apr 2023 10:04:24 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/why-intelligent-minds-like-jeff-bezos-embrace-the-rule-of-writing\/","description":"The following is an explanation on Jeff Bezos strategy of exploring new ideas to discuss in meetings. The author also describes why writing down questions before asking them is super important, as it promotes clear thinking."},{"title":"Building GitHub with Ruby and Rails","link":"https:\/\/joaomagfreitas.link\/reads\/building-github-with-ruby-and-rails\/","pubDate":"Fri, 07 Apr 2023 10:46:07 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/building-github-with-ruby-and-rails\/","description":"The following is a blog post from GitHub, where they give some internal insights in their continuous integration life cycle. GitHub weekly updates their Ruby on Rails version, which might sound absurd on a first glance. However, due to intense testing and shared collaboration with Rails team, GitHub is successful on these deployments."},{"title":"2 years of fiddling with Rust","link":"https:\/\/joaomagfreitas.link\/reads\/rust-fiddling-2-years\/","pubDate":"Thu, 06 Apr 2023 10:41:28 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/rust-fiddling-2-years\/","description":"The following is a experience share on what working for over two years with Rust feels like. The author shares the areas where Rust is good or bad, and provides examples that prove his opinion."},{"title":"Reasons To Do a Startup","link":"https:\/\/joaomagfreitas.link\/reads\/reasons-to-do-a-startup\/","pubDate":"Wed, 05 Apr 2023 07:59:19 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/reasons-to-do-a-startup\/","description":"The following are small guidelines provided by experienced startup founds and investors, on the reasons you should or should not do a startup."},{"title":"Circular Text with CSS?","link":"https:\/\/joaomagfreitas.link\/reads\/circular-text-with-css\/","pubDate":"Tue, 04 Apr 2023 07:39:06 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/circular-text-with-css\/","description":"The following is a detailed guide on how to achieve circular text with CSS. The author starts by presenting the &ldquo;naive&rdquo; approach of using SVG, but then he goes on to show that with the introduction of CSS Trigonometric functions, you can achieve circular text easier and in a native way."},{"title":"How to Read Effectively - Creating a Reading Workflow - Prashant Sengar","link":"https:\/\/joaomagfreitas.link\/reads\/toolkit-on-creating-reading-workflow\/","pubDate":"Mon, 03 Apr 2023 08:13:47 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/toolkit-on-creating-reading-workflow\/","description":"The following is a guide on how to increase your learning by reading performance. The author talks about the TEA (Time, Energy, Attention) model, and how you need to save it to maximize your effectiveness for learning."},{"title":"Using Typescript without compilation - DEV Community","link":"https:\/\/joaomagfreitas.link\/reads\/using-typescript-without-compilation\/","pubDate":"Sun, 02 Apr 2023 08:42:17 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/using-typescript-without-compilation\/","description":"The following is a discussing on using Typescript (TS) type checking capabilities directly in JavaScript (JS) using JSDoc. The author has a very strong opinion that you can develop your entire project in JS and still get type compile features, just by creating .d.ts files for types and combining them with JSDoc."},{"title":"Distributed Systems and AI","link":"https:\/\/joaomagfreitas.link\/reads\/distributed-systems-and-ai\/","pubDate":"Sat, 01 Apr 2023 17:09:01 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/distributed-systems-and-ai\/","description":"The following is an explanation on how having distributed systems knowledge helps improving AI products."},{"title":"Code, not Chat, in Generative AI","link":"https:\/\/joaomagfreitas.link\/reads\/code-not-chat-generative-ai\/","pubDate":"Fri, 31 Mar 2023 16:12:47 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/code-not-chat-generative-ai\/","description":"The following is a comparison on the use of generative AI in chat bots and code. The author believes there is much more value to invest in improving code workflows with generative AI, since that will burst developer experience."},{"title":"I\u2019ve been employed in tech for years, but I\u2019ve almost never worked","link":"https:\/\/joaomagfreitas.link\/reads\/employed-in-tech-for-years-but-almost-never-worked\/","pubDate":"Thu, 30 Mar 2023 08:30:45 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/employed-in-tech-for-years-but-almost-never-worked\/","description":"The following is a retrospective on the (low amount of) work Software Engineers have to do today, due to management bloat empowered at big companies. The author, and his friends, feel like they don&rsquo;t do shit and get payed a lot for it. It may seem they hit the jackpot, but in reality they are just becoming dumber: they have studied and worked all their life to be able to develop great products, but bloat management don&rsquo;t allow them."},{"title":"The problem with open source: not enough contributors","link":"https:\/\/joaomagfreitas.link\/reads\/the-problem-with-open-source-not-enough-contributors\/","pubDate":"Wed, 29 Mar 2023 12:28:50 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/the-problem-with-open-source-not-enough-contributors\/","description":"The following is a review on GitHub 2022 state of Open Source. The author disagrees with the statement that Open Source is popular right now, and believes GitHub is just throwing numbers to create a false sense of reality, instead of talking about real metrics that evaluate how popular GitHub and Open Source really is."},{"title":"Necessary Conditions for an App Store Monopoly","link":"https:\/\/joaomagfreitas.link\/reads\/necessary-conditions-for-an-app-store-monopoly\/","pubDate":"Tue, 28 Mar 2023 08:54:23 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/necessary-conditions-for-an-app-store-monopoly\/","description":"The following is a review on why desktop app stores never kick off. One of the biggest reasons is the fact that everyone can download pirate software from the Internet, which in most cases work in their machine."},{"title":"Google Plan to Increase Technical Efficiency","link":"https:\/\/joaomagfreitas.link\/reads\/google-plan-increase-technical-efficiency\/","pubDate":"Mon, 27 Mar 2023 08:14:50 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/google-plan-increase-technical-efficiency\/","description":"The following is Google plan to increase technical efficiency lead by Urs H\u00f6lzle. Urs goal is to reduce the need of Site Reliability Engineers (SRE) by 50%, so that by every 20 Software Engineers, there is 1 SRE."},{"title":"Conventional Commits Cheat Sheet","link":"https:\/\/joaomagfreitas.link\/reads\/conventional-commits-cheat-sheet\/","pubDate":"Sun, 26 Mar 2023 10:04:49 +0100","guid":"https:\/\/joaomagfreitas.link\/reads\/conventional-commits-cheat-sheet\/","description":"The following is a cheatsheet on how to efficiently use conventional commits."},{"title":"Telegram & Discord Security Best Practices","link":"https:\/\/joaomagfreitas.link\/reads\/telegram-discord-security-best-practices\/","pubDate":"Sat, 25 Mar 2023 10:03:42 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/telegram-discord-security-best-practices\/","description":"The following is a list of best practices to strength your security when using Telegram and Discord. The article focuses on crypto people, but the practices should be used by everyone."},{"title":"The Missing Semester of CS","link":"https:\/\/joaomagfreitas.link\/reads\/missing-semester-of-cs\/","pubDate":"Fri, 24 Mar 2023 21:51:12 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/missing-semester-of-cs\/","description":"The following is a description of MIT&rsquo;s free Computer Science (CS) course, which covers many topics ungraduates and graduates lack knowledge of, and are vital for real jobs."},{"title":"Are Incumbents Accruing All The AI Value?","link":"https:\/\/joaomagfreitas.link\/reads\/are-incumbents-accruing-all-the-ai-value\/","pubDate":"Thu, 23 Mar 2023 16:26:13 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/are-incumbents-accruing-all-the-ai-value\/","description":"The following is a retrospective on Microsoft building an AI empire around Software Development with GitHub Copilot. The thesis is that Microsoft is creating a monopoly on the AI game, blocking others from increasing value in developers experience."},{"title":"More Art than Science","link":"https:\/\/joaomagfreitas.link\/reads\/more-art-than-science\/","pubDate":"Wed, 22 Mar 2023 11:48:00 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/more-art-than-science\/","description":"The following is a view on theory (science) and practice (art)."},{"title":"Breaking Down UUIDs","link":"https:\/\/joaomagfreitas.link\/reads\/breaking-down-uuids\/","pubDate":"Tue, 21 Mar 2023 08:04:04 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/breaking-down-uuids\/","description":"The following is a teardown on UUIDs history, their different versions, when they should be used, and how they are constructed. The author also shares the probability of collision, for a specific UUID usage scenario."},{"title":"How and why the leap second affected Cloudflare DNS","link":"https:\/\/joaomagfreitas.link\/reads\/how-and-why-the-leap-second-affected-cloudflare-dns\/","pubDate":"Mon, 20 Mar 2023 12:15:24 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-and-why-the-leap-second-affected-cloudflare-dns\/","description":"The following is a port mortem on the DNS incident that lead to some Cloudflare data centers to reject DNS queries and thus clients couldn&rsquo;t resolve domains operated by Cloudflare. This incident was caused by a leap second bug, which occurred on New Years Eve 2017."},{"title":"What are examples of software that may be seriously affected by a time jump?","link":"https:\/\/joaomagfreitas.link\/reads\/what-are-examples-of-software-that-may-be-seriously-affected-by-a-time-jump\/","pubDate":"Sun, 19 Mar 2023 11:12:51 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/what-are-examples-of-software-that-may-be-seriously-affected-by-a-time-jump\/","description":"The following is a question-answer on examples of programs that highly depend on time values and may be affected if an abnormal time jump is noticed."},{"title":"Why your GitHub action is not triggered by other actions","link":"https:\/\/joaomagfreitas.link\/why-your-github-action-is-not-triggered-by-other-actions\/","pubDate":"Sat, 18 Mar 2023 09:42:56 +0000","guid":"https:\/\/joaomagfreitas.link\/why-your-github-action-is-not-triggered-by-other-actions\/","description":"In this blog post I explain why GitHub actions don&rsquo;t trigger each other by default, helping you how to achieve it."},{"title":"How to beat Stress and Anxiety \u2013 Toolkit","link":"https:\/\/joaomagfreitas.link\/reads\/how-to-beat-stress-and-anxiety-worry-toolkit\/","pubDate":"Sat, 18 Mar 2023 09:11:52 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how-to-beat-stress-and-anxiety-worry-toolkit\/","description":"The following is a guide on how to behave when we feel stressed and anxious. The author describes how humans live in two modes (relaxed and action), and how each one relate to stress and anxiety."},{"title":"Is lock-free synchronization always superior to synchronization using locks?","link":"https:\/\/joaomagfreitas.link\/reads\/is-lock-free-synchronization-always-superior-to-synchronization-using-locks\/","pubDate":"Fri, 17 Mar 2023 08:42:34 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/is-lock-free-synchronization-always-superior-to-synchronization-using-locks\/","description":"The following is a question-answer on the use of lock-based vs lock-free primitives for data synchronization algorithms. It was asked in context of C++, but the answer is mostly agnostic of the programming language in use."},{"title":"Why is Rosetta 2 fast?","link":"https:\/\/joaomagfreitas.link\/reads\/why-is-rosetta2-fast\/","pubDate":"Thu, 16 Mar 2023 22:27:03 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/why-is-rosetta2-fast\/","description":"The following is an in-depth explanation on how <code>Rosetta 2<\/code> translator works and why it proves to be so fast."},{"title":"Software disenchantment","link":"https:\/\/joaomagfreitas.link\/reads\/software-disenchantment\/","pubDate":"Wed, 15 Mar 2023 21:19:07 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/software-disenchantment\/","description":"The following is a rant on the low care for software performance in modern software development. It was written in 2018, but 5 years later, things have only got worse"},{"title":"The Story of Heroku","link":"https:\/\/joaomagfreitas.link\/reads\/the-story-of-heroku\/","pubDate":"Tue, 14 Mar 2023 20:38:11 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the-story-of-heroku\/","description":"The following is a breakdown on the history of Heroku. The author also describes the monolith to microservices trend, giving examples on how Cloud Providers started to offer platforms for different computing resources."},{"title":"If you are thinking on splitting a story in back-end and front-end please don\u2019t!","link":"https:\/\/joaomagfreitas.link\/reads\/splitting_user_stories_frontend_and_backend\/","pubDate":"Mon, 13 Mar 2023 08:20:20 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/splitting_user_stories_frontend_and_backend\/","description":"The following is an explanation on why people shouldn&rsquo;t split user stories based on a technical perspective (e.g., frontend and backend), as that may lead to slower push of teams in getting things done, which ultimately reduces time-to-market\/feedback."},{"title":"This blog changes its theme every day","link":"https:\/\/joaomagfreitas.link\/this-blog-changes-its-theme-every-day\/","pubDate":"Sun, 12 Mar 2023 12:01:56 +0000","guid":"https:\/\/joaomagfreitas.link\/this-blog-changes-its-theme-every-day\/","description":"In this blog post I describe why and how I configured a workflow that changes my blog theme color every day."},{"title":"Automatic1111 and AI Aggregators","link":"https:\/\/joaomagfreitas.link\/reads\/stable_diffusion_automatic1111_web_ui_race\/","pubDate":"Sun, 12 Mar 2023 09:27:24 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/stable_diffusion_automatic1111_web_ui_race\/","description":"The following is a review on the race for the community chosen UI for running and researching Stable Diffusion models. The author believes that there are three criteria that explain the rise of Automatic1111 tool: it&rsquo;s a web UI, they are providing insanely fast updates\/new features, and YouTubers are mainly using this UI in their videos."},{"title":"What a good debugger can do","link":"https:\/\/joaomagfreitas.link\/reads\/what_a_good_debugger_can_do\/","pubDate":"Sat, 11 Mar 2023 09:58:48 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/what_a_good_debugger_can_do\/","description":"The following is an overview of a <em>good debugger<\/em>: one that can provide basic functionalities such as breakpoints, memory visualization\/inspection, REPL support and going up to more complex features such as rewinding the program state and controlling thread execution. The article is very focused on C++ and debug tools like <code>GDB<\/code>, <code>LLDB<\/code> and Visual Studio, but most of the concepts should be available on other languages with tools such as Jetbrains IDEs and Visual Studio Code."},{"title":"Privatizing our digital identities","link":"https:\/\/joaomagfreitas.link\/reads\/privatizing_our_digital_identities\/","pubDate":"Fri, 10 Mar 2023 19:04:15 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/privatizing_our_digital_identities\/","description":"The following is a wake-up call to our biggest single point of failure: e-mails."},{"title":"Rebuilding in Rust","link":"https:\/\/joaomagfreitas.link\/reads\/rebuilding_in_rust\/","pubDate":"Thu, 09 Mar 2023 19:09:14 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/rebuilding_in_rust\/","description":"The following is an explanation to the trend of picking Rust as the language to rebuild a tool or simply to create an whole new product. It goes to show that if you have a big community and hype behind a language, you can convince people to use it, despite being a language that is by nature, complex to use."},{"title":"Micro-apps overview","link":"https:\/\/joaomagfreitas.link\/reads\/micro_app_overview\/","pubDate":"Wed, 08 Mar 2023 10:35:26 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/micro_app_overview\/","description":"The following is an overview of micro apps. In short this class of apps intend to serve one functionality, so their context is bounded to a very small domain. Micro-apps are sometimes portrayed as a flavour of micro-frontends, but don&rsquo;t mix them: micro-apps are applications, micro-frontends is a way to build apps."},{"title":"Signs that a Startup is Going Bad","link":"https:\/\/joaomagfreitas.link\/reads\/signs_startups_going_bad\/","pubDate":"Tue, 07 Mar 2023 19:02:34 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/signs_startups_going_bad\/","description":"The following is a guide on some metrics people can use to evaluate if a startup is doing good or bad. It covers metrics observed both externally and internally."},{"title":"Applications, Services, and Workflows Overload","link":"https:\/\/joaomagfreitas.link\/reads\/applications_services_workflows_overload\/","pubDate":"Mon, 06 Mar 2023 18:50:36 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/applications_services_workflows_overload\/","description":"The following is an attempt to define what is the meaning of application, services and workflows. Developers often tend to overly abstract concepts by thinking that everything is a black-box that can be interconnected. In practice, this is not possible because every component has its different specifications and needs."},{"title":"Amdahl's Law and Optimization","link":"https:\/\/joaomagfreitas.link\/reads\/amdahls_law_and_optimization\/","pubDate":"Sun, 05 Mar 2023 09:46:31 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/amdahls_law_and_optimization\/","description":"The following is an explanation of Amdahl&rsquo;s Law and how its principles can be applied to achieve efficient distributed systems."},{"title":"Is it Time to go Back to the Monolith?","link":"https:\/\/joaomagfreitas.link\/reads\/is_it_time_to_go_back_to_monolith\/","pubDate":"Sat, 04 Mar 2023 09:39:44 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/is_it_time_to_go_back_to_monolith\/","description":"The following is an introduction to modular monoliths, known as modulith, a trend that is bringing back building software as monoliths and pushing back the concept of microservices."},{"title":"Product Windows","link":"https:\/\/joaomagfreitas.link\/reads\/product_windows\/","pubDate":"Fri, 03 Mar 2023 21:13:16 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/product_windows\/","description":"The following is an explanation of product windows, the metric that measures the current space for competition on a given market."},{"title":"Schema Driven Development","link":"https:\/\/joaomagfreitas.link\/reads\/schema_driven_development\/","pubDate":"Thu, 02 Mar 2023 21:04:41 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/schema_driven_development\/","description":"The following is a retrospective on the concept of developing around a schema. Modern development is based on dynamic APIs (as in you never know exactly what is the output of the API), however toolchains are being built to enforce validations with schemas, which allows safer consuption by clients."},{"title":"The evolution of Facebook\u2019s iOS app architecture","link":"https:\/\/joaomagfreitas.link\/reads\/evolution_of_facebook_ios_app_architecture\/","pubDate":"Wed, 01 Mar 2023 21:11:28 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/evolution_of_facebook_ios_app_architecture\/","description":"The following is a review on the evolution of Facebook iOS app architecture, since it was rewritten in 2012. It&rsquo;s an unique piece of engineering history, with high focus on Meta open-source build system: buck."},{"title":"Taxonomy of Startup Risk","link":"https:\/\/joaomagfreitas.link\/reads\/taxonomy_of_startup_risk\/","pubDate":"Tue, 28 Feb 2023 07:54:02 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/taxonomy_of_startup_risk\/","description":"The author shares some insights on a set of concepts related to building and funding a startup. The author thinks about these concepts on an hierarchy perspective (taxonomy), but I like to picture them as a to-do list for evaluating if an idea is worth building."},{"title":"Wrong Sequences For Startups","link":"https:\/\/joaomagfreitas.link\/reads\/wrong_sequences_for_startups\/","pubDate":"Mon, 27 Feb 2023 19:05:58 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/wrong_sequences_for_startups\/","description":"The following is a list of bad practices you shouldn&rsquo;t do on a typical startup environment, especially if you are one the founders."},{"title":"Why ChatGPT Needs AuthZ","link":"https:\/\/joaomagfreitas.link\/reads\/why_chatgpt_needs_authz\/","pubDate":"Sun, 26 Feb 2023 09:49:23 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/why_chatgpt_needs_authz\/","description":"The author explains what is authorization (authz) in modern systems and explains how current ChatGPT use case doesn&rsquo;t need it (because it&rsquo;s an LLM and doesn&rsquo;t access external systems). However, the author sees that it will need authz once ChatGPT can be integrated in workflows with external platforms."},{"title":"All of the tech PlanetScale replaces","link":"https:\/\/joaomagfreitas.link\/reads\/all_the_tech_planetscale_replaces\/","pubDate":"Sat, 25 Feb 2023 10:59:11 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/all_the_tech_planetscale_replaces\/","description":"The following is an introduction to PlanetScale: a serverless based MySQL platform, and all the tech the platform replaces. One thing I really like about Vitess is their workflow with a GitHub like deployment management platform and their care for developer experience."},{"title":"Why DSLs Fail","link":"https:\/\/joaomagfreitas.link\/reads\/why_dsls_fail\/","pubDate":"Fri, 24 Feb 2023 08:04:50 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/why_dsls_fail\/","description":"The author describes the pros and cons of creating and mantaining a Domain Specific Language (DSL), explaining how DSLs keep a slow pace of evolution, in contrast to system grow."},{"title":"Fuck Medium","link":"https:\/\/joaomagfreitas.link\/reads\/fuck_medium\/","pubDate":"Thu, 23 Feb 2023 09:40:39 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/fuck_medium\/","description":"The following is a rant on some of the things that are wrong with Medium. For me, the worst part about medium is the lack of great content people provide. It seems people prefer spam over great content, so they can establish a &ldquo;passive revenue&rdquo;. Why do people want to capitalize on everyting?"},{"title":"YouTube as Infinite File Storage","link":"https:\/\/joaomagfreitas.link\/reads\/youtube_as_infinite_file_storage\/","pubDate":"Wed, 22 Feb 2023 20:44:47 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/youtube_as_infinite_file_storage\/","description":"The following read excites me a lot. It&rsquo;s about exploiting protocols for fun and profit! In this case, the author managed to established the following thesis: YouTube can be perceived as an Infinite File Storage provider, considering that you don&rsquo;t have restrictions on how much videos you upload (not per day), so finding a way to encode data in video format allows you to upload it on YouTube for free."},{"title":"Funding Open Source","link":"https:\/\/joaomagfreitas.link\/reads\/funding_open_source\/","pubDate":"Tue, 21 Feb 2023 09:30:25 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/funding_open_source\/","description":"The following is a retrospective on open-source funding and Vercel business model."},{"title":"Password strength explained","link":"https:\/\/joaomagfreitas.link\/reads\/password_strength_explained\/","pubDate":"Mon, 20 Feb 2023 08:48:48 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/password_strength_explained\/","description":"The author does a breakdown on current metrics for what people consider a strong password and goes on to explain that these methods are flawed, proving his theory with math. In the end he explains that a strong password shouldn&rsquo;t be a password that is hard to remember, but should instead have higher entropy\/characters, so that computing an hash version of it is significantly harder."},{"title":"Speed-Up your Flutter Web App","link":"https:\/\/joaomagfreitas.link\/reads\/speedup_your_flutter_web_app\/","pubDate":"Sun, 19 Feb 2023 10:06:20 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/speedup_your_flutter_web_app\/","description":"The following is a small, but detailed guide, that helps reduce load times of Flutter web apps. Make sure to follow these tips if you&rsquo;re deploying with Flutter web!"},{"title":"Ask Yourself Dumb Questions","link":"https:\/\/joaomagfreitas.link\/reads\/ask_yourself_dumb_questions\/","pubDate":"Sat, 18 Feb 2023 22:32:42 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/ask_yourself_dumb_questions\/","description":"The author presents the idea of asking dumb questions, instead of focusing only on what seems right. Dumb and simple questions are an important factor of thinking process, as they allow us to conceptualize new paths and consequences that don&rsquo;t provide much value."},{"title":"The Libera Manifesto","link":"https:\/\/joaomagfreitas.link\/reads\/the_libera_manifesto\/","pubDate":"Fri, 17 Feb 2023 07:54:10 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the_libera_manifesto\/","description":"The following is a manifesto for FOSS. It is composed by a set of theses (short sentences that establish an idea), preached by developers who love to share software in an open-source manner."},{"title":"core-js: standing on the shoulders of giants","link":"https:\/\/joaomagfreitas.link\/reads\/core_js_whats_next\/","pubDate":"Thu, 16 Feb 2023 08:26:38 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/core_js_whats_next\/","description":"The following is not the typical read you see on this blog. It&rsquo;s a mark on the web history. Denis Pushkarev, the author of core-js, the library who provides a way polyfillers to modern web transpilers like Babel, does a breakdown on how he has been supporting the project for over 8 years, while not getting any financial compensation over it. Even worse, it&rsquo;s common for Denis to receive hate messages from developers who use core-js, indirectly refering to him as a slave."},{"title":"Should OSS Projects Have Telemetry?","link":"https:\/\/joaomagfreitas.link\/reads\/should_oss_projects_have_telemetry\/","pubDate":"Wed, 15 Feb 2023 07:53:54 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/should_oss_projects_have_telemetry\/","description":"The author reflects on the usage of telemetry in OSS projects, explaining how important it is for maintainers, as it&rsquo;s an excellent way to get feedback from developers who are using the tools."},{"title":"What Won't Change","link":"https:\/\/joaomagfreitas.link\/reads\/what_wont_change\/","pubDate":"Tue, 14 Feb 2023 20:53:33 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/what_wont_change\/","description":"The following is a retrospective on the &ldquo;what will change&rdquo; vs &ldquo;what will not change&rdquo; debate."},{"title":"2023 State of Databases for Serverless & Edge","link":"https:\/\/joaomagfreitas.link\/reads\/state_of_serverless_databases_2023\/","pubDate":"Mon, 13 Feb 2023 20:00:32 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/state_of_serverless_databases_2023\/","description":"The following is a retrospective on the current shift of applications using serverless\/edge computing models and finding databases that support their programming and computing model. The author goes on to detail the state-of-the-art of databases used in serverless applications, but also traditional databases that are adopting this model."},{"title":"Stack Shift","link":"https:\/\/joaomagfreitas.link\/reads\/stack_shift\/","pubDate":"Sun, 12 Feb 2023 19:58:55 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/stack_shift\/","description":"The following is a retrospective on the current trend to shift to the usage of SQLite, a local file database, instead of traditional remote database management systems."},{"title":"Self Signed SSL\/TLS Certificate with IP Address","link":"https:\/\/joaomagfreitas.link\/reads\/self_signed_cert_ipsan\/","pubDate":"Sat, 11 Feb 2023 21:44:02 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/self_signed_cert_ipsan\/","description":"The following is a guide on how to generate a self-signed TLS certificate configured with IP SAN field using OpenSSL."},{"title":"When should you use an Exception?","link":"https:\/\/joaomagfreitas.link\/reads\/when_should_you_use_an_exception\/","pubDate":"Fri, 10 Feb 2023 08:10:18 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/when_should_you_use_an_exception\/","description":"The following is a summary on exceptions, how and where to use them."},{"title":"(Go) How to Rate Limit HTTP Requests","link":"https:\/\/joaomagfreitas.link\/reads\/how_to_rate_limit_http_requests_in_golang\/","pubDate":"Thu, 09 Feb 2023 11:40:52 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how_to_rate_limit_http_requests_in_golang\/","description":"The following is a guide on how to perform HTTP request rate limiting in Golang, using an approach that is web framework agnostic, meaning you can integrate it in whatever tool you are using to build your web services."},{"title":"Building a Startup from Scratch: My Mistakes as CTO","link":"https:\/\/joaomagfreitas.link\/reads\/building_a_startup_from_scratch_my_mistakes_as_cto\/","pubDate":"Wed, 08 Feb 2023 21:39:04 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/building_a_startup_from_scratch_my_mistakes_as_cto\/","description":"The author describes his experience on rescuing and building a startup, realizing that he spent too much time on building backend services and could have relied only on Supabase, a free self-hosted Firebase alternative."},{"title":"The SQLite OS Interface or \"VFS\"","link":"https:\/\/joaomagfreitas.link\/reads\/vfs\/","pubDate":"Tue, 07 Feb 2023 13:02:46 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/vfs\/","description":"This article describes the SQLite OS portability layer or &ldquo;VFS&rdquo; - the module at the bottom of the SQLite implementation stack that provides portability across operating systems."},{"title":"Cloud Services Ranked: Build vs. Buy","link":"https:\/\/joaomagfreitas.link\/reads\/cloud_services_ranked_build_vs_buy\/","pubDate":"Mon, 06 Feb 2023 20:58:57 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/cloud_services_ranked_build_vs_buy\/","description":"The following is a review on whether you should build your own infrastructure vs relying on cloud services, for different classes of computing."},{"title":"Future is Not Evenly Distributed","link":"https:\/\/joaomagfreitas.link\/reads\/future_not_evenly_distributed\/","pubDate":"Sun, 05 Feb 2023 08:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/future_not_evenly_distributed\/","description":"The following is a retrospective on the <em>development S-Curve<\/em>. The author critizes developers of trying to hype new technologies, following a trend-based development, instead of getting hands dirty and try what is currently available, as most developers\/companies still use old (but stable) technology."},{"title":"Zero Interest Rate Phenomena","link":"https:\/\/joaomagfreitas.link\/reads\/zero_interest_rate_phenomena\/","pubDate":"Sat, 04 Feb 2023 21:05:45 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/zero_interest_rate_phenomena\/","description":"The author describes the concept of ZIRP (zero interest-rate policy) and risk-free rates, and how these are applied in the current (<strong>2023<\/strong>) economical crisis."},{"title":"Estimating Square Roots in Your Head","link":"https:\/\/joaomagfreitas.link\/reads\/estimating_square_root_in_your_head\/","pubDate":"Fri, 03 Feb 2023 10:37:56 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/estimating_square_root_in_your_head\/","description":"The following is an explanation on an old method to quickly estimate the <em>square root<\/em> of a number in your brain."},{"title":"What Doesn't Fit in Git","link":"https:\/\/joaomagfreitas.link\/reads\/what_doesnt_fit_in_git\/","pubDate":"Thu, 02 Feb 2023 08:54:35 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/what_doesnt_fit_in_git\/","description":"The following is a review on some artifacts we often commit to our Git repositories, but that shouldn&rsquo;t be."},{"title":"Why would anyone need JavaScript generator functions?","link":"https:\/\/joaomagfreitas.link\/reads\/why_would_anyone_need_javascript_generator_functions\/","pubDate":"Wed, 01 Feb 2023 08:43:43 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/why_would_anyone_need_javascript_generator_functions\/","description":"The following is an explanation on how <strong>function generators<\/strong> work in Javascript. The author goes on to present examples of operations with function generators, by associating it with the process of experiencing Tim Tams."},{"title":"Forking Chrome to render in a terminal","link":"https:\/\/joaomagfreitas.link\/reads\/carbonyl\/","pubDate":"Tue, 31 Jan 2023 23:04:46 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/carbonyl\/","description":"The author explains how he managed to efficiently turn the terminal into a web browser (Carbonyl)"},{"title":"Type-Safe API Calls: tRPC vs. gRPC","link":"https:\/\/joaomagfreitas.link\/reads\/typesafe_api_trpc_vs_grpc\/","pubDate":"Mon, 30 Jan 2023 08:12:03 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/typesafe_api_trpc_vs_grpc\/","description":"The following is a retrospective on type-safe API calls, a protocol which both client and server fully understand the data and requests schema."},{"title":"Enhance your GitHub READMEs with native Mermaid diagrams","link":"https:\/\/joaomagfreitas.link\/reads\/enhance_readme_with_mermaid_diagrams\/","pubDate":"Sun, 29 Jan 2023 08:56:19 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/enhance_readme_with_mermaid_diagrams\/","description":"The following is a guide on how to use <em>mermaid<\/em>: an open-source diagrams DSL that is embedded in GitHub markdown rendering engine."},{"title":"Source-code is not enough","link":"https:\/\/joaomagfreitas.link\/reads\/source_code_is_not_enough\/","pubDate":"Sat, 28 Jan 2023 13:38:15 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/source_code_is_not_enough\/","description":"The following is a retrospective on how publicly releasing source-code is not enough for a software to be considered open-source. The author argues that simple things such as good documentation are critical for someone to understand a codebase."},{"title":"SQLite-based databases on the postgres protocol? Yes we can!","link":"https:\/\/joaomagfreitas.link\/reads\/sqlite_based_databases_postgres_protocol\/","pubDate":"Fri, 27 Jan 2023 07:42:25 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/sqlite_based_databases_postgres_protocol\/","description":"The author presents the latest features of <code>libsql<\/code>: an open source + contribution fork of <code>sqlite<\/code>, that aims to bring modern databases features to sqlite. The presented features are the extension of network support in sqlite, in the sense that it can be accessed over the internet using Postgres wire protocol and HTTP."},{"title":"Prompt Engineering Shouldn't Exist","link":"https:\/\/joaomagfreitas.link\/reads\/prompt_engineering_shouldnt_exist\/","pubDate":"Thu, 26 Jan 2023 08:11:23 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/prompt_engineering_shouldnt_exist\/","description":"The author gives his take on recent hype about prompt engineering in Machine Learning (ML). He doesn&rsquo;t believe that prompt engineering is related at all to ML, but is more an alternative name to system integrations engineering."},{"title":"The ChatGPT Cheat Sheet","link":"https:\/\/joaomagfreitas.link\/reads\/the_chatgpt_cheat_sheet\/","pubDate":"Wed, 25 Jan 2023 18:56:30 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the_chatgpt_cheat_sheet\/","description":"The following is an in depth cheat sheet for various type of prompts you can ask ChatGPT."},{"title":"The World Is Run By People No Smarter Than You","link":"https:\/\/joaomagfreitas.link\/reads\/world_no_smarter_you\/","pubDate":"Tue, 24 Jan 2023 08:03:24 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/world_no_smarter_you\/","description":"The author recaps one of Steve Jobs&rsquo; most famous saying, and relates the decisions made by leaders in tech, to this quote. In short, even the most famous leaders\/business men take fail, so don&rsquo;t fear of also failing and commit."},{"title":"How to Version an API","link":"https:\/\/joaomagfreitas.link\/reads\/how_to_version_api\/","pubDate":"Mon, 23 Jan 2023 20:01:22 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/how_to_version_api\/","description":"The following is an analysis of API versioning - the process of labeling an API that will be upgraded, which the deprecating API must still properly work to existing consumers."},{"title":"A Visual Comparison of Different National Layouts on a Computer Keyboard","link":"https:\/\/joaomagfreitas.link\/reads\/visual_comparison_keyboard_layouts\/","pubDate":"Sun, 22 Jan 2023 09:52:03 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/visual_comparison_keyboard_layouts\/","description":"A full detailed document with graphical representations of keyboard layouts used in different countries."},{"title":"Anti-Patterns When Building Container Images","link":"https:\/\/joaomagfreitas.link\/reads\/docker_build_container_images_anti_patterns\/","pubDate":"Sat, 21 Jan 2023 12:35:56 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/docker_build_container_images_anti_patterns\/","description":"The author describes common antipatterns when building Docker container images, and provides tips on how to configure them for a better solution."},{"title":"What is the user need for Cryptocurrency?","link":"https:\/\/joaomagfreitas.link\/reads\/user_need_for_cryptocurrency\/","pubDate":"Fri, 20 Jan 2023 08:17:33 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/user_need_for_cryptocurrency\/","description":"The author discusses how cryptocurrencies present little or no use cases for user needs and argues that this is the reason many crypto\/digital currencies fail. It goes on to explain how Bitcoin failed to meet 2 out of the 3 use cases it proposes, and compares current currency systems use needs which modern cryptocurrencies do not provide. It&rsquo;s a good read to understand how valuable cryptocurrency really is for real world adoption."},{"title":"Deep Dive into Go Concurrency","link":"https:\/\/joaomagfreitas.link\/reads\/deep_dive_concurrency_go\/","pubDate":"Thu, 19 Jan 2023 08:21:15 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/deep_dive_concurrency_go\/","description":"The following is a detailed explanation on how Go concurrency model works. The author explains differentiates Goroutines from normal OS threads, what are running queues, working steal protocol and more."},{"title":"Web3.storage Architecture","link":"https:\/\/joaomagfreitas.link\/reads\/web3_storage_architecture\/","pubDate":"Wed, 18 Jan 2023 08:20:40 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/web3_storage_architecture\/","description":"The following is a summary on how the web3.storage platform is designed. Web3.storage is a cloud storage provider that runs on IPFS (Interplanetary Filesystem), and is used by Web3 dApps."},{"title":"You can have user accounts without needing to manage user accounts","link":"https:\/\/joaomagfreitas.link\/reads\/user_identity_without_managing_user_identity\/","pubDate":"Tue, 17 Jan 2023 08:38:48 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/user_identity_without_managing_user_identity\/","description":"The author explains how you can achieve user identity\/authentication, without needing to implement yet another identity management component. With the help of user identity gateways, such as Auth0, developers can integrate different platform providers and receive information that is enough to identify users in the developing platform."},{"title":"Garbage In, Garbage Out","link":"https:\/\/joaomagfreitas.link\/reads\/garbage_in_garbage_out\/","pubDate":"Mon, 16 Jan 2023 08:32:52 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/garbage_in_garbage_out\/","description":"The following is an analysis around the concept of producing bad output if bad input is taken. In general computing, this statement is true most of the times, but AI has been proving that it&rsquo;s not always true, as LLM can learn in an <em>unsupervised<\/em> manner, so it can correct itself if the output is not so good."},{"title":"Winning Ugly and the Metagame","link":"https:\/\/joaomagfreitas.link\/reads\/winning_ugly_metagame\/","pubDate":"Sun, 15 Jan 2023 09:30:51 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/winning_ugly_metagame\/","description":"The author explains what the concept of metagame and how it is applied to any competitive area, not just sports. Metagame is about understanding the competition moves and leveraging that information to make win decisions."},{"title":"Open Source is not a business model","link":"https:\/\/joaomagfreitas.link\/reads\/open_source_not_business_model\/","pubDate":"Sat, 14 Jan 2023 11:45:05 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/open_source_not_business_model\/","description":"The following is an explanation on how to create a business model around your open-source work."},{"title":"Normal HTTP vs Proxy HTTP Packets","link":"https:\/\/joaomagfreitas.link\/reads\/normal_http_vs_proxy_http_packets\/","pubDate":"Fri, 13 Jan 2023 07:49:42 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/normal_http_vs_proxy_http_packets\/","description":"The following is an explanation of how HTTP proxy connections are setup and how it differs from a normal HTTP session."},{"title":"Fully Managed Infrastructure","link":"https:\/\/joaomagfreitas.link\/reads\/fully_managed_infrastructure\/","pubDate":"Thu, 12 Jan 2023 07:59:19 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/fully_managed_infrastructure\/","description":"The author explains the usage of LLM\/AI as an interface for developers and customers consuption. It provides real examples on these interfaces integration."},{"title":"White Space","link":"https:\/\/joaomagfreitas.link\/reads\/white_space\/","pubDate":"Wed, 11 Jan 2023 08:01:45 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/white_space\/","description":"The author explains the concept of white space in product\/business development, a market area that hasn&rsquo;t been fully explored to be considered a main field of investment, but that is growing and quickly introduces customers new experiences\/knowledge\/value."},{"title":"Is GitHub a Social Network?","link":"https:\/\/joaomagfreitas.link\/reads\/github_social_network\/","pubDate":"Tue, 10 Jan 2023 08:14:50 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/github_social_network\/","description":"The author explains the usage of LLM\/AI as an interface for developers and customers consuption. It provides real examples on these interfaces integration."},{"title":"Semi-Organic Growth","link":"https:\/\/joaomagfreitas.link\/reads\/google_semi_organic_growth\/","pubDate":"Mon, 09 Jan 2023 11:43:41 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/google_semi_organic_growth\/","description":"The author explains the reason why Google still needs to market its core product (Google Search Engine), although being considered the best in the competition. The reason is that Google cannot fully grow organically, because at the end of the day, it&rsquo;s just an accessor for information and not really a program that answers our questions. So naturally, programs that answer our questions instead of providing ways to access information, will win the information search race."},{"title":"Go Generics Cheat Sheet","link":"https:\/\/joaomagfreitas.link\/reads\/go_generics_cheatsheet\/","pubDate":"Sun, 08 Jan 2023 10:41:20 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/go_generics_cheatsheet\/","description":"A in depth cheat sheet for hacking with generics in Golang"},{"title":"Apple's Enemies","link":"https:\/\/joaomagfreitas.link\/reads\/apples_enemies\/","pubDate":"Sat, 07 Jan 2023 15:20:05 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/apples_enemies\/","description":"The author describes the markets which Apple takes more profit in and specifies which companies are competing the most with them."},{"title":"The M:N API Problem","link":"https:\/\/joaomagfreitas.link\/reads\/the_m_n_api_problem\/","pubDate":"Fri, 06 Jan 2023 19:57:11 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the_m_n_api_problem\/","description":"The author describes the <strong>M:N API<\/strong> problem: how to ensure that <em>(M)<\/em> services that connect to <em>(N)<\/em> different services, can keep data flow during their lifetime with breaking changes on both ends."},{"title":"The Implication of more Developers","link":"https:\/\/joaomagfreitas.link\/reads\/implication_of_more_developers\/","pubDate":"Thu, 05 Jan 2023 21:45:27 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/implication_of_more_developers\/","description":"The author provides his view on the current status of Software Development jobs and the continuous rise of Software developers. He raises an important question about the rise of new AI tools that can potentially replace entry level developers, blocking their way into the industry."},{"title":"Flutter Test Ultimate Cheat Sheet","link":"https:\/\/joaomagfreitas.link\/reads\/flutter_test_ultimate_cheat_sheet\/","pubDate":"Wed, 04 Jan 2023 22:04:37 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/flutter_test_ultimate_cheat_sheet\/","description":"A clean, interactive and in depth cheat sheet for the bultin Flutter testing framework"},{"title":"AI-driven Interfaces","link":"https:\/\/joaomagfreitas.link\/reads\/ai_driven_interfaces\/","pubDate":"Tue, 03 Jan 2023 19:50:46 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/ai_driven_interfaces\/","description":"The author explains the usage of LLM\/AI as an interface for developers and customers consuption. It provides real examples on these interfaces integration."},{"title":"HTTP request case sensitivity","link":"https:\/\/joaomagfreitas.link\/reads\/http_request_case_sensitivity\/","pubDate":"Mon, 02 Jan 2023 18:41:44 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/http_request_case_sensitivity\/","description":"The author summarizes which HTTP fields\/components are case sensitive and which aren&rsquo;t"},{"title":"SQLite automatic indexes on JOIN queries","link":"https:\/\/joaomagfreitas.link\/reads\/sqlite_automatic_indexes\/","pubDate":"Sun, 01 Jan 2023 22:02:40 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/sqlite_automatic_indexes\/","description":"The author explains why and how SQLite creates indexes automatically to increase JOIN queries performance, and compares the behaviour to PostgreSQL"},{"title":"SQLite is not a toy database","link":"https:\/\/joaomagfreitas.link\/reads\/sqlite_not_a_toy_database\/","pubDate":"Mon, 19 Dec 2022 22:18:43 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/sqlite_not_a_toy_database\/","description":"The author performs a breakthrough on the diverse features SQLite provides and debunks common myths regarding SQLite databases."},{"title":"Vector Search","link":"https:\/\/joaomagfreitas.link\/reads\/vector_search\/","pubDate":"Sun, 18 Dec 2022 22:59:16 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/vector_search\/","description":"The author explains what the concept of vector search is, its applications in AI and search engines."},{"title":"Building A Virtual Machine inside ChatGPT","link":"https:\/\/joaomagfreitas.link\/reads\/building_a_virtual_machine_inside_chatgpt\/","pubDate":"Thu, 08 Dec 2022 09:40:01 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/building_a_virtual_machine_inside_chatgpt\/","description":"The author explains how we has able to establish an emulation environment with ChatGPT, a new dialog based AI that is very powerful. What&rsquo;s more interesting is that the author describes that the AI lives in an past alternative universe, giving the feeling that we are on the edge of creating universes inside our own universe."},{"title":"The Frontend Ouroboros","link":"https:\/\/joaomagfreitas.link\/reads\/the_frontend_ouroboros\/","pubDate":"Thu, 08 Dec 2022 09:19:38 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/the_frontend_ouroboros\/","description":"The author provides his view on the separation of frontend with backend, explaining that in theory, the two are segregated of each other and can be developed separately, but in practice, the frontend is dependant of almost every backend design decision."},{"title":"Types of VPN","link":"https:\/\/joaomagfreitas.link\/reads\/types_of_vpn\/","pubDate":"Thu, 08 Dec 2022 09:01:10 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/types_of_vpn\/","description":"The author shares a diagram that describes every possible type of VPN"},{"title":"Tables Relations in SQL Server: One-to-One, One-to-Many, Many-to-Many","link":"https:\/\/joaomagfreitas.link\/reads\/table_relations_in_sql_server\/","pubDate":"Thu, 01 Dec 2022 14:36:50 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/table_relations_in_sql_server\/","description":"Overview of database table relationships"},{"title":"Do Cold Starts Matter?","link":"https:\/\/joaomagfreitas.link\/reads\/do_cold_starts_matter\/","pubDate":"Thu, 01 Dec 2022 10:43:57 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/do_cold_starts_matter\/","description":"The author provides his view on the impact of cold starts and some tips to reduce its time"},{"title":"Why Do Configuration Changes Cause Outages?","link":"https:\/\/joaomagfreitas.link\/reads\/configuration_changes_outages\/","pubDate":"Sat, 26 Nov 2022 20:37:54 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/configuration_changes_outages\/","description":"The author provides his view on how configuration changes impact software production lines and how they can be evil."},{"title":"Starting Up Vs Staying On","link":"https:\/\/joaomagfreitas.link\/reads\/startingup_vs_staying_on\/","pubDate":"Sat, 26 Nov 2022 20:30:11 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/startingup_vs_staying_on\/","description":"The author provides his view on success and failure, and how it impacts people decisions when making new career moves."},{"title":"What is an Hacker?","link":"https:\/\/joaomagfreitas.link\/what-is-an-hacker\/","pubDate":"Thu, 17 Nov 2022 18:44:18 +0000","guid":"https:\/\/joaomagfreitas.link\/what-is-an-hacker\/","description":"tl;dr: an hacker is an individual who challenges himself to achieve something through a path which wasn&rsquo;t thought of!"},{"title":"MyBMW App","link":"https:\/\/joaomagfreitas.link\/projects\/my-bmw-app\/","pubDate":"Wed, 01 Jun 2022 00:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/projects\/my-bmw-app\/","description":"The MyBMW App is a mobile app that enables BMW\/MINI customers to feel more connected to their vehicles, even if they are remotely distant. Depending on the region\/market the customer is present and the features subscribed to, customers can:\nRemotely control their vehicle (e.g., turn on\/off AC, increase\/decrease seat heating, lock\/unlock doors) \ud83d\udd13 View vehicle information and statistics (e.g., fuel\/energy consumption, distance travelled, oil level) \ud83d\udcc8 Plan a trip to a place\/POI \ud83d\uddfa\ufe0f Interact with other customers in a private social media \ud83e\udec2 Get notified for vehicle events (e."},{"title":"Binary Exploitation of Figlet Unix Binary","link":"https:\/\/joaomagfreitas.link\/binary-exploitation-of-figlet-unix-binary\/","pubDate":"Fri, 18 Feb 2022 08:53:52 +0000","guid":"https:\/\/joaomagfreitas.link\/binary-exploitation-of-figlet-unix-binary\/","description":"Binary Exploitation Figlet utility tool, a report for TPAS@FCUP course!"},{"title":"Natillas","link":"https:\/\/joaomagfreitas.link\/natillas\/","pubDate":"Wed, 15 Sep 2021 09:19:46 +0100","guid":"https:\/\/joaomagfreitas.link\/natillas\/","description":"Reliving childhood favorite dessert."},{"title":"Object-oriented event sourcing","link":"https:\/\/joaomagfreitas.link\/reads\/object-oriented-event-sourcing\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/object-oriented-event-sourcing\/","description":"The following describes how to build a state machine for event sourcing in Kotlin, comparing both Object Oriented and Functional styles and how they provide value in different use cases."},{"title":"Projects","link":"https:\/\/joaomagfreitas.link\/projects\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/projects\/","description":{}},{"title":"Statistics","link":"https:\/\/joaomagfreitas.link\/reads\/stats\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/joaomagfreitas.link\/reads\/stats\/","description":{}}]}}