Microsoft's new Surface Pro and Surface Laptop cost $500 and $600 more than their predecessors
Microsoft's new Surface Pro and Surface Laptop are about 50 to 60 percent more expensive than the previous generation. Thanks, AI!
找到 16511 篇相关文章
Microsoft's new Surface Pro and Surface Laptop are about 50 to 60 percent more expensive than the previous generation. Thanks, AI!
Microsoft is launching new Surface Laptops and a Surface Pro with Qualcomm Snapdragon X2 processors. These are direct follow-ups to the Surface Laptops and Surface Pro from 2024 that launched with Snapdragon X1 chips and jumpstarted Microsoft's Copilot Plus PC initiative with Windows on Arm. The new X2 Surfaces are available today. The Surface Pro […]
Comcast is launching a same-day Xfinity Wi-Fi offering that spares you from waiting for your new router. Starting today, new Xfinity customers in almost 20 markets - including Atlanta, Chicago, Denver, Houston, Nashville, Philadelphia, San Francisco, and more - can receive the Xfinity Gateway equipment they need to get online the same day they order […]
It's been more than a year since Schlage announced its first smart lock to support ultra wideband technology (UWB), but now it's finally almost available to purchase. Starting June 29th, the Schlage Sense Pro deadbolt lock will be available for $399 in the US, allowing customers to unlock their doors by simply approaching them with […]
There is a persistent myth that to build a worthy code assistant, you absolutely must use GPT or Claude. This is false. You don't need a 1-trillion parameter model. You need a small local model and extremely rigorous engineering around it. This is the direction history is taking for companies. As Mark Zuckerberg mentioned, the future isn't a single omniscient model, but "every company having its own specialized AI" . And this specialization necessarily involves fine-tuning and local deployment (or on sovereign servers) to guarantee data security. The thesis behind the construction of Vibrisse Agent can be summed up in one sentence: Small models, Great tools. In this article, I will detail the technical stack and concrete engineering solutions I implemented to tame a local model and make it reliable in production: LangGraph, Ollama, FastAPI, React (no build step, with embedded custom CSS) , all running on a machine with 32 GB of RAM. For the curious who want to run the agent on their machine right now: // MacOs / Linux curl -sSL https://agent.vibrisse-studio.dev/install.sh | bash // Windows irm https://agent.vibrisse-studio.dev/install.ps1 | iex Architecture: Why a State Machine (LangGraph)? At first, when building an LLM application, we tend to think in sequential chains: Input -> Prompt -> Tool -> Output . The problem is that if one node fails, the whole chain stops without us being able to catch the error or understand the context of the crash. That's where LangGraph comes in. Vibrisse's architecture isn't a chain, it's a state machine . Every node in the graph has a very precise responsibility, shares a global conversation state, and uses conditional transitions to move to the next node. I implemented the Supervisor / Worker pattern: The Supervisor analyzes the user's intent. It does nothing else but route. It dispatches the task to specialized Workers (the RAG Worker, the Search Worker, the Ghost Worker...). If a Worker fails or needs more information, it can se
Il y a un mythe persistant selon lequel pour construire un assistant de code digne de ce nom, il faut absolument utiliser GPT ou Claude. C'est faux. Vous n'avez pas besoin d'un modèle à 1 trillion de paramètres. Vous avez besoin d'un modèle local de taille réduite et d'une ingénierie extrêmement rigoureuse autour de lui. C'est d'ailleurs le sens de l'histoire pour les entreprises. Comme l'évoquait Mark Zuckerberg, l'avenir n'est pas à un modèle omniscient unique, mais à "chaque entreprise avec sa propre IA spécialisée" . Et cette spécialisation passe obligatoirement par le fine-tuning et le déploiement local (ou sur serveurs souverains) pour garantir la sécurité des données. La thèse derrière la construction de Vibrisse Agent tient en une phrase : Small models, Great tools. Dans cet article, je vais détailler la stack technique et les solutions d'ingénierie concrètes que j'ai mises en place pour dompter un modèle local et le rendre fiable en production : LangGraph, Ollama, FastAPI, React (sans build step, avec CSS custom embarqué) , le tout tournant sur une machine avec 32 Go de RAM. Pour les curieux qui souhaitent lancer l'agent sur leur machine dès maintenant : // MacOs / Linux curl -sSL https://agent.vibrisse-studio.dev/install.sh | bash // Windows irm https://agent.vibrisse-studio.dev/install.ps1 | iex L'Architecture : Pourquoi une Machine à États (LangGraph) ? Au début, quand on construit une application LLM, on a tendance à penser en chaîne séquentielle : Input -> Prompt -> Outil -> Output . Le problème, c'est que si un nœud échoue, toute la chaîne s'arrête sans qu'on puisse rattraper l'erreur ou comprendre le contexte du plantage. C'est là qu'intervient LangGraph . L'architecture de Vibrisse n'est pas une chaîne, c'est une machine à états . Chaque nœud du graphe a une responsabilité très précise, partage un état global de la conversation, et utilise des transitions conditionnelles pour passer au nœud suivant. J'ai implémenté le pattern Supervisor / Worker : L
If you’ve used S3, MinIO, or any cloud storage API, it’s easy to assume object storage is just a “cloud folder system.” That assumption is wrong — and it leads to confusion when you start working with distributed systems. Object storage is not a file system. It’s closer to a distributed key-value system with strong durability guarantees and a very specific access model . Once you understand that shift, a lot of cloud infrastructure starts to make more sense. The mental model most people start with When people first see object storage, they imagine something like this: /photos/cats.png /photos/dogs.png A hierarchical file system: folders subfolders files inside directories This is how traditional systems like ext4 or NTFS work. But object storage doesn’t actually work this way. The actual model: key → object Object storage is much simpler at its core: key → value Example: key : photos/cats.png value : <binary data> There are no real folders. “folders” are just string prefixes used for organization. That’s it. Why this design exists This model isn’t accidental. It solves real distributed system problems. Traditional file systems struggle when you try to: scale across many machines replicate data reliably handle partial failures coordinate metadata changes at scale Object storage avoids many of these problems by simplifying the model. Instead of supporting complex file operations, it focuses on: store object retrieve object delete object list objects by prefix Nothing more. The most important design choice: immutability In most object storage systems: Objects are not modified in place. If you “update” a file, what actually happens is: upload a new object replace the key pointer old object becomes orphaned (eventually cleaned up) This is a huge shift from file systems. Why this matters Immutability makes distributed systems easier because: no concurrent write conflicts on the same object replication becomes simpler caching becomes safer failure recovery is easier to rea
🚀 Hello, DEV Community! I'm Nader Al Shawki , a final-year AI Engineering student at Al-Razi University, Yemen. This is my first post here, and I'm excited to start sharing my journey with this amazing community. 🎯 Who Am I? I'm passionate about building production-grade AI systems that solve real-world problems. My main areas of focus are: 🖼️ Computer Vision & Deep Learning 🤖 ML Model Deployment (Docker, FastAPI, REST APIs) 🧠 LLMs, RAG, and AI Agents (currently learning) 📊 Data Visualization & Analytics (Power BI) 💡 What I've Built So Far 1. 🍅 Tomato Leaf Disease Detection Platform Tech: YOLOv8, PyTorch, FastAPI, Docker What it does: Detects tomato leaf diseases from images with real-time inference. Containerized with Docker for easy deployment. 2. 🫁 Pneumonia Detection System Tech: PyTorch, CNN Architecture, Medical Imaging What it does: A deep learning model that detects pneumonia from chest X-ray images. 3. 📊 Sales Profit Analysis Dashboard Tech: Power BI, DAX, Data Analysis What it does: Interactive dashboard for tracking sales KPIs. 4. 😀 Face Detection & Emotion Recognition Tech: OpenCV, Deep Learning What it does: Real-time face detection, age estimation, emotion recognition, and gender classification. 5. 🍽️ Restaurant Website Tech: HTML5, CSS3, JavaScript What it does: Fully responsive restaurant website with interactive UI. 🌱 What I'm Currently Learning LLMs (Large Language Models) RAG (Retrieval-Augmented Generation) LangChain & AI Agents Workflow automation with n8n 🔗 Let's Connect 🐙 GitHub: Naderalshawki 💼 LinkedIn: in/nader-al-shawky 📫 Email: naderalshawki@gmail.com Thanks for reading! I'll be posting regularly about AI projects, tutorials, and lessons learned. Stay tuned! 🚀
Every Indian data scientist hits the same wall. You need district-level population data. You go to censusindia.gov.in. You find hundreds of inconsistent Excel files with merged headers, footnote rows, and zero documentation. You spend a full day just loading the data before doing any actual analysis. I fixed that. Once. For everyone. What I built indiaset/census-2011 India's Census 2011 district data, clean, typed, and ready for pandas. 640 districts · 29 columns · 0 missing values Validated against official India total · LGD codes attached Load it in 4 lines from huggingface_hub import hf_hub_download import pandas as pd path = hf_hub_download ( repo_id = " indiaset/census-2011 " , filename = " census_2011_districts_final.parquet " , repo_type = " dataset " ) df = pd . read_parquet ( path ) print ( df . shape ) # (640, 29) What's in it Column Description state_code Census 2011 state code state_name Official state/UT name district_code Census 2011 district code district_name District name as per Census lgd_code LGD permanent district code district_name_lgd District name as per LGD pop_total Total population pop_male Male population pop_female Female population pop_under6_total Children under 6 years pop_sc Scheduled Caste population pop_st Scheduled Tribe population literate_total Literate persons literate_male Literate males literate_female Literate females illiterate_total Illiterate persons workers_total Total workers workers_male Male workers workers_female Female workers non_workers_total Non workers literacy_rate Literate / Total × 100 sex_ratio Females per 1000 males workforce_participation Workers / Total × 100 The validation The most important test - do all 640 district populations sum to India's official total? print ( df [ ' pop_total ' ]. sum ()) # 1210854977 ✅ — exact match, zero discrepancy What the data actually shows Most literate district → Pathanamthitta, Kerala : 88.74% Least literate district → Alirajpur, Madhya Pradesh : 28.77% Literacy gap acro
There's a line usually pinned on the Roman philosopher Seneca: luck is what happens when preparation meets opportunity. People put it all over social media and like most things on social media, it gets repeated so often that it stops meaning anything. So let me try to make it mean something again, with a math equation and a football match that happened recently at the latest FIFA World Cup 2026. The equation nobody writes down We talk about luck like it's a single mysterious force, either you have it or you don't. But it's not one thing. It's two things multiplied together: Luck = Preparation × Opportunities Look at what that multiplication does. If your preparation is zero, it doesn't matter how many opportunities show up, zero times anything is still zero. And if you're the most prepared person alive but you never put yourself in front of a single opportunity, same result. Zero. The lucky people aren't the ones who got more luck handed to them. They're the ones who kept both numbers high. They got good and they kept showing up to the table where things happen. Hold that thought. Let's go to Texas. Japan, the Netherlands, and the 88th minute On June 14th, 2026, Japan played the Netherlands in their World Cup group opener in Arlington, Texas. On paper it was a mismatch in the most literal, physical sense. The Netherlands are tall . Van Dijk, Van de Ven, the whole spine of that team is built like a row of wardrobes. Japan are one of the shorter sides in world football, quick, technical, but not the people you'd bet on to win a header. If you were designing a contest specifically to humiliate the Japanese, you'd make it about jumping. And for most of the night, the script ran exactly as the bodies predicted. The Dutch dominated the run of play, around 60% possession, more passes, more touches in the box, the better expected goals. Van Dijk, a defender, rose for a cross and headed the Netherlands ahead. Later Summerville restored their lead. The Oranje even won the aer
If you've ever had to generate hundreds of social media banners, OG images, or PDF certificates programmatically — you know how painful that workflow can get. Stitching together Canvas, Puppeteer, or headless Chrome just to render a templated image is a lot of overhead for what should be a straightforward task. That's exactly the problem Bannx is built to solve. What is Bannx? Bannx is a high-volume banner, ad, and PDF automation platform. It combines a visual template editor with a developer-friendly REST API, so designers can build beautiful templates and developers can render them at scale — no browser required. Think of it as the missing link between your design system and your backend. Key Features 🖼️ Visual Template Editor Bannx comes with a full-featured editor where you can create templates for: Social media graphics (Instagram, Twitter/X, LinkedIn) OG images for blogs and articles Ad banners E-commerce assets (product cards, order confirmations) Certificates and branded PDFs and more... Variables can be bound to any element in the template, making every design data-driven from the start. ⚡ REST API for Rendering Once your template is ready, rendering it is a single HTTP request: curl -X POST https://bannx.com/api/render \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "pageId": "PAGE_ID", "format": "png" }' You get back a hosted URL and metadata — ready to display, store, or pass downstream. You can also stream raw binary output with "output": "binary" . Supported export formats: PNG, JPEG, SVG, WebP, PDF 📦 Bulk Generation via CSV Need to generate 10,000 personalized certificates or product cards? Upload a CSV and Bannx handles the rest. Each row maps to a set of variable overrides — no scripting required. 🧩 Dynamic Links & Variables Templates support per-request variable overrides, so you can pass data directly in the API call without modifying the template. Combined with template expressions (functions and conditiona
I use a form validation problem as a technical interview question. It's deceptively simple — and the solutions people reach for reveal a lot about how they think. Then I tried it on Claude, ChatGPT, and Gemini. The results were illuminating, but not for the reasons I expected. The Problem Many form libraries share a common convention: form data is represented as a plain nested object, and the validation function returns an object of the same shape containing the errors. You'll find this pattern in Formik and React Final Form in React, and — full disclosure — in Inglorious Web , my own framework, which ships form handling built in without any extra dependencies. const values = { productName : ' VR Visor ' , quantity : 1 , homeAddress : { street : ' Long St ' , zip : ' 00666 ' }, shippingAddress : { street : ' Short St ' , zip : ' 00777 ' , co : ' Inglorious Coderz ' }, billingAddress : { street : ' Wide Plaza ' , zip : ' 00888 ' , vat : ' 1142042 ' }, } The validation function should return an object containing all errors found. A starting example: function validate ( values ) { const errors = {} if ( ! values . productName ) { errors . productName = ' required ' } return errors } The ask: extend this to validate every field . Notice that the three address types aren't identical. shippingAddress requires a co field. billingAddress requires a vat . These differences matter — and how you handle them reveals a lot. Four Solutions, Four Instincts 1. The Flag — the average human The most common approach I see in interviews is a single validateAddress function with a type parameter: function validateAddress ( values = {}, type ) { const errors = {} if ( ! values . street ) errors . street = ' required ' if ( ! values . zip ) errors . zip = ' required ' if ( type === ' shipping ' && ! values . co ) errors . co = ' required ' if ( type === ' billing ' && ! values . vat ) errors . vat = ' required ' return errors } It works. But every new address type, every new special rule,
Most mechanical keyboards are great these days, with colorful looks and satisfying typing sounds - even in budget-friendly ranges. But every so often, one stops me dead in my tracks. In this case, two of them. I've been testing a pair of jaw-droppingly lovely keyboards that launched late last year. The Evoworks Evo75, a compact […]
TL;DR — A few weeks ago I tested four AI tools on a build job: a website for my son's cricket academy. This time the job had nothing to do with code. The coach just wanted a banner he could post. Same four tools, totally different result. ChatGPT made the best image, Grok made the best video, Gemini wouldn't make anything, and Claude tried to solve a graphics problem by writing HTML. If you read the last post , you've met my son's cricket coach. He runs MMCA — Maverick Master's Cricket Academy. Started in 2020, based in Bengaluru, genuinely good with the kids. The website is live now and parents have started messaging him on WhatsApp. So last weekend he came back with the next thing he needed, which is the thing every small academy actually runs on: "Can you make me a weekend batch banner? Something I can post in the parent groups." Now, this is a completely different job from the last one. That first experiment was design and development — agents writing real code, running tests, deploying to Cloudflare. This one is just graphics. No repo, no deploy, nobody reviewing a pull request. Just: here's my logo, here's a sample I like, make me something I'd be happy to send out. So I figured I'd run the same four tools again and see what happened. Same brief, same logo, everything on the default model with no special settings : ChatGPT, Claude, Gemini, Grok. Here's roughly what I typed, the way a normal client would brief you: Similar to this banner, make one for MMCA Academy (since 2020, logo attached). Weekend batch Sat 4:30—7, Sun 7—9:30pm. Add a small phrase like the sample. Be creative, keep it simple, but don't copy the sample exactly. The whole test really came down to one instruction: be creative, but don't copy. Whatever each tool did with that told me everything. Round 1: the static banner ChatGPT got it on the first go. "WEEKEND BATCH. TRAIN. PLAY. GROW." Logo top-left, the "Since 2020" bit kept, timings in clean little cards, an enrol number, three badges acros
Prologue A while ago, I decided to develop a fully accessible main navigation component in React and write a series of articles documenting the steps it took to create a non-trivial accessible component. My last development article completed the base requirements for keyboard functionality within the component; attention now shifts to adding some of the last functionality required, closing sublists when the lists holding them now close and determining what happens when a closed component is entered via the keyboard through the Tab and Shift+Tab keys. Note : This article is one of a series demonstrating building a React navigational component from scratch while considering accessibility through the process. The articles are accompanied by a GitHub repository with releases tied to one or more articles; each builds on the previous one until a fully implemented navigation component is complete. Each release and its associated tag contain fully runnable code for the article. The code discussed in this article is available in the release. and may be downloaded at release 0.8.0 . Links in the article will take you to the proper file in the tagged GitHub Repository. Because the code for this release is scattered, line numbers are added to make it easier to locate in the linked GitHub file. Line numbers are also provided for those who would like to follow along with a downloaded copy. While code examples are written in JavaScript for brevity, all actual code is written in Typescript and targets React 19.x, all while using vanilla CSS. Examples use Next.js v16.x, which is not required to run the navigation component. You can view the requirements for the Focus and Refinement Support Release along with previous requirements. Content Links Introduction Acceptance Criteria Entering Closings Setting Up For Success Introduction The implementation of keyboard handling left one obvious keyboard issue to fix: an apparent keyboard trap that occurs when focus shifts into the component
Free Figma agent + Import anything to Figma Discussion | Link
This is today’s edition of The Download, our weekday newsletter that provides a daily dose of what’s going on in the world of technology. This man with ALS is the first “power user” of a brain implant that lets him speak Casey Harrell has had a set of electrodes embedded in his brain for almost…
Apple's HomeKit Secure Video service is getting in on the Apple Intelligence party to bring more descriptive alerts from your connected cameras and let you search footage using natural language. The Apple Home app is also getting better notifications powered by AI and is finally adding support for energy reporting. These improvements were announced at […]
The restrictions include a nationwide ban on Telegram until June 22 and a requirement to disable the app's message editing feature.
I'll just work from the car, I thought. But after a few minutes of staring at my screen on quick mountain switchbacks I could feel the first signs of cold, coagulated nausea bubbling up from that sweaty place in my gut. I looked to the horizon for relief, but nothing helped… until I remembered Apple's […]