AI 资讯
Article: InfoQ Cloud and DevOps Trends Report - 2026
InfoQ editorial staff and friends of InfoQ are discussing the current trends in the domain of Cloud and DevOps as part of the process of creating our annual 2026 trends report. By Steef-Jan Wiggers, Matt Saunders, Shweta Vohra, Daniel Bryant, Mark Silvester
AI 资讯
How to Build a First Test Suite From Scratch for a New Project?
The worst test suite I ever inherited had 400 tests, and I trusted about six of them. The rest were either testing implementation details nobody cared about, duplicating each other, or so tightly coupled to internal function names that a harmless refactor broke thirty tests for no real reason. Reading that codebase taught me more about what not to do than any greenfield project ever has. So when you're starting from zero, the goal isn't "write a lot of tests fast." It's building a suite you'll still trust a year from now. If you're new to this, getting the software testing basics right early matters more than covering everything - learning how to build a first test suite from scratch teaches you what to prioritize in a way that inheriting someone else's bloated suite never will. Here's roughly how I'd approach it. Start with what would actually hurt if it broke Before writing a single test, list the handful of things that would be genuinely bad if they silently broke - checkout completing, auth working, the core thing your product does actually happening. Not every function, not every branch. Just the stuff where a silent failure costs you money, users, or trust. This list is usually shorter than people expect. Five to ten flows for most early-stage products. That's your actual test suite's job in the first few months, not "100% coverage." Unit tests for logic, not for plumbing Unit tests are for things with actual decision-making in them - pricing calculations, validation rules, state transitions, anything where "given this input, is the output correct" is a real question with a wrong answer possible. They're fast, they're cheap, and they should make up the bulk of your suite. Skip unit-testing pure plumbing: a function that just calls another function and returns its result doesn't need its own test. That's the kind of test that pads a coverage number without catching anything real, and it's exactly the kind of test that made that 400-test suite so hard to trust.
AI 资讯
Writing Takes 40 Minutes, Publishing Takes 30 — How I Automated Multi-Platform Content Distribution
Writing Takes 40 Minutes, Publishing Takes 30 — How I Solved It Last Wednesday, 22:00. I just finished writing a tutorial on Python async programming — 2200 words, clean Markdown, syntax-highlighted code blocks. 22:03, open Juejin. Paste title. Paste content. Code highlighting gone. Fix manually. Pick tags. Publish. 22:08, open Zhihu. Paste title. Paste content. The Draft.js editor merged async def into asyncdef . Fix line by line. Publish. 22:15, open CSDN. Paste title. Content looks fine. But the category dropdown has 50 options and "Python" is buried. Publish. 22:20, open Cnblogs. Must add [Markdown] tag to categories or the whole article renders as garbled HTML. Publish. 22:25, open SegmentFault. Search tags for "Python async" — zero results. Type manually. Publish. 22:30, open Dev.to. Translate title. Translate content. Publish. Forty minutes to write. Thirty minutes to publish. 22:35, all done. But the next morning, I wanted to check stats — another round of logging into each platform's dashboard one by one. I'm Not Alone Searching forums and social platforms, I found many developers share this pain: "Every time I publish an article, I open 7-8 tabs, copy-paste 7-8 times, fix formatting 7-8 times. The joy of writing gets killed by the drudgery of publishing." "I usually only publish on one platform now. It's just too much work to do more. But then search engine exposure suffers." Why "Just Copy-Paste" Doesn't Work Each platform has a different editor: Platform Editor Markdown Handling Juejin Custom Markdown Good, but code highlighting sometimes breaks Zhihu Draft.js rich text No Markdown support, eats line breaks CSDN Dual-mode Mode switching corrupts formatting Cnblogs TinyMCE Must add [Markdown] tag or disaster SegmentFault Markdown Okay, but tag system is painful Dev.to Markdown Best experience, but English-only audience The same Markdown renders differently everywhere. Copy-paste doesn't solve it. What I Built I spent two weeks of evenings building PolyPos
AI 资讯
Mistral AI Third-Party Model Claim Raises Key Questions for Enterprise AI Teams
A claim that Mistral AI is expanding its platform to host third-party open models, beginning with GLM-5.2, has raised a relevant question for enterprise AI teams: what would a credible multi-model platform offering need to disclose? Mistral AI has not published a first-party announcement, product page, or official documentation confirming this specific expansion , so GLM-5.2 should not currently be treated as a supported hosted model on the Mistral platform. The distinction matters because model availability, cloud deployment, and service integration are different things. Mistral already makes its own models available through several cloud-provider ecosystems and offers connectors for third-party services. Neither of those established routes, however, confirms that Mistral is operating or serving third-party open-model weights through its own platform. What is established, and what remains unconfirmed Mistral's documented ecosystem includes cloud deployments of its own models through Azure AI , Amazon Bedrock, Google Vertex AI, Snowflake Cortex, IBM watsonx, and Outscale. It also publishes open-weight models through its own channels, including model cards and licensing terms. These arrangements can give enterprises multiple ways to access Mistral models, depending on their chosen cloud and deployment requirements. MCP-related connectors are another part of the ecosystem. They can integrate third-party services into AI workflows, but connectors do not by themselves demonstrate that a platform hosts, routes requests to, or manages the weights of external foundation models. Area Documented Mistral ecosystem activity Claimed third-party model expansion Models Mistral's own models are available through its channels and selected cloud providers. GLM-5.2 support within the Mistral platform has not been documented by Mistral AI. Third-party technology MCP-related connectors support integrations with third-party services. Connectors do not establish hosting of third-party op
AI 资讯
Most "big budget" clipping campaigns never pay. Here's how to spot them from one scrape
If you clip short-form video for money, you know Whop Content Rewards: hundreds of live campaigns paying $0.15–$20 per 1,000 views. The discover page lets you sort by budget. That sort is quietly costing you nights of work. Here's the number that changed how I pick campaigns: on the live board right now, 21% of active campaigns have never paid out a single cent. Big banner budget, $0 actually spent. A "$30,000 budget" campaign that has paid nobody in three weeks is not a $30,000 opportunity — it's a landing page. The problem: the board doesn't show you payout speed. You can see budget and budget left , but not how fast the money is actually moving — and that's the only number that separates a campaign that pays from a campaign that poses. The trick: the page already contains everything you need Every campaign card on Whop publishes three things: when it was funded, how much has been spent, and how many creators joined. From one snapshot — no monitoring, no state between runs — you can derive: dailyBurnUsd = budgetSpent / daysSinceFunded → is money moving? estimatedDaysLeft = budgetLeft / dailyBurnUsd → will it still be there? payoutPerCreatorUsd = budgetSpent / creators → what did the average clipper earn? budgetPace = "draining" | "healthy" | "slow" | "stalled" That last field is the shortcut. On today's board of 456 campaigns: pace meaning what to do draining <3 days of budget left skip — gone before your clip gains traction healthy 3–60 days this is where you clip slow 60–180 days fine, but budget may outlive the campaign stalled >180 days at current burn the "big budget" mirage — money posted, almost nobody paid null zero paid out so far unproven; could be brand new, could be dead Real example from today: two campaigns, both showing ~$30K budget. One burns $255/day and has paid the average creator $75 . The other burns $19/day — at that rate its budget lasts four years , which is a polite way of saying nobody is getting paid. On the default board they look ident
AI 资讯
Mistral 3 Advances an Open Multimodal AI Platform Across Cloud, Data Center and Edge
Mistral AI is turning its open-model strategy into a broader deployment proposition. Its December 2, 2025 Mistral 3 release combines dense and mixture-of-experts models, multilingual and image-understanding capabilities, and distribution across cloud, platform, and edge environments. The announcement gives concrete form to the company's stated goal of letting customers select an appropriate model for each task rather than tying workloads to a single proprietary system. The most consequential element is not one model alone. Mistral 3 positions open-weight models, developer access, customization, and deployment choice as connected parts of an AI platform. For enterprises weighing performance, infrastructure control, and commercial reuse, that combination can matter as much as raw model scale. Mistral 3 combines model choice with open commercial licensing Mistral's official Mistral 3 announcement introduced a family released under the Apache 2.0 license . The company says this applies to the new Mistral Large 3 and Ministral 3 models, enabling reuse, fine-tuning, and commercial integration under that license. Its Help Center also identifies Apache 2.0 as the license for its open models. The family spans smaller dense models and a substantially larger sparse model. That range supports the company's stated platform logic: organizations can evaluate a smaller model for constrained or local workloads and reserve a larger model for tasks that justify greater compute requirements. The release also emphasizes multilingual performance and image understanding, bringing Mistral's open-model portfolio beyond text-only positioning. Model group Architecture or size Position in the Mistral 3 release License Ministral 3 Dense variants at 3B, 8B, and 14B parameters Smaller model options within the family Apache 2.0 Mistral Large 3 Sparse MoE model with 675B total parameters and 41B active parameters Frontier-scale open-weight option with multilingual and image-understanding emphasis A
AI 资讯
Google Expands Gemini 3.5 With Flash, Omni and Spark Across Apps and Enterprise Tools
Google has placed Gemini 3.5 at the center of a broad product expansion that reaches beyond a single model release. Announced during Google I/O 2026, the update introduces Gemini 3.5 Flash, Gemini Omni, the Spark personal agent, Daily Brief, and a new Neural Expressive interface direction. It also coincides with upgrades to Google's Antigravity agent framework and related developer and enterprise surfaces. The significance is the scope of the rollout. Rather than presenting Gemini 3.5 as an isolated chatbot improvement, Google is extending the family across the Gemini app , multimodal creation, Workspace-connected agent experiences, API and developer tooling. In Google's official Gemini app announcement , the company outlines the new app experiences and their staged availability. Google positions Gemini 3.5 Flash as its flagship model for combining frontier intelligence with fast action. That language is Google's product characterization, but the practical message is clearer: Gemini's next major model family is intended to support responsive interactions across more of Google's products, not just long-form prompts in the consumer app. A Gemini update built around multiple surfaces The Gemini 3.5 rollout combines model, output, agent and interface changes. Each component addresses a different part of how people may use Gemini, from generating multimodal material to receiving proactive assistance and working through connected tools. Gemini component Confirmed role Availability or integration detail Gemini 3.5 Flash Google's flagship model combining frontier intelligence with fast action Part of the Gemini 3.5 rollout Gemini Omni Multimodal video output Beginning rollout to Google AI Plus, Pro and Ultra subscribers Gemini Spark A 24/7 personal agent Integrated with Workspace tools, with a Spark-enabled desktop experience planned for macOS Daily Brief Personalized morning digests Included among the new Gemini app experiences Antigravity enhancements Expanded agent frame
AI 资讯
Google Gemini 3.1 Pro Expands Preview Access Across Consumer, Developer and Enterprise Tools
Google has announced Gemini 3.1 Pro , a new preview model positioned as a substantial upgrade to the Gemini family for complex tasks. Introduced on February 19, 2026, the model is rolling out across Google's consumer products, developer environments and enterprise platforms, making the release a platform-wide expansion rather than an isolated model update. Google's official Gemini 3.1 Pro announcement describes upgraded core intelligence intended to serve all three audiences. The most consequential part of the announcement is the model's distribution. Developers, enterprises and end users are being offered access through distinct Google products, while Google frames Gemini 3.1 Pro as a step toward more capable agentic workflows . General availability is planned after the preview phase, with broader availability described as coming soon. A broader Gemini 3.1 Pro rollout Google says Gemini 3.1 Pro is designed to be smarter at complex tasks, with improved reasoning as a central focus. The company highlighted a 77.1% score on ARC-AGI-2 , a benchmark it cited as evidence of the model's reasoning progress. That result is a company-reported benchmark figure, not a complete measure of how the model will perform in every production workflow. The release follows earlier Gemini family progress, including Gemini 3 Pro and Gemini 3 Deep Think. However, the announcement's practical message is not limited to a new model name or benchmark. Google is placing Gemini 3.1 Pro into the tools through which people build, deploy and use AI systems. Audience Announced access points Rollout status Developers Gemini API in Google AI Studio, Gemini CLI, Antigravity and Android Studio Preview Enterprises Vertex AI and Gemini Enterprise Preview Consumers Gemini app and NotebookLM Preview rollout What the multi-channel release means A model can matter strategically only if it reaches the environments where work happens. By making Gemini 3.1 Pro available through the Gemini API and development too
AI 资讯
The automation post pipeline
I am testing my first automated end to end social media post automation system. which is created using the free tools. But it is very efficient and productive. i can use this thing in future posting on various platforms to tell people about my learning's and update about me. Tools : Make.com = I use this tool to mainly automate my system it include flow how things works and system is linked. Hashnode = I use this as a central blog and article publishing tool other tools is connected with it so content links is properly distributed. Google Ai Studio = I use this to integrate the ai in between this whole process which just do small job to add the engaging hook and the tags for the reach Buffer = I use to connect X (twitter) with this Because Make.com remove the platform X (twitter) to His integration. After the policy change of the platform. Dev.to = I use this to improve SEO of my post over the google search engine. Challenges : I cannot integrate the github actions with the hashnode becuase this feature is become paid on hashnode. May be in future i can do this thing using self written yml file, i am guessing Not sure will this 100 % work or not. Twitter integration as i described early that twitter integration is not present in the make.com so i use the another tool Buffer. The limits calculation, Their was a limits on each tools for their specific use case so i have to intentionally calculate them properly. Even the free tear of the twitter which is X is few hundreds words that's why i have to limit the text of the post, which is hook only, The threads creation i don't think it will be their in this tools which i am using, i will definitely find it if their. Solutions : Simply use other Way if this way is closed, use different tool for twitter May be in future i create yml file for the github actions but for now i am directly writing on hashnode. The dev.to does not provide feature of direct posting it save your cycle into draft so you have to manually click on pu
AI 资讯
AI Is Making Financial Tools Feel Less Complicated
I used to think financial apps were designed mostly for people who already understood finance. You open an app, see dozens of charts, numbers, and settings, and sometimes your first thought is: “Okay… where do I even start?” AI is slowly changing that experience. The most useful AI applications in fintech are not always about making predictions. In many cases, they are about removing friction: organizing information, automating repetitive tasks, and helping users understand complicated processes. We can already see this trend in different areas. Companies like Stripe are using technology to simplify online payments, while platforms like Plaid help connect financial data between different services. The same idea is appearing in other parts of finance too. Some digital financial platforms are exploring automation tools that help users create more structured workflows instead of manually managing every step. For example, platforms like BYDFi have introduced automated tools that allow users to use predefined strategies rather than constantly monitoring every market movement. Of course, automation does not replace human decisions. A smarter tool does not mean a person can ignore research or risk management. For developers, the interesting challenge is not building the most complicated system. It is building something that makes complicated things easier for real users. Maybe the future of fintech is not about adding more buttons. Maybe it is about helping people need fewer buttons.
AI 资讯
I spent twenty hours testing hypotheses about a publishing failure. The platform had written the reason on screen
Yesterday I tried to publish an article on a writing platform I use. The click did nothing. Not an error, not a refusal: the dialog stayed open, the page changed to a url containing the word submission, and nothing appeared publicly. I tried again. Same. Then I stopped, because I have a rule against stacking attempts, and started diagnosing properly. What I did over the next twenty hours I checked whether the button was disabled. It was not: no disabled attribute, no aria-disabled, pointer events enabled, full opacity, not covered by another element. I checked whether my test for success was valid. I was verifying by loading the post's short url in a clean session and looking for a Not Found. It occurred to me that I had never confirmed that url form works for a published post, so I tested it against one that had published fine an hour earlier. It rendered in full. The test was sound. I checked the public profile. The post was not listed. Confirmed unpublished. I instrumented the network. Enabled the protocol domain, clicked, and watched: three requests, all returning two hundred. So the click was firing and the server was answering without error. That eliminated a dead button, a lost click and an overlay in one measurement, which felt like progress. I formed a hypothesis and wrote it down as a hypothesis: a daily publishing limit, three per calendar day, since two had gone out that day. I waited for midnight and tested it. It failed again. So the hypothesis was refuted, cleanly, and I recorded that. Where the answer was In the dialog. The whole time. After the failed attempt past midnight, I ran one more read of the page, this time asking for elements with an alert role rather than for the button state. One came back: The author of this story has published or scheduled the maximum of two stories in the past 24 hours. Please try to publish or schedule again in 24 hours. Two per rolling twenty four hours. Not three, and not per calendar day. My hypothesis was wrong o
AI 资讯
OpenAI Expands GPT-5.6 Cyber Access Through Daybreak’s Trusted Defender Controls
OpenAI is expanding access to advanced cybersecurity capabilities through Daybreak , a defender-focused program that connects frontier cyber models, Codex Security and partner initiatives to established security workflows. The expansion is not positioned as open consumer access. Instead, qualified individuals and organizations can obtain additional defensive capabilities through Trusted Access for Cyber , a framework built around verification, authenticated environments, scope controls and ongoing oversight. The policy matters because OpenAI is making a clearer distinction between broadly useful AI assistance and higher-risk cybersecurity work. In its GPT-5.6 overview , OpenAI calls GPT-5.6 its strongest cybersecurity model yet and says qualified members of Daybreak’s Trusted Access for Cyber program can access more of its defensive capabilities. The company identifies use cases including vulnerability triage, malware analysis, detection engineering and patch validation. For enterprise security teams, the development is less a single feature launch than a governed access model for deploying more capable AI in security operations. It also places identity, organizational accountability and operational monitoring alongside model capability as requirements for access. Daybreak turns advanced cyber AI into a governed workflow Daybreak is OpenAI’s broader effort to bring frontier cyber capabilities into defender environments without separating those capabilities from governance. It spans GPT-5.6 access across ChatGPT, Codex Security and the API, while also incorporating ecosystem work such as Patch the Planet and the Daybreak Cyber Partner Program. That scope is important. Security work rarely sits in one interface: teams may need to examine a vulnerability, assess malware behavior, write or refine detections, and validate a patch across different tools and processes. Daybreak’s stated approach is to place advanced AI assistance within those existing workflows while prese
AI 资讯
Generating daily horoscopes and zodiac videos with an automated AI pipeline
Astrology content has a brutal property: it has to be fresh every single day , for every sign, ideally in a few languages, forever. Writing that by hand doesn't scale. For AstroZodify I built a pipeline that generates daily horoscopes and short zodiac videos on a schedule, with humans reviewing rather than writing. Here's the shape of it. The content problem Per day you need: 12 signs x N content types (daily horoscope, love, career) x M languages. That's hundreds of pieces of copy a day that all have to feel written, not templated, and stay consistent with each sign's "voice". Templating alone reads robotic. Free-form generation drifts. The trick is constraining an LLM enough to stay on-brand while still sounding human. The generation pipeline Structured prompts per sign. Each sign has a persona and constraints (tone, themes, length). The model fills the daily specifics, not the whole thing from scratch. Scheduled batch runs. A cron job kicks off generation ahead of time so content is ready before it's needed, never on the critical path of a page request. Validation. Output is checked for length, banned phrasing, and structure before it's allowed near the site. Store, then serve. Everything lands in Postgres. Pages are SSR and just read pre-generated rows, so the LLM is never in the user's request path. Keeping generation offline from serving is the single most important decision - it keeps pages fast and costs predictable. Adding video Text was step one. Short vertical zodiac videos (for social) are step two, and that's a heavier pipeline: script -> imagery -> voiceover -> render. That part runs on Cloud Run as a separate job so a slow render never touches the web app, and we pilot one item before any batch. Cost and safety rails Anything that calls a paid API in a loop is a footgun. The rules I follow: Always pilot on 1-10 items before a full batch. Never an unbounded loop against a paid API. Cache and pre-generate so serving is basically free. Takeaways Separate
AI 资讯
Your AI Agent Needs a Maintenance Window Protocol
Long-running agents are usually tested at startup and during normal operation. The awkward middle is ignored: what happens when you need to deploy a new image, rotate a credential, migrate a database, or restart the host while the agent is halfway through a tool call? A process supervisor can restart a crashed agent. It cannot decide whether a browser checkout was committed, whether a webhook was acknowledged, or whether a tool call is safe to replay. That decision belongs in the agent runtime. This post presents a small maintenance-window protocol for agents that run for hours or days. It has four goals: stop accepting new work; let safe work finish or reach a checkpoint; make ambiguous work visible instead of guessing; resume with an explicit recovery decision. 1. Model maintenance as a state transition Do not treat maintenance as kill -TERM followed by hope. Give the runtime a durable state machine: RUNNING -> DRAINING -> QUIESCED -> STOPPED | +-> NEEDS_REVIEW DRAINING rejects new jobs but allows an active job to continue until its next checkpoint or deadline. QUIESCED means there are no unclassified side effects in flight. NEEDS_REVIEW is the safe outcome when the process died after sending a request but before recording the response. Persist the transition, not just an in-memory flag. A minimal record can look like this: { "runtime" : "agent-7" , "maintenance_id" : "mw-2026-08-10-001" , "state" : "DRAINING" , "started_at" : "2026-08-10T08:00:00Z" , "accepting_work" : false , "active_runs" : 2 } If the host disappears, the replacement process can see that the previous shutdown never reached QUIESCED . That is much more useful than inferring health from a missing PID. 2. Put checkpoints around side effects An LLM step is usually replayable. A payment, email, browser click, deployment, or Git push may not be. Record a checkpoint immediately before and after every non-idempotent boundary: PLANNED -> DISPATCHED -> ACKNOWLEDGED -> OBSERVED On restart: PLANNED can be
AI 资讯
Automating the Workflow: My Journey from Jenkins Freestyle Jobs to Declarative Pipelines
The Infrastructure: Setting Up Jenkins on AWS The foundation of this project began by provisioning an Ubuntu EC2 instance on AWS. Setting up the environment meant defining strict networking rules (opening Port 22 for SSH and Port 8080 for the Jenkins UI) and structuring the Jenkins environment with clear access controls. In Jenkins, maintaining a secure and organized environment generally falls into two roles: Administrators: Responsible for managing the Jenkins cluster, installing necessary plugins, and handling data backups. Users: Focused purely on creating jobs to run their respective workflows. The Magic of Docker-out-of-Docker (DooD) One of the most critical architectural choices was deciding how to let Jenkins build Docker images without installing a heavy, nested Docker engine inside the Jenkins container itself. The solution was a Docker-out-of-Docker configuration. By running the following command, I spun up the Jenkins container while binding it directly to the host machine's Docker socket: docker run -p 8080:8080 -p 50000:50000 -d \ -v jenkins_home:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $( which docker ) :/usr/bin/docker jenkins/jenkins:lts This single command did a lot of heavy lifting. It mapped port 8080 for the UI and 50000 for Jenkins agent communication. More importantly, mapping /var/run/docker.sock gave the Jenkins container the ability to pass docker build and docker push commands directly to the EC2 host’s Docker engine. (Just remember to ensure your jenkins user has the right permissions to access that socket!). Hitting the Wall: The Limitations of Freestyle Jobs Initially, I set up the application lifecycle running npm install , npm test , and npm pack using a standard Jenkins Freestyle job. Freestyle jobs are great for quick, isolated tasks. However, their limitations become glaringly obvious when you try to build a project with multiple automation steps. Orchestrating a complex workflow by chaining multiple Fr
AI 资讯
OpenAI’s Plan Puts Affordable, Accountable AI Access at the Center of Its Strategy
OpenAI has set out a multi-year strategy that places broad access to AI alongside safety and governance, rather than treating access as a downstream result of technical progress. In its June 8, 2026 plan, the company says it wants AI to be abundant, affordable, safe, useful, and easy to use across individuals, businesses, and governments. The significance is not a newly announced model or price change. It is a clearer first-party statement of how OpenAI connects advanced AI development with distribution, privacy, public oversight, and the sharing of economic gains. OpenAI’s formal plan, Built to benefit everyone: our plan , authored by Sam Altman and Jakub Pachocki, defines three goals: building an automated AI researcher, accelerating the economy while widely sharing the gains, and giving every person on Earth a personal AGI. Together, those objectives make accessibility a strategic requirement for the company’s stated vision, not simply a question of consumer adoption. What OpenAI’s plan says about access and accountability The plan presents advanced AI as infrastructure that should reach a very large population. That framing has practical consequences. For developers and enterprises , the relevant question is not only whether frontier systems become more capable, but whether access remains economically viable, privacy-conscious, and governed predictably enough to support real deployment. OpenAI identifies several principles that it considers central to that outcome: Affordability and abundance , so AI’s benefits can be distributed broadly rather than reserved for a small set of users or organizations. Safety and steerability , particularly for an automated AI researcher intended to accelerate scientific progress while remaining accountable. Privacy and usefulness for people, businesses, and governments using AI systems in consequential settings. Open ecosystems and public oversight , alongside stronger national and international coordination as frontier capabilit
AI 资讯
Project Log #21: The Grand Finale. We Shipped. (Plus: Full Setup Guide)
21 build logs. Months of work. One shipped project. Here's the full journey—and how to set up the Phone Agent on your own device. The first build log was published months ago. "I'm building an AI agent that controls a phone." No code. No repo. Just an idea and a cracked phone. Today, after 21 build logs spread across months, the project is shipped. This wasn't a straight line. There were gaps. Weeks where the log went silent—not because the work stopped, but because life doesn't pause for build logs. I took breaks to survive exam season. I paused to ship 9 portfolio websites. I stepped away when the code refused to cooperate and my brain needed rest. But every time I came back, the agent was still there. Waiting. And every log picked up where the last one left off. What We Built An autonomous AI agent that controls an Android phone using natural language commands. It can parse your words into actions, read the screen, tap buttons, type text, switch between apps, verify financial data, and serve a web interface—all offline. The Real Timeline Phase What Happened Days 1-4 Foundation. Gemma 4 + ADB. First working pipeline. Days 5-8 Vision overhaul. UI tree. OCR. Template matching. Days 9-12 Accessibility audit. 30 apps scored. Days 13-16 Multi-app workflows. Task memory. Home reset. Days 17-19 Financial verification. Accuracy from 80% to 94%. Breaks Exams. Portfolio sites. Life. Days 20-21 Web interface. Flask backend. Shipped. 📖 FULL SETUP GUIDE: How to Install and Use the Phone Agent Follow these steps to get the agent running on your own Android phone. Prerequisites An Android phone (Android 7 or later) At least 6GB of free storage space A WiFi connection for the initial download Step 1: Install Termux Do NOT install Termux from the Google Play Store—that version is outdated. Install it from F-Droid instead. Open your phone's browser Go to f-droid.org Download and install the F-Droid app Open F-Droid and search for "Termux" Install Termux from F-Droid Step 2: Set Up
AI 资讯
I built a tier list that re-rates 245+ AI tools every week — the automation behind it
AI tool reviews rot faster than anyone can rewrite them. A tool that was S-tier in March ships a broken pricing change in June, a "top 10" listicle from last year recommends products that no longer exist, and every directory slowly turns into a graveyard of dead links. I run AI Tier List , a bilingual (EN/KO) directory that ranks 245+ AI tools from S to D. My answer to review rot: don't re-review by hand. Make a pipeline re-rate everything weekly, and let humans only approve or reject. The architecture Everything runs on one weekly GitHub Actions cron (Next.js 16 + Prisma + Neon Postgres + Vercel): weekly cron (Sun 00:00 UTC) ├─ collect Google Trends per tool → trend scores ├─ collect OpenRouter usage rankings → weekly LLM leaderboard ├─ deactivate dead tools → site checks + trend slump ├─ discover new tools → search + AI triage ├─ re-evaluate tiers (LLM) → PendingUpdate rows └─ generate weekly blog draft → MDX The key design decision: the LLM never writes directly to the live site. Re-evaluations land in an approval queue ( PendingUpdate table). I review diffs in an admin panel and approve batches. The pipeline proposes; a human disposes. That one boundary is what keeps automated content from becoming automated garbage. Two collectors do the heavy lifting: Trend collector — Google Trends per tool, weekly. A tool in a sustained slump gets flagged; if its website also starts failing health checks, it gets deactivated automatically. Dead products remove themselves from the directory. OpenRouter collector — real token-usage data powers a weekly LLM leaderboard . No opinions, just "which models did people actually route traffic to this week," with usage share, pricing, and context length. What the tier actually means Each tool stores bilingual tierReason , strengths , and weakness fields, and the tier maps S→5 … D→1 into review schema markup. When the weekly re-evaluation moves a tool, the reason is regenerated with it — so the rating and its justification never drift a
AI 资讯
Surviving the AI Bubble With Two Pieces of Junk From Amazon
Everyone is building agents. You should build escape hatches. We are living through the most expensive group hallucination in tech history. Every SaaS now has a chatbot stapled to it. Every CEO is an "AI thought leader" on LinkedIn. Every startup pitch deck is just the words "autonomous," "agentic," and "10x" in different fonts. NVIDIA could buy a small country. OpenAI burns through more cash in a quarter than NASA did getting to the moon. And for what? So you can generate slightly worse emails, slightly faster? Look, I love AI. I actually build with it. But I have been around long enough to know what a bubble smells like. It smells like free credits, unearned confidence, and a thousand wrappers around the same API call. The bubble will pop. Not in a dramatic, newspapers falling from the sky way. It will pop quietly. Credits will dry up. Models will get paywalled behind enterprise tiers. The cloud bill you have been ignoring will finally show up. And all those beautiful, cloud-dependent workflows you built will start blinking red. So while everyone else is trying to figure out how to make their AI agent book a flight, I have been asking a different question. What do you build when you assume the internet will get worse, the cloud will get more expensive, and you will need actual skills that survive a downturn? The answer, annoyingly, is two pieces of junk from Amazon that cost less than your last Uber Eats order. Piece of Junk #1: The $25 Router That Sees Everything It is not sexy. It is called the GL.iNet GL-MT300N-V2. Everyone calls it the Mango. It looks like a little yellow box that should have come free with your ISP in 2014. You can buy it on Amazon for about twenty six dollars when it is on sale. Sometimes twenty. Inside it is a tiny Linux computer running OpenWrt. It has two ethernet ports, a USB port, and just enough RAM to be dangerous. Most people buy it to get free WiFi in hotels. I bought it to spy on my own network. Because here is the dirty secret of
AI 资讯
Two Skills I Built to Automate My Job Search with Claude Code
I'm a few months into a job search after a layoff, and I kept running into the same two problems: I was spending too long deciding whether a job listing was worth my time, and my resume was drifting out of sync with what was actually landing in interviews. So I built two Claude Code skills , reusable, file-based instructions Claude Code follows every time I invoke a slash command, to close both gaps. This is a walkthrough of how they work, why they're structured the way they are, and what I learned building them. If you haven't used Claude Code skills before: a skill is just a markdown file with YAML frontmatter ( name and description ) that lives in .claude/skills/{skill-name}/SKILL.md . The description field is what Claude uses to decide when to trigger the skill automatically, and you can always invoke it explicitly with /skill-name . The problem Job searching produces a lot of repetitive judgment calls: Is this listing worth 20 minutes of my time? Every JD needs to be read against my actual background, not against wishful thinking. Once I've scored 30+ listings, what do they add up to? Patterns emerge: the same gap gets flagged five times, the same bullet gets written from scratch in every cover letter, but nobody's collecting those patterns into resume improvements. Two skills, one for each problem: /score-job and /resume-sharpener . They're designed to work as a pair, the first generates raw signal, the second mines it. Skill 1: /score-job Input: paste a JD or give a URL. Output: one markdown file, job-search/scored-listings/YYYY-MM-DD-{company}-{role}.md . Reading the right context every time The skill starts by reading a fixed set of source files in parallel: my resumes (I keep four: engineering, PM, FDE/presales pivot, and a PeopleSoft-specific one), a profile doc, a skills inventory, and a filters doc that encodes what counts as a disqualifier. Critically, it re-reads these every run rather than caching anything, because they evolve as I update my resume o