Levels.fyi developed a scalable fuzzy search solution using PostgreSQL to help users quickly find relevant salary information. Its team's initial approach used simple LIKE queries, but evolved to use materialized views for optimization and full-text search with tsvector for improved results. To further improve search accuracy, they implemented a custom relevance algorithm that used factors like exact matches, popularity, and similarity.
This blog post dives into how you can use Fastify, Vite, and @fastify/vite to produce a small, low-overhead application setup that has the absolute minimal set of dependencies and moving parts. This setup achieved similar SSR performance but with a fraction of dependencies from Astro, making the overall development setup much smaller. The post first gives a crash course on Vite, then walks through how to integrate it into Fastify applications, before finally moving on to the rewrite.
Slack automated deployments with a program called ReleaseBot. ReleaseBot monitors deployments, detects anomalies using z-scores and dynamic thresholds, and can pause or roll back deployments if necessary. This proved to be a big improvement compared to Slack’s previous process, which involved engineers serving as “Deployment Commanders” that oversaw manual deploys.
Self-management allows you to work independently, builds trust with your manager, and frees you both to focus on strategic goals. To self-manage effectively, developers should manage timelines well, be self-motivated, give feedback, manage multiple stakeholders, and own their career development.
A tech lead's role involves setting a strategic direction, influencing project staffing, and ensuring successful execution. They identify key problems, propose solutions, seek alignment across teams, and collaborate to secure resources for their initiatives. While tech leads still write code, their success relies heavily on strong communication and interpersonal skills to guide the team and promote the project's visibility.
Some of the most important soft skills include empathy, communication, adaptability, problem-solving, and leadership. Learning soft skills takes effort, but can be done through practice, self-reflection, seeking feedback, and utilizing resources like books and courses.
HeyForm is an open-source form builder that allows people to create conversational forms for surveys, questionnaires, quizzes, and polls.
Celest is a cloud platform for Flutter. Developers can build their backend in Dart without having to leave their IDE.
Headline-driven development is a method for shipping software by creating and focusing on a stream of short, clear headlines that communicate the key features of each release before writing any code. This approach helps prioritize the most important features and cuts out any unnecessary work.
For AI products to succeed and improve over time, it’s important to have an evaluation approach. This article lays out a three-level approach. First, unit tests should assert expected AI outputs. Second, tools should log AI interactions for easy analysis. Lastly, AI products should have A/B testing to better understand user behavior.
This author had a weird internet problem where their home Wi-Fi connection would only work when it was raining. Debugging revealed that a neighbor's tree had grown tall enough to intermittently obstruct the signal. The rain would weigh down the branches, temporarily clearing the obstruction, but the connection would fail again as the tree dried. The author upgraded their Wi-Fi hardware to a newer standard that was more resistant to interference to fix the issue.
When Gmail launched on April Fools' Day 2004, its surprising 1GB of storage and Google's reputation for pranks led many to believe it was a joke. The closest competitor at the time only offered 15MB of free storage.
An exploration of the xz backdoor.
ChatGPT is now instantly accessible without signup.
This article is a breakdown of a web app that combines PDF.js for PDF processing and Tesseract.js for OCR functionality, allowing users to drag and drop PDFs or images directly in their browser for text extraction. The project was built quickly with the help of Claude 3 Opus and ChatGPT for code generation. The end result is a program that is simple, runs locally without data uploads, and will work well without needing any updates in the future.
Infisical, a secrets management platform, migrated from MongoDB to PostgreSQL because of difficulties configuring transactions in MongoDB, a lack of relational features, inconsistent versioning across cloud providers, and a lack of a good user experience with MongoDB. The migration process required a temporary block on write operations and involved careful data transformation to map MongoDB's structure to PostgreSQL's relational model. LevelDB was used to persistently store and map identifiers between the databases. The migration itself led to significant performance gains and cost reductions.
React 19 and the React Compiler have been dominating the React discussion over the past month over the possibility of never having to think about memoization in React very soon. However, a huge change like this is not as simple as a version or tool release. This post summarizes and clarifies what is coming in React 19 and the React Compiler and offers a technical explanation of the coming changes.
It is important to understand fundamentals as a software engineer. A good way to do so is to challenge yourself by building without frameworks and proactively seek out areas where you can take ownership in your projects. Anyone can achieve a high level of technical proficiency by taking initiative, focusing on the fundamentals, and embracing a growth mindset.
Object-Relational Mappers (ORMs) are useful tools, but shouldn't be treated as the only way to interact with your database. The belief that ORMs completely eliminate the need to write SQL is misguided - SQL should be used directly to optimize your database interactions. Using techniques like projections that select only the necessary data can improve performance a lot.
Insecure vibes are subtle signals you may unintentionally emit when feeling anxious or uncertain. They can weaken your communication and interactions. These vibes manifest as overcompensating, defensiveness, or a lack of confidence, which are the very things you may be trying to hide. To combat insecure vibes, be mindful of your behavior and actively project confidence, even if you don't feel it internally.
Spice is a runtime that provides developers with a unified SQL query interface to locally materialize, accelerate, and query datasets sourced from any database, data warehouse, or data lake.
This tool uses Vite to help you spin up a new Vue-based app using tools based on answers you give to a number of questions.
A performance-focused drag-and-drop library that can be used to power experiences on any frontend stack.
A sophisticated security attack compromised the xz compression library, a critical dependency of OpenSSH. The backdoor, introduced by a seemingly helpful new maintainer, allowed attackers to gain unauthorized access to affected servers. The backdoor was discovered by Andres Freund, a software engineer at Microsoft, when he found that SSH logins were using a lot of CPU power compared to normal.
Demis Hassabis, the founder of DeepMind, is now tasked with keeping Google in the lead of the AI race. To succeed, Hassabis must translate DeepMind's research into tangible product improvements and convince Google to embrace potentially disruptive changes. If he is successful, DeepMind's focus on reinforcement learning could position the company well as chatbots evolve into autonomous agents that can take action in the real world.
Before GitHub, sites like SourceForge and Google Code existed for hosting open-source software, but they lacked the social features and focus on Git that makes GitHub so useful. GitHub's focus on making collaboration seamless and social catapulted it to its dominant position. However, GitHub's market share might decline in the future as the market for code development tools matures and engineers demand more specialized tools for closed-source development.
A fun game using RGB sliders to try to match the background color of the website.
Error messages should contain information needed to identify and fix the problem.
To optimize website performance, focus on minimizing load time, time to first byte, request count, DOMContentLoaded, time to above-the-fold load, first contentful paint, page size, round trip time, and render-blocking resources.
Claude 3 Opus is able to generate a partially correct code patch in minutes.
quickly and easily * Create reporting standards [4] that clearly communicate software performance
Sponsored
Get this free ebook by DataDog [4] to learn how to adopt a metrics-driven mindset, improve software quality, and achieve DevOps at enterprise scale. Use these best practices to:
This developer inlined their CSS and split it into critical and non-critical sections to optimize their website’s loading speed, leading to a 22% reduction in First Contentful Paint time. Moving minor JavaScript logic into static HTML generation further improved load times slightly. These optimizations ultimately increased page views by 32% over one week.
SoundCloud kept its initial technology stack simple. As the platform grew, it made strategic choices, like adding HAProxy and RabbitMQ, to address performance bottlenecks caused by long-running requests and high traffic. To further optimize performance and support its growth, SoundCloud eventually decoupled its architecture, introduced caching and new data stores, and transitioned towards a microservices model.
Google introduced INP (Interaction to Next Paint) as part of its Core Web Vitals this year. Your website's SEO ranking can be affected by INP. INP can be reported if the UI fails to respond promptly to a pointer or keyboard event triggered on your website. This blog post looks at a few different methods to identify the root cause of slow interactions, including comparing JavaScript self-profiling to other browser APIs.
Non-verbal signals can significantly impact team morale and should be addressed early. This article describes 5 common negative non-verbal behaviors: 1. silent but irritated, 2. annoying interrupter, 3. always confused, 4. non-appreciative, and 5. ignorer. It shares strategies for avoiding these behaviors in yourself and offers tips on how to respectfully manage them when displayed by others.
2024.03.29·newsletter.techleadmentor.com·6 min read·TLDR Web Dev This author switched a side project to a Kubernetes-based infrastructure, only to find it overly complex, expensive, and difficult to manage. Despite the promise of high availability, the system suffered from slow performance, difficult debugging, and downtime during node failures. While Kubernetes can be powerful, it's important to choose the right tools for the job and not get caught up in complexity for its own sake if it's not necessary.
React Native Gifted Charts is a library for Bar, Line, Area, Pie, Donut, Stacked Bar, and Population Pyramid charts in React Native. The charts are fully customizable, clickable, scrollable, and can be combined together.
Concrete.css is a classless CSS stylesheet. It supports dark mode and switches themes depending on system settings.
React Resize Aware can detect resize events on elements without relying on intervals, loops, DOM manipulation detection, or CSS redraws.
This study of engineer productivity based on 204 survey responses looks at how engineers and managers rank themselves in a team, productivity offenders, and boosters and metrics that teams use to track productivity. Some interesting takeaways are that extreme setups (fully in-person or fully remote) score highest on personal and team productivity, managers generally feel more productive than engineers, and only 35% of teams track productivity despite 60% seeing it as an opportunity.
LLMs often use simple linear functions to retrieve stored facts. Researchers developed a technique to estimate these functions, allowing them to probe what the model knows and where that knowledge is stored, potentially leading to ways to correct falsehoods within the model.
RISC-V is an open-source instruction set architecture (ISA) for developing chips. It is an alternative to the dominant proprietary ISAs offered by Intel, ARM, and AMD. RISC-V has removed barriers to entry for academia, startups, and smaller players thanks to its open standards and free licensing. There is a strong community around RISC-V and the success of the standard shows that commercial success is possible without strict IP restrictions.
2024.03.29·boldandopen.substack.com·20 min read·TLDR Web Dev Google found a more than 2x decrease in the amount of effort required to both build, maintain, and update services written in Rust.
Website development is partly a creative endeavor and requires a flexible iterative approach similar to filmmaking.
Both x86 and ARM CPUs have evolved to use complex instructions alongside simpler ones in order to maximize performance.
This walkthrough of how to build a ChatGPT clone, which focuses on the UI, uses Amazon’s Bedrock service for its LLM/AI components, Clerk to handle auth, and Next.js as its framework.