MacPaw taps Liquid AI to offer on-device inference to devs building for its app store
MacPaw is building a local version of its AI assistant Eney using Liquid AI's models.
找到 511 篇相关文章
MacPaw is building a local version of its AI assistant Eney using Liquid AI's models.
We tested coolers on camping trips, road trips, beach days, and at parties to bring you our favorite models for every situation. The Yeti Tundra Haul is our top pick.
MagSafe accessories make your phone feel uniquely yours. These are our favorites, including Android-friendly Qi2 picks.
Hey everyone, it's your friendly neighborhood dev-dad here. Mid-thirties, full-time engineer by day, battling AI trading bots by night (weekends, really). Today, I want to share a subtle but potentially catastrophic bug I found in my bot. Seriously glad I caught this before deploying with real money. The symptom: Discord notifications for order fills just weren't arriving. The culprit: I forgot to load my .env variables consistently across multiple Python scripts. This is a super common pitfall when you're linking several Python scripts in a personal project, and it can be a real headache. What Happened: A "Silent Failure" Uncovered by a DRY_RUN Last weekend, I was running my usual DRY_RUN tests for my FX bot. My bot's logic is split into two main parts: planner.py , which strategizes trades, and executor.py , which actually sends orders to the exchange. The console logs looked perfectly normal. executor.py seemed to be doing its job: I saw messages like "[DRY_RUN] Order placed: ...". But the Discord notifications, which should have been firing, never appeared. At first, I thought it was a Discord outage or just a delay. But after 30 minutes, nothing. Something was definitely wrong. Thinking about what would have happened if this were real money sent shivers down my spine. "I thought I placed an order, but it never went through." "I thought I closed a position, but I was still holding it." Bugs in notification systems are terrifying because they create these silent failures. You think everything is okay, but it's not. This is precisely how real money gets lost. The Investigation: Unmasking the Culprit To narrow things down, I first tried calling notify.py (which handles all notifications) directly. It worked flawlessly; the Discord notification came through. This pointed to an issue within executor.py , which calls notify.py . I re-examined executor.py 's logs more carefully and immediately saw it: the webhook URL being passed to the notification function was None .
Hey everyone, it's your friendly neighborhood senior dev here. I'm 38, working as a full-time engineer during the week, and tinkering with AI-powered algorithmic trading bots on the weekends. Today, I want to share a story about a subtle but potentially catastrophic bug I found in my bot. Seriously, thank goodness I caught this before deploying with real capital. The TL;DR: My Discord notifications for order confirmations weren't firing, and the culprit was a forgotten .env load across multiple Python scripts. I think this is a pretty common pitfall when you're working on personal projects with several interconnected Python scripts. What Happened: A "Silent Failure" Uncovered by DRY_RUN Over the weekend, I was running my usual DRY_RUN tests for my forex bot. My bot's architecture splits responsibilities: planner.py handles strategy logic, and executor.py executes actual trades on the exchange. Looking at the console logs, executor.py seemed to be working perfectly. I saw logs like [DRY_RUN] Order placed: ... . But the Discord notifications, which are supposed to arrive after an order, simply weren't showing up. Initially, I thought it might be a Discord issue or just a delay. But after 30 minutes, still nothing. This felt wrong. The thought of this happening with real money sent shivers down my spine: "I thought I placed the order, but it never went through." "I was sure I closed that position, but it's still open." Bugs in notification systems are notorious for creating these kinds of silent failures, and they're genuinely scary. The Investigation: Aha! Found You... My first step was to isolate the problem. I directly invoked notify.py , the script responsible for sending notifications. It worked perfectly, sending a test message to Discord. This strongly suggested the issue was upstream, likely within executor.py , which calls notify.py . I took a closer look at executor.py 's logs. And there it was: the webhook URL, which should have been passed to the notificati
📝 Originally published (in Japanese) at forge.workstyle.tech . Have you ever been hit by a wave of anxiety after implementing a UI based on a mockup? You might think, "I tried to build it as faithfully as possible, but is it really matching the design?" As the person doing the implementation, it is easy to overlook small compromises made during coding or details missed in the mockup. This is the inherent limitation of self-reviewing your own code. When humans work together, having multiple people involved increases the number of perspectives. My approach—which I introduce in this article—is to replicate this by running multiple AI agents . By having several independent review agents evaluate how faithfully your implementation matches the mockup (in terms of layout structure, positioning, and component mapping), you can reinforce the single review with multi-angled verification. Why "One" is Not Enough Self-reviewing by the original implementer has structural weaknesses: Confirmation Bias — Since you already have the memory of "how you built it," you tend to view the mockup in a way that justifies your own implementation. Reproduction of Oversights — If you missed a specific element in the mockup during implementation, you are likely to miss it again during review for the same reasons. Fixed Perspectives — Being alone can lead to cognitive bias; for example, you might focus too much on "are the colors correct?" while overlooking the "hierarchical structure of the layout." Even if you ask a single AI agent to "compare the mockup and the implementation," you will encounter similar issues, albeit to a lesser degree. A single response tends to lean toward one perspective; if you ask it to look at too many things at once, each individual check becomes shallow. The solution is to split the perspectives and assign them to multiple agents . Instead of asking one agent to look at everything, assign each agent a specialized role and have them run independently. Workflow: Paral
$1.25 billion program restored, but judge ruled race provision unconstitutional.
Apple shipped Liquid Glass across iOS 26 and macOS, and suddenly every product I look at has a frosted panel floating over something. I spent a few weeks rebuilding the effect properly for a project, and most of what I found online stops at one line: backdrop-filter : blur ( 16 px ); Which gives you a gray rectangle. That's not what makes Apple's version look like glass, and figuring out the difference took me longer than it should have. So here are the six techniques I ended up with, roughly in order of how well they're supported, along with the things that wasted my time. 1. The plain glassmorphism card Everyone knows this one, but there are three parts to it and most implementations ship only the first. .glass-card { position : absolute ; inset : 20% ; border-radius : 16px ; backdrop-filter : blur ( 16px ) saturate ( 180% ); -webkit-backdrop-filter : blur ( 16px ) saturate ( 180% ); background-color : rgba ( 255 , 255 , 255 , 0.08 ); border : 1px solid rgba ( 255 , 255 , 255 , 0.12 ); box-shadow : 0 8px 32px rgba ( 0 , 0 , 0 , 0.2 ); pointer-events : none ; } The saturate(180%) is the part I kept forgetting, and it turns out to be the whole trick. Blurring averages colors together, and averaging colors drains saturation out of them — so a pure blur comes out looking like dirty plastic rather than glass. Pushing saturation back up compensates. Drag it down to 100% in the pen above and you'll see the effect just die. The background tint matters for a similar reason. With a fully transparent background you get a blur but no surface — nothing reads as a physical pane sitting there. Something around 8% white is enough to suggest one without washing out whatever is behind it. Wrapped in React, so the numbers are adjustable: " use client " ; type GlassCardProps = { blur ?: number ; saturate ?: number ; opacity ?: number ; radius ?: number ; }; export default function GlassCard ({ blur = 16 , saturate = 180 , opacity = 0.08 , radius = 16 , }: GlassCardProps ) { return (
From wired to wireless to ultralight, we've tested dozens of gaming mice to find the best for work, your next MMO, and everything in between.
At its peak in 2021, Airtable was valued at over $11 billion, but earlier this year, its shares were said to be trading on the secondary markets at a valuation of $4 billion.
Clean your house without the constraint of a power cord, thanks to these stick vacuums.
Cookie banners are still a nuisance. GDPR, the European privacy law, seems like a perfect example of...
📝 Originally published (in Japanese) at forge.workstyle.tech . You've got a code that looks correct when read, but when you open it in the browser, it's slightly different from the mockup - this "visual discrepancy" is the most troublesome part of UI development. A slight CSS specification, nesting of elements, and flex wrapping. Discrepancies that cannot be noticed by statically reading the code together will only appear when actually rendered. Until now, it was necessary for a human to open the screen in a browser, compare it with the mockup image, and verbally communicate the differences to the AI. This workflow replaces the process of "humans visually seeing and verbalizing" by showing the screen to the AI agent itself via the browser . By combining Claude Code and browser automation extensions (Chrome extensions), we will "see" the screen actually rendered on localhost, compare it with the mockup, identify layout discrepancies, and fix them. Why is it necessary to "show the actual screen"? There are limitations to just handing over the code for UI review. It's difficult for both humans and AI to completely reproduce the final rendering result in their minds from the code. In particular, these discrepancies are difficult to detect just by looking at the code. Layout skeleton discrepancies - One area is crushed when it's supposed to be a 2-column layout, or the vertical split ratio is different from the mockup, resulting in structural-level discrepancies Element placement errors - A preview that should be in the upper right column is wrapped around to the bottom Unexpected wrapping and overflow - The component wraps due to insufficient width, changing the impression from the mockup These discrepancies cannot be determined without seeing the "rendering result" as a fact. That's why we show the actual screen to the AI. Workflow: Show, Compare, and Fix 1. Provide the mockup as a baseline First, provide the target mockup image to the AI and share the baseline that "t
It's safe to say the wireless earbuds space is pretty saturated. We've tested and reviewed dozens of models; these are our top picks.
A Louisiana launch site would offer several significant advantages.
For a while, I spent more time reading about SEO than actually doing SEO. Keyword research, domain authority, backlinks, technical SEO, search intent—there was always another guide to read and another tool to try. Eventually, I decided to stop preparing and build a small website from beginning to end. The result is Get Password Generator , a free password generator that creates passwords entirely inside the browser. This is what I have learned so far. Step 1: Finding a keyword with Google Trends I started with Google Trends. Google Trends does not provide exact search volume, but it is useful for comparing keywords and checking whether people’s interest is stable, growing, or disappearing. Instead of looking for the “perfect” keyword, I wanted to find something that: solves a clear problem; can become a focused single-purpose tool; has relatively stable demand; does not require a large backend; can be shipped quickly. A password generator matched those requirements. People already understand what the tool should do, and there is no complicated onboarding process. They open the page, choose their settings, generate a password, and copy it. Step 2: Checking the actual Google results After looking at trends, I searched the keyword directly on Google and examined the first page. This step was more useful than looking at a single difficulty score. I checked: what kinds of pages were ranking; whether the results were tools, articles, or product pages; how quickly users could access the generator; whether the pages worked well on mobile; how clearly they explained privacy and security; whether there was room for a simpler experience. I was not trying to prove that the keyword was “easy.” Search results can change, and established websites are difficult to compete with. I only wanted to answer a practical question: Is there enough room here to build something useful and learn from the process? For me, the answer was yes. Step 3: Buying the domain I purchased: https://getpas
Whether you want an audio player that’ll grow with your kid or one that your toddler can operate independently, I have a recommendation for you.
Keep your logins locked down with our favorite password management apps for PC, Mac, Android, iPhone, and web browsers.
These portable vacuums make quick work of snack crumbs, tracked-in dirt, pet hair, and the mysterious debris beneath your seats.
Your kid’s little lunch hauler takes a brutal beating every day. These are the backbacks our own kids have tried and loved.