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

标签:#AR

找到 4293 篇相关文章

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 原文 →
AI 资讯

Mapping Semantic Meaning Onto the Night Sky

If you were to look up into the night sky, what would you see? Countless points of light, scattered in every direction. Most of what you're looking at are stars. But some of those points are whole galaxies—vast collections of stars, spread across incomprehensible distances, compressed by that distance into a single pinprick of light. And what you can see with the naked eye is only a small fraction of what's actually out there. I want to use this as a way to offer you a way of thinking about how large language models work. Just an analogy, not literally what's happening inside the mathematics—that's not my forte. My hope is that it captures something true about the mechanics, and more importantly, it gives you a mental model you can actually use when you're working with these systems. About two years ago, I was wrestling with finding a way of explaining what an LLM does. My first analogy was that of a dictionary. The naive view was that a dictionary uses words to define other words, and an LLM holds a matrix of words with weights that describe their relationships to each other. So the parallel seemed natural: both systems work through relational structure. However, a dictionary gives you denotation—the surface-level meaning. It's a lookup tool for individual words, not a model of language itself. And critically, you have to already understand language before a dictionary is useful to you at all. The analogy didn't capture what was actually happening in the weight relationships—the distributional semantics, the contextual patterns that let an LLM generate coherent text. Ok, so back to galaxies, when you look up at the night sky, you're not seeing distance—you're seeing direction. That galaxy over there, the one that looks like a point of light, could be millions of light-years away, but what matters for our analogy isn't how far it is. It's which way you're looking. And when you point yourself in that direction and venture toward it, you discover it's not a point at a

2026-07-10 原文 →
AI 资讯

Build Firebase AI Logic Application with Antigravity CLI

Note: Google Cloud credits are provided for this project. In this blog post, I want to demonstrate how I use Antigravity CLI to build an image analysis demo using Angular, Firebase Hybrid & On-device Inference Web SDK, and Gemini models. Users upload an image and use a Gemini model to analyze it to generate a few alternative texts, tags, recommendations, and CSS tips to enhance the image quality. When the demo is running on Chrome 148+, the Hybrid & On-device SDK leverages the Prompt API of the on-device Gemini Nano model to perform the image-to-text tasks, and the token usage is 0. When other browsers such as Safari or Firefox executes the same tasks on the demo, the SDK falls back to Cloud AI (Gemini 3.5 Flash model), and the token usage is greater than 0. Next, I will describe how I installed the skills in my Angular project, and registered the Stitch MCP server in the Antigravity CLI to develop the infrastructure, services, and UI design of my demo. 1. Skills I installed grill-with-docs , angular , and firebase skills in my project for the following reasons: grill-with-docs: Conduct a rigid Q&A session to generate a specification for a feature, refactor or a critical fix. AI is responsible for performing a thorough analysis and putting in more effort to generate code to achieve the task. Angular: Provide the best practices of Modern Angular architecture, such as using signals and signal forms. Firebase: Provide the skill for Firebase AI Logic, Firebase Remote, etc. Resources Firebase Hybrid & On-device Image Analysis App Firebase Hybrid & On-device Inference Chrome Built-in Prompt API Stitch Stitch MCP Server grill-with-docs Angular skill Firebase skill

2026-07-10 原文 →