A Hacker News commenter asks if React Native is still used in the industry. Commenters respond with their thoughts, most of whom say yes. However, there are a fair amount of people who also believe native development is a better dev experience.
Thoughts on motivation from a director who was genuinely surprised to find a team that remained motivated and in order even when their manager left. The team was used as an example to demonstrate the major components of motivation (autonomy, mastery, purpose). This post outlines tools you can use to build an energizing workspace.
There are many tools for running unit tests in Angular, and Vitest is a new addition. Vitest is built on top of Vite and offers a host of features including snapshot testing, Typescript support, and more. This article explains how to quickly integrate Vitest with Angular and includes code samples that will help you easily replicate the steps.
Sponsored
Alerting as a standalone tool can be mad pricey and those old-school legacy brands just can't keep up with how software is built today. But with Signals, we're merging alerting and incident management into one slick platform, tailor-made to revolutionize how modern engineering teams handle alerts. SAVE UP TO 70% on your alerting bill when switching to Signals.
Thoughtful URL design strikes a balance between the needs of computers and humans. For example, StackOverflow’s URLs combine a unique identifier and a human-readable slug, so both computers and humans can understand a URL without having to visit it. Slack incorporates natural language sentences into URLs. GitHub and NPM map well to their respective domain semantics, making navigation efficient.
Earlier this year, Google announced that INP (Interaction to Next Paint) is going out of experimental mode and will replace First Input Delay (FID) as a Core Web Vital in April 2024. This post takes real world data to attempt to correlate INP with real user behavior and business metrics. The short conclusion is that as INP gets worse, business metrics, like conversion rates for sales, tend to suffer.
This article explores the effects of CPU requests and limits in Kubernetes and the differences between the default CPU Manager policy and the static policy. To demonstrate these concepts, the article uses scenarios where setting CPU limits is advisable, such as benchmarking, multi-tenant environments, predictability, and Quality of Service (QoS) guarantees. It delves into the details of the CPU Manager's static policy, including how it assigns CPU cores to containers and the associated metrics to monitor.
It’s common for software projects to lack adequate quality assurance measures, leading to last-minute QA sprints and unreliable software releases. Budget constraints frequently lead companies to cut QA efforts, resulting in rushed and error-prone releases. In order to convince management of the importance of QA, it’s important to frame it in terms of cost savings and efficiency gains and start with a minimal effective dose of QA measures.
Shortly after being promoted to mid-level engineer, this author made a subtle mistake by focusing on tasks that, while technically impressive, didn't align with the company's priorities for senior-level engineers. He received an "exceeds expectations" rating but didn’t make progress towards a promotion. To progress from mid-level to senior, it's crucial to consider the "why" behind your work and ensure it aligns with what's most important to your personal interests, team, and company all at once.
One effective strategy to reach the senior level as an engineer is to become an expert in a specific area, whether it's a technical skill or a product domain. To determine your expertise, consider what aligns with team or company impact, what you're good at, and what you're passionate about. To become known as an expert, focus on being visible and adding value, such as giving presentations, leading projects, solving challenging problems, and actively contributing to your team's success.
2023.12.11·careercutler.substack.com·10 min read·TLDR Web Dev Sponsored
Nothing drives users away faster than a slow site. Join the Sentry [13] workshop this Thursday [13] to learn how to solve frontend performance issues, speed up your LCP, and keep users happy. Topics covered: Interpreting your app’s Performance Score | Taking action on Web Vitals | Finding code-level bottlenecks in Browser JavaScript.
SecureAI Tools offers private and secure AI tools, such as AI chat functionality, the ability to chat with documents (currently supporting PDFs), and local AI model inference with support for various open-source models. It’s a self-hosted platform that comes with built-in authentication for online access, user management for sharing with family or colleagues, self-hosting optimization for quick setup, and a lightweight web app that uses an SQLite database to avoid the need for a separate container for the database. This allows data to stay local and secure.
Rot is a command-line tool for managing secrets. It can generate keys and values and rekey secrets with the latest encryption standards. Rot allows for the sharing of secrets with others, provides one-way encryption for production secrets, and allows for secure storage of secrets in Git.
Tool sharpening refers to the process of improving or upgrading the tools and software one uses for work. This author shares a personal experience of transitioning from one text editor (NEdit) to another (Vim) and later to Neovim, highlighting the considerations, challenges, and benefits of such transitions. As engineers, there is a cost of time and effort in adopting new tools. At the same time, it’s important to periodically reevaluate tool choices and configurations to ensure they enable one to be as productive as possible.
Good documentation enables smoother project handovers, reduces dependencies on core team members, and simplifies onboarding for new team members. This is a playbook for creating intuitive documentation, including the importance of creating a simple manifesto or vision, establishing an intuitive folder structure, and automating documentation creation where it adds value. It includes practical examples and templates for organizing documentation, covering topics like architecture, onboarding guides, and specialist path guides.
Tracing helps track and understand what is going on within a program or software system. This post covers one engineer’s favorite tracing tools, which include eBPF, QEMU, Perfetto, and some custom-built ones.
Meta is introducing end-to-end encryption (E2EE) by default for personal conversations on Messenger to enhance privacy and security. It has published technical whitepapers explaining the cryptographic protocols for message transmission and encrypted storage.
Gooey is a way to turn a Python 3 console program into a GUI application with one line of code.
An API for accessing random images where you can specify size or choose an image based on ID.
GitHub successfully upgraded its fleet of 1200+ MySQL hosts to version 8.0, which was a challenging task due to the complexity of its ecosystem. Key challenges included ensuring backward replication and identifying queries that passed CI but failed in production. In this post, GitHub’s team describes how they addressed these challenges. The experience led to the development of new processes and operational capabilities for managing the MySQL fleet, with a focus on automation and self-healing capabilities for future upgrades.
DoorDash's Engineering teams have improved Kafka Topic creation with an in-house API that has significantly reduced the time it takes to onboard real-time pipelines by 95% and saved developer hours. The Real-Time Streaming Platform (RTSP) team at DoorDash manages over 2,500 Kafka Topics across five clusters, processing nearly six billion messages per day. The new architecture automates Kafka resource creation, integrates with internal infrastructure services, and leverages super-user accounts to streamline the process.
Feedback is a crucial aspect of successful team dynamics and should be seen as a two-way exchange rather than just a one-way communication from managers to team members. This article introduces a framework for giving effective feedback, emphasizing the importance of understanding the roles and context of those involved, communicating behavior and its impact objectively, and providing actionable steps for improvement.
Databases don’t only store data but also provide a principled system for organizing program memory and solving performance and data modeling challenges. This article introduces data-oriented design as a programming paradigm focused on efficient data transformation. Databases, particularly those optimized for in-memory operations, can be powerful tools for organizing and processing application data.
Loco is a Rust API and web framework. It is designed as a one-person framework for side projects and startups.
Jets is a Ruby serverless framework. It supports writing serverless functions with Ruby in a folder, which are automatically mapped and deployed to matching Lambda functions in AWS.
Railway is an application development platform that uses Google Cloud. It uncovered a flaw in Google Cloud’s userspace-to-kernel memory transfer. One day, its team found that a subset of its machines became unresponsive but didn’t failover. Over four hours later, all workloads failed over successfully, which allowed the issue to be resolved.
A recent design trend on the web is where illustrations and icons are becoming more textured. It’s hard to replicate this style with SVGs, but this article demonstrates how to create an SVG illustration with a noisy, textured shadow effect using masks, filters, and gradients. Along with code examples, the article provides the entire code repository for interested developers.
This author reflects on their first HTML document, which they wrote 30 years ago. They vividly recall using uppercase tag names and not closing paragraphs correctly and how they created the HTML document on a borrowed laptop in 1993, marking a significant moment in their web development journey.
The Google Chrome team has published CSS Wrapped 2023, covering CSS changes in architectural foundations, typography, responsive design, interaction, and more.
This post looks at optimizations made in Prettier’s CLI. Prettier is an opinionated code formatter.
Create diagrams with TypeScript.
Sponsored
This post details the process of implementing a custom way to print pages in a commercial application using the "react-to-print" library. The post discusses the limitations of the browser's default print API and why react-to-print was chosen. The journey includes a proof of concept phase, addressing challenges in documentation and implementation, handling specific requirements like hiding elements on print, and debugging issues related to state management and browser interactions.
While serverless architecture makes scaling easier, it also introduces complexities that can overcomplicate things and make it harder to develop, test, and deploy software. The FLAME pattern, Fleeting Lambda Application for Modular Execution, aims to fix these problems by treating entire applications like a lambda, executing modular parts in short-lived architecture. This article breaks down exactly how the FLAME pattern works and shows what it looks like in practice paired with an Elixir backend.
When a frontend engineer fails to think about the importance of design, the user experience can suffer. This post highlights the importance of a holistic approach, offering pointers and best practices to ultimately result in less bugs and overall delays. Being a better designer as a frontend engineer allows one to bring more value to a project beyond just writing code.
Having a strong personal brand as a developer can bring many benefits. You can establish credibility, stand out amongst other software engineers during interviews, and build a strong network among other things. This article explains how you can begin building your own brand, both on and offline.
Sponsored
Better test coverage = better software. QA Wolf [11] is the fast lane to automated testing. Get a tailored test suite written in open-source Playwright (no more false positives or flaky tests) with unlimited parallel test runs on hosted infrastructure. And it takes weeks, not years. 💰 QA Wolf saves customers up to $200k+/year [11] in engineering and infrastructure costs, according to public case studies.
MLX is an Apple machine learning framework designed for Apple silicon, featuring both Python and C++ APIs. It is compatible with existing tools like NumPy and PyTorch. MLX offers composable function transformations for automatic differentiation and graph optimization, while computations are executed lazily, reducing unnecessary processing.
Winglang is a newly introduced open-source programming language tailored for cloud-based development. It empowers developers to create distributed systems that integrate cloud services into the programming model. Wing programs can be run locally with a simulator or deployed to any cloud provider.
StyleX is an expressive, deterministic, reliable, and scalable styling system. It was carefully designed to meet the requirements of large application, reusable component libraries, and statically typed codebases. StyleX is fully typed and supports an expressive subset of CSS. It takes the developer experience of CSS-in-JS libraries and uses compile-time tooling to bridge it with the performance and scalability of static CSS.
Google has released Gemini, its new multimodal AI model. Gemini is able to understand text, images, video, audio, and code. There are three versions: Nano (on Android), Pro (on Bard), and Ultra (to be released).
With AI becoming increasingly powerful, many fear that it will begin to replace junior engineers. This article points out how replacing junior engineers with AI means that in the long run, we might not have engineers with enough skills to solve the more complex problems AI can’t fix. To prepare for this possible outcome, the article encourages all software developers to spend time upskilling and gaining new technical knowledge to keep up with the changing landscape.
With WebAssembly, you can compile non-JavaScript code to run directly in your web app with high performance.