Sign in

iiinova is part of the Atmosphere — an open, public network where you own your identity.

Adam Wilbert

@awilbert.mastodon.social.ap.brid.gy
14 followers 6 following 430 posts

LinkedIn Learning (formerly Lynda.com) instructor tackling #SQLServer, #PostgreSQL, #MSAccess, #ArcGIS, and other relational database topics. Dabbler in maps […] 🌉 bridged from ⁂ mastodon.social/@awilbert, follow @ap.brid.gy to interact

PostsRepliesMedia
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 17/10/2026
And there we go… watercolor vectors freed from their Illustrator prison into a working Affinity file.
A blue and yellow watercolor splotch made of transparent vector artwork in Affinity. The Layers panel shows dozens of similar splotches in a variety of colors.
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 17/10/2026
A while back I set up a virtual machine on an old Intel mac mini to run macOS Sierra and my old perpetual license of Adobe CS6. Well, today it proved indispensible in parsing a stock illustration to extract some complex vectors for my wife’s soap labels! […] [Original post on mastodon.social]
Illustrator CS6 on a Sierra 10.12 VM. Watercolor vector art splotches in assorted rainbow colors fill the page.
100 1
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 17/10/2026
Voting against billionaires and for _all_ girls, trans or cis. Easiest initiative ballot ever. Ready for the county drop box on Monday. (to clarify, that means a “NO” on all three Washington state initiatives this go around) #BellinghamWA
Two election ballots in pink and white return envelopes.
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 15/10/2026
ugh, shouldn’t that link resolve to a thumbnail card? Or is that another “takes three days” thing.
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 15/10/2026
Turns out the secret to publishing High Dynamic Range video on YouTube is that you have to wait for it to silently process for 1-3 days. Then, eventually, they’ll start serving the HDR version. I’ve been scratching my head, pouring over the specs and my video pipeline for days and then *pop* the […]
mastodon.social
Original post on mastodon.social
100 1
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 13/10/2026
💡It never occurred to me to wonder if there was a relationship between the word "seconds" in timekeeping and "second" as in the 2nd item. "The Greek astronomer Claudius Ptolemy ... divided each angular degree into 60 parts, and each of these into 60 smaller parts. In Latin, these were later […]
mastodon.social
Original post on mastodon.social
001 1
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 13/10/2026
The ArtCraft project that made the news rounds last week — the one that’s attempting to use AI to de/recompile the full Adobe suite into Rust — it now includes dupes of MS Office (word, powerpoint, excel) AutoCAD, and Avid Pro Tools for audio. No commercial application will be safe from the […]
mastodon.social
Original post on mastodon.social
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 13/10/2026
@RxBrad Worst jam ever.
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 13/10/2026
Rendering text on a GPU in Metal is way more complicated than I would have thought. metalbyexample.com/rendering-text-i…
metalbyexample.com
Rendering Text in Metal with Signed-Distance Fields
In this article, we will discuss a method for rendering high-fidelity text with Metal. It’s easy to overlook text rendering when thinking about 3D graphics. However, very few games or applications can get by without displaying any text, so it’s important to consider how we can best use the GPU to incorporate text into our Metal apps. Text rendered by the sample app, using the signed-distance field technique Download the sample code for this post here. ## The Structure and Interpretation of Fonts We begin the process of drawing text by selecting a _font_. Fonts are collections of glyphs, which are the graphical representation of characters or portions of characters. In modern font formats, glyphs are represented as piecewise curves, specifically line segments and quadratic Bezier curves. The ‘g’ glyph from Verdana, showing how glyphs are constructed of piecewise quadratic Beziér curves Drawing a string of text consists of at least two distinct phases. First, the _text layout engine_ determines which glyphs will be used to represent the string and how they’ll be positioned relative to one another. Then, the _rendering engine_ is responsible for turning the abstract description of the glyphs into text on the screen. ## Approaches to Real-Time Text Rendering There are numerous ways you might go about rendering text on iOS. You are probably familiar with UIKit controls such as `UILabel` and `UITextField`. These UI elements are backed by a powerful framework called Core Text. Core Text is a Unicode text layout engine that integrates tightly with Quartz 2D (Core Graphics) to lay out and render text. Text layout is an enormously complicated subject that must account for different scripts, writing directions, and typographic conventions. We would never want to reinvent this functionality ourselves, so we’ll let Core Text do a lot of the heavy lifting as we settle in on our solution for real-time text rendering. Let’s take a brief tour through common ways of drawing text in the context of real-time 3D graphics. ### Dynamic Rasterization One of the most flexible approaches to text rendering is dynamic rasterization, in which strings are rasterized on the CPU, and the resulting bitmap is uploaded as a texture to the GPU for drawing. This is the approach taken by libraries such as stb_truetype. The disadvantage of dynamic rasterization is the computational cost of redrawing the glyphs whenever the text string changes. Even though much of the cost of text rendering occurs in the layout phase, rasterizing glyphs is nontrivial in its demand on the CPU, and there is no extant GPU implementation of font rasterization on iOS. This technique also requires an amount of texture memory proportional to the font size and the length of the string being rendered. Finally, when magnified, rasterized text tends to become blurry or blocky, depending on the magnification filter. ### Font Atlases Many applications that use the GPU to draw text prefer to render all possible glyphs up-front rather than drawing them dynamically. This approach trades off texture memory for the computational cost of rasterizing glyphs on-demand. In order to minimize the amount of texture memory required by a font, the glyphs are packed into a single rectangular texture, called an _atlas_. The figure below illustrates such a texture. A font atlas An ancillary data structure stores the texture coordinates describing the bounding rectangle of each glyph. When drawing a string, the application generates a mesh with the appropriate positions and texture coordinates of the string’s constituent glyphs. A pair of triangles are generated for each glyph in the text string One disadvantage of font atlases is that they consume a sizable amount of memory even when many of the glyphs they contain are not used at runtime. Like dynamic rasterization, text rendered with an atlas texture suffers from a loss of fidelity upon magnification. Here, the problem may be even worse, since the glyphs are often drawn smaller in order to pack an entire font into one texture. In the next section, we will seek to rectify some of the issues with naïve atlas-based text rendering. ### Signed-Distance Fields The approach we will explore in depth uses a _signed-distance field_ , which is a precomputed representation of a font atlas that stores the glyph outlines implicitly. Specifically, the texel values of a signed-distance field texture correspond to the distance of the texel to the nearest glyph edge, where texels outside the glyph take on negative values. The signed-distance field generated from a font atlas. The brightest pixels are the farthest inside. In order to store a signed-distance field in a texture, it must be scaled and quantized to match the pixel format. Our sample project uses a single-channel 8-bit texture, consuming one byte per pixel. By this construction, texels that fall exactly on the edge of a glyph have a value of 127, or 50%. In its simplest incarnation, signed-distance field rendering can be done with fixed-function alpha testing. By discarding all fragments whose value is less than 50%, only those pixels inside the glyph will be rendered. Unfortunately, this has the effect of producing “wiggles” along the edges of the glyph, since the downsampled and quantized distance texture does not capture adequate detail to perfectly recreate the ideal outline. An improvement to the alpha test technique is to use a pixel shader to interpolate between the inside and outside of the glyph, thus smoothing out the wiggly discontinuity. This is described in detail below. Signed-distance field rendering was brought into the mainstream by Chris Green’s 2007 article describing the use of the technology in Valve’s hit game Team Fortress 2. Our implementation will closely follow the scheme laid out in Green’s paper. ## Signed-Distance Field Rendering in Metal In this section we will describe in detail a method for achieving smooth text rendering on the GPU with Metal. ### Generating a Font Atlas Texture The first step is to render all of the available glyphs in our chosen font into an atlas. For this article, an optimal packing is not used; rather, the glyphs are simply laid out left to right, wrapping lines from top to bottom in a greedy fashion. This simplifies the implementation greatly, at the cost of some wasted space. The sample code constructs a font atlas from a `UIFont` by determining the maximum size of the selected font whose glyphs will fit entirely within the bitmap used to construct the atlas (4096×4096 pixels). It then uses Core Text to retrieve the glyph outlines from the font and render them, without antialiasing, into the atlas image. As the font atlas is being drawn, the implementation also stores the origin and extent (i.e., the texture coordinates) of each glyph in a separate array. This array is used during rendering to map from the laid-out glyphs to their respective area on the atlas texture. ### Generating a Signed-Distance Field The above procedure produces a binary image of the font at a fairly high resolution. That is, pixels that fall inside of a glyph are all the way “on” (255), and pixels that are outside a glyph are all the way “off” (0). We now need to perform a signed-distance transform on this bitmap to produce a signed-distance field representation of the font atlas, which we will use for rendering. #### A Brute Force Approach Generating a signed-distance field entails finding the distance from each texel to the closest glyph edge. Some implementations, such as GLyphy, perform this calculation directly against the piecewise curve representation of the glyphs. This approach can have spectacular fidelity, but the implementation is complicated and fraught with edge cases. As we have chosen to generate a bitmap representation of the font, we could simply iterate over the neighborhood of each texel, performing a minimizing search as we encounter texels on the other side of the edge. To even approach tractability, this requires that we choose a reasonably-sized area in which to conduct our search. A reasonable heuristic is half the average stroke width of the font. For example, in a font for which a typical stroke is 20 pixels wide, texels that are so far inside the glyph that they have a distance of greater than 10 are already going to be clamped to the maximum value of “insideness” during rendering. Similarly, texels at a distance of more than 10 outside the glyph are unlikely candidates for influencing the way the glyph is rendered. Therefore, we would conduct a search on the 10 x 10 neighborhood around each texel. According to Green, the brute-force approach was suitably fast for creating distance fields for text and vector artwork on the class of workstations used in the production of TF2. However, since there has been so much research into signed-distance field generation, let’s take a look at a slightly better approach that will allow us to generate them fairly quickly, even on mobile hardware. #### A Better Approach: Dead Reckoning Signed-distance fields have broad applicability, and have therefore been the subject of much research. G. J. Grevera, building on a venerable algorithm known as the chamfer distance algorithm, constructed a more precise heuristic known as “dead reckoning.” In essence, the algorithm performs two passes over the source image, first propagating the minimal distance down and to the right, then propagating the minimal distances found in the first pass back up and to the left. At each step, the distance value is determined as the minimum distance value over some mask surrounding the center texel, plus the distance along the vector to the nearest previously-discovered edge. Without going into all the details of this algorithm, it is worth noting that it is drastically faster than the brute-force approach. Across both passes, dead reckoning consults a neighborhood of just 3×3 texels, far fewer than a brute-force algorithm of similar accuracy. Although I have not implemented it with a compute shader, I strongly suspect it could be made faster still with a GPU-based implementation. ### Using Core Text for Layout Once we have the signed-distance field representation of a font, we need a way to transform it into glyphs on the screen. The first part of this process is, again, using the Core Text layout engine to tell us which glyphs should be rendered, and how they should be positioned. We use a `CTFramesetter` object to lay out the text in a chosen rectangle. The framesetting process produces an array of `CTLine` objects, each containing series of glyphs. To construct a text mesh for rendering with Metal, we enumerate the glyphs provided by the Core Text framesetter, which gives us their screen-space coordinates and an index into the table of texture coordinates we constructed earlier when building the font atlas texture. These two pieces of data allow us to create an indexed triangle mesh representing the text string. This mesh can then be rendered in the usual fashion, with a fragment shader doing the heavy lifting of transforming from the signed-distance field texture to an appropriate color for each pixel. ### The Orthographic Projection When drawing text onto the screen, we use an _orthographic_ , or _parallel_ projection. This kind of projection flattens the mesh to the near viewing plane without introducing the foreshortening inherent in a perspective projection. When rendering UI elements, it is convenient to select an orthographic projection whose extents match the native resolution of the screen. Therefore, the orthographic projection used by the sample application uses (0, 0) as the upper-left corner of the screen and the drawable width and height of the screen, in pixels, as the bottom-right corner, matching UIKit’s convention. Mathematically, this transformation is represented by the following matrix: Here , , , , , and are the left, right, top, bottom, near and far clipping plane values. The near and far planes are assumed to sit at and , respectively. ### The Vertex and Fragment Functions The vertex function for drawing text is very straightforward; it looks exactly like vertex functions we’ve used in the past. Each vertex of the text mesh is transformed by a model matrix (which can be used to position and scale the text) and a combined view-projection matrix, which is simply the orthographic projection matrix discussed above. The fragment function, on the other hand, is a little more involved. Since we are using the signed-distance field as more of a look-up table than a texture, we need to transform the sampled texel from the field into a color value that varies based on the proximity of the pixel to the corresponding glyph’s edge. We apply antialiasing at the edges of the glyphs by interpolating from opaque to translucent in a narrow band around the edge. The width of this band is computed per-pixel by finding the length of the gradient of the distance field using the built-in `dfdx` and `dfdy` functions. We then use the `smoothstep` function, which transitions from 0 to 1 across the width of this smoothed edge, using the sampled distance value itself as the final parameter. This produces an edge band that is roughly one pixel wide, regardless of how much the text is scaled up or down. This refinement on Green’s original approach is due to Gustavson and is explained in detail in his chapter in OpenGL Insights. Here is the complete fragment function for rendering a glyph from a signed-distance field representation: float edgeDistance = 0.5; float dist = texture.sample(samp, vert.texCoords).r; float edgeWidth = 0.7 * length(float2(dfdx(dist), dfdy(dist))); float opacity = smoothstep(edgeDistance - edgeWidth, edgeDistance + edgeWidth, dist); return half4(textColor.r, textColor.g, textColor.b, opacity); Note that we return a color that has an alpha component, so the pipeline state we use should have alpha blending enabled in order for the text to properly blend with the geometry behind it. This also implies that the text should be drawn after the rest of the scene geometry. ### The Sample App Download the sample code for this post here The sample project for this post renders a paragraph of text that can be zoomed and panned in real-time. Interactivity is achieved with a pair of `UIGestureRecognizer`s. Notice how the edges of the glyphs remain quite sharp even under extreme magnification, in contrast to the way a pre-rasterized bitmap texture would become jagged or blurry under magnification. ## Conclusion In this post we have considered a handful of ways to draw text with the GPU. We took a deep look at the use of signed-distance fields to increase the fidelity of rendered text while keeping texture memory requirements to a minimum. This technique allows quick generation of font atlases which can then be used to draw text on the GPU extremely fast. Give it a try, and please comment below if you’ve found it useful. ### Share this: * Print (Opens in new window) Print * More * * Email a link to a friend (Opens in new window) Email * Share on Facebook (Opens in new window) Facebook * Share on X (Opens in new window) X *
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 12/10/2026
Great tool for parasocial stalkers! It's like Flock, but for tracking the unique architectural details of the inside of our homes. Then, non-geotagged photos can be matched and located via basic background elements. 404 Media keeps saying the reference images come from Zillow, but all those […]
mastodon.social
Original post on mastodon.social
002 2
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 12/10/2026
Seeing lots of sub-toots without any of the context tonight. Took a while to figure out what the tech folk are discussing. This is a toot about Gruber.
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 11/10/2026
Huh. I guess I need to add an upper limit to the number of rocks that will be added to the playfield in my wireframe asteroid game. I finished a test run and accidentally left the window open. The game happily kept landing thousands of additional asteroids […] [Original post on mastodon.social]
A planet completely obscured by thousands of red hot wireframe asteroids.
100 1
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 11/10/2026
@ike It’s such an obvious development too, and it’s going to consume everything. Photoshop is a high value target, but no piece of software will be immune. The people looking at PhotoCraft and saying it’s not a 1:1 replacement today are not seeing the trajectory. GTA VI will have recompile […]
mastodon.social
Original post on mastodon.social
100 1
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 10/10/2026
Very cool experimentation space, and very similar to the movement lab I'm playing with for my asteroids game. Lots of sliders to fiddle with while playing to find the right feel. patkerr.co.uk/2d-vehicles
patkerr.co.uk
2D Vehicles
Comments
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 09/10/2026
Let’s test this to see if it’s a better rendering in a post. The 1st post was an HDR heic file. This is regular old processed jpg.
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 09/10/2026
I've been spending some very late nights and a few very early mornings on something I'm super excited about. Here’s a teaser image. It’s made for — and absolutely pops on — high dynamic range screens, but it turns out I have zero handle on how to actually […] [Original post on mastodon.social]
A wireframe globe surrounded by wireframe asteroids on a dark starfield.
131 3
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 09/10/2026
#inktober Day 8: Stinky.
020 2
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 07/10/2026
Fascinating read with lots of great interactive animations on how early machinists dealt with imperfections in their tooling. How Machines Learned Precision: Accuracy from Iron in the Industrial Revolution glinscott.github.io/how-machines-le…
glinscott.github.io
How Machines Learned Precision
How do you make an accurate machine without one to copy? Explore flat surfaces, screw-cutting lathes, and millionth-of-an-inch measurements through interactive 3D figures.
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 07/10/2026
Spider-Noir was a lot of fun. But I’m a sucker for all the noir tropes, so every long shadow, smoke-filled room, and Dutch angle made me smile. And that’s before we even get to Cage’s zany performance. The Outstanding Cinematography Emmy Award is well […] [Original post on mastodon.social]
A frame from the black and white version of Spider Noir. The image is canted counterclockwise, and features a man holding a small handgun in the extreme foreground, and Nicholas Cage in a 1940’s period suit in the background.
001 1
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 07/10/2026
Could not recall any of the defining characteristics of ogres while doodling this. Now that I looked at other entries, I see I should have gone with teeth instead of horns.
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 07/10/2026
#Inktober Day 6: Ogre
Digital painting of a green cartoon ogre on brown background.
110 1
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 06/10/2026
Finished #CrusaderNoRemorse, and I’m pretty sure it was the first time I’ve ever done so. As I pick up old games from my childhood, I’m realizing that I wasn’t too hung up on actually finishing anything when I was young. I remember playing Crusader a lot, but […] [Original post on mastodon.social]
Screen from the 1995 game Crusader: No Remorse. The red Silencer player character targets a consortium goon that’s been tasked with guarding the cafeteria vending machine.
020 2
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 05/10/2026
Dropout.tv recently added Hundreds of Beavers, and I got sucked into watching it again. The number of gags per minute is off the charts. If you enjoyed Coyote Vs ACME, you'd probably like this too. There's one gag in particular that is so obvious I'm surprised i've never seen it done: Man […]
mastodon.social
Original post on mastodon.social
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 05/10/2026
#Inktober Day 4: Cactus Plus timelapse
020 2
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 05/10/2026
@mossyfoot Whats the HTPC interface of choice these days? 20 years ago I built a Meedio box, i'm sure the landscape gas changed a lot since then.
100 1
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 04/10/2026
#Inktober Day 3: Miniature
Digital painting of a mouse sitting at a work table painting a miniature.
020 2
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 03/10/2026
“Get the most out of your life insurance policy” is a pretty wild email to get from the bank.
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 03/10/2026
Another interesting timeline post juxtaposition.
Two Mastodon posts in a row. The top: a 1951 Magic Glass gag from a joke catalog. The bottom: an article about noise pollution in the workplace. Both posts feature an image of a woman in the exact same pose, each looking left with their right arm raised and the left one holding something.
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 03/10/2026
This is definitely a 90’s office building. Pink and teal walls, glass block partitions everywhere. #CrusaderNoRemorse #RetroGaming
050 5
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 03/10/2026
#Inktober day 2: Relic. Meh. 🫤
Digital painting that looks like a golden gummy bear on a stone pedestal. But smeary and weird.
020 2
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 02/10/2026
Here's my #inktober apple. Mostly just scribbles trying to remember how procreate works.
020 2
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 01/10/2026
Looking at the credits for #CrusaderNoRemorse, and spotted Jörg Neumann. The current head of Microsoft Flight Simulator was a QA tester and did German localization for the two games back in 95 & 96. I've watched a lot of his #MSFS developer livestreams. Neat connection! #RetroGaming […]
mastodon.social
Original post on mastodon.social
030 3
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 01/10/2026
Saw some posts in my #retrogaming feed about Crusader: No Remorse / No Regret’s 30th anniversary, and was feeling some pangs of nostalgia for the game. I remember playing it back in 1995-96, but don’t remember any of the story beats or levels or anything. So […] [Original post on mastodon.social]
Screen from the 1995 game Crusader: No Remorse. The red Trooper character is looking at a computer screen that reads in part, “Unauthorized access of this terminal constitutes a violation of WEC security code 1701-D.
030 3
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 01/10/2026
Going to try and participate in #inktober this year. It’s been a long time since I’ve drawn anything. Step 1: Where’s my iPad? Step 2: Charge the iPad Step 3: Pencil is not working Step 4: Unpair and repair, then charge pencil Step 5: What OS is this running? Probably should update. This might […]
mastodon.social
Original post on mastodon.social
110 1
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 30/09/2026
@jaredwhite Slap a pair of cartoon eyes on anything, and the public will eat it up.
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 26/09/2026
RE: hachyderm.io/@samhenrigold/11733858… Yay! Looks like all my old favorite early iOS games are back on the menu, boys!
iOS simulator running early touch game Harbor Master, with a new high score of 56 cargo containers safely offloaded at the port.Early iOS touch game Flight Control guiding planes to their respective runways.
001 1
Reposted by Adam Wilbert
Adam Shostack :donor: :rebelverified: @adamshostack.infosec.exchange.ap.brid.gy · 26/09/2026
RE: mastodon.social/@kralcttam/11733670… We've replaced the bureaucratic impediment to rapid action, Stanislav Petrov, with an LLM as part of our strategy of "aggressively identifying and eliminating bureaucratic barriers to deeper integration."
1230 30
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 25/09/2026
And none of this is centralized, so you need to do this for each and every EU country you might ship to, before you ship your first package. There is just no way to comply with these laws on the off chance that I may sell a couple of hundred dollars a year to any specific EU country. 2/2
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 25/09/2026
The EU has really made it impossible for small craft sellers to ship to any member country. They instituted packaging registration laws that forces every importer to: 1) Hire an in-country partner and designate them as an authorized representative 2) Contribute financially to each country's […]
mastodon.social
Original post on mastodon.social
100 1
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 17/09/2026
#macOS27 tip: Finder > Settings > General > Uncheck "Suggest file names." What a mess of distracting nonsense those are!
Finder Settings window in macOS 27. The bottom option to allow AI filename suggestions is unchecked.
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 15/09/2026
Me, a year ago: "I'm going to put this thing in the singularly most obvious location, so that when I need it later I will instantly come upon it in the first place I look." Me, today, tearing the house apart: "WHERE THE %@#* IS IT?!"
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 15/09/2026
Post install update: zero issues, smooth sailing on multiple computers. #macOS #NeverTahoe
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 15/09/2026
I need a Mastodon/Fediverse feature that allows me to follow an account, but only pass through every Nth post. For instance, I really like the featured screenshots from the No Man's Sky Discord bot ( @nmscord), but it posts every 20 minutes, and that's way too much No Man's Sky for my feed. 2 – […]
mastodon.social
Original post on mastodon.social
101 1
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 14/09/2026
Throwing caution to the wind and updating from Sequoia straight to Golden Gate on day one, having never touched a single second of Tahoe on any mac. Will I regret this move later tonight? We'll see! #macOS #NeverTahoe
100 1
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 12/09/2026
RE: mastodon.social/@geekrealmhub/11725… I've been very happy with the Kickstarter edition Creality CR-6 that I've been using for the past 6 years, but it's getting a little dated in its capabilities. This new K3 looks like it may be at the top of my upgrade list, with the […]
mastodon.social
Original post on mastodon.social
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 12/09/2026
@RxBrad Something feels off about this almanac plan, but you sound confident, so I guess it's fine.
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 11/09/2026
RE: mastodon.online/@9to5Mac/1172532631… Worth a read if you're on one of the big cell carriers. I switched to US Mobile last year, and have been really happy with it. Same cell towers I was using before, just 75% cheaper. My referral code for $30 back: 4E056B12 […]
mastodon.social
Original post on mastodon.social
001 1
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 09/09/2026
The screen transition on the Duo is pretty slick. #AppleEvent #iPhone
000 0
Adam Wilbert @awilbert.mastodon.social.ap.brid.gy · 09/09/2026
Before tomorrow's #AppleEvent, I'm just going to say that I don't understand the desire for a foldable phone. At all. Curious if there will be any shift in that after the reveal.
001 1
Reposted by Adam Wilbert
Solarbird :flag_cascadia: @moira.mastodon.murkworks.net.ap.brid.gy · 07/09/2026
This is the big LG television surveillance documentary story GN have been working on for a couple of months, and that they previewed a few days ago. The complete pervasiveness of spying upon not just you and what you watch but _every person and every device around every set_ is genuinely […]
mastodon.murkworks.net
Original post on mastodon.murkworks.net
034 4