AI 资讯
Before You Merge AI-Generated Code, Ask These 12 Questions
I've merged plenty of AI-generated code that was genuinely fine. I've also caught myself almost merging code that looked fine and wasn't, because it read like something a competent person wrote and my brain filled in the rest. Over the last year I've settled into a rough set of questions I run through before approving anything I didn't write line by line myself, generated or not. Here they are, in the order I actually ask them. 1. What problem is this code actually solving? It's easy to review whether code works and skip whether it solves the right thing. AI tends to answer the literal prompt, not the intent behind it. def get_active_users (): return db . query ( " SELECT * FROM users WHERE active = true " ) If "active" was supposed to mean "logged in within 30 days" and not a boolean flag that's rarely updated, this passes every test and still solves the wrong problem. Reviewer tip: Read the original ticket or request before reading the diff. Check the code against the intent, not just the literal ask. 2. Do I actually understand the implementation? Not "does it look reasonable," actually understand it, line by line, well enough to explain it to someone else. Reviewer tip: Try to explain the function out loud in one sentence per major step. If you get stuck anywhere, that's the part you haven't actually reviewed yet, just skimmed. 3. What assumptions is it making? Every implementation bakes in assumptions about the shape of the data, the order things happen in, or what "normal" looks like. function getLatestOrder ( orders ) { return orders [ orders . length - 1 ]; } This assumes orders is sorted chronologically and never empty. Neither assumption is stated anywhere. Reviewer tip: Ask "what does this assume about its inputs that isn't checked anywhere?" Write the answer down, literally, in the PR comment if it matters. 4. What happens with bad input? Bad input isn't an edge case, it's a certainty over a long enough timeline. def parse_age ( value ): return int ( val
AI 资讯
LLM-Generated GraphQL Mocks Arrive at Airbnb and Expedia, While the Spec Lags Behind
Expedia Group has open-sourced mockql-rs, a Rust CLI that fills @mock-annotated GraphQL fields with LLM-generated data at request time. It follows Airbnb's @generateMock in April and a GraphQL Foundation RFC opened in February. All three solve the same problem with different architectures, and two use the same directive name with incompatible semantics. By Steef-Jan Wiggers
AI 资讯
Build Your Agentic Software Factory!
The term software factory is getting a lot of attention right now, and for a good reason. AI coding assistants can generate code much faster than before. But faster coding alone does not mean faster, safer delivery. In many teams, it simply moves the bottleneck to review, testing, deployment, and operations. A software factory is a way to organize the entire software development life cycle as one connected, repeatable system. Think of a car manufacturing assembly line. Each station has a clear job, work moves forward in a predictable order, quality checks happen at the right moments, and the finished product is inspected before it leaves the factory. An agentic software factory applies that same idea to software delivery. AI agents do focused work across planning, coding, testing, deployment, monitoring, and feedback. Humans remain in charge of specifications, security, policies, approvals, and the decisions that should never be delegated blindly. Key Takeaways An agentic software factory coordinates AI agents across the complete software delivery lifecycle. Faster AI-assisted coding can create review bottlenecks unless downstream stages also improve. Humans retain ownership by defining guardrails, specifications, approvals, and security requirements. Workflow orchestration connects context, automation, observability, incident handling, and feedback loops. What Is a Software Factory? A software factory is not just a collection of developer tools. It is an operating model where software delivery is designed as a smooth, observable workflow from idea to production and back into improvement. In a car factory, a vehicle moves through assembly, painting, quality inspection, final assembly, and delivery. People are involved at important checkpoints, but the process does not restart from scratch at every station. It is structured, repeatable, and connected. The same model works for software. In an agentic software factory, the flow can look like this: Requirements and desi
AI 资讯
loveyourclanker.org
I created an open web resource for Software Engineers. https://loveyourclanker.org/ It highlights different patterns we can consciously choose use when interacting with our AI Coding tools (a.k.a 'Agents'... a.k.a 'Clankers') to stay in control, maintain quality and sensibly increase efficiency. I was prompted to do this (no pun intended) by observing some pretty alarming signals coming from this community. Token leaderboards, engineers being encouraged to use tools to "stay current" or "keep up" or "not be redundant", engineers quitting tools entirely to stay sane, engineers leaving social gatherings to get back to their agents, engineers setting up whole systems that automate away human engineers and then calling that "agentic engineering". I'm hoping that if we normalise and share how we use the tools, and show that there are different ways where you maintain more control and agency (... pun?) that it might promote a better If you find it helpful, share. If you disagree or want to contribute, raise a PR or ping me. It's all open and NFP.
AI 资讯
Notify vs Postmark for Transactional Email: Which Is Simpler for a Small Engineering Team?
I'd push back a little on "Postmark is simpler" as a blanket answer, because it depends on which kind of simple you're optimizing for. If you want the fewest new concepts to learn before your first email sends, Notify is simpler — fewer moving parts, no approval step, no server/stream concepts to pick up. If you want a mature, deliverability-focused product with templates built in, and you don't mind a few more concepts to get there, Postmark is genuinely excellent — its reputation in this space is earned, not just marketing. Here's the actual setup for each, side by side, since that's a more useful comparison than either one asserted as "simpler" outright. What "Simple" Actually Means for a Small Team A small engineering team usually means nobody's full-time job is "manage the email provider." In that context, simple should mean: how many new concepts does someone have to learn before this works, not just how polished the product feels once they've learned them. That's the lens worth applying here. What You Actually Set Up, Side by Side With Postmark: Sign up Request approval for production sending — Postmark reviews new accounts manually before you can send real volume, commonly reported to take about 24 hours Create a Server — Postmark's per-app isolation boundary — and name it Verify your domain: add a DKIM record, and if you want proper DMARC alignment rather than just the automatic SPF pass-through Postmark gives you by default through its own Return-Path domain, add a custom Return-Path CNAME too Pick which Message Stream you're sending through — Postmark separates transactional ("outbound") from broadcast streams and enforces that distinction, so this isn't optional Optionally create a Template within that Server if you want reusable content with variables instead of raw HTML per send Call the send API with your Server API Token With Notify: Sign up Verify your domain — SPF, DKIM, DMARC records Get your API key Call the send API That's four concepts versus a
开发者
If Apple sends you a push notification alerting you to a spyware attack, take it seriously
Apple now sends out push notifications to iPhone lock screens when the company identifies government spyware targeting someone's devices.
AI 资讯
What a Small-Business CRM Needs Beyond Contact Storage
A contact table is easy to build. A usable CRM is an operations system. The difficult part is not storing a name and email address. It is preserving context as work moves between people, organizations, deals, tasks, notes, imports, reports, and follow-up. That requires deliberate data modeling and product decisions. Model relationships, not isolated records A customer may belong to an organization. An organization may have several contacts. A deal can involve multiple people, tasks, notes, and status changes. If those relationships are flattened into one spreadsheet-like table, duplicate data and contradictory updates appear quickly. Define stable identifiers and explicit relationships early. Treat activity history as a product feature Users need to know what changed, when it changed, and who changed it. Audit history supports troubleshooting and accountability. It also makes bulk operations safer: after an import or mass edit, an administrator should be able to understand the result rather than guessing which rows moved. Decide which actions deserve history, how long it is retained, and who can see it. Avoid collecting sensitive data simply because the schema allows it. Design imports for failure CSV import is where clean demos meet messy reality. A useful import flow should provide: column mapping; required-field validation; duplicate-handling rules; a preview before committing; clear row-level errors; an exportable error report; idempotent or recoverable behavior where practical. Never assume the first row contains perfect headers or that dates, phone numbers, and booleans use one format. Make views part of the workflow Saved filters and views let different roles focus on their work without changing the underlying data. A sales view may emphasize open deals and next actions. An operations view may emphasize overdue tasks. An administrator may need import history and permission context. This is more than UI convenience: it is a way to keep one shared system useful
AI 资讯
Design Notes for a Deterministic C++ Simulation Framework
“Same inputs, same result” sounds like a simple requirement. In a multithreaded simulation, it is an architectural constraint that touches data layout, scheduling, physics, randomness, floating-point behavior, serialization, and debugging. Determinism is valuable for replays, lockstep networking, regression tests, and reproducing hard failures. It does not happen automatically. Define the determinism boundary Start by stating what must match. Do two runs on the same executable and machine need identical results? Across different compilers? Across CPU architectures? Across operating systems? Those are increasingly difficult guarantees. A framework should document the supported boundary rather than using “deterministic” as a universal adjective. Control time Do not feed variable wall-clock deltas directly into a deterministic simulation. Use a fixed simulation step and decide how the renderer catches up or interpolates. Record inputs by simulation tick. If the system pauses or falls behind, handle that condition explicitly instead of silently changing the rules. Make randomness replayable Every pseudorandom decision needs a known generator, seed, and consumption order. A global generator shared by many systems is fragile because adding one random call in an unrelated feature shifts the sequence everywhere. Prefer scoped streams or deterministic derivation by system, entity, and tick where appropriate. Record seeds in test and replay artifacts. Schedule parallel work deliberately Multithreading introduces nondeterministic execution order. If two jobs write shared state, results may depend on timing even when data races are technically avoided. A robust job graph should make read and write sets visible, separate independent phases, and define deterministic merge or reduction rules. Avoid relying on thread completion order. Parallelize work whose outputs can be combined predictably. Keep entity iteration stable Entity-component systems often use dense arrays and swap-rem
AI 资讯
What Permit Files Can Teach Us About Reliable Workflow Software
Paperwork-heavy workflows rarely fail because a database cannot store another PDF. They fail because the system loses the relationship between the document, the real-world object, the decision it supports, and the stage of work it represents. Permits provide a useful example. A complete project record is not one uploaded form. It is an evidence chain that changes over time. A recent Local Service Ledger guide to Pasco County septic-repair records organizes the file into eight stages: property, existing system, site, pump-out, water and sewer, application, permit, and closeout. The guide's most important software lesson is that a receipt or contractor proposal alone does not establish the complete chain from reported problem to final recorded status. That distinction generalizes well beyond permits. 1. Give every workflow a stable subject Every document should attach to a stable entity: a property, customer, asset, case, project, or account. Do not rely on a filename or free-form address as the only identifier. Normalize enough data to prevent obvious duplication, preserve the source value, and retain a stable internal ID. For a property workflow, several records may contain slightly different owner names or address formatting. The system should help a reviewer determine whether they refer to the same site without silently overwriting those differences. 2. Separate observations, proposals, and decisions These are different kinds of facts: an owner reports a symptom; a contractor proposes a scope; an authority authorizes specific work; an inspector records a result; a final status closes the file. Collapsing them into one “project description” field destroys provenance. Model the actor, date, source, and status of each statement. The interface can display the current operational summary while preserving the earlier language that explains how the record evolved. 3. Make state transitions explicit A reliable workflow should not infer completion because a document exists
AI 资讯
Delegating to AI Means Governing the Environment
In the previous article , I argued that AI isn't simply changing the tools we use to develop software, but shifting our work to a new level of abstraction. In this one, I want to address the problem that immediately follows: if we're going to write less and less code directly and agents are going to produce an increasingly larger part of it, how the hell do we know whether what they code is actually right? Because the answer obviously can't be “trust the AI, it's very smart”. Even though I personally develop code with AI today with practically no review, I don't blindly trust AI. Just as I don't blindly trust an engineer on my team. I don't even blindly trust myself. Blind trust is a security hole. And not blindly trusting someone doesn't mean distrusting them, it means having mechanisms to prevent their mistakes, or mine, from causing problems. That's why we've spent decades building mechanisms and methodologies around software development to detect, and avoid as much as possible, our mistakes. XP. Scrum. Tests. Code reviews. Pair Programming. CI. Static analysis. Permissions. Observability. Environments. Containers. Auditing... The question, therefore, shouldn't be whether we can trust an AI. The question should be what system do we need to build so we can use it without needing to blindly trust it? It's not deterministic One of the first objections is usually that if you ask it the same thing twice, it generates two different pieces of code. True. But if you give the same task to two different programmers, or to the same programmer with enough time in between, we'll very probably get two different implementations too, depending on the complexity of what we're asking. And if we've never required two developers to produce exactly the same code, why do we expect AI to produce exactly the same code from the same request? Isn't it enough for the result to satisfy the requested requirements? That it does what it's supposed to do. That it passes all kinds of tests. That
AI 资讯
Vercel Launches v0 API for Headless App Building
Vercel has made the v0 API generally available, enabling developers and AI agents to programmatically generate, iterate on, preview, and deploy applications through API calls. By Daniel Dominguez
AI 资讯
Who really needs a cocktail robot?
Bartesian's cocktail makers would be best described like a Keurig or Nespresso machine, but for alcoholic drinks.
AI 资讯
How Artificial Intelligence Disrupts Engineering Progression
AI is disrupting career progression by eliminating the learning opportunities at each rung while simultaneously enabling people to perform above their experience level, Alasdair Allan explained in his talk Engineering Progression When AI Ate the Middle at QCon London. Fewer junior developers join the industry, and AI slows hiring at the entry level. By Ben Linders
AI 资讯
Why Stream ring-maker Sandbar says the future of AI wearables is voice
AI notetaking hardware has taken off over the past couple of years, with credit-card-sized devices, pendants, pins, and even transcribing earbuds all promising to capture your meetings and turn them into summaries and action items. Now, a whole wave of wearables — rings especially — are betting people want to capture stray thoughts and ideas the same way. One of […]
AI 资讯
What Extended Support Actually Costs: The Cross-Vendor Pricing Reference for Post-EOL Software
The first cross-vendor pricing reference for post-EOL extended support. Microsoft ESU: $61/device doubling yearly ($30 one-time for consumers). AWS: EKS $0.60/cluster-hour (6x), RDS $0.100/vCPU-hour doubling in year three. Ubuntu Pro: $25 desktop / $500 server per year. And the honest quote-based rows — Red Hat ELS, Oracle, SUSE LTSS, CentOS ELS — where no public price exists. Every figure traced to a vendor price page or our verified coverage. The cross-vendor price table Product What it buys Pricing model Published price (verified 2026-08-12) Source Windows 10 — consumer ESU Critical + important security updates to Oct 12, 2027 Per device, one-time enrollment Free (settings sync) · 1,000 Microsoft Rewards points · or $30 one-time Microsoft consumer ESU page Windows 10 — commercial ESU Yearly security updates, max 3 years (to Oct 2028) Per device, per year — doubles annually, cumulative $61 yr 1 → $122 yr 2 → $244 yr 3 (≈$427 total) · $0 on Azure VMs / Windows 365 / AVD Microsoft ESU documentation Windows Server 2012/R2 ESU Final ESU year ends Oct 13, 2026 — then nothing, at any price Per year, via volume licensing or Azure Arc 100% of the full license price, each year — no year discount · $0 on Azure Per our analysis of Microsoft's ESU FAQ Amazon EKS 12 more months of Kubernetes version support Metered per cluster-hour — enrollment automatic, no opt-in $0.60 /cluster/hr vs $0.10 standard (6x) — ≈$438/mo vs ≈$73/mo per cluster AWS EKS pricing page Amazon RDS (MySQL / PostgreSQL) Up to 3 years past end of standard support Metered per vCPU-hour — enrollment automatic unless disabled $0.100 /vCPU-hr yrs 1–2, $0.200 yr 3 (AWS US East example rate) — Multi-AZ pays per instance AWS RDS pricing page Ubuntu — ESM (Ubuntu Pro) +5 years of patching past LTS standard support (20.04 to Apr 2030, 22.04 to Apr 2032) Per-machine subscription Free up to 5 personal machines · $25 /desktop/yr · $500 /server/yr (unlimited VMs) — support plans extra Canonical's Ubuntu Pro pricing page
AI 资讯
Everything announced at Made by Google ’26: Pixel 11, Pixel Watch 5, Pixel Tag, and tons of Gemini features
From the Pixel 11 series and a brand new competitor to Apple’s AirTag, here are all the announcements from the Made by Google 2026 event.
开发者
Google’s Quick Share adds a tap-to-share mode
Google's Quick Share feature is getting a tap-to-share mode for quickly exchanging contacts, photos, videos, and more.
开发者
Google’s new Pixel 11 Pro Fold offers a stronger build and brighter screens
The Pixel 11 Pro Fold will cost $1,899.
AI 资讯
Google takes on AirTag with the new $29 Pixel Tag
Google’s new Pixel Tag taps into its Find Hub network to help users track lost keys, bags, and other items.
AI 资讯
Google unveils the Pixel Watch 5 with a smarter Gemini and advanced health monitoring
The new smartwatch, which starts at $399, can track blood pressure patterns and insulin resistance, as well as deliver personalized help and better sleep tracking.