今日已更新 328 条资讯 | 累计 20300 条内容
关于我们

标签:#AR

找到 3660 篇相关文章

AI 资讯

Markov Chain Monte Carlo: Theoretical Foundations

Adapted from an appendix of my MS thesis. Markov Chain Monte Carlo Almost as soon as computers were invented, they were used for simulation. Markov chain Monte Carlo (MCMC) was invested as Los Alamos, Metropolis et al (1953) simulated a liquid in equilibrium with its gas phase. Their tour de force was the realization that they did not need to simulate the exact dynamics, they only needed to simulate some Markov chain with the same equilibrium distribution. The Metropolis algorithm was widely used by chemists and physicists, but was not widely known among statisticians until after 1990. Hastings (1970) generalized the Metropolis algorithm, and simulations following his scheme are said to use the Metropolis-Hastings (MH) algorithm [1]. A special case of the MH algorithm was introduced by Geman et al (1984) discussing optimization to find the posterior mode rather than simulation. Algorithms following their scheme are said to use the Gibbs sampler. It took some time for the spatial statistics community to understand that the Gibbs sampler simulated the posterior distribution, thus enabling full Bayesian inference of all kinds. Gelfand et al (1990) made the wider Bayesian community aware of the Gibbs sampler, and then it was rapidly realized that most Bayesian inference could be done using MCMC, whereas very little could be done without MCMC. Green (1995) generalized the MH algorithm as much as it could be generalized [1]. Theoretical Foundations A sequence X 1 ​ , X 2 ​ , … of random elements of some set is a Markov chain if the conditional distribution of X n + 1 ​ given X 1 ​ , … , X n ​ depends on X n ​ only. The set in which the X i ​ take values is called the state space of the Markov chain. A Markov chain has stationary transition probabilities if the conditional distribution of X n + 1 ​ given X n ​ does not depend on n . This is the main kind of Markov chain of interest in MCMC. The joint distribution of a Markov chain is determined by the following [1]. The ma

2026-07-11 原文 →
AI 资讯

My First Experience with SigNoz

Modern applications, especially AI agents and distributed systems, need more than logs to understand what is happening. That's why I explored SigNoz, an open-source observability platform built on OpenTelemetry. Setting up SigNoz with Docker was simple. After connecting a sample application, I could view logs, metrics, and traces from a single dashboard within minutes. My favorite feature is distributed tracing. Instead of guessing where requests slow down or fail, SigNoz clearly shows the complete request journey across services, making debugging much easier. The built-in dashboards provide valuable insights into CPU usage, memory, request latency, throughput, and error rates. Having centralized logs alongside metrics and traces saves time by eliminating the need to switch between multiple tools. I also liked the alerting feature, which helps detect issues before they affect users. For AI applications, observability is essential. AI agents make multiple API calls, use tools, and perform complex workflows. SigNoz makes it easier to understand each step, identify failures, measure latency, and optimize performance. Overall, my experience with SigNoz was excellent. It combines logs, metrics, traces, dashboards, and alerts into one intuitive platform. Among all its features, distributed tracing impressed me the most because it provides deep visibility into application behavior and simplifies troubleshooting. I'm excited to use SigNoz in future AI and cloud-native projects.

2026-07-11 原文 →
AI 资讯

I Stopped Writing My Resume for Another Software Engineer. That's When Recruiters Started Calling

When an international recruiter recently asked for my CV, I instinctively started writing it the way many developers do: A chronological list of companies, Programming languages, frameworks, Technical achievements. Then it hit me. I wasn't writing this document for a senior engineer. I was writing it for the recruiter sitting between me and the interview. If the first person reading my CV couldn't immediately understand the value I brought, I might never reach the technical interview at all. Knowing the Receivers So I rewrote it from a different perspective. Instead of simply listing technologies, I described the business context behind my work. 10,000+ emails sent a day (in addition to "Using AWS SES/SQS") 800+ restaurants / POS everyday (in additional "optimised SQL speed"). Cut down waste to 1.3% from 10 ~ 15% Critical updates often in 24 hours. Increased revenue, reduced costs, improved reliability Helped onboarded new clients I still included the languages and frameworks I used, so the CTO can understand, but they became supporting evidence rather than the headline. I also highlighted the moments that demonstrated trust: Delivering critical business updates under tight deadlines, Resolving high-priority production issues, Taking responsibility for systems the business depended on, and Taking initiatives to write a mobile app using my own time. That small shift completely changed how I viewed a CV. It's not a journal of everything I've done, and it's not a technical specification. Its job is to communicate your value clearly to the person reading it, and that person is often a recruiter before it's ever seen by an engineering manager. One lesson I keep coming back to is this: Write for my audience. Outcome (for now) After reviewing the rewritten CV, the recruiter was confident enough to forward it to Tata Consultancy Services for a role. Whether or not that particular opportunity works out, it reinforced an important lesson for me: recruiters need to understand

