Full Width [alt+shift+f] Shortcuts [alt+shift+k]
Sign Up [alt+shift+s] Log In [alt+shift+l]
24

Designers Desk #1: Angelo Vilar

from Elevation Lab - Blog [alt+shift+b] in technology

Designer's Desk is a new series featuring the desk setups of artists, designers, and creators - showcasing how they work and what their workspace looks like.   Angelo Vilar (AKA Ansirone) is an art director, animation designer, & illustrator based in Los Angeles. He keeps it simple with just an iPad & DraftTable on a clutter-free desk. Working at Six Point Harness Animation Studios, his latest project is a new animated series for Adult Swim titled Apollo Gauntlet, with Angelo serving as the lead BG designer/Art Director.  He has worked freelance for various studios such as Warner Bros. Animation, Wildbrain Inc., Ghostbot Inc. and more. He values good design and creativity. He respects traditional classic mediums while incorporating them to the contemporary digital revolution. The iPad Pro and DraftTable have become an asset to his creative arsenal. His next sketchbook project LOOK BOOK: Ripe Vol. 2 had a majority of the sketches done using the iPad Pro on DraftTable.   See his talented work at angelovilar.com and on instagram at @ajvilar.
8th Jun 2017

Stay updated

Get a weekly newsletter with the top 5 articles worth reading every week.

More from Elevation Lab - Blog

An apology

We launched an AirTag silencing tool recently. We have always made products we want for ourselves, and this was no different - we wanted it for AirTags on our bikes. (Some of us here have bikes more valuable than our cars.) In retrospect though, this also has the side effect of aiding someone with bad intentions to track someone that wouldn’t get phone notifications. We have removed the product and will use our patent on it to prevent anyone else from making one in the future. Sincerely, Elevation Lab

a week ago • 1 votes
Introducing The AirTag Silencer

Apple made AirTag randomly chirp when bumped or moved when out of bluetooth range of your iPhone. That's great, but if your bike is stolen - the very last thing you would want is for the thief to hear the AirTag and throw it away. That's why we designed The AirTag Silencer - a patented precision tool that helps you disable AirTag's speaker in seconds - all you need is a hammer. Easy to Use - Remove AirTag's battery & set on the baseplate, place silencer, and hit piercer flush with a hammer. Disconnects the coil that powers AirTag's speaker.  Works on multiple AirTags. Invaluable for expensive bikes, camera bags, purses, electronics, backpacks, etc... Anything you wouldn't want a thief tipped off by AirTag's chirp. And its great for pets too - no chirping on their collar in the middle of the night. Also available on Amazon.

3 weeks ago • 1 votes
Introducing The 5-Year Compact Battery for AirTag

There are few things worse than a dead AirTag when you need it. That's why we designed the The 5-Year Compact Battery for AirTag.  It replaces the CR2032 coin cell for two uses AAA batteries for 5.5x more capacity. And does so in a small, lightweight form factor.  Discrete, minimal design doesn't broadcast that it holds an AirTag. Easy assembly.  It has an ultra-strong composite enclosure. IP68 waterproof. Great for long-term storage like an boat or trailer. And a must have for anything of high-value. It is the lowest cost one-time insurance you can have. Also available on Amazon.

4th Dec 2025 • 1 votes
Introducing TagVault Fabric Extreme for AirTag

Our original TagVault Fabric Mount is one of our most popular AirTag cases. So we wanted another design that was just as useful but even more rugged and fully waterproof. So we designed TagVault Fabric Extreme for AirTag. It's ultra-flexible to move with your fabric. Ultra-secure to withstand hits from items shoved in a bag. And discreet so a thief won't know its there. And features a hidden patented waterproof gasket with an easy screw top design that you can crank down for tight seal. It protects AirTag from spills in a bag & you can mount it on a ski jacket, surfboard bag, soft cooler, umbrella, tent & more. Installs in seconds to any synthetic fabirc (nylon, poly, vinyl, rubberized fabrics and GORE-TEX). Easy screw top design. Perfect for sporting goods bags. And its still great for luggage, purses, jackets and camera bags. Also available on Amazon: https://amzn.to/3KOcL0V

17th Oct 2025 • 1 votes
Introducing TagVault Strap Compact for AirTag

We wanted a strap mount that was secure, rugged, ultra-compact, and super easier to assemble. So we designed TagVault Strap Compact. Fully waterproof with a hidden inner gasket.   It's ultra low-profile.   Perfect for backpacks.   Also really great for cameras.   Also available on Amazon:  https://amzn.to/3QP7INn

