# render

Published articles for render.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## GPU view-adaptive crack-free subdivision of Bézier surfaces

DevFeed: [GPU view-adaptive crack-free subdivision of Bézier surfaces](<https://devfeed.tech/articles/gpu-view-adaptive-crack-free-subdivision-of-bezier-surfaces-15041.md>)

Original publisher: [Read original article](<https://gpuopen.com/learn/gpu-view-adaptive-subdivision/>)

Author: Bastian Kuth; Quirin Meyer

Published: 2026-08-06T12:00:00Z

Content type: tutorial

Language: en

Sources: [AMD GPUOpen](<https://devfeed.tech/sources/amd-gpuopen.md>)

Topics: [GPU](<https://devfeed.tech/topics/gpu.md>), [procedural geometry](<https://devfeed.tech/topics/procedural-geometry.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>)

Tags: [adaptive](<https://devfeed.tech/tags/adaptive.md>), [article-release](<https://devfeed.tech/tags/article-release.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [graphics-apis](<https://devfeed.tech/tags/graphics-apis.md>), [maths](<https://devfeed.tech/tags/maths.md>), [memory](<https://devfeed.tech/tags/memory.md>), [microsoft-work-graphs](<https://devfeed.tech/tags/microsoft-work-graphs.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance](<https://devfeed.tech/tags/performance.md>), [render](<https://devfeed.tech/tags/render.md>), [research](<https://devfeed.tech/tags/research.md>), [technical-article](<https://devfeed.tech/tags/technical-article.md>), [technical-articles](<https://devfeed.tech/tags/technical-articles.md>), [techniques](<https://devfeed.tech/tags/techniques.md>), [white-paper](<https://devfeed.tech/tags/white-paper.md>), [work-graphs](<https://devfeed.tech/tags/work-graphs.md>)

### AI overview

This article explains a GPU work graph approach to recursively subdividing bicubic Bézier surfaces. The method adapts triangle density to curvature and camera distance, reducing unnecessary geometry while maintaining crack-free rendering.

### Source excerpt

Learn how fast, crack-free GPU work graph subdivision for bicubic Bézier surfaces dramatically reduce triangle counts while simplifying implementation and matching hardware-tessellation quality.

## Weekly recommendations for reading, watching, and trying

DevFeed: [Weekly recommendations for reading, watching, and trying](<https://devfeed.tech/articles/things-1-25613.md>)

Original publisher: [Read original article](<https://www.romainguy.dev/posts/2026/things-1/>)

Author: Romain Guy

Published: 2026-08-06T00:00:00Z

Content type: opinion

Language: en

Sources: [Posts on Romain Guy](<https://devfeed.tech/sources/posts-on-romain-guy.md>)

Topics: [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [benchmarking](<https://devfeed.tech/topics/benchmarking.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [render](<https://devfeed.tech/topics/render.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [articles](<https://devfeed.tech/tags/articles.md>), [benchmarking](<https://devfeed.tech/tags/benchmarking.md>), [books](<https://devfeed.tech/tags/books.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [developer](<https://devfeed.tech/tags/developer.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [links](<https://devfeed.tech/tags/links.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [render](<https://devfeed.tech/tags/render.md>), [videos](<https://devfeed.tech/tags/videos.md>)

### AI overview

A weekly list of recommendations covering C++26 std::hive internals and performance, rendering and GPU techniques, animation, mountaineering, films, an open-source cloud computer, and parallel Delaunay triangulation.

### Source excerpt

Here is a list of tings I read/watched/played/etc. this week that you might find interesting or enjoyable: Things to read Link to heading A Deep Dive into C++26 std::hive: The Ultimate Container for Active Data -- Some details about the internals of C++ 26's new data structure. How fast is C++26's std::hive? -- Pretty self-explanatory and useful numbers to keep in mind. A Spectral BSSRDF for Shading Human Skin -- A spectral shading model that can be used to render different skin tones. On the Accuracy of Surface Scattering Theories -- Another reason why our rendering models are not quite good enough. A Texture Lookup Approach to Bézier Curve Evaluation on the GPU -- A clever use of GPU textures units to render Bézier curves efficiently. Haikyu!! -- I've been re-reading this manga. The anime is also worth it, for the animation itself. Annapurna: First Conquest of an 8000-meter Peak -- Maurice Herzog's account of the first successful ascent of Annapurna. Read the French original if you can. And you might want to read True Summit afterwards. Things to watch Link to heading Benchmarking - It's About Time -- Benchmarking is hard, but Matt Godbolt makes it fun and interesting. Nirvanna the Band the Show the Movie -- I watched it without knowing what it was really about. You should do the same, it takes an unexpected turn. Things I want to try Link to heading Wasmo -- An Open Source "cloud computer". delaunay32 -- Fast, parallel 2D Delaunay triangulation using exact integer predicates.

## Mikrotik Winbox 4.3 is out

DevFeed: [Mikrotik Winbox 4.3 is out](<https://devfeed.tech/articles/mikrotik-winbox-4-3-is-out-40185.md>)

Original publisher: [Read original article](<https://blog.j2sw.com/resources/mikrotik-winbox-4-3-is-out/>)

Author: j2sw

Published: 2026-07-29T14:38:07Z

Content type: release

Language: en

Sources: [Justin Wilson (j2sw)](<https://devfeed.tech/sources/justin-wilson-j2sw.md>)

Topics: [MikroTik](<https://devfeed.tech/topics/mikrotik.md>), [Windows](<https://devfeed.tech/topics/windows.md>), [Zip](<https://devfeed.tech/topics/zip.md>), [GUI](<https://devfeed.tech/topics/gui.md>), [layout](<https://devfeed.tech/topics/layout.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [feature](<https://devfeed.tech/tags/feature.md>), [file](<https://devfeed.tech/tags/file.md>), [form](<https://devfeed.tech/tags/form.md>), [input](<https://devfeed.tech/tags/input.md>), [layout](<https://devfeed.tech/tags/layout.md>), [mikrotik](<https://devfeed.tech/tags/mikrotik.md>), [network-engineering-resources](<https://devfeed.tech/tags/network-engineering-resources.md>), [performance](<https://devfeed.tech/tags/performance.md>), [redesign](<https://devfeed.tech/tags/redesign.md>), [render](<https://devfeed.tech/tags/render.md>), [right](<https://devfeed.tech/tags/right.md>), [sorting](<https://devfeed.tech/tags/sorting.md>), [table](<https://devfeed.tech/tags/table.md>), [toolbar](<https://devfeed.tech/tags/toolbar.md>), [ui](<https://devfeed.tech/tags/ui.md>), [v3](<https://devfeed.tech/tags/v3.md>), [version](<https://devfeed.tech/tags/version.md>), [widget](<https://devfeed.tech/tags/widget.md>), [winbox](<https://devfeed.tech/tags/winbox.md>), [windows](<https://devfeed.tech/tags/windows.md>), [zip](<https://devfeed.tech/tags/zip.md>)

### AI overview

MikroTik WinBox 4.3 is a release update that adds a Windows ARM64 package and introduces or improves table, form, toolbar, settings, font, login, window-selection, layout, and scrolling behavior.

### Source excerpt

What's new in 4.3 (2026-Jul-20 10:14): *) app: add Windows for arm64 version in file WinBox_Windows_arm64.zip;*) form: make multiline input field height logic as in WinBox v3;*) table: add quick comment feature (allow multi-row commenting);*) table: allow opening "Table settings" also via right mouse click;*) table: calculate implicit height to fit 16 regular rows including ... Read more The post Mikrotik Winbox 4.3 is out appeared first on Justin Wilson (j2sw).

## How React Rendering Works and Why Memoization Is Often Not the First Fix

DevFeed: [How React Rendering Works and Why Memoization Is Often Not the First Fix](<https://devfeed.tech/articles/your-usememo-probably-isn-t-doing-anything-18116.md>)

Original publisher: [Read original article](<https://thetshaped.dev/p/react-rendering-demystified-your-usememo-probably-isnt-doing-anything>)

Author: The T-Shaped Dev

Published: 2026-07-28T06:10:09Z

Content type: tutorial

Language: en

Sources: [The T-Shaped Dev](<https://devfeed.tech/sources/the-t-shaped-dev.md>)

Topics: [React](<https://devfeed.tech/topics/react.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Code](<https://devfeed.tech/topics/code.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [component](<https://devfeed.tech/tags/component.md>), [context](<https://devfeed.tech/tags/context.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [react](<https://devfeed.tech/tags/react.md>), [render](<https://devfeed.tech/tags/render.md>), [state](<https://devfeed.tech/tags/state.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial explains that a React render is a component function call, while DOM updates happen only during the commit phase. It identifies state changes, context changes, and new child elements from a parent as render triggers, and argues that moving state or restructuring children often helps before memoization. It also notes that StrictMode intentionally renders twice in development and that the compiler cannot move component state.

### Source excerpt

One rule explains every React re-render. Get it right and memoization becomes the last fix, not the first.

## swizec.com is now on TimberJS, a new React framework

DevFeed: [swizec.com is now on TimberJS, a new React framework](<https://devfeed.tech/articles/swizec-com-is-now-on-timberjs-a-new-react-framework-37642.md>)

Original publisher: [Read original article](<https://swizec.com/blog/swizec-com-is-now-on-timber-js-a-new-react-framework>)

Author: hi@swizec.com (Swizec Teller)

Published: 2026-07-21T00:00:00Z

Content type: article

Language: en

Sources: [Swizec Teller](<https://devfeed.tech/sources/swizec-teller.md>)

Topics: [React](<https://devfeed.tech/topics/react.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [gatsby](<https://devfeed.tech/topics/gatsby.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [gatsby](<https://devfeed.tech/tags/gatsby.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [react](<https://devfeed.tech/tags/react.md>), [render](<https://devfeed.tech/tags/render.md>), [server](<https://devfeed.tech/tags/server.md>)

### AI overview

The author describes moving swizec.com from Gatsby to TimberJS, a new React framework. They report that deployment time fell from 45 minutes to 4 minutes and describe server-rendered navigation, interactive elements, and server actions.

### Source excerpt

swizec.com is 20 years old and has gone through many rewrites. Here's the latest

## Khronos Sponsors Open-Source glTF Importer/Exporter for Autodesk 3ds Max

DevFeed: [Khronos Sponsors Open-Source glTF Importer/Exporter for Autodesk 3ds Max](<https://devfeed.tech/articles/khronos-sponsors-open-source-gltf-importer-exporter-for-autodesk-3ds-max-15114.md>)

Original publisher: [Read original article](<https://www.khronos.org/blog/khronos-sponsors-open-source-gltf-importer-exporter-for-autodesk-3ds-max>)

Author: jphilips (jeff@khronosgroup.org)

Published: 2026-07-14T13:00:00Z

Content type: release

Language: en

Sources: [Blogs Khronos Blog](<https://devfeed.tech/sources/blogs-khronos-blog.md>)

Topics: [Open Source](<https://devfeed.tech/topics/open-source.md>), [3D](<https://devfeed.tech/topics/3d.md>), [Tool](<https://devfeed.tech/topics/tool.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [animation](<https://devfeed.tech/tags/animation.md>), [apache](<https://devfeed.tech/tags/apache.md>), [api](<https://devfeed.tech/tags/api.md>), [blog-glt](<https://devfeed.tech/tags/blog-glt.md>), [cameras](<https://devfeed.tech/tags/cameras.md>), [compression](<https://devfeed.tech/tags/compression.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [gltf](<https://devfeed.tech/tags/gltf.md>), [lighting](<https://devfeed.tech/tags/lighting.md>), [mesh](<https://devfeed.tech/tags/mesh.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [plugin-development](<https://devfeed.tech/tags/plugin-development.md>), [plugins](<https://devfeed.tech/tags/plugins.md>), [render](<https://devfeed.tech/tags/render.md>), [standards](<https://devfeed.tech/tags/standards.md>)

### AI overview

The Khronos Group sponsored and released open-source glTF 2.0 importer and exporter plugins for Autodesk 3ds Max under the Apache 2.0 license. The plugins support round-trip glTF workflows, including scene content, materials, textures, compression, animation, lighting, and instancing.

### Source excerpt

The Khronos Group has sponsored the glTF 2.0 Importer/Exporter for Autodesk 3ds Max open-source project under the Apache 2.0 license, and today has released the resulting glTF importer and exporter plugins, built to professional standards in collaboration with the community, and free for all to use.

## Writing expressive RSpec tests for Ruby objects and Rails views

DevFeed: [Writing expressive RSpec tests for Ruby objects and Rails views](<https://devfeed.tech/articles/spec-tacular-ways-to-think-about-writing-expressive-rspec-30006.md>)

Original publisher: [Read original article](<https://engineering.freeagent.com/2026/07/07/spec-tacular-ways-to-think-about-writing-expressive-rspec/>)

Author: Simon Fish

Published: 2026-07-07T13:26:00Z

Content type: tutorial

Language: en

Sources: [FreeAgent](<https://devfeed.tech/sources/freeagent.md>)

Topics: [RSpec](<https://devfeed.tech/topics/rspec.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [render](<https://devfeed.tech/topics/render.md>)

Tags: [rails](<https://devfeed.tech/tags/rails.md>), [render](<https://devfeed.tech/tags/render.md>), [rspec](<https://devfeed.tech/tags/rspec.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tooling](<https://devfeed.tech/tags/tooling.md>)

### AI overview

The article explains how to use RSpec expressively to separate test phases, clarify expected behavior, and document interfaces. It also discusses why this approach needs adjustment when testing Rails views, which are rendered templates rather than ordinary Ruby objects.

### Source excerpt

Using RSpec's functionality expressively helps to draw focus to the right parts of a test, but it's not always easy to understand how best to use it.

## Deploy a Private Hermes Agent on Render Securely with Pulumi, Modal, and Tailscale

DevFeed: [Deploy a Private Hermes Agent on Render Securely with Pulumi, Modal, and Tailscale](<https://devfeed.tech/articles/deploy-a-private-hermes-agent-on-render-securely-with-pulumi-modal-and-tailscale-18995.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/deploy-a-hermes-agent-with-pulumi/>)

Author: Engin Diri

Published: 2026-06-24T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [Self-hosted](<https://devfeed.tech/topics/self-hosted.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [hosting](<https://devfeed.tech/topics/hosting.md>), [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>), [Code](<https://devfeed.tech/topics/code.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Messaging](<https://devfeed.tech/topics/messaging.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [building](<https://devfeed.tech/tags/building.md>), [code](<https://devfeed.tech/tags/code.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [modal](<https://devfeed.tech/tags/modal.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [pulumi-esc](<https://devfeed.tech/tags/pulumi-esc.md>), [python](<https://devfeed.tech/tags/python.md>), [render](<https://devfeed.tech/tags/render.md>), [security](<https://devfeed.tech/tags/security.md>), [self-hosting](<https://devfeed.tech/tags/self-hosting.md>), [server](<https://devfeed.tech/tags/server.md>), [services](<https://devfeed.tech/tags/services.md>), [tailscale](<https://devfeed.tech/tags/tailscale.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

A tutorial for deploying a private Hermes AI agent with Pulumi across Render, Modal, and Tailscale. Render hosts private services, Tailscale provides tailnet access, and Modal runs agent-generated code in temporary sandboxes.

### Source excerpt

Personal AI agents had their breakout this year. OpenClaw crossed 100,000 GitHub stars within months of launching, and self-hosting your own assistant went from a hobbyist trick to something a lot of developers actually do. I wrote up how to deploy that lobster to AWS or Hetzner back when it was everywhere. The one people are switching to now is Hermes, the open-source runtime from Nous Research, and it caught on just as quickly. The reason shows up in every "I ditched OpenClaw for Hermes" thread: it actually learns, building up memory and writing its own skills as it goes instead of running off a static, human-written list. Here is the part the launch videos skip. Hermes writes and runs its own code, with no human approving the commands. A model that can write code will eventually write a bad one, and the only thing between that command and your credentials is the sandbox it runs in. That is the box you do not want on the public internet. Researchers found 175,000 exposed Ollama servers sitting open in early 2026, and attackers hijack the ones they find for compute. The fix is not a better lock on the front door. It is to have no front door at all. So this post deploys a private Hermes agent as one Pulumi program across Render, Modal, and Tailscale. The agent and its chat UI run as Render private services with no public URL, Tailscale puts the UI on your tailnet, and Modal runs the agent's code in throwaway sandboxes. One pulumi up to stand it up, one pulumi destroy to tear it down, around $50 a month. No Makefile, no CLI escape hatches, and an honest look at the few places "nothing on the public internet" still leaks. What is Hermes? Hermes is the open-source, MIT-licensed agent runtime from Nous Research. It runs continuously on a server rather than living in a browser tab, and you talk to it through a chat UI or a messaging platform like Telegram, Discord, Slack, or Signal. A few things make it more than a chatbot: It is model-agnostic. You point it at any provi

## How we improved image download sizes on Medium with just four characters

DevFeed: [How we improved image download sizes on Medium with just four characters](<https://devfeed.tech/articles/how-we-improved-image-download-sizes-on-medium-with-just-four-characters-20321.md>)

Original publisher: [Read original article](<https://medium.engineering/how-we-improved-image-download-sizes-on-medium-with-just-four-characters-9621b0ebb291?source=rss----2817475205d3---4>)

Author: Scott Batson

Published: 2026-05-18T15:29:29Z

Content type: article

Language: en

Sources: [Medium](<https://devfeed.tech/sources/medium.md>)

Topics: [Web Development](<https://devfeed.tech/topics/web-development.md>), [HTML](<https://devfeed.tech/topics/html.md>), [Image](<https://devfeed.tech/topics/image.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Server-side rendering](<https://devfeed.tech/topics/server-side-rendering.md>), [Angular](<https://devfeed.tech/topics/angular.md>), [Ember](<https://devfeed.tech/topics/ember.md>), [Single-page application (SPA)](<https://devfeed.tech/topics/spa.md>)

Tags: [angular](<https://devfeed.tech/tags/angular.md>), [html](<https://devfeed.tech/tags/html.md>), [image](<https://devfeed.tech/tags/image.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [programming](<https://devfeed.tech/tags/programming.md>), [render](<https://devfeed.tech/tags/render.md>), [server-side-rendering](<https://devfeed.tech/tags/server-side-rendering.md>), [technology](<https://devfeed.tech/tags/technology.md>), [time](<https://devfeed.tech/tags/time.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

The article explains how modern HTML image features, including <picture> and srcset, can select images based on browser capabilities, screen dimensions, file types, layout, and color-scheme preferences. It contrasts these features with older JavaScript-based approaches to serving optimized images.

### Source excerpt

HTML images just got better, with the subtlest change to your codebasePhoto by Adi Suyatno I know what you're thinking. Scott, I landed on Medium on a small but not mobile-small display and the download chunk related to images in my home feed was like 7% smaller. First of all, thank you for noticing. Second, what if I told you that you too can improve your total asset download size by adding just four characters to your code base? Sounds too good to be true, right? Well, I'm here to tell you, it's true... after I explain how we got here. The history of images on the web As a web developer, you've probably spent a lot of time thinking about and fighting with images. According to the HTTP Archive, even in today's modern landscape of "JavaScript everywhere" the majority of most website's transfer size is images. We've moved away from the "hero image on every page" ethos, but still we're an image-heavy internet. When I was getting my start in web development in 2010ish, we were still adapting to a "mobile-friendly" world. The majority of the web was built on WordPress. We didn't have a way back then to dynamically load an optimized image. 3G connections were the primary speed in the US for viewing the internet, so the practice was images "need to work on mobile" regardless of the user's device. For those of us writing Angular and Ember (because React wasn't a thing yet), you had to legitimately render the correct src based on context you could get from JavaScript. {{#if browserSmal}} <img src="image-high-res.jpg" /> {{else}} <img src="image-med-res.jpg" /> {{/if}} This is back when we wrote handlebars for our markup and the web was filling up with SPAs with no server-side-rendering. We did it this way because HTML lacked a way for specifying how we wanted to optimize images. Then in 2012, RICG introduced 2 new specs for image optimization, with 2 different use cases: <picture> elements and srcset. Picture Elements I love the <picture> element. It gives us a lot of control

## From FileUploadWorkflow to creative OS: How Layer scaled on Temporal

DevFeed: [From FileUploadWorkflow to creative OS: How Layer scaled on Temporal](<https://devfeed.tech/articles/from-fileuploadworkflow-to-creative-os-how-layer-scaled-on-temporal-35833.md>)

Original publisher: [Read original article](<https://temporal.io/blog/fileuploadworkflow-creative-os-layer-scaled-temporal>)

Author: Alex Engel

Published: 2026-04-28T00:00:00Z

Content type: article

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [async](<https://devfeed.tech/topics/async.md>), [Fine-tuning](<https://devfeed.tech/topics/fine-tuning.md>), [lora](<https://devfeed.tech/topics/lora.md>), [Inference](<https://devfeed.tech/topics/inference.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [render](<https://devfeed.tech/topics/render.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [article](<https://devfeed.tech/tags/article.md>), [canvas](<https://devfeed.tech/tags/canvas.md>), [community](<https://devfeed.tech/tags/community.md>), [developer](<https://devfeed.tech/tags/developer.md>), [fine-tuning](<https://devfeed.tech/tags/fine-tuning.md>), [inference](<https://devfeed.tech/tags/inference.md>), [lora](<https://devfeed.tech/tags/lora.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [node](<https://devfeed.tech/tags/node.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [production](<https://devfeed.tech/tags/production.md>), [render](<https://devfeed.tech/tags/render.md>)

### AI overview

Layer describes how it expanded from a small set of Temporal workflows into about 50 workflow types running in production. The article covers the product and architecture changes behind its creative operating system, including image generation, LoRA fine-tuning, multimodal pipelines, billing synchronization, and large-scale parallel asset generation.

### Source excerpt

How Layer went from a handful of Temporal Workflows to 50 in production. The architecture, the lessons, and what broke along the way.

## Made in Compose: Airbnb Month Picker Dial

DevFeed: [Made in Compose: Airbnb Month Picker Dial](<https://devfeed.tech/articles/made-in-compose-airbnb-month-picker-dial-25790.md>)

Original publisher: [Read original article](<https://www.sinasamaki.com/made-in-compose-airbnb-month-picker-dial/>)

Author: sinasamaki

Published: 2026-04-17T12:55:42Z

Content type: tutorial

Language: en

Sources: [sinasamaki](<https://devfeed.tech/sources/sinasamaki.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [Library](<https://devfeed.tech/topics/library.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [canvas](<https://devfeed.tech/tags/canvas.md>), [compose](<https://devfeed.tech/tags/compose.md>), [customization](<https://devfeed.tech/tags/customization.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [render](<https://devfeed.tech/tags/render.md>), [rotation](<https://devfeed.tech/tags/rotation.md>)

### AI overview

A tutorial on recreating Airbnb's month-duration dial picker in Jetpack Compose using the ChromaDial library. It covers configuring a 12-month range, mapping values around a 330-degree sweep, styling the thumb, rendering the inactive track with Canvas, and creating a rounded active arc track.

### Source excerpt

How to create a gorgeous Dial in Jetpack Compose

## How Fountain keeps code generation on track for browser-based mobile games

DevFeed: [How Fountain keeps code generation on track for browser-based mobile games](<https://devfeed.tech/articles/code-generation-that-just-works-21576.md>)

Original publisher: [Read original article](<https://maryrosecook.com/blog/post/code-generation-that-just-works>)

Published: 2026-03-27T07:00:00Z

Content type: article

Language: en

Sources: [Mary Rose Cook](<https://devfeed.tech/sources/mary-rose-cook.md>)

Topics: [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [Code](<https://devfeed.tech/topics/code.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [WebGL](<https://devfeed.tech/topics/webgl.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [browser](<https://devfeed.tech/topics/browser.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [browser](<https://devfeed.tech/tags/browser.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [canvas](<https://devfeed.tech/tags/canvas.md>), [code](<https://devfeed.tech/tags/code.md>), [code-generation](<https://devfeed.tech/tags/code-generation.md>), [computer](<https://devfeed.tech/tags/computer.md>), [developer](<https://devfeed.tech/tags/developer.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [interface](<https://devfeed.tech/tags/interface.md>), [language](<https://devfeed.tech/tags/language.md>), [model](<https://devfeed.tech/tags/model.md>), [render](<https://devfeed.tech/tags/render.md>), [tool](<https://devfeed.tech/tags/tool.md>), [user-interface](<https://devfeed.tech/tags/user-interface.md>), [vector](<https://devfeed.tech/tags/vector.md>), [webgl](<https://devfeed.tech/tags/webgl.md>)

### AI overview

The author describes Fountain, a game-making tool that uses a predefined framework, built-in systems, manipulable user interfaces, and a constrained target domain to keep generated code aligned while creating simple mobile arcade games.

### Source excerpt

About nine months ago, my son said he wanted to make a video game. He said it was called Exploding Kitties. We made it together on my computer. He described the gameplay and drew the graphics. I vibed the code. The game basically worked. But we had to build it in small pieces. And, periodically, I had to spend time in the guts of the code, getting it back on the rails. Unifying two ways of doing the same thing. Fixing gnarlier bugs. Disentangling the game code from the engine. Today, I know that we'd be able to one-shot Exploding Kitties. The first reason: models and agent harnesses produce much higher intelligence. But, the second reason, the one I want to talk about, is the supporting techniques and environment. I've built a new game-making tool called Fountain. You can one-shot any simple mobile arcade game. Or, you can iterate your way to a more complex game and the code stays on the rails over many turns. Here's why it works - A framework that supplies decisions and built-ins Every game is given a game framework upfront. This framework encodes many decisions. That game entities have a certain data shape. That behavior abstraction is done with prototypal inheritance. That the coordinates of an entity represent its top left. This keeps the code generation aligned. And this framework includes generally useful built-ins. An update/event/draw loop. A WebGL canvas render surface. A collision detection and resolution system. A particle system. A system to detect input. This reduces the amount of code that must be generated. A manipulable artifact Prompting can be tiresome. Language is ambiguous. The model can interpret a prompt in a way the game designer didn't intend, and make the wrong change. Language is clumsy. It's hard to precisely indicate any point in a continuum. A color. A point. An amount. But there's a solution. Do it the old way. Give the game developer a user interface through which to express their intent. A color picker to choose the color of the water

## How to create custom Dials

DevFeed: [How to create custom Dials](<https://devfeed.tech/articles/how-to-create-custom-dials-25785.md>)

Original publisher: [Read original article](<https://www.sinasamaki.com/how-to-create-custom-dials/>)

Author: sinasamaki

Published: 2026-03-14T20:43:05Z

Content type: tutorial

Language: en

Sources: [sinasamaki](<https://devfeed.tech/sources/sinasamaki.md>)

Topics: [Library](<https://devfeed.tech/topics/library.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [render](<https://devfeed.tech/topics/render.md>)

Tags: [animation](<https://devfeed.tech/tags/animation.md>), [article](<https://devfeed.tech/tags/article.md>), [canvas](<https://devfeed.tech/tags/canvas.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [library](<https://devfeed.tech/tags/library.md>), [render](<https://devfeed.tech/tags/render.md>)

### AI overview

A tutorial on customizing ChromaDial, including visual and invisible thumbs, drag and hover interactions, animated feedback, full-size touch areas, and custom track drawing with Canvas.

### Source excerpt

ChromaDial is super customizable and delightful

## Bridging two JSX runtimes: How we solved Astro's React children problem

DevFeed: [Bridging two JSX runtimes: How we solved Astro's React children problem](<https://devfeed.tech/articles/bridging-two-jsx-runtimes-how-we-solved-astro-s-react-children-problem-30982.md>)

Original publisher: [Read original article](<https://www.mintlify.com/blog/astro-react-children>)

Author: Kyle Finken

Published: 2026-03-10T00:00:00Z

Content type: article

Language: en

Sources: [Mintlify Blog](<https://devfeed.tech/sources/mintlify-blog.md>)

Topics: [Astro](<https://devfeed.tech/topics/astro.md>), [React](<https://devfeed.tech/topics/react.md>), [MDX](<https://devfeed.tech/topics/mdx.md>), [React Component](<https://devfeed.tech/topics/react-component.md>), [render](<https://devfeed.tech/topics/render.md>)

Tags: [astro](<https://devfeed.tech/tags/astro.md>), [bridging](<https://devfeed.tech/tags/bridging.md>), [component](<https://devfeed.tech/tags/component.md>), [components](<https://devfeed.tech/tags/components.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [mdx](<https://devfeed.tech/tags/mdx.md>), [react](<https://devfeed.tech/tags/react.md>), [render](<https://devfeed.tech/tags/render.md>), [solved](<https://devfeed.tech/tags/solved.md>)

### AI overview

Mintlify describes how its Astro integration addressed a JSX runtime mismatch that caused compound React components to lose their children during hydration in Astro's MDX pipeline.

### Source excerpt

How Mintlify solved a fundamental JSX runtime mismatch to make compound React components work inside Astro's MDX pipeline.

## snakes.run: rendering 100M pixels a second over ssh

DevFeed: [snakes.run: rendering 100M pixels a second over ssh](<https://devfeed.tech/articles/snakes-run-rendering-100m-pixels-a-second-over-ssh-40775.md>)

Original publisher: [Read original article](<https://eieio.games/how-snake>)

Author: Nolen Royalty (eieiogames@gmail.com)

Published: 2026-02-25T00:00:00Z

Content type: article

Language: en

Sources: [eieio.games](<https://devfeed.tech/sources/eieio-games.md>)

Topics: [ssh](<https://devfeed.tech/topics/ssh.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Text-based user interface](<https://devfeed.tech/topics/tui.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [go](<https://devfeed.tech/tags/go.md>), [multiplayer](<https://devfeed.tech/tags/multiplayer.md>), [performance](<https://devfeed.tech/tags/performance.md>), [pixels](<https://devfeed.tech/tags/pixels.md>), [render](<https://devfeed.tech/tags/render.md>), [server](<https://devfeed.tech/tags/server.md>), [ssh](<https://devfeed.tech/tags/ssh.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [text](<https://devfeed.tech/tags/text.md>), [unicode](<https://devfeed.tech/tags/unicode.md>)

### AI overview

An engineering article explains how snakes.run delivers a massively multiplayer snake game over SSH. It describes server-side frame rendering, a TUI-based game architecture, bandwidth and performance work, and the use of Unicode block elements and terminal colors for smoother graphics.

### Source excerpt

snakes.run is a massively multiplayer snake game that uses the Secure Snake Home (SSH) protocol. It can render 100M pixels a second.

## Keycloak 26.5.1 released

DevFeed: [Keycloak 26.5.1 released](<https://devfeed.tech/articles/keycloak-26-5-1-released-31747.md>)

Original publisher: [Read original article](<https://www.keycloak.org/2026/01/keycloak-2651-released>)

Author: Keycloak Team

Published: 2026-01-14T00:00:00Z

Content type: release

Language: en

Sources: [Keycloak Blog](<https://devfeed.tech/sources/keycloak-blog.md>)

Topics: [Keycloak](<https://devfeed.tech/topics/keycloak.md>), [Security](<https://devfeed.tech/topics/security.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [saml](<https://devfeed.tech/topics/saml.md>), [WebAuthn](<https://devfeed.tech/topics/webauthn.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [authentication](<https://devfeed.tech/tags/authentication.md>), [idm](<https://devfeed.tech/tags/idm.md>), [kerberos](<https://devfeed.tech/tags/kerberos.md>), [keycloak](<https://devfeed.tech/tags/keycloak.md>), [keycloak-release](<https://devfeed.tech/tags/keycloak-release.md>), [ldap](<https://devfeed.tech/tags/ldap.md>), [migration-guide](<https://devfeed.tech/tags/migration-guide.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [release](<https://devfeed.tech/tags/release.md>), [render](<https://devfeed.tech/tags/render.md>), [saml](<https://devfeed.tech/tags/saml.md>), [security](<https://devfeed.tech/tags/security.md>), [sso](<https://devfeed.tech/tags/sso.md>), [ui](<https://devfeed.tech/tags/ui.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>)

### AI overview

Keycloak 26.5.1 is a maintenance release containing enhancements and fixes for static-resource and REST response headers, database index performance, realm management, administration UI behavior, authentication, upgrades, SAML responses, organizations, and WebAuthn passkey lists.

### Source excerpt

To download the release go to Keycloak downloads. Upgrading Before upgrading refer to the migration guide for a complete list of changes. All resolved issues Enhancements #44863 x-robots HTTP header missing for static Keycloak resources, and REST endpoint responses #45009 Performance improvement: Missing indexes on BROKER_LINK table columns #45182 Allow full managing of realms from master realm without global admin role Bugs #43975 Test Framework -> Embedded server -> Maven execution failure: Failed to read script file from: scripts/default-policy.js test-framework #44371 403 Forbidden when assigning realm-management client roles despite FGAP disabled (regression in 26.4.0+) admin/fine-grained-permissions #44417 Security issue with Organization feature exposes and fills the account name automatically in user/password form organizations #44783 Create Realm button is missing when user has create-realm role admin/ui #44860 Admin UI: slow response time listing second user page admin/ui #45003 Bug in JWTClientAuthenticator and JWTClientSecretAuthenticator causes NPE authentication #45093 Enable visibility of Role Mapping tab for users with view-users role admin/ui #45107 Failed upgrade to 26.4.7 - sql generated for manual database upgrade contains invalid statements storage #45116 Realm-level admininistrators can no longer use Admin Console since 26.3.0 (UI fails to render) admin/ui #45185 ExternalLinkTest fails due to missing _adding_context_for_log_messages anchor docs #45226 Failure when decrypting SAML Response since 26.5.0 saml #45239 Upgrade to 26.5.0 failing due to FK_ORG_INVITATION_ORG constraint organizations #45257 Creating IdentityProvider with latest java admin-client may fail against Keycloak server 26.4 or older admin/client-java #45307 UI Bug: WebAuthn passkey list is broken in keycloak v2 theme login/ui

## ssh tiny.christmas

DevFeed: [ssh tiny.christmas](<https://devfeed.tech/articles/ssh-tiny-christmas-40772.md>)

Original publisher: [Read original article](<https://eieio.games/blog/tiny-christmas>)

Author: Nolen Royalty (eieiogames@gmail.com)

Published: 2025-12-24T00:00:00Z

Content type: article

Language: en

Sources: [eieio.games](<https://devfeed.tech/sources/eieio-games.md>)

Topics: [ssh](<https://devfeed.tech/topics/ssh.md>), [Python](<https://devfeed.tech/topics/python.md>), [Script](<https://devfeed.tech/topics/script.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [christmas](<https://devfeed.tech/tags/christmas.md>), [python](<https://devfeed.tech/tags/python.md>), [render](<https://devfeed.tech/tags/render.md>), [screen](<https://devfeed.tech/tags/screen.md>), [script](<https://devfeed.tech/tags/script.md>), [ssh](<https://devfeed.tech/tags/ssh.md>), [unicode](<https://devfeed.tech/tags/unicode.md>)

### AI overview

The author describes tiny.christmas, a global Christmas carol service over SSH. Connected carolers advance the lyrics with the space bar, while the server renders a tree selected for the viewer's screen size. The project uses Wish, Bubble Tea, Unicode Braille symbols for higher-fidelity drawing, and pre-rendered trees generated by a Python script.

### Source excerpt

A global christmas carol over ssh

## Tap Detection on Arbitrary Shapes with Compose

DevFeed: [Tap Detection on Arbitrary Shapes with Compose](<https://devfeed.tech/articles/tap-detection-on-arbitrary-shapes-with-compose-25609.md>)

Original publisher: [Read original article](<https://www.romainguy.dev/posts/2025/arbitrary-shape-tap-detection/>)

Author: Romain Guy

Published: 2025-12-07T00:00:00Z

Content type: tutorial

Language: en

Sources: [Posts on Romain Guy](<https://devfeed.tech/sources/posts-on-romain-guy.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [compose](<https://devfeed.tech/tags/compose.md>), [developer](<https://devfeed.tech/tags/developer.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [image](<https://devfeed.tech/tags/image.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [performance](<https://devfeed.tech/tags/performance.md>), [pixel](<https://devfeed.tech/tags/pixel.md>), [render](<https://devfeed.tech/tags/render.md>)

### AI overview

This tutorial explains how to use Jetpack Compose's PathHitTester API to detect taps and test whether 2D coordinates lie inside arbitrary paths. It covers coordinate transformations, efficient repeated hit testing, updating the tester after path changes, and generating paths from images with the pathway library.

### Source excerpt

Detecting whether a user tapped on an arbitrary shape represented by a Path is an unfortunately difficult task on Android. The Path class does not offer any API to do this, and the workaround I have seen folks use (representing the tap as a small rectangle/circle and computing the intersection with the test shape) is inefficient and sometimes fails. Thankfully, Jetpack Compose a simple way to perform this task. The video below shows how the Compose APIs can be used to detect taps, or generally perform any test requiring to check whether a specific 2D coordinate is contained inside a Path:

## Text rendering and effects using GPU-computed distances

DevFeed: [Text rendering and effects using GPU-computed distances](<https://devfeed.tech/articles/text-rendering-and-effects-using-gpu-computed-distances-26121.md>)

Original publisher: [Read original article](<http://blog.pkh.me/p/47-text-rendering-and-effects-using-gpu-computed-distances.html>)

Published: 2025-11-01T17:20:06Z

Content type: tutorial

Language: en

Sources: [The Last Static Blog RSS](<https://devfeed.tech/sources/the-last-static-blog-rss.md>)

Topics: [GPU](<https://devfeed.tech/topics/gpu.md>), [signed distance functions](<https://devfeed.tech/topics/signed-distance-functions.md>), [Font](<https://devfeed.tech/topics/font.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [code](<https://devfeed.tech/tags/code.md>), [compute](<https://devfeed.tech/tags/compute.md>), [effects](<https://devfeed.tech/tags/effects.md>), [fonts](<https://devfeed.tech/tags/fonts.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [math](<https://devfeed.tech/tags/math.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [prog](<https://devfeed.tech/tags/prog.md>), [render](<https://devfeed.tech/tags/render.md>), [text](<https://devfeed.tech/tags/text.md>)

### AI overview

This tutorial explains how to compute signed distance fields for text glyphs on the GPU. It covers extracting glyph outlines, representing lines and Bézier curves as cubics, implementing the algorithm in a shader, and the trade-offs and effects enabled by the approach.

### Source excerpt

Text rendering is cursed. Anyone who has worked on text will tell you the same; whether it's about layout, bi-directional, shaping, Unicode, or the rendering itself, it's never a completely solved problem. In my personal case, I've been working on trying to render text in the context of a compositing engine for creative content. I needed crazy text effects, and I needed them to be reasonably fast, which implied working with the GPU as much as possible. The distance field was an obvious requirement because it unlocks anti-aliasing and the ability to make many great effects for basically free. In this article, we will see how to compute signed distance field on the GPU because it's much faster than doing it on the CPU, especially when targeting mobile devices. We will make the algorithm decently fast, then after lamenting about the limitations, we will see what kind of effects this opens up. Progressive build of the 'あ' glyph from the Mochiy Pop One font Extraction of glyph outlines Non-bitmap fonts contain glyphs defined by outlines made of closed sequences of lines and (quadratic or cubic) Bézier curves. Extracting them isn't exactly complicated: FreeType or ttf-parser typically expose a way to do that. For the purpose of this article, we're going to hard code the list of the Bézier curves inside the shader, but of course in a more serious setup those would be uploaded through storage buffers or similar. Using this tiny program, a glyph can be dumped as series of outlines into a fixed size array: struct Bezier { vec2 p0; // start point vec2 p1; // control point 1 vec2 p2; // control point 2 vec2 p3; // end point }; #define N 42 #define NC 2 const int glyph_A_count[2] = int[](33, 9); const Bezier glyph_A[42] = Bezier[]( Bezier(vec2( 0.365370, -0.570817), vec2( 0.374708, -0.631518), vec2( 0.332685, -0.687549), vec2( 0.339689, -0.748249)), Bezier(vec2( 0.339689, -0.748249), vec2( 0.339689, -0.748249), vec2( 0.344358, -0.764591), vec2( 0.351362, -0.771595)), Bezier(vec2

## Introducing Skia Graphite: Chrome's rasterization backend for the future

DevFeed: [Introducing Skia Graphite: Chrome's rasterization backend for the future](<https://devfeed.tech/articles/introducing-skia-graphite-chrome-s-rasterization-backend-for-the-future-4195.md>)

Original publisher: [Read original article](<https://blog.chromium.org/2025/07/introducing-skia-graphite-chromes.html>)

Author: Chromium Blog (noreply@blogger.com)

Published: 2025-07-08T17:46:00Z

Content type: article

Language: en

Sources: [Chromium Blog](<https://devfeed.tech/sources/chromium-blog.md>)

Topics: [Chrome](<https://devfeed.tech/topics/chrome.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [Interaction to Next Paint](<https://devfeed.tech/topics/interaction-to-next-paint.md>), [browser](<https://devfeed.tech/topics/browser.md>), [OpenGL](<https://devfeed.tech/topics/opengl.md>), [shaders](<https://devfeed.tech/topics/shaders.md>), [Web](<https://devfeed.tech/topics/web.md>), [glsl](<https://devfeed.tech/topics/glsl.md>)

Tags: [chrome](<https://devfeed.tech/tags/chrome.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [graphics-apis](<https://devfeed.tech/tags/graphics-apis.md>), [interaction-to-next-paint](<https://devfeed.tech/tags/interaction-to-next-paint.md>), [multithreading](<https://devfeed.tech/tags/multithreading.md>), [none](<https://devfeed.tech/tags/none.md>), [performance](<https://devfeed.tech/tags/performance.md>), [render](<https://devfeed.tech/tags/render.md>), [screen](<https://devfeed.tech/tags/screen.md>), [shaders](<https://devfeed.tech/tags/shaders.md>), [the-fast-and-the-curious](<https://devfeed.tech/tags/the-fast-and-the-curious.md>), [vulkan](<https://devfeed.tech/tags/vulkan.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

The article introduces Skia Graphite, a new GPU rasterization backend for Chrome on Apple Silicon Macs. Graphite uses fewer code paths, supports modern graphics APIs such as Metal, Vulkan, and D3D12, and is multithreaded by default. It improved Motionmark 1.3 scores by almost 15% on a MacBook Pro M3 and improved several real-world performance metrics.

### Source excerpt

Today's The Fast and the Curious post covers the launch of Skia's new rasterization backend, Graphite, in Chrome on Apple Silicon Macs. Graphite is instrumental in helping Chrome achieve exceptional scores on Motionmark 1.3 and is key to unlocking a ton of future improvements in Chrome Graphics. A brief history of Skia in Chrome In Chrome, Skia is used to render paint commands from Blink and the browser UI into pixels on your screen, a process called rasterization. Skia has powered Chrome Graphics since the very beginning. Skia eventually ran into performance issues as the web evolved and became more complex, which led Chrome and Skia to invest in a GPU accelerated rasterization backend called Ganesh. Over the years, Ganesh matured into a solid highly performant rasterization backend and GPU rasterization launched on all platforms in Chrome on top of GL (via ANGLE on Windows D3D9/11). However, Ganesh always had a GL-centric design with too many specialized code paths and the team was hitting a wall when trying to implement optimizations that took advantage of modern graphics APIs in a principled manner. This set the stage for the team to rethink GPU rasterization from the ground up in the form of a new rasterization backend, Graphite. Graphite was developed from the start to be principled by having fewer and more comprehensible code paths. This forward looking design helps take advantage of modern graphics APIs like Metal, Vulkan and D3D12 and paradigms like compute based path rasterization, and is multithreaded by default. Results With Graphite in Chrome, we increased our Motionmark 1.3 scores by almost 15% on a Macbook Pro M3. At the same time, we improved real world metrics like INP (interaction to next paint time), LCP (time to largest contentful paint), graphics smoothness (percent dropped frames), GPU process malloc memory usage, and others. This all means substantially smoother interactions, less stutter when scrolling, and less time waiting for sites to show

## Brushed Metal UI in Jetpack Compose

DevFeed: [Brushed Metal UI in Jetpack Compose](<https://devfeed.tech/articles/brushed-metal-ui-in-jetpack-compose-25768.md>)

Original publisher: [Read original article](<https://www.sinasamaki.com/brushed-metal-ui-in-jetpack-compose/>)

Author: sinasamaki

Published: 2025-02-14T11:52:40Z

Content type: tutorial

Language: en

Sources: [sinasamaki](<https://devfeed.tech/sources/sinasamaki.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [render](<https://devfeed.tech/topics/render.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [canvas](<https://devfeed.tech/tags/canvas.md>), [compose](<https://devfeed.tech/tags/compose.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [render](<https://devfeed.tech/tags/render.md>), [rotation](<https://devfeed.tech/tags/rotation.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

A tutorial on recreating and animating a brushed-metal skeuomorphic UI effect in Jetpack Compose. It explains how to layer radial gradients for circular ridges and sweep gradients for rotating highlights, with colors derived from a base color.

### Source excerpt

How to create this skeuomorphic metallic effect using gradients

## The Making of a Logo

DevFeed: [The Making of a Logo](<https://devfeed.tech/articles/the-making-of-a-logo-39442.md>)

Original publisher: [Read original article](<https://aerotwist.com/blog/the-making-of-a-logo/>)

Author: Paul Lewis

Published: 2025-01-15T00:00:00Z

Content type: opinion

Language: en

Sources: [Paul Lewis](<https://devfeed.tech/sources/paul-lewis.md>)

Topics: [Website](<https://devfeed.tech/topics/website.md>), [blender](<https://devfeed.tech/topics/blender.md>), [3D](<https://devfeed.tech/topics/3d.md>), [stl](<https://devfeed.tech/topics/stl.md>), [SVG](<https://devfeed.tech/topics/svg.md>), [export](<https://devfeed.tech/topics/export.md>), [render](<https://devfeed.tech/topics/render.md>), [Sketch](<https://devfeed.tech/topics/sketch.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [3d-printed](<https://devfeed.tech/tags/3d-printed.md>), [blender](<https://devfeed.tech/tags/blender.md>), [cameras](<https://devfeed.tech/tags/cameras.md>), [export](<https://devfeed.tech/tags/export.md>), [file](<https://devfeed.tech/tags/file.md>), [logo](<https://devfeed.tech/tags/logo.md>), [making](<https://devfeed.tech/tags/making.md>), [render](<https://devfeed.tech/tags/render.md>), [stl](<https://devfeed.tech/tags/stl.md>), [svg](<https://devfeed.tech/tags/svg.md>), [update](<https://devfeed.tech/tags/update.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

The author describes creating a new Aerotwist logo, starting with sketches on a reMarkable 2 tablet, refining it as a vector and SVG, and preparing it for 3D printing by exporting an STL from Blender.

### Source excerpt

A new website, and a 3D printed logo!

## How We Built the BFCM 2023 Globe

DevFeed: [How We Built the BFCM 2023 Globe](<https://devfeed.tech/articles/how-we-built-the-bfcm-2023-globe-1430.md>)

Original publisher: [Read original article](<https://shopify.engineering/how-we-built-shopifys-bfcm-2023-globe>)

Author: Diego Macario Bello

Published: 2024-10-30T19:03:30Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [Three.js](<https://devfeed.tech/topics/threejs.md>), [Three.js custom shaders](<https://devfeed.tech/topics/three-js-custom-shaders.md>), [Three.js shaders](<https://devfeed.tech/topics/three-js-shaders.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [3D](<https://devfeed.tech/topics/3d.md>), [Shopify](<https://devfeed.tech/topics/shopify.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [performance](<https://devfeed.tech/tags/performance.md>), [react-three-fiber](<https://devfeed.tech/tags/react-three-fiber.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [render](<https://devfeed.tech/tags/render.md>), [shaders](<https://devfeed.tech/tags/shaders.md>), [shopify](<https://devfeed.tech/tags/shopify.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [vertex](<https://devfeed.tech/tags/vertex.md>), [visualization](<https://devfeed.tech/tags/visualization.md>)

### AI overview

This article explains how Shopify built and optimized an interactive real-time 3D globe for BFCM purchases. It covers arcs representing orders, Bézier curves, mesh construction, camera-facing vertex-shader techniques, UV-based texturing, and independently animated dissolve effects using Three.js and React-three-fiber.

### Source excerpt

Every year for Black Friday Cyber Monday (BFCM), we put together a real-time visualization of purchases made through Shopify-powered merchants worldwide. This year we're cooking up something big, and in anticipation we wanted to show you how we built the globe last year. Video of BFCM 2023 Globe Besides going for better visuals, a big focus was performance.

## Custom Sliders in Jetpack Compose

DevFeed: [Custom Sliders in Jetpack Compose](<https://devfeed.tech/articles/custom-sliders-in-jetpack-compose-25773.md>)

Original publisher: [Read original article](<https://www.sinasamaki.com/custom-material-3-sliders-in-jetpack-compose/>)

Author: sinasamaki

Published: 2024-09-26T21:56:18Z

Content type: tutorial

Language: en

Sources: [sinasamaki](<https://devfeed.tech/sources/sinasamaki.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Material Design](<https://devfeed.tech/topics/material-design.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [code](<https://devfeed.tech/tags/code.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [material-design](<https://devfeed.tech/tags/material-design.md>), [modifiers](<https://devfeed.tech/tags/modifiers.md>), [render](<https://devfeed.tech/tags/render.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

A tutorial on customizing Material 3 sliders in Jetpack Compose. It explains how to create custom thumbs and tracks, calculate the active fraction across arbitrary ranges, and build a reusable slider with snapping points and formatted thumb text.

### Source excerpt

Create unique and delightful sliders for your app

[Next page](<https://devfeed.tech/tags/render.md?cursor=WyIyMDI0LTA5LTI2VDIxOjU2OjE4KzAwOjAwIiwgIjliZWE0ZjFmLTM0ZmEtNDFmYi04OTcwLWJmOWVmOTAxODAzMSJd>)