Login with PDF
In this blog post I teardown my thought process on how I discovered how to integrate an OAuth connector that authenticates with a pdf.
Recent content in About on João Freitas
In this blog post I teardown my thought process on how I discovered how to integrate an OAuth connector that authenticates with a pdf.
In this blog post I reflect on my first really experience on maintaining an open-source project on GitHub.
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…
A blog post about projects/ideas I tried bringing to life but didn’t exactly work out
Monitoring agents report live system information so machines can be easily supervisioned from a single dashboard view I self-host custom software under multiple machines (old laptops, raspberry pis) and needed a tool to supervision these machines state remotely. I couldn’t find a tool that allowed me to drop a binary and silently connect the machine to a dashboard where I could monitor it.…
Instagram Archiver is a tool that automates archiving Instagram user stories, allowing to rewatch them after they expire. It’s a really neat tool if you want to build a timeline of your favorite creator activity. Upon entering the tool, users are prompted with an input to search for their creators username @handle Any time, users can view the user archived stories If users have any question…
The dotfiles movement aims developers to share the configuration files that customize their working space. I’ve also joined the movement when migrating from a Desktop Environment (GNOME) to using a Window Manager (AwesomeWM). Along my rice (theme), local programs (scripts) and configuration files, I also track down all the packages that I’ve installed (PACKAGES), and provide a script…
In this blog post I explain the rationale for why I think that projects should be written using the project main language.
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.
In this blog post I cover what I’ve learned as well as the difficulties I felt, by reading an article for an whole year.
The following is a write-up of how a developer (author) deleted 80% of the codebase he started working on in just three days.
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.
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.
After the success of “Explaining Kubernetes to my Uber driver”, the author is back to story tell how she would explain how SSH works to his Uber driver.
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’t 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…
The following is a summary on how much people spend per hour in streaming services.
The following is a review of today’s massive source of information and how the hard part is to now find the right information to learn.
The following article discusses the innovative idea of documenting housing chores, material bought, how to replace things, etc…
The following article provides an overview of how browsers render a webpage.
The following article explains how to test accessibility of a website in an automated and manual manner, how to identify and fix issues.
The following is the story of how the author created his own state manager using JavaScript Proxy API.
The following is a review on the amount of writing a Netflix Software Engineer puts in a on-call week.
Today’s read is all about GitHub alternatives and the main features you can find in these, that you don’t find in GitHub, as expected from the author.
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.
The following is a small guide on how to check if your Linux environment supports packet injection & capturing (via monitor mode)
The following blog post reveals some tips ’n’ tricks you can use to boost your efficiency in a bash/zsh terminal.
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).
The following article talks about transitioning from software-only projects, to projects that involve hardware and their hurdles.
The following are some useful Git commands to cleanup the state of a repository.
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.
The following article covers Google code review process and their in-house code review tool, Critique , and why software engineers at Google love Critique features so much.
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.
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 .obj files in CSS styles which are then applied to HTML elements.
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). https://matt-rickard.ghost.io/the-implications-of-more-developers Many AI products today are focused on indexing as much as possible. Every meeting, every document, every moment of your day. Every modality — images, audio, and text. Devices that are meant to…
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.
The following article explains how computers connect to each other via DNS and many other network protocols
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.
The following article describes some mistakes often seen in Kotlin codebases and examples on how to improve them.
The following article is an introduction and explanation of web push notifications: what are they, how they work and their internals.
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.
The following is an overview on the new cloud service available in AWS - S3 Express - and how big data companies can profit from it.
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.
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.
The following is not a read or an article, it’s just a mind blowing 3D representation of a Large Language Model (LLM).
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).
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.
The following article covers the Law of Demeter which implies that clients can only communicate with their direct dependencies (let’s say friends) and never with transitive dependencies (dependency of my dependency).
The following article explains why the Accept HTTP header should not be used to choose between an hyper-driven response or a plain JSON response.
The following is the reference for structured logging messages as well as how they should be rendered.
The following is the roadmap of Kotlin Multiplatform for 2024.