UI KIT
A UI kit for building performant 3D user interfaces for Three.js in React with support for nested scrolling, buttons, inputs, dropdowns, tabs, checkboxes, and more.
Full-text search across article titles and summaries. Refine with sector, year, content type, and reading-time filters.
A UI kit for building performant 3D user interfaces for Three.js in React with support for nested scrolling, buttons, inputs, dropdowns, tabs, checkboxes, and more.
When games have unforeseen popular launches, like Palworld and Helldivers 2 did, it can be hard for them to stay online under such heavy load. Several factors contribute to launch failures: inadequate server capacity, unforeseen bugs appearing at scale, poor community management, and underestimating player demand. To manage these issues, some companies use flexible scaling solutions with cheap servers (like Google Cloud) or carefully design games to reduce complexity (like Thatgamecompany), while others focus on increasing the number of players in a single instance (like Unchained Entertainment).
Frame pointers are used for reliable debugging and profiling and allow tools to accurately trace program execution. A 2004 compiler change removed frame pointers by default to slightly boost performance, breaking many profilers and debuggers. Decades later, Fedora and Ubuntu are now releasing versions with frame pointers enabled by default, vastly improving the accuracy of profiling tools.
Estimating software rewrites is difficult due to the hidden complexities within legacy code. A useful way to estimate a rewrite is to count the lines of code in an existing system, which represents the project’s complexity. Based on this, you can create an estimate as such: Developer Days = Total LOC / LOC per Day per Developer.
AI will automate simple tasks, allowing workers to focus on high-level skills like strategic thinking and resolving ambiguity.
Software engineering automation is progressing similarly to self-driving cars, with AI gradually taking on more tasks while humans provide oversight, leading to a future where developers supervise AI and provide high-level input.
AWS optimized its CloudFormation resource creation process, splitting it into creation and stabilization phases, to improve stack creation speeds.
A website to learn Ruby one-liners by example.
Figma's database team had to deal with hypergrowth that was starting to outpace their database's capacity. To address this, they first focused on vertical partitioning, which bought them time but was not a long-term solution. They then embarked on a complex nine-month project to implement horizontal sharding, tailoring their approach to Figma's specific needs. To manage their horizontally sharded databases, they built a service in Golang to support load-shedding, transaction support, database topology management, and more.
This is a thorough comparison of the template languages used by React, Vue, Angular, and Svelte. It looks at how the frameworks define and use components, event handling, and more advanced techniques like slotting. While all four frameworks can do everything that was tested, React still feels most natural to the author.
HTTP is the backbone of the web, and it is constantly evolving. HTTP/1.1 introduced persistent connections and headers for better efficiency. HTTP/2 improved performance with multiplexing (sending multiple requests over one connection) and binary formatting. HTTP/3 is built on the QUIC protocol for enhanced performance on unstable networks, overcoming issues with TCP and TLS. Currently, both HTTP/2 and HTTP/3 are widely used.
Staying in a senior position for too long can hinder your future job prospects. This is known as the "Curse of the Senior Software Engineer" – you become too experienced for typical Senior roles, but lack the leadership experience necessary for higher-level positions. To avoid this curse, either proactively pursue promotions and leadership opportunities within your company or seek out companies that offer less structured career paths.
Software projects often fail due to hidden complexities and human factors rather than technical shortcomings. Overconfident developers can underestimate task complexity and the challenges of using new technologies or third-party dependencies. Inexperienced managers may prioritize personal ambitions over project success, lack firm leadership, or cave to every change imposed by higher-ups. Projects can become zombies, draining resources without delivering value, as stakeholders become reluctant to admit defeat due to fear or embarrassment.
This author started a project of automating a simple Unreal Engine task, but it quickly spiraled into an overly complex solution. His first attempt was a PowerShell script to delete specific project folders, but this evolved into a full-blown Windows installer using GitHub Actions to build a release. Eventually, he decided to use the language Zig to build an executable for the script, but Zig’s low-level nature proved hard to work with.
PSD is a lightweight parser for Adobe Photoshop PSD and PSB files. It can be used both in web browsers and Node.js, uses WebAssembly to speed up decoding image data, and pulls in zero dependencies.
LaVague is a framework that transforms natural language instructions into browser interactions.
Skyvern automates browser-based tasks using LLMs and computer vision. It is able to handle unfamiliar websites and changes in website layout without breaking.
While automated testing is crucial for quality software and preventing regressions, complex features can be difficult and time-consuming to test, leading to situations where teams prioritize building features over writing robust tests. In cases like this, developers should consider alternative strategies like canary releases, beta testing, and dogfooding. The startup in this article decided to start automatically deleting an engineer's account daily. This forced them to experience the onboarding process firsthand, uncovering bugs and building empathy for the user experience.
A VC-funded startup aiming to disrupt the local services industry experienced rapid growth fueled by pressure from investors. To keep up with demand, the company hired Filipino contractors to perform routine tasks that software could technically handle. This allowed engineers in San Francisco to focus on strategic initiatives and experimentation, leading to significant user growth. The story highlights how automation is not necessarily a reality for a lot of engineering companies today.
Students created a "Spotify Wrapped" for student dining habits for a hackathon by scraping data from Tufts University's outdated meal plan portal. The project found numerous security flaws in the portal's design, for example, session keys were stored in URL parameters and guest access permissions were easily circumvented.
Simple but comprehensive list of rules for efficient CSS.
This course teaches experienced programmers the fundamentals of modern CPU architecture, enabling them to write faster code through performance estimation and optimization techniques.
Learn how AI works from a real LLM implemented entirely in Excel.
TypeScript generics enable developers to create type-safe, reusable functions by allowing them to infer the type of a promised return value, removing the need for the overly broad 'any' type.
Apple acquired DarwinAI to focus on smaller, more efficient AI systems and potentially integrate generative AI into products like Siri and Messages.
Discord's live streaming feature broadcasts users' screen activity to others in their group. To achieve this, Discord uses OS-specific APIs for screen and audio capture along with robust fallback mechanisms. The captured video data is then encoded using codecs like VP8 and H264 for efficient transmission, with Discord servers handling quality adjustments and routing for high-quality delivery to viewers.
Pokémon GO began as an iteration of Niantic's earlier augmented-reality game, Ingress. It uses GCP’s scalability for its massive player base. The game's architecture heavily utilizes Google Kubernetes Engine for managing workloads and Spanner for its global consistency and high transactionality in storing player and map data. Niantic introduced Redis as an in-memory cache to handle the immense traffic spikes during live events like Raid Battles. Pokémon GO uses PushGateway for real-time notifications.
To write effective tests using the React Testing Library, developers should focus on using ByRole queries to target elements based on accessibility roles. For simulating user interactions, one should use the userEvent library rather than fireEvent. Utilize findBy* queries and waitForElementToBeRemoved to manage asynchronous updates for more robust tests.
Time zones are complex. Rules and boundaries change frequently based on political and geographical influences. Developers often underestimate the challenge of handling time zones and their irregular offsets, multiple names, and unpredictable changes by governments. Building any system reliant on time zones requires careful consideration of their complexities to avoid future errors.
Yelp created an internal platform called EE Metrics to help engineering teams manage technical debt and highlight important company-wide engineering initiatives. EE Metrics provides teams with detailed web pages outlining their technical debt and surfaces key migrations or health metrics. The platform's Team Health Reports allow teams to see critical audits and prioritize actions based on the highest impact to the team.
LLMs have impressive factual knowledge, but their reasoning abilities remain limited, as they struggle with applying their knowledge to novel queries. Explicit knowledge representation, such as databases or knowledge graphs, is needed for reliable question-answering that combines the factual recall of LLMs with efficient search capabilities. However, designing these knowledge structures is not an easy task.
Sponsored
Google Cloud’s upcoming developer conference [11] is packed with immersive learning, community interactions, and a peek into the future of Google Cloud — with a focus on the latest tools for building AI-powered applications [12].
* 500+ sessions [14] (101 - 301 level) across 10 different tracks * Cutting-edge AI demos [12] and interactive learning
React Geiger is a tool for "audiolizing" React performance issues. It runs in the background and makes little clicking noises during excessively slow component rerenders.
Finder generates the shortest CSS selector for elements on web pages.
Flyde is an open-source visual programming language that aims to augment traditional coding practices. It is designed for integration with TypeScript/JavaScript codebases. Flyde features a VSCode extension, Node.js support, and browser compatibility.
Researchers have identified significant security vulnerabilities within the ChatGPT ecosystem that potentially allow attackers to access users' accounts on third-party websites, such as GitHub, without their consent. These vulnerabilities were found both in the core ChatGPT platform and its plugins. They expose sensitive data and enable account takeovers through exploitation of the OAuth authentication process and other flaws in plugin frameworks.
This article explores efficient chess move encoding to reduce database size and improve query speeds on a large chess website. The author developed a custom encoding that represents moves using fewer bits than standard text formats. This approach optimizes for common move types (pawn moves, captures) and in a test case, the encoding reduced file size by 74%.
The CSS formula “font-size: calc(1rem + 0.25vw);” enables responsive font sizing, allowing text to scale smoothly across various screen widths and removing the need for traditional media query breakpoints.
This article lays out a comprehensive view of C++ safety issues, advocating for cross-disciplinary collaboration across programming languages and security communities to address various security and safety threats within languages.
The act of writing, particularly with the intention of public sharing, forced this author to find and understand gaps in their own knowledge, leading to deeper learning for themselves.
Cheerp is a C/C++ compiler that optimizes code for WebAssembly and JavaScript, enabling easy integration of existing C/C++ libraries and applications into web environments.
Soft deletes in databases, while seemingly convenient, can lead to unfortunate consequences due to their hidden complexity and potential for data integrity issues. This author recounts a severe incident where a change in soft delete handling during a migration resulted in allowing the selling of the same seat an unlimited number of times for a popular concert. It’s worth considering using history/audit tables for preserving deleted data instead of soft deletes in production systems.
Google introduced Interaction to Next Paint (INP) as a new Core Web Vital on March 12 to emphasize the importance of a website's overall responsiveness throughout a user's entire visit. INP measures the delay between users' interactions (clicks, taps, or keypresses) and visual feedback from websites. To understand and improve your website's INP score, utilize the Performance tab in Chrome DevTools, prioritize timely visual feedback, and optimize JavaScript execution.
Exponential smoothing is an animation technique that provides a smooth and responsive way to move objects towards their target positions. This blog demonstrates its use in UI elements and camera movement, showing its advantages over linear or easing-based animations. The mathematical basis of exponential smoothing is derived from differential equations, so it automatically handles varying time intervals and speed parameters.
This essay reflects over a four-decade career in software development. To be a successful software engineer, one must communicate and collaborate well. While "getting things done" is important, developers must also consider the long-term maintenance costs of their work. Readers should find their own best practices for productive software engineering while also remembering to take care of themselves.
While feeling nervous when asked questions under pressure is normal, it can hinder your ability to respond with the best possible answer. To overcome this, adjust your mindset, embrace silence, and strategically clarify the question before answering. If the question is complex, provide a brief answer and offer a follow-up discussion. For complaints, focus on understanding the underlying concerns rather than getting defensive.
This article offers two stories, with advice, on how mentorship was key to a Meta engineer’s promotion to staff engineer. One story focuses on explicit mentorship, where they regularly checked in with someone to get advice. The other story focuses on implicit mentorship, where they worked with someone who had the skills they wanted to develop.