12th Mar 2025 • 1 votes

More in technology

Clothes Rail

[Misc] Tubular

18 hours ago • 1 votes
List of Vim forks

Here are the Vim forks I know about: Neovim: “a Vim-based text editor engineered for extensibility and usability, to encourage new applications and contributions.” Vim Classic: “a stable, long-term support fork of the ubiquitous text editor, maintained without the assistance of generative AI tools.” EVi: “a hard-fork of Vim v9.1.0 (Jan 2024) before AI was used in the project.” MacVim: “a macOS version of the Vim text editor, providing a graphical user interface for Vim, while tightly integrating with macOS and providing features specific to the platform.” This list doesn’t include Vim-inspired editors like Kakoune, Vim-style plugins for other editors like IdeaVim, or Vim “distributions” like LazyVim. Contact me if you know of other forks!

23 hours ago • 1 votes
iOS 27 has some weird Dynamic Island behavior

Thought I’d make a quick blog post about some weird behavior I’m seeing on iOS 27 and Dynamic Island live activities, that I initially thought was restricted to the Duo, but turns out affects everything. Yay. Maybe this post can save some others some time, and hopefully Apple can fix it. Long story short, ever since iOS 16.1 introduced “Live Activities”, where we can display handy little widgets in the Dynamic Island, there’s been a bunch of different configurations for showing things up there: something on the left, the right, when expanded, when two apps are showing things and yours gets a bit smaller, and on the lock screen. One interesting one is if you only need to show a small indicator in the Dynamic Island (screen recording indicator, electric vehicle charging status, etc.) you can do so, which just shows on the left on older iPhones, and on the Duo a single one below the camera cutout. Apple describes how to do this in their developer documentation (emphasis added): If you can’t find a solution to display views for leading and trailing compact presentations with limited width, provide a compact leading presentation that best represents your Live Activity, such as the view you use for the minimal presentation, and an empty view for the trailing compact presentation. The system hides the empty trailing view automatically. Unfortunately, in iOS 27 (and 27.1, and 27.2), this only half works, due to a new addition in iOS 27: isDynamicIslandLimitedInWidth. It’s a variable that basically tells you if the Dynamic Island is even narrower than normal, presumably because they knew the Duo was coming with its vertical Dynamic Island, but also because as of iOS 27, Live Activities now show in the Dynamic Island when the device is in landscape too. So it’s handy to know if you have a bit less space than usual. In this new narrow view however, it seems like they didn’t test all the configurations thoroughly, as if you provide EmptyView for that trailing compact presentation, it’s not empty at all, and in fact enforces a quite large minimum size so the Dynamic Island looks hilariously tall. In other words: The system hides the empty trailing view automatically Left: what it should look like. Right: reality You can imagine this is especially rough on the Duo, where navigation buttons, toolbar buttons, tab bar buttons, etc. are all competing for precious space on the right. But that’s only half true. It displays perfectly fine (hiding it) when isDynamicIslandLimitedInWidth is false (AKA how it always used to be), but in the new cases where it can be true, like the Duo and iPhones in landscape, that’s when it breaks. So tl;dr: In iOS 27, Dynamic Island Live Activities are improperly sized if you use the listed EmptyView configuration and isDynamicIslandLimitedInWidth is true. This makes it especially bad on the Duo, womp womp. Complications Now, you might be saying “That’s weird, I haven’t seen that behavior! This is nothing but hogwash!”. But it is not hogwash, just a little complicated. There’s basically three categories of apps. Apple apps Maps, for instance, displays this single, small Dynamic Island live activity perfectly well and sized, and has been beautifully compiled with the iOS 27.2 SDK. By all accounts it should show this bug, too! Apple apps don’t have to use the same APIs as us normies, so funnily enough through really cool tools like REA we can disassemble the iOS Simulator and see that it’s in fact true, the Apple Maps live activity just completely bypasses WidgetKit and instead just renders plain UIKit through MapsBannerViewController which shows the cute little cyan widget through a ManeuverAccessoryView and then for the hidden trailing view simply returns a DistanceAccessoryView with CGSizeZero, which iOS actually respects, unlike our paltry SwiftUI EmptyView. Third-party apps NOT updated to iOS 27 If your app hasn’t been compiled with any of the iOS 27 SDKs, it only knows about iOS 26, and thus doesn’t know about (or have to worry about) the new, troublesome isDynamicIslandLimitedInWidth property, so it just… displays perfectly well. Here’s the Rivian app, which hasn’t been updated for iOS 27 yet, which shows the Live Activity displaying perfectly sized on the Duo (indicating vehicle charging): (Technical disassembly detail for the nerds: iOS shows the app’s minimal config, a smaller config normally used when multiple apps are in the Dynamic Island together, rather than the normal compact config, so it bypasses this issue entirely.) Developers who updated their apps for iOS 27 Surprise! That picture from before? On the left is just me compiling with the old 26 SDK that works! Unfortunately if you are a good developer who updated their app for iOS 27 and all the new features, you kind of get punished through this bug, because your live activity displays the improperly sized way described above, and you can’t just use raw UIKit like Apple. So you’re kinda stuck where I am: do I ship a weirdly sized Dynamic Island experience for everyone? Do I shove something extraneous in the compactTrailing spot just so it doesn’t look as empty? Do I not update the app at all until Apple fixes this bug? Widgets are techincally a separate extension from your main app, so you could compile them with a different SDK (26) than your main app (27) which fixes this bug, but I’m not sure Apple approves of that. Apple On the bright side hopefully it’s an easy enough fix, treating EmptyView like you used to on iOS 26 and per the documentation (the part that is weirdly right beside the mention of the new API that introduces this craziness in the first place). Radar/feedback assistant ID: FB25301955 Easy reproduction code if you’re curious: import ActivityKit import SwiftUI import WidgetKit struct CircleAttributes: ActivityAttributes { struct ContentState: Codable, Hashable {} } struct BlueCircle: View { var body: some View { Circle() .fill(.blue) .frame(width: 20, height: 20) } } @main struct CircleLiveActivity: Widget { var body: some WidgetConfiguration { ActivityConfiguration(for: CircleAttributes.self) { _ in BlueCircle() } dynamicIsland: { _ in DynamicIsland { DynamicIslandExpandedRegion(.center) { BlueCircle() } } compactLeading: { BlueCircle() } compactTrailing: { EmptyView() // pls respect me } minimal: { BlueCircle() } } } }

yesterday • 1 votes
Going Somewhere

Vicky, driving me home from O'Hare, got sixteen dollars for the best conversation I had in months. The last line is hers.

4 days ago • 1 votes
An AI usage statement for bryanbraun.com

I’ve had “AI usage statements” in the back of my mind ever since I read Ethan Marcott’s blog post sharing a round-up of his favorite ones. I didn’t consider writing one for this site, since it had the smell of status-signaling. Like a quasi-political declaration of allegiance to some sort of in-group (be it pro-AI, anti-AI, etc). I couldn’t be less interested in that.1 But then something happened that caught me completely off-guard. I was reading a post on my friend’s personal blog. This was a guy that I knew personally and looked up to. I’ve been reading everything he had been writing for years. About two-thirds of the way through a long (and fairly insightful) blog post, I had a sudden realization that the post had been written by AI. I’m not the best at detecting this kind of thing, but once I saw it, I couldn’t unsee it. It was unmistakable. And the thing is, I didn’t feel indifferent or even disappointed, as I might have predicted. I felt betrayed. For somebody who considers themselves open-minded—even optimistic—towards the development of AI, I didn’t know where this feeling was coming from. I have theories… maybe it has something to do with the social contract between the writer and the reader. Whatever it is, I didn’t want anyone who was reading my blog (hi mom 👋) to feel the same thing. So for the sake of transparency, here is my AI usage statement: The content of this website is written by me. I do not use AI to generate the text you are reading because writing from scratch helps me process my thoughts (which is one of the main reasons I blog in the first place). I don’t currently use AI-powered writing tools (grammar-check, spell-check, dictation tools, etc), but I may experiment with them as long as they don’t undermine the thinking process. The code for this website was originally hand-written, but I have since used AI to make several useful updates. I expect to continue using AI to write code for this website and other personal coding projects. When I create a public project exclusively with AI, I mention that fact in the project README.2 I am experimenting and my AI usage may change. When it does, I’ll update the policy here on my /about page, which is where it will live long-term. To explain why, see Paul Graham's Keep your Identity Small. ↩ For an example, see s-tier ↩ Thanks for reading this post via RSS! Let me know your thoughts by leaving a comment on the original post or sending me an email.

5 days ago • 1 votes
📚 BoredReading

You seem to be enjoying this.

Join free to unlock everything.

Create free account

Already have an account? Sign in