AI 资讯
My website has two audiences now. I only built for one of them.
The conversation about who reads your website has been shifting. Agents are part of it now. ChatGPT fetches URLs. Perplexity reads content. Shopping agents try to complete purchases. Coding agents hit your API. Most of those products were built for humans, tested against humans. The agents showed up later and quietly. When they can't figure something out, they don't complain. They just bounce. I heard the phrase "second audience" at a hackathon where you.com was one of the hosts. It stuck. That's what agents are: a second audience the web wasn't designed for and isn't being measured against. And now, I want to build something about it. A scanner that tells you what an AI agent experiences when it tries to use your website or your API. The internal name is Perseus Clew and the public product is Agentis Lux. The split is intentional: Perseus Clew is the engine name, part of a suite of AI builder tools , and Agentis Lux is the product-facing name (Latin for "light of the agent") that describes what agent users see. This isn't a launch post. I just finished a docs phase, and I'm about to write code. Before I do, I want to put this in front of dev.to builders and find out what I'm missing. What it will do Three layers: Deterministic scanning. Twelve check categories — six for frontends, six for APIs — looking at HTML, ARIA, structured data, OpenAPI specs, error responses, idempotency patterns. Same input, same score, every time. The methodology will be published, the weights will be public, and anyone can audit it. AI-readiness scoring tools have a reputation for inflating numbers and hiding their methodology, so the trust floor is making everything inspectable. That's the foundation the rest sits on. An AI-written verdict. After the score, a Bedrock call reads the top findings and writes one sentence about what an agent experiences. Something like: "An agent visiting this page can read your product descriptions, but can't tell which button starts checkout, so it can't f
开发者
We Cut $120,000 from Our Cloud Bill Without Sacrificing Reliability
We were running a cloud-hosted platform on AWS EKS , with EC2 worker nodes managed by us, MongoDB Atlas for NoSQL workloads, AWS RDS for relational databases, and Amazon ElastiCache for Redis for caching and temporary data. Over time, the infrastructure had grown the way most real systems grow: more services, more data, more backups, more images, more snapshots, and more “temporary” resources that were no longer temporary. The platform worked, but the cloud bill was higher than it needed to be. So we started cutting waste, improving the application, and resizing the infrastructure around how the system actually behaved. The result: around $120,000 in annual savings , without sacrificing reliability. The Problem Was Not One Big Thing When we started reviewing the infrastructure, it was clear that there was no single expensive resource causing the entire problem. The cost came from many places at once. Some services were using more CPU and memory than they needed. Some microservices did not really need to be separate anymore. Some databases were oversized for their actual usage. Some storage had accumulated over time. Some backups and snapshots were kept longer than necessary. Some resources were simply unused. That is usually how cloud costs grow. Not because of one bad decision, but because of hundreds of small decisions that were reasonable at the time and never revisited later. So instead of looking for one magic fix, we approached the problem from multiple angles: application code, architecture, databases, Kubernetes resources, storage, backups, caching, and non-production environments. The Optimizations 1. Making the Application Use Fewer Resources One of the most important parts of the optimization was improving the application itself. It is easy to look at cloud cost as an infrastructure problem only, but inefficient code directly affects infrastructure cost. If the application uses too much CPU or memory, the platform needs more pods, larger nodes, bigger ins
AI 资讯
Streaming an LLM response, in 4 GIFs
We have watched tokens stream in from an LLM before where they appeared one at a time, like the model was typing. If you used the Anthropic SDK's .stream() method, it just worked and you probably never saw what was on the wire. This post will majorly focus on how a stream response works and how bugs are handled by SDK behind the hood. 1. Why Streaming exists To enable the streaming option we would need to make one change in the post request that is a single field "stream": true and it will change the response experience. Here are the pointers we take from the gif. The left side shows no streaming as the cursor blinks for 4 seconds then the whole response lands at once. The right side shows the streaming where the first word shows up in about 300 milliseconds. Words flow in as the model generates them. Both the sides have same model, same prompt, same total time it is just the right side started giving response almost 4 seconds earlier. The 4 seconds wait time for a full reply feels broken. A streamed reply that finishes in four seconds feels fast. Streaming doesn't make the model faster it makes the wait disappear. 2. What's on the wire When you set stream: true , the API stops sending a single JSON blob. It opens a persistent HTTP connection and pushes events down the line as the model generates them. The format is Server-Sent Events (SSE) a web standard. Any SSE debugger will read this stream. Here's what comes through: A few things to notice: The text lives in delta.text , nested inside content_block_delta events. Those are the events we should look after. stop_reason moved. In post 1 , we saw it right there in the response JSON. Here, it arrives at the very end inside a message_delta event, just before message_stop . If the loop bails out as soon as the text stops arriving we will never see it. Chunks don't line up with tokens or words. You might get "Hello" in one chunk and " world" in the next, or both in one. The network decides where the cuts happens and it
AI 资讯
how to handle patch requests
so here is a problem i am trying to solve: context: restful or restlike api design partial update of entity through patch request. for this example let’s say client model. the problem is that different fields can be updated but result in different business logics to be triggered. for example change to client.name is a simple update but client.status can result in an email to go to users about the client being offboarded. or changes to client.ownerId require extra validation and verification of the assigned user. or changes to client.logo_url and client.website must happen together. what is the most ideal way to code it where one path can trigger different logics depending on body schema? I want an approach that is simple to work on many routes to develop business logic. AND, simple enough for others to read and debug as needed. please assume I am using a flexible framework that top engineers will implement whatever I ask them, so I am not limited to a given framework or a solution that exists. It can be an approach that does not exist but you hope it did. submitted by /u/farzad_meow [link] [留言]
AI 资讯
Best practice for prospective new customer?
Hey folks, I create Wordpress websites almost entirely in code and CSS for speed. Up to now, I’ve only ever built websites from scratch for customers. However I’ve recently had an enquiry from a local company asking me to rebuild their extremely slow(like snail mail slow) and outdated website - I don’t really delve into the Google side of things as the websites I build tend to rank pretty well organically, however the customer is concerned about building a new website as they already show up pretty high up on Google search pages - I’ve been reading some mixed opinions and got some less than helpful advice from the website I prefer to use for hosting. Some think, as the domain name is staying the same, it shouldn’t make a difference, however, others are saying otherwise. As I’ve never actually done a migration to a new site I’ve built before, what’s the best way to go about this? submitted by /u/PhantomNate [link] [留言]
开发者
Are guest books on personal websites making a comeback?
I've noticed more and more people, usually developers and tech nerds, adding a guestbook to their personal websites. First, if building a personal website is becoming more common, that would be amazing. I love that "small web" vibe. Second, the guestbook idea is awesome. I really hope it's a thing. submitted by /u/kixxauth [link] [留言]
AI 资讯
My portfolio, themed around imposter syndrome
Had a lot of fun building this one. The kitty is Sphinx; he's a feral that likes to hang out on our porch 😃 Stack is boring next.js, typescript and tailwinds. Been running the core stack for a good while now. I just build locally and upload though, because fuck Vercel 🤣 submitted by /u/classicwfl [link] [留言]
AI 资讯
I built an API that extracts brand/company data from any URL.
Built a small API that turns any URL into structured brand data (logos, colors, fonts, screenshots, company info, etc). Originally made it for onboarding + AI workflows, but wondering if it’s actually useful beyond my own use cases or just “cool but unnecessary”. Curious what you think: Would you use this in anything real? If yes, where? submitted by /u/Quiet-Ad2219 [link] [留言]
开发者
If any of you order cheap glasses from Zenni, it's really fun to look at the network tab of your myOrders page to see how not to do website design / architecture.
If you've ordered glasses from them, you can go to: https://www.zennioptical.com/myAccount/myOrders My page just spins. I was curious where my glasses order was after a couple weeks of not receiving them. The network tab shows 30+ css files being downloaded for a very simple website, 10+ trackers and advertising js scripts, and the page still won't load. How about this: SELECT * FROM orders WHERE customer_id = :id ORDER BY order_date Then you can render my most recent orders on the server and at least render some HTML with relevant data. Ok, at scale that might now work. I understand that. Zenni isn't Amazon or Google, but they probably get many requests. In that case we could set up 1+ load balancers that simply forward the request to a sharded server based on userid to balance the load. It's absolutely crazy that we could handle thousands of requests per second in the early 2000s with a few servers in a colo facility and these days everyone has to pretend their facebook or myspace that needs to analyze complex graph connections between people. I just want to see what the status of my order is. It's not that hard. submitted by /u/DrAwesomeClaws [link] [留言]
AI 资讯
I Built a 25-Agent Polish Parliament That Drafts Bills With Real Legal Citations
This is a submission for the Hermes Agent Challenge TL;DR — Type a one-line bill topic. Twenty-five Hermes agents (1 Speaker, 19 ministries, 5 parties) run a full Polish legislative session in 2 minutes. Vote tally, social impact, party tweets — and a side-by-side "current law vs proposed amendment" with every clause cited to a real statute. Built on delegate_task for parallel ministry consultation. 🌐 Live: https://web-production-53027.up.railway.app/ 🎥 Walkthrough: https://www.loom.com/share/92cdac7da31c471088a4e569b0cfe1ed 📦 Repo: https://github.com/monsad/ai-politics (MIT) What I Built Watch a politician debate a new tax law on TV. They argue whether it's fair, whether it'll work, whether the other side is lying. Nobody ever shows you the diff — which paragraph of which statute actually changes, and from what to what. The conversation is theatre on top of an invisible legal document. So I built the theatre AND the legal document. Virtual Parliament is a multi-agent simulation of the Polish Sejm. You type something like "four-day work week" or "flat income tax" , and 25 Hermes agents run a full legislative session: 🎯 Marszałek (Speaker) — the orchestrator. Classifies the topic. Picks 2–3 ministries via delegate_task in parallel . Reads their findings. Routes the bill to a party debate. 🏛️ 19 ministry experts — Finance, Climate, Labour & Social Policy, Justice, … Each returns a structured analysis: legal finding · budget impact · top 3 risks · recommendation . Every claim cites a real statute via PageIndex RAG. 🗳️ 5 party agents — KO, PiS, TD, Konfederacja, Lewica. Each one carries the real party's seat count (157, 194, 65, 18, 26 — totalling 460), policy positions and rhetorical style. First reading. Second reading with rebuttals. 📊 Vote — weighted by seats. >230 passes. 📜 Draft bill — produced with explicit "Article 129 §1 of the Labour Code **is amended to read …" diffs against current law. The frontend surfaces the diff as a Current law vs proposed change panel
AI 资讯
Claude Code's workflow docs are a menu.
Here is what a real solo founder orders. $ git worktree list ~/app a1b2c3d [ main] ~/app-review e4f5g6h [ review-branch] ~/app-content i7j8k9l [ draft-post] Three checkouts. One machine. Each one runs its own Claude Code session that cannot touch the others. That is a normal workday for me. I run a one person shop. Content and code, same desk, same hour. Anthropic's common workflows page lists about a dozen recipes for everyday work, and the docs are strong. What they do not tell you is which recipes survive contact with a real workday and which ones stay theory. After running Claude Code as my whole operation, five workflows carry the load. Here is the honest split. https://code.claude.com/docs/en/common-workflows 1. Worktrees changed how I work The problem worktrees solve is collision. You ask Claude to fix a bug. While it edits, you want to keep building a feature. Same repo, two streams of edits, and now your working tree is a fight nobody wins. A git worktree is a second checkout of the same repo on its own branch. Claude runs inside it and never sees the other windows. claude --worktree feature-auth Real scenario from this week. The post you are reading was drafted in one worktree while a separate Claude session reviewed an open pull request in another. Neither touched the other's files. When the review finished I merged, came back to the draft, and never lost my place. If you take one workflow from the docs, take this one. The setup cost is close to nothing and parallel agents stop stepping on each other. 2. Subagents protect the one resource you cannot buy more of The model's working memory is your budget. Every file Claude reads to answer a question spends it. Ask "how does our auth refresh work" in a large repo and Claude reads a pile of files to answer. Those files now sit in the window for the rest of the session, crowding out the work you care about. Delegate that to a subagent. use a subagent to investigate how our auth system handles token refresh The
AI 资讯
Great Stack to Doesn't Work #3 — Redis: "99% Cache Hit Ratio, System Down"
A survival guide for when everything goes wrong in production. Your Redis dashboard looks perfect. Hit ratio: 99.2%. Latency: sub-millisecond. Memory usage: 60% of available. Every metric says healthy. Then at 2:47 PM, your API starts returning 500s. Response times spike to 30 seconds. Users can't log in. The dashboard still shows 99% hit ratio because the cache is working — it's serving cached errors to everyone equally fast. Redis is doing exactly what you told it to do. The problem is what you told it to do. Why Single-Threaded Is Fast (Until It Isn't) Redis processes commands on a single thread. No locks. No context switching. No synchronization overhead. One CPU core, fully utilized, can handle 100K+ operations per second because it never waits for another thread to release a lock. The event loop model (similar to Node.js) multiplexes thousands of client connections on a single thread using non-blocking I/O. Read a request, process it, write the response, move to the next. When your commands are simple — GET, SET, INCR — each one takes microseconds. The trap: slow commands block everything. KEYS * on a million-key database? That's a full keyspace scan on the main thread. While it runs, every other client waits. SORT on a large set? Same. LRANGE on a list with 10 million elements? Same. Redis 6.0 introduced I/O threading ( io-threads config) for reading and writing network data on multiple threads, but command execution is still single-threaded. Redis 7.0 improved this further, but the fundamental model hasn't changed. Long-running commands on the main thread stall everything. Rules: Never use KEYS in production. Use SCAN instead — it's cursor-based and returns results incrementally. Watch out for O(N) commands on large data structures: LRANGE , SMEMBERS , HGETALL on million-element structures. Use SLOWLOG to find commands that are blocking the event loop. Pipelining: The Easiest 10x You'll Ever Get Every Redis command involves a network round trip: send request
开发者
Great Stack to Doesn't Work #2 — Kafka: "Where Did My Messages Go?"
A survival guide for when everything goes wrong in production. There's a moment every engineer who works with Kafka experiences. You check the producer. Messages are sending. You check the consumer. Nothing. The consumer group shows zero lag because there's nothing to lag behind — as far as the consumer knows, the topic is empty. But it's not empty. The messages are there. Somewhere. In some partition, at some offset, behind some configuration you set six months ago and forgot about. Kafka doesn't lose messages. But it's very good at hiding them from you. Consumer Lag: The Number Everyone Watches Wrong Consumer lag is the difference between the latest offset in a partition and the offset your consumer group has committed. Simple concept. Dangerous in practice. The mistake: treating lag as a single number. Lag is per-partition. If you have 30 partitions and one consumer is stuck on partition 17 while the others are healthy, the total lag looks manageable. But partition 17's data is hours behind, and whatever downstream system depends on that data is serving stale results. Monitor lag per partition. Tools like Burrow, Kafka Exporter for Prometheus, or even kafka-consumer-groups.sh --describe break it down. If one partition's lag is growing while others are stable, you have a stuck consumer, a hot partition, or a poison message. A poison message is a record your consumer can't process — malformed data, unexpected schema, null where it shouldn't be null. The consumer throws an exception, the offset doesn't commit, and it retries the same message forever. Lag grows. The consumer looks "alive" because it's processing — just not making progress. The fix: dead letter queues. After N retries, move the message to a separate topic, commit the offset, and move on. Alert on the dead letter topic. Investigate later. Don't let one bad record block millions of good ones. Rebalance Storms: The Silent Killer Consumer rebalancing is Kafka's mechanism for redistributing partitions acro
AI 资讯
I built a detention-pay calculator for truckers in a day — unglamourous niches beat another AI wrapper
Every "what should I build" thread on here is full of AI wrappers fighting over the same five SaaS founders. Meanwhile there's a guy sitting at a loading dock right now, doing arithmetic in his head, who is about to undercharge his broker by a few hundred bucks because nobody built him a 30-second tool. I built that tool. It's a free detention-pay calculator for truck drivers. This is the build log — the niche-selection, the single-file stack, and two decisions (an SVG gauge and a no-mail-service auth scheme) that were more interesting than the app deserves. I'm not a trucker. I build small free web tools for industries other may find unglamourous or not enticing enough. That honesty matters later. The problem (worth $2–6k/yr to one user) Truckers get a "free time" window at a dock — usually 2 hours. Past that, the broker owes detention pay (~$50–100/hr). Drivers leave an estimated $2,000–6,000/year of it unclaimed, mostly because the math + the paperwork is annoying enough to skip. So the spec wrote itself: In/out times + free hours + rate → dollars owed. Export a dispute-ready PDF they can email the broker. Work on a phone, no login, instant. Validating before writing a line The mistake I almost made: assume the niche is empty because I'd never heard of it. I checked. It is not empty — DockClaim ($49/mo, GPS tracking), Detention Buddy, a couple of $9.99/mo App Store apps, even a free email-gated web calculator or two. That killed my first instinct ("be the only one") but clarified the real wedge: everything is a paid app download or email-gated. The opening was a genuinely free, no-signup, instant web version that also generates the claim PDF. Not "the only detention tool" — the one with the least friction. I'll say more on why I'm careful about that claim at the end. Lesson: validate to find your angle , not just a go/no-go. "Crowded but all friction-heavy" is a fine market. The stack: one HTML file No framework. The whole app is a single self-contained .html — m
AI 资讯
SQL-like Queries in FSRS Plugin for Obsidian
SQL-like Queries in FSRS Plugin for Obsidian Spaced repetition in Obsidian usually works as "show all cards with due earlier than today." That's enough for simple cases, but once you have hundreds of notes, you want to filter, sort, and select. My FSRS plugin now has a query language resembling SQL. It turns a markdown block into a live table that updates with every review. ``` fsrs-table SELECT file as "Note", r as "Retrievability", date_format(due, '%d.%m.%Y') as "Due" WHERE r < 0.7 ORDER BY r ASC LIMIT 20 ``` → the table shows the 20 most "forgotten" cards, sorted by retrieval probability. From Simple Settings to an Embedded DB Initially I planned to offer table settings using standard SQL syntax. But pretty quickly the syntax became a real query language, and the implementation itself — an embedded lightweight DB. High-level test coverage in TypeScript made it easy to iterate on functionality located in the WASM module via an AI agent. When faced with dual-language testing (TypeScript + Rust), the artificial intelligence prefers to do the job properly rather than fake it. After implementing the lexer → parser → AST → evaluator pipeline for numeric values, I extended it to strings, added filtering via WHERE, then functions. Extending the syntax or adding a function came down to a single request to the agent — and a feasibility check. What's Inside fsrs-table Supported Features SELECT — choose fields, rename via AS . WHERE — conditions with = , != , < , > , <= , >= , AND , OR . ORDER BY — sort ascending ( ASC ) or descending ( DESC ). LIMIT — cap the number of rows. date_format() — convert the due date to any text format. Available fields: Field (alias) Type Description file string path to the note due date next review date stability (s) number stability in days difficulty (d) number difficulty retrievability (r) number probability of recall (0…1) reps number total number of reviews state string New, Learning, Review, or Relearning elapsed number days since last r
AI 资讯
[Imposter syndrome] Back to the beginning (DevSecOps path)
I’ve been writing my project - Python port scanner for 9 months now. You might be wondering, “Why is it taking so long?” Most of the time was spent figuring out how raw sockets work, how to write a function for manually assembling a packet, calculating the checksum, packing the IP packet bytes, the TCP header, the pseudo-header using struct.pack, sending the packet, and how SYN scanning works. Why did I decide to take such a complicated route instead of just using Scapy? I’m a principled person and have a very exhausting yet useful skill—understanding everything. That’s how I got acquainted with big-endian, or “network byte order.” I won’t go into the details of big-endian logic, to be honest, I’m already mentally exhausted It took several evenings and nights to analyze and understand the principles—watching videos, reading RFCs, and looking at GitHub code (which I didn’t understand)—but what bothered me most was that I had to ask gemini for an explanation. As I mentioned above, I’m very principled; I can’t just copy code without understanding it, so I ask gemini for a prompt like this: “Don’t write the code for me. If I end up asking you for an example because I’m tired, explain it line by line.” Yesterday I realized I don’t fully understand Python (basics)—I don’t remember REPL—so I went to ask Gemini for advice; I don’t have anyone competent who could help me with advice. I’m not very sociable, and the only thing that’s interested me for the last four years is IT. I used to make music. Lately, something strange has been going on with my health, the day before yesterday I woke up because of a nosebleed; this has happened before, but on a larger scale. I stopped working on the scanner yesterday and decided to try writing a backup script in Python. I found an article and jotted down in Obsidian what the project should and shouldn’t do. Previously, the project used Docker, Prometheus, and Grafana. My questions: Am I a good developer, and am I even one at all? Should
AI 资讯
2 years later, anyone using PandaCSS? Like it?
I have been using PandaCSS + Ark UI to build out my components on my app. I kind of like it, I mean really its an alternative to Tailwind basically using CSS in JS, but with full types so you don't need an extension to get auto-complete. Where it gets clunky for me though is the build tooling having to build the styled-system directory with everything...but I mean I guess Tailwind has its own building configuration. I'm just curious cause I've kind of liked it, but really see it used much. Most I can find on info is like videos and stuff when it first came out. submitted by /u/k032 [link] [留言]
AI 资讯
[Showoff Saturday] Prose reader, a reading system engine
Hey everyone, I’m the author of prose, an MIT-licensed SDK/engine for building reading apps: https://prose-reader.com/ It’s a TypeScript, web-based reader engine that can be used to build anything from a simple image/archive-based comic or manga reader to a more complex EPUB reader with navigation, search, annotations, gestures, zoom, pagination, and custom reading behavior. It supports EPUB and archive-style formats like ZIP/CBZ/CBR, and can run in the browser or inside mobile apps through WebView/React Native. One of the main ideas behind Prose is its enhancer system , which works like a plugin system. Enhancers let you add or modify reader capabilities without changing the core engine, so apps can build their own UX and features on top. The project has been around for about 6 years, but I haven’t promoted it much. It’s also used in Oboku , an open-source reading app I’ve been building: https://oboku.me/ AI disclaimer: I have about 15 years of experience as a developer, and I use AI as a tool to help me iterate faster and improve quality, not as “vibe coding” or a replacement for my own judgment. It has helped me deal with many small problems and move the project forward faster. I’m looking for developers who might be interested in trying it, giving ideas, or providing feedback to help improve it. GitHub: https://github.com/mbret/prose-reader Docs: https://doc.prose-reader.com/ Demo: https://demo.prose-reader.com/ Discord: https://discord.com/invite/dffDEgwNc5 Would love to hear what you think. submitted by /u/yabai90 [link] [留言]
AI 资讯
I built a web app where you generate 3D objects made up of separate, logically connected parts (instead of monolithic blobs generated by standard AI generators)
Link: https://nova3d.xyz It's free but you'll need to bring your own API Key (BYOK). For open source enthusiasts, check out the github repo at: https://github.com/RareSense/Nova3D This project is a big deal if you see limitations of current AI 3D generators (like Meshy or Tripo). They produce solid, monolithic 3D objects that look good but are practically useless, because: - Want to change the arm of a robot you generated? Regenerate the entire asset. - Want to edit something manually? The whole thing collapses because it's not actually structured. - Want to rig or animate it for a game? Can't easily do that, because it’s a dead, monolithic blob instead of a functional, modular asset. This is a flutter front-end with a python, fastAPI and headless blender back-end. Would love to get community feedback! submitted by /u/mhb-11 [link] [留言]
AI 资讯
I've been QA-testing indie and AI-built sites this week — the same handful of things are broken on almost all of them
The same issues keep showing up — the kind that look fine but quietly cost signups or search ranking. Sharing in case it helps your own site: Forms with placeholder text instead of real labels. "Email"/"Password" shown inside the box looks labeled, but it isn't — the text vanishes when you type, and screen readers + browser autofill don't read it. Quiet signup killer. Heading levels that skip. Jumping from an H1 straight to an H3 with no H2. Invisible to the eye (it's in the markup), but it confuses screen readers and how Google reads your page. A main CTA that doesn't actually go anywhere. More common than you'd think — the button looks fine but the click loops or dead-ends. Worth literally clicking your own "Get started" and following it through. Missing title / meta description. Google then writes its own (usually worse) snippet for you, costing click-throughs. No social preview tags (Open Graph). Share your link on X or Reddit and it shows a blank, ugly preview instead of a title + image. Founders share links constantly, so this one stings. Most take 5 minutes to fix once you know they're there. Full disclosure: I built a tool that checks for this ([Sweep]( http://www.usesweep.app) ) — happy to run yours and send the report if you drop a URL below. But honestly, just checking these five by hand is worth an afternoon. submitted by /u/Hairy_Wash_9086 [link] [留言]