2026-07-11 原文 →
AI 资讯

I couldn't find how much heat my PC puts in the room, so I built a widget

I game in a room that warms up fast. I could see CPU usage in Task Manager and watts in HWiNFO if I went looking. What I actually wanted was simpler: How much heat is this machine putting into the air right now? Not in a spreadsheet. In plain language I could glance at while the PC was running. The gap Lots of tools show watts and temperatures . Almost none answer room heat : BTU per hour Heat accumulated over a session Plain context like "about a quarter of a space heater" With ambient temp: still-air rise or rough exhaust CFM The conversion is straightforward ( BTU/hr ≈ watts × 3.412 ), but I didn't want to do it in my head every time. So I built HeatLens — a small desktop widget built around room heat, not raw sensor dumps. What HeatLens shows Total wattage — what the PC is drawing now Heat dissipation — BTU/hr or kW Session heat — BTU or kWh since launch Max temperature — hottest live sensor Trend graphs — watts, heat, and temp over time CFM estimate — with ambient temp: rough exhaust airflow for a +10 °F rise Still-air rise — how fast a reference room would warm with no ventilation Estimated power is labeled separately from measured sensors. Where the data comes from LibreHardwareMonitor / Open Hardware Monitor (HTTP + WMI on Windows) nvidia-smi for NVIDIA GPUs Linux RAPL / hwmon when exposed by the kernel Labeled fallbacks when direct power sensors aren't available On Windows, best results: LibreHardwareMonitor with Remote Web Server on port 8085 . What it is not HeatLens is not a replacement for a Kill-A-Watt at the wall. Software usually can't see monitor power, full PSU loss, or every platform rail. A plug-in meter is still the most accurate whole-system reading. HeatLens is for context : "~400 W gaming → ~1,400 BTU/hr into the room" Session heat over an hour or two Rough CFM / still-air numbers as sanity checks — not duct design Things I learned building it Sensor coverage is messy. Different backends, missing rails, and estimates that need clear labeling.

2026-07-11 原文 →
AI 资讯

Your model didn't get worse — the wrapper around it did (and you can control that)

My GPT got dumber after the update" gets blamed on the model regressing, or on you prompting worse. Both are unfalsifiable, and both send you to fix the wrong layer. The layer that actually moved is the one you can pin. "The model" is two layers. The weights — the trained network, slow to change, and when they do change it's announced under a new name. And the wrapper — the router that picks which model answers, the system prompt, the default reasoning effort, verbosity caps. The wrapper changes silently, on its own schedule, per product. It's almost always what moved under you. So stop re-tuning prompts to chase it. Pin the wrapper: Force the route. Don't leave it on Auto — set Thinking (or say "think hard") so the router can't quietly demote your prompt to a faster, weaker model. OpenAI's own GPT-5 launch post describes exactly this router (it scores prompts "simple" vs hard); after the backlash they put the picker back (Auto/Fast/Thinking — TechCrunch, Aug 2025). Pin the version. If you build on a model, call its exact versioned ID via the API. A model ID's weights don't change — new versions ship under new IDs — so router and system-prompt churn can't reach you. Own the harness. Running agents? Set the system prompt, reasoning effort, and verbosity yourself instead of inheriting a default. Anthropic's own April 23 post-mortem is the proof: six weeks of "Claude Code got worse" traced to three wrapper changes (a reasoning-effort downgrade, a reasoning-history bug, a verbosity cap their ablations put at ~3% quality) — API weights never touched. A real weights change — a new model — will still move behavior. But that's announced, and you choose when to adopt it. The silent stuff is all wrapper, and the wrapper is the part you can pin. Sources: OpenAI GPT-5 launch (router + "think hard"); TechCrunch, Aug 2025 (model picker reinstated); Anthropic April 23 post-mortem (anthropic.com/engineering/april-23-postmortem); InfoQ and VentureBeat (corroboration); Claude platfor

2026-07-11 原文 →
AI 资讯

The Evolution of a Software Engineer

