The Anatomy of a Summer Campaign: How Instacart Staged a Sick ’90s Throwback | Figma Blog (opens in new tab)
The anatomy of an activation: How Figma Commons brought design to the public Inside Figma Behind the scenes Culture Events
The anatomy of an activation: How Figma Commons brought design to the public Inside Figma Behind the scenes Culture Events
How our design team level set on career leveling Inside Figma Culture Design Leadership
Streamlining Security Investigations with Agents
How we shaped the visual identity for Config 2025 Inside Figma Branding Design Motion Config Behind the scenes Events
The "child lock" technique focuses on improving code robustness by restricting the scope of what child classes can override in an inheritance hierarchy. By moving away from broad, overridable functions that rely on manual `super` calls, developers can prevent common implementation errors and ensure that core logic remains intact across all subclasses. This approach shifts the responsibility of maintaining the execution flow to the parent class, making the codebase more predictable and easier to maintain. ## Problems with Open Functions and Manual Super Calls Providing an `open` function in a parent class that requires child classes to call `super` creates several risks: * **Missing `super` calls:** If a developer forgets to call `super.bind()`, the essential logic in the parent class (such as updating headers or footers) is skipped, often leading to silent bugs that are difficult to track. * **Implicit requirements:** Relying on inline comments to tell developers they must override a function is brittle. If the method isn't `abstract`, the compiler cannot enforce that the child class implements necessary logic. * **Mismatched responsibilities:** When a single function handles both shared logic and specific implementations, the responsibility of the code becomes blurred, making it easier for child classes to introduce side effects or incorrect behavior. ## Implementing the "Child Lock" with Template Methods To resolve these issues, the post recommends a pattern often referred to as the Template Method pattern: * **Seal the execution flow:** Remove the `open` modifier from the primary entry point (e.g., the `bind` method). This prevents child classes from changing the overall sequence of operations. * **Separate concerns:** Move the customizable portion of the logic into a new `protected abstract` function. * **Enforced implementation:** Because the new function is `abstract`, the compiler forces every child class to provide an implementation, ensuring that specific logic is never accidentally omitted. * **Guaranteed execution:** The parent class calls the abstract method from within its non-overridable method, ensuring that shared logic (like UI updates) always runs regardless of how the child is implemented. ## Refining Overridability and Language Considerations Designing for inheritance requires careful control over how child classes interact with parent logic: * **Avoid "super" dependency:** Generally, if a child class must explicitly call a parent function to work correctly, the inheritance structure is too loose. Exceptions are usually limited to lifecycle methods like `onCreate` in Android or constructors/destructors. * **C++ Private Virtuals:** In C++, developers can use `private virtual` functions. These allow a parent class to define a rigid flow in a public method while still allowing subclasses to provide specific implementations for the private virtual components, even though the child cannot call those functions directly. To ensure long-term code quality, the range of overridability should be limited as much as possible. By narrowing the interface between parent and child classes, you create a more rigid "contract" that prevents accidental bugs and clarifies the intent of the code.
IDC study says the global workforce engaged in software design is expanding Inside Figma News IDC forecasts that the number of people involved in software design will increase by more than 30% from 2025 to 2029—signaling the rising importance of design as a competitive different…
Discord is expanding its DAVE protocol to provide end-to-end encryption (E2EE) across all supported platforms, including web browsers, game consoles, and the Social SDK. This transition marks the move from an experimental rollout to a mandatory security standard for all voice and video communications on the platform. By March 1, 2026, Discord will officially deprecate non-E2EE calls, requiring all clients to support the protocol to maintain connectivity. ### Transitioning to a Global E2EE Standard * Discord currently facilitates tens of millions of E2EE calls daily via the DAVE protocol since its initial launch. * The update brings support to previously excluded environments, ensuring a unified privacy model across desktop, mobile, console, and web interfaces. * Support for the Social SDK ensures that third-party developers can integrate the same security standards into their own Discord-based applications. ### Technical Hurdles in Web Integration * Bringing DAVE to the browser required leveraging WebAssembly (Wasm) to handle the performance-intensive cryptographic operations necessary for real-time encryption. * Engineers utilized a Web Worker-based architecture to offload encryption and decryption tasks from the main execution thread, preventing UI latency and ensuring smooth audio/video playback. * The implementation involved navigating the specific security trade-offs and sandboxing limitations inherent to modern web browser environments. ### Deprecation Timeline and Compatibility * Starting March 1, 2026, any client or application that does not support the DAVE protocol will be blocked from participating in Discord calls. * Users and developers are encouraged to update their software and SDK integrations well ahead of the deadline to avoid service interruptions. * This move signifies the final step in Discord's strategy to make E2EE the default state for all voice and video channel interactions.
To enhance user engagement on the LINE OpenChat main screen, LY Corporation developed a system to extract and surface "trending keywords" from real-time message data. By shifting focus from chat room recommendations to content-driven keyword clusters, the team addresses the lack of context in individual messages while providing a more dynamic discovery experience. This approach utilizes a combination of statistical Z-tests to identify frequency spikes and MinHash clustering to eliminate near-duplicate content, ensuring that the trending topics are both relevant and diverse. **The Shift from Chat Rooms to Content-Driven Recommendations** * Traditional recommendations focus on entire chat rooms, which often require significant user effort to investigate and evaluate. * Inspired by micro-blogging services, the team aimed to surface messages as individual content pieces to increase the "main screen visit" KPI. * Because individual chat messages are often fragmented or full of typos, the system groups them by keywords to create meaningful thematic content. **Statistical Detection of Trending Keywords** * Simple frequency counts are ineffective because they capture common social fillers like greetings or expressions of gratitude rather than actual trends. * Trends are defined as keywords showing a sharp increase in frequency compared to a baseline from seven days prior. * The system uses a Z-test for two-sample proportions to assign a score to each word, filtering for terms with at least a 30% frequency growth. * A seven-day comparison window is specifically used to suppress weekly cyclical noise (e.g., mentions of "weekend") and to capture topics whose popularity peaks over several consecutive days. **MinHash-based Message Deduplication** * Redundant messages, such as copy-pasted text, are removed prior to frequency aggregation to prevent skewed results and repetitive user experiences. * The system employs MinHash, a dimensionality reduction technique, to identify near-duplicate messages based on Jaccard similarity. * The process involves "shingling" messages into sets of tokens (primarily nouns) and generating $k$-length signatures; messages with identical signatures are clustered together. * To evaluate the efficiency of these clusters without high computational costs, the team developed a "SetDiv" (Set Diversity) metric that operates in linear time complexity. By combining Z-test statistical modeling with MinHash deduplication, this methodology successfully transforms fragmented chat data into a structured discovery layer. For developers working with high-volume social data, using a rolling weekly baseline and signature-based clustering offers a scalable way to surface high-velocity trends while filtering out both routine social noise and repetitive content.
Hack Week 2025: How these engineers liquid-cooled a GPU server Hack Week 2025 at Dropbox centered on the theme “Keep It Simple,” offering opportunities for innovation, experimentation, and finding smart solutions to complex challenges. With in-person hubs in San Francisco, Seatt…
Effective refactoring often fails when developers focus on the physical structure of code rather than its conceptual meaning. When nested loops for paged data are extracted into separate functions based solely on their technical boundaries, the resulting code can remain difficult to read and maintain. The article argues that true code quality is achieved by aligning function boundaries with logical units, such as abstracting data retrieval into sequences to flatten complex structures. ## Limitations of Naive Extraction - Traditional paged data processing often results in nested loops, where an outer `while` loop manages page indices and an inner `for` loop iterates through items in a chunk. - Simply extracting the inner loop into a private method like `saveMetadataInPage(page)` frequently fails to improve readability because it splits the conceptual task of "fetching all items" into two disconnected locations. - This "mechanical extraction" preserves the underlying implementation complexity, forcing the reader to track the state of pagination and loop conditions across multiple function calls. ## Refactoring Based on Conceptual Boundaries - A more effective approach identifies the high-level semantic units: "retrieving all items" and "processing each item." - In Kotlin, the pagination logic can be encapsulated within a `Sequence<Item>` using the `sequence` builder and `yieldAll` keywords. - By transforming the data source into a sequence, the consumer function can replace a nested loop with a single, clean `for` loop. - This abstraction allows the main business logic to focus on "what" is being done (saving metadata) while hiding the "how" (managing page indices and `hasNext` flags). ## Forest over Trees - When refactoring, developers should prioritize the "forest" (the relationship between operations) over the "trees" (individual functions). - This methodology is not limited to loops; it applies equally to nested conditional branches and complex data structures. - The goal should always be to ensure that the code reflects the meaning of the task, which often requires restructuring the data flow rather than just splitting existing blocks of code.
Managing friend groups through standard Group DMs often leads to redundant chat lists and disorganized conversation streams that are difficult to navigate. Discord servers offer a more structured alternative, providing a centralized hub for multi-faceted communication and specific events like game nights. This guide introduces the transition from temporary, cluttered chats to a permanent and organized server environment. ### The Inefficiency of Traditional Group Chats * Group DMs frequently proliferate whenever a new participant is added to a temporary event, resulting in multiple overlapping chat threads with the same core members. * High-velocity conversations within a single DM stream make it labor-intensive for users to parse through history and catch up on missed context. * The lack of organizational depth in standard messaging forces users to manage disparate conversations across a fragmented interface. ### Benefits of the Discord Server Model * Servers act as a consolidated infrastructure where various sub-topics and social circles can be managed under one digital roof. * The platform allows for a more persistent social space compared to the ephemeral and often repetitive nature of group direct messages. * Creating a server provides a scalable solution for friend groups, whether they are migrating a single chat or organizing a large-scale community. For groups experiencing "chat fatigue" from disjointed DMs, migrating to a dedicated Discord server is the most practical way to streamline communication and ensure all members stay connected without the clutter.
To address a projected global deficit of 11 million healthcare workers by 2030, Google Research is exploring how generative AI can provide personalized, competency-based education for medical professionals. By combining qualitative user-centered design with quantitative benchmarking of the pedagogically fine-tuned LearnLM model, researchers have demonstrated that AI can effectively mimic the behaviors of high-quality human tutors. The studies conclude that specialized models, now integrated into Gemini 2.5 Pro, can significantly enhance clinical reasoning and adapt to the individual learning styles of medical students. ## Learner-Centered Design and Participatory Research * Researchers conducted interdisciplinary co-design workshops featuring medical students, clinicians, and AI researchers to identify specific educational needs. * The team developed a rapid prototype of an AI tutor designed to guide learners through clinical reasoning exercises anchored in synthetic clinical vignettes. * Qualitative feedback from medical residents and students highlighted a demand for "preceptor-like" behaviors, such as the ability to manage cognitive load, provide constructive feedback, and encourage active reflection. * Analysis revealed that learners specifically value AI tools that can identify and bridge individual knowledge gaps rather than providing generic information. ## Quantitative Benchmarking via LearnLM * The study utilized LearnLM, a version of Gemini fine-tuned specifically for educational pedagogy, and compared its performance against Gemini 1.5 Pro. * Evaluations were conducted using 50 synthetic scenarios covering a spectrum of medical education, ranging from preclinical topics like platelet activation to clinical subjects such as neonatal jaundice. * Medical students engaged in 290 role-playing conversations, which were then evaluated based on four primary metrics: overall experience, meeting learning needs, enjoyability, and understandability. * Physician educators performed blinded reviews of conversation transcripts to assess whether the AI adhered to medical education standards and core competencies. ## Pedagogical Performance and Expert Evaluation * LearnLM was consistently rated higher than the base model by both students and educators, with experts noting it behaved "more like a very good human tutor." * The fine-tuned model demonstrated a superior ability to maintain a conversation plan and use grounding materials to provide accurate, context-aware instruction. * Findings suggest that pedagogical fine-tuning is essential for AI to move beyond simple fact-delivery and toward true interactive tutoring. * These specialized learning capabilities have been transitioned from the research phase into Gemini 2.5 Pro to support broader educational applications. By integrating these specialized AI behaviors into medical training pipelines, institutions can provide scalable, individualized support to students. The transition of LearnLM’s pedagogical features into Gemini 2.5 Pro provides a practical framework for developers to create tools that not only provide medical information but actively foster the critical thinking skills required for clinical practice.
Researchers at Google have developed a scalable framework for evaluating health-focused language models by replacing subjective, high-complexity rubrics with granular, binary criteria. This "Adaptive Precise Boolean" approach addresses the high costs and low inter-rater reliability typically associated with expert-led evaluation in specialized medical domains. By dynamically filtering rubric questions based on context, the framework significantly improves both the speed and precision of model assessments. ## Limitations of Traditional Evaluation * Current evaluation practices for health LLMs rely heavily on human experts, making them cost-prohibitive and difficult to scale. * Standard tools, such as Likert scales (e.g., 1-5 ratings) or open-ended text, often lead to subjective interpretations and low inter-rater consistency. * Evaluating complex, personalized health data requires a level of detail that traditional broad-scale rubrics fail to capture accurately. ## Precise Boolean Rubrics * The framework "granularizes" complex evaluation targets into a larger set of focused, binary (Yes/No) questions. * This format reduces ambiguity by forcing raters to make definitive judgments on specific aspects of a model's response. * By removing the middle ground found in multi-point scales, the framework produces a more robust and actionable signal for programmatic model refinement. ## The Adaptive Filtering Mechanism * To prevent the high volume of binary questions from overwhelming human raters, the researchers introduced an "Adaptive" layer. * The framework uses the Gemini model as a zero-shot classifier to analyze the user query and LLM response, identifying only the most relevant rubric questions. * This data-driven adaptation ensures that human experts only spend time on pertinent criteria, resulting in "Human-Adaptive Precise Boolean" rubrics. ## Performance and Reliability Gains * The methodology was validated in the domain of metabolic health, covering topics like diabetes, obesity, and cardiovascular disease. * The Adaptive Precise Boolean approach reduced human evaluation time by over 50% compared to traditional Likert-scale methods. * Inter-rater reliability, measured through intra-class correlation coefficients (ICC), was significantly higher than the baseline, proving that simpler scoring can provide a higher quality signal. This framework demonstrates that breaking down complex medical evaluations into simple, machine-filtered binary questions is a more efficient path toward safe and accurate health AI. Organizations developing domain-specific models should consider adopting adaptive binary rubrics to balance the need for expert oversight with the requirements of large-scale model iteration.
Version control: How a UX writer weighs one word against another Inside Figma Writing UI/UX Prototyping
Discord has officially moved its Social SDK communication features out of closed beta, making integrated voice and text chat available to all game developers. By bringing these native Discord features directly into the game environment, the SDK aims to foster deeper player connections and increase session lengths through improved multiplayer interactions. This release marks a significant step in streamlining social connectivity, allowing studios to leverage Discord’s infrastructure without forcing players to leave the game client. ### Expanding In-Game Communication * Developers can now fully implement Discord-powered voice and text chat features within their titles. * The SDK is designed to enhance the multiplayer experience by providing high-quality, reliable communication tools that are synonymous with the Discord platform. * Initially introduced at GDC, these features are intended to maximize player engagement by making social interaction a core part of the gameplay loop. ### Frictionless Player Connectivity * The SDK allows players to connect with friends and join multiplayer sessions even if they do not currently have a Discord account. * By removing barriers to entry, the tools help players find new teammates and build communities more easily within the game. * Integration focuses on creating "meaningful multiplayer interactions" that contribute to higher player retention and longer-term interest in the game. For developers seeking to build a robust social layer into their games, the Discord Social SDK offers a proven communication stack that functions independently of external account requirements, ensuring a broader reach for community-building efforts.