The first year class HelloWorld { public static void main ( String args []) { // Displays "Hello World!" on the console. System . out . println ( "Hello World!" ); } } The second year /** * Hello world class * * Used to display the phrase "Hello World" in a console. * * @author Sean */ class HelloWorld { /** * The phrase to display in the console */ public static final string PHRASE = "Hello World!" ; /** * Main method * * @param args Command line arguments * @return void */ public static void main ( String args []) { // Display our phrase in the console. System . out . println ( PHRASE ); } } The third year /** * Hello world class * * Used to display the phrase "Hello World" in a console. * * @author Sean * @license LGPL * @version 1.2 * @see System.out.println * @see README * @todo Create factory methods * @link https://github.com/sean/helloworld */ class HelloWorld { /** * The default phrase to display in the console */ public static final string PHRASE = "Hello World!" ; /** * The phrase to display in the console */ private string hello_world = null ; /** * Constructor * * @param hw The phrase to display in the console */ public HelloWorld ( string hw ) { hello_world = hw ; } /** * Display the phrase "Hello World!" in a console * * @return void */ public void sayPhrase () { // Display our phrase in the console. System . out . println ( hello_world ); } /** * Main method * * @param args Command line arguments * @return void */ public static void main ( String args []) { HelloWorld hw = new HelloWorld ( PHRASE ); try { hw . sayPhrase (); } catch ( Exception e ) { // Do nothing! } } } The fifth year /** * Enterprise Hello World class v2.2 * * Provides an enterprise ready, scalable buisness solution * for display the phrase "Hello World!" in a console. * * IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED * TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER * PARTY WHO MAY MODIFY AND/OR REDISTRIVUTE THE LIBRARY AS * PERMITTED ABOVE, BE LIABLE TO YOU FOR DAM

2026-07-11 原文 →
AI 资讯

How to add a changelog to any web app with one script tag

You ship all the time. A fix here, a new setting there, a feature you spent a whole weekend on. And your users mostly don't notice. That gap is expensive. When people can't see a product moving, it feels abandoned, even when you're shipping every week. They churn a little faster, they email asking for things you built a month ago, and all the momentum you're actually creating stays invisible. The fix is boring and old: a changelog. But not a changelog rotting in a Notion doc nobody opens. One that shows up inside your app , where users already are. Here's the approach I settled on. The idea: a widget, not just a page A "what's new" widget is a small button or badge in your UI. Click it, and a panel slides out with your latest updates. Users see it in the flow of using your product, not on some /changelog page they'd never visit. You really want three things: An in-app widget users actually see. A public page and RSS feed you can link from emails and docs. A way to write updates in plain language and publish in a click. The one-tag version I ended up building a tool for this (honest disclosure below), but the integration is the part worth showing, because it's the pattern any changelog widget should follow: <!-- Paste before </body> --> <script src= "https://cdn.patchlog.io/widget.js" data-project= "your-project-id" data-position= "bottom-right" async ></script> One script tag. No SDK, no npm install, no framework coupling. It behaves the same in React, Vue, Rails, or a plain HTML page. Two implementation details matter, whether you build one of these yourself or evaluate an existing one: Render it in a Shadow DOM. A changelog widget should not inherit or leak styles. If it uses the host page's global CSS, it will look broken on half the sites it lands on. Shadow DOM isolates it completely. Fail silently. A marketing widget must never break the host app. If the network call fails, it should quietly do nothing. What to actually write in it The tool is the easy part. T

2026-07-11 原文 →
AI 资讯

From Devnet to Mainnet: What Changes When Your Solana Program Goes Live

There's a moment in every Solana project where the work stops being about whether the program works and starts being about whether it's ready . You've tested it, the logic holds, the constraints are tight. Then you point it at mainnet, and a different set of questions shows up: questions about money, permanence, and strangers. This post is about that transition. Not the commands, which are short and well documented, but the shift in what you're responsible for once real users can touch your code. If you've been building on devnet and you're starting to think about a live launch, this is the mental model to carry in. Devnet was a sandbox. Mainnet is not. Devnet is a practice field. The SOL is free, you airdrop more whenever you run low, and if you deploy something broken, the only casualty is your afternoon. That safety is the whole point of devnet: it lets you fail cheaply and often, which is exactly how you should be learning. Mainnet removes the safety net, and three things change the moment you cross over. The SOL is real. Deploying a program allocates an on-chain account sized to your compiled binary, and you pay rent for that space in actual SOL. Larger programs cost more. This isn't a huge sum for a typical program, but it's real money leaving a real wallet, and that alone tends to sharpen how carefully you check things before you hit deploy. The audience is real. On devnet the only person calling your program is you. On mainnet, anyone can find your program and send it any transaction they like, the moment it's live. Everything from the security arc stops being theoretical: the accounts strangers pass in, the inputs you didn't expect, the edge cases you hoped no one would hit. Mainnet is where "every account is attacker-controlled until proven otherwise" becomes a live condition rather than a lesson. The mistakes are visible. A bad devnet deploy disappears into the noise. A bad mainnet deploy is a public event, on a permanent ledger, in front of the users you

2026-07-11 原文 →
AI 资讯

I made an AI yell my workouts at me (Sonic Kinetic)

What I built I wanted a workout timer that doesn't just beep at me. So this weekend I built one that writes the workout AND talks me through it, out loud, in a voice that actually sounds like it's yelling at you when things get hard. You give it a callsign, how long you've got, what you want to work, and how brutal you want it. It hands that to Gemini, which breaks the whole thing into 30-90 second intervals with a coaching line for each one. Then every one of those lines gets turned into real audio by ElevenLabs before it ever hits your browser. Nothing is pre-recorded, nothing is a fixed track. Ask for a different workout, get a completely different script and a completely different set of audio clips, generated on the spot. Demo Unedited screen recording, straight off my machine hitting the real APIs, sound included. Compose a routine, it comes back in a couple seconds, pacing curve draws itself as an SVG line, then hitting Start walks through each interval with the active one highlighted in red as it counts down and you actually hear it. The Maximum-intensity segments sound noticeably more unhinged because I turn the ElevenLabs stability knob way down for those specifically. Code https://github.com/marwankous/sonic-kinetic How I built it Go backend, one endpoint. It takes your workout params, sends a prompt to gemini-3.1-flash-lite with a JSON schema locked down tight enough that I don't have to think about parsing garbage back out of it, and gets back a full timeline plus a heart-rate pacing curve. The part I actually enjoyed was the audio pipeline. Every coaching line in the timeline gets fired off to ElevenLabs at the same time, one goroutine each behind a sync.WaitGroup , so a routine with a dozen segments doesn't take a dozen times longer than one with a single segment. Whatever comes back gets base64'd straight onto its segment. I also tie the eleven_flash_v2_5 stability setting to the segment's energy level, dropping it to 0.30 for anything marked Maximum

2026-07-11 原文 →
AI 资讯

Hello Dev's

I’m VikingRob—Full-Stack Dev, SaaS Builder, and Solo Survivor. Hello I Just wanted to introduce myself. I’m Robert, but most people know me as VikingRob (thanks to a long red beard and a habit of grinding through hard Jobs with a foul mouth. Down to earth guy I'm a No B.S Person. I’ve been surviving in the trenches of solo entrepreneurship and freelancing for a while now. Lately, the market feels incredibly flooded, and landing solid, consistent work has become a massive mountain to climb. I’ve managed to keep things moving with some passive income from selling front-end and back-end sites I've built, but as anyone with a family knows, "passive" rarely means "enough" when consistency drops. I’m supporting a family of five—including a wife dealing with severe mental health challenges—so the pressure to secure steady, reliable income is incredibly real right now. To adapt, I am shifting my core focus toward offering full-scale services: Custom Website Architecture (End-to-end development) Front-End & Advanced Back-End Integration SaaS Product Development A lot of my heaviest back-end work is locked away under strict NDAs, which makes traditional portfolio-sharing tough, and I don't maintain standard social media accounts. But I know how to build clean, functional, scalable software that drives results. If you're looking to collaborate, need an engineering heavy-lifter for a SaaS project, or just want to swap freelance survival stories, let’s connect! What is everyone else doing to beat the market noise right now?

2026-07-11 原文 →
AI 资讯

The First Digital Camera Was Built in 1975

Every camera-equipped connected device you build today, from a smart doorbell to an ESP32-CAM streaming frames over Wi-Fi to a factory machine-vision rig, is a descendant of one clunky, toaster-sized prototype: the first digital camera , built at Eastman Kodak in December 1975. It weighed about 8 pounds, took 23 seconds to capture a single 0.01-megapixel black-and-white image, and recorded that image to a cassette tape. It looked like a science-fair project, but it proved a radical idea that underpins the entire IoT sensing industry: an image could be captured, digitized, and stored as data with no film at all. An engineer, a side project, and a CCD The camera was built by a 24-year-old Kodak engineer named Steven Sasson . His manager had handed him a loose assignment: could the newly invented charge-coupled device (CCD) image sensor be used to build a camera with no moving film? The CCD, developed at Bell Labs in 1969, converts light falling on an array of tiny capacitors into electrical charge, pixel by pixel. Sasson took a Fairchild 100-by-100-pixel CCD, bolted it to a lens from a Super 8 movie camera, added a digitizer, and wired the output to a portable cassette recorder. The result captured just 0.01 megapixels, a grid of 10,000 pixels. To view a photo, Sasson's team built a custom playback rig that read the tape and painted the image onto a television screen. That first image, a Kodak lab technician, took 23 seconds to write to tape and several more to display. Crude, yes, but it was the first fully electronic, filmless photograph. Why Kodak shelved the future Here is the twist that every embedded engineer should remember. Kodak owned the patent on the first digital camera, but the company made its money selling film, chemicals, and photo paper. Executives saw a filmless camera as a threat to that business, so the project was quietly set aside. Kodak did file the patent in 1978 and collected licensing revenue for decades, but it never led the digital transiti

2026-07-11 原文 →
AI 资讯

I Was Building a Social App. Then I Accidentally Built an AI Startup.

A year and a half ago, I wasn't trying to build an AI company. I was building a small social platform called spritex-social — nothing fancy, just a side project a handful of friends were testing with me. No grand plan, no investors, no roadmap beyond "let's see if people like this." At some point, users started asking the same basic questions over and over: how do I change my profile, where's this setting, how does that feature work. Instead of writing endless documentation, I thought — why not just let AI answer this? So I wired up Google's Gemini API through Google AI Studio, built a small Retrieval-Augmented Generation (RAG) system, and gave it context about the platform. It was supposed to be a support chatbot. Nothing more. That's not how it went. I found myself spending more time improving the chatbot than improving the actual social app. Every small upgrade made me ask another question: could it remember conversations? Could it use tools? Could it search the web? Could it do things instead of just answering questions? The more I asked, the less interested I became in the social platform I was supposed to be building. Eventually I had to admit it to myself: I wasn't building spritex-social anymore. I was building something else entirely. So I stopped. Not because the project failed — because my attention had already moved somewhere else, and I finally stopped pretending otherwise. That "somewhere else" became RexiO — a Bangla-first AI platform I've been building solo ever since: my own orchestration layer, an intent classifier, 30+ tools, model routing across providers, and eventually our own fine-tuned models trained from scratch on borrowed Colab GPUs. RexiO went public on July 10, 2026. This chatbot pivot is just one chapter of a much longer story — one that actually starts on a Nokia button phone, ২ টাকা data packs, and a ৳20 freelance job that became my first line of code in production. I wrote the whole thing down, unfiltered — the rewrites, the 12-hour

2026-07-11 原文 →
AI 资讯

The Tether Paradox: Shitty ERC-20s, OpenZeppelin, and the Unstoppable Web

I have a confession to make. When I first saw that Tether—the behemoth behind the $110 billion USDT stablecoin—was the primary financial backer of Holepunch, Keet, and the Bare JavaScript runtime, my brain short-circuited. I struggled with the cognitive dissonance. Why? Because if you have ever written a smart contract that interacts with USDT on Ethereum Mainnet, you know it is an absolute nightmare. Before we can talk about Tether’s brilliant vision for a decentralized, serverless future, we have to talk about the trauma they inflicted on a generation of Solidity developers. 1. The Original Sin: USDT is not actually an ERC-20 When you are deep in protocol-level engineering, you rely on standards. EIP-20 explicitly states that a token's transfer and transferFrom functions must return a boolean value to indicate success or failure. // The standard EIP-20 Interface interface IERC20 { function transfer(address to, uint256 amount) external returns (bool); } Tether completely ignored this. When they deployed the USDT contract, they omitted the return value entirely. Their functions return void. // The actual USDT Mainnet Implementation (simplified) function transfer ( address to , uint value ) public { // ... logic ... // Notice: No return statement. } If you blindly write a vault or a swap contract using the standard IERC20 interface to move USDT, your transaction will seamlessly execute the logic, move the funds, and then violently revert at the very last microsecond. Why? Because modern Solidity uses a strict ABI decoder. When your contract calls USDT.transfer(), the EVM executes a low-level CALL. When the call finishes, Solidity checks the RETURNDATASIZE. Since it expects a bool (32 bytes), but USDT returns absolutely nothing (0 bytes), the decoder panics and reverts the entire transaction. For years, the only way to build DeFi safely with USDT has been to wrap it in OpenZeppelin's SafeERC20 library, which uses low-level assembly to explicitly check the return data

2026-07-11 原文 →