AI 资讯
The Code AI Won't Write
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,
科技前沿
Streamer IShowSpeed Is Gen Z’s ESPN
At 21, Speed has pushed the limits of streaming by transforming a distinctly solo format into a global group chat. His song for this year’s World Cup is becoming the tournament’s unofficial anthem.
产品设计
Never Post’s Mike Rugnetta on the creative process and the value of reliable power
Mike Rugnetta is a writer, podcast host, producer, audio engineer, educator, musician, sound designer, and father. In short, the man wears a lot of hats. He's the cocreator and host of the award-winning Never Post, an absolutely must-listen podcast about the internet, as well as Fun City, a TTRPG podcast where he's the GM. He's […]
AI 资讯
The Microsoft Interview Question I Keep Thinking About
A few months ago, while interviewing for a Cloud Solutions Architect role at Microsoft, one of the interviewers asked me a question that stuck with me long after the interview ended. Not because I couldn't answer it. But because I kept thinking about whether I had answered it well. The question was: "What's the hardest part about working on mainframe technology?" At the time, I was still relatively new to the world of mainframes. And by "relatively new," I mean embarrassingly new. Before joining my current company, I didn't even know something called a "mainframe" still existed. If you'd asked me what COBOL was, I probably would've guessed it was a Pokémon. Okay that is an exaggeration but you get what I mean. I still remember early on hearing terms like KT (Knowledge Transfer) being thrown around and quietly wondering if everyone had received some secret corporate dictionary except me. The good news is that I've never been particularly afraid of looking stupid. So my strategy is simple: Ask the question. Then ask the follow-up question. Then ask the question that reveals I didn't understand the previous answer either. Surprisingly, people were usually happy to explain. Anyway, after a few KT sessions and what I'd generously describe as a "bare minimum amount of research," my brain went where most developers' brains probably would've gone. The technology The age The tooling The learning curve The fact that some of these systems were designed before I was even born All perfectly reasonable answers. But while I was sitting there in the interview, another thought appeared: "This feels too obvious." Interviewers at that level usually aren't asking for the first answer that comes to mind. They're trying to understand how you think. And the more I reflected on that question afterwards, the more I realized something interesting. The hardest part isn't the technology itself. Before I started working around large enterprise systems, my mental model of old technology was pret
开源项目
Five questions for the duo behind The Pelley Minutes
Websites are so back! Today's website worth visiting is The Pelley Minutes, a clever project that puts the career of longtime 60 Minutes correspondent Scott Pelley into perspective. The show may only be 60 minutes long, but Pelley racked up nearly 37,000 minutes in his 37-year long career, reporting on almost everything humanity has put […]
AI 资讯
Delete Node in a Linked List
Problem Link - https://leetcode.com/problems/delete-node-in-a-linked-list/ This is one of those interview questions that looks impossible at first. Normally, to delete a node from a Linked List, we need access to the previous node. But in this problem, we're only given the node that needs to be deleted. No head. No previous pointer. So how do we remove it? Let's understand the trick. Problem Statement Write a function to delete a node in a singly linked list. You are not given the head of the list. Instead, you are given only the node that needs to be deleted. Example Input: 4 -> 5 -> 1 -> 9 node = 5 Output: 4 -> 1 -> 9 Initial Thought Normally we delete a node like this: prev.next = node.next But here: We don't have prev We don't have head So the usual deletion approach is impossible. Key Observation Although we cannot delete the current node directly, we can make it look like it never existed. Consider: 4 -> 5 -> 1 -> 9 We need to delete: 5 Instead of removing node 5 , copy the value of the next node into it. 4 -> 1 -> 1 -> 9 Now remove the next node. 4 -> 1 -> 9 The original value 5 has disappeared. Mission accomplished. Intuition Copy the next node's value into the current node. Skip the next node. The current node now behaves as if it was deleted. Since the problem guarantees that the given node is not the tail node, a next node will always exist. Dry Run Input 4 -> 5 -> 1 -> 9 node = 5 Current node: 5 Next node: 1 Step 1 Copy next node value. node.val = node.next.val List becomes: 4 -> 1 -> 1 -> 9 Step 2 Skip next node. node.next = node.next.next List becomes: 4 -> 1 -> 9 Done. Optimal Java Solution class Solution { public void deleteNode ( ListNode node ) { ListNode cur = node . next ; node . val = cur . val ; node . next = cur . next ; } } Even Shorter Version class Solution { public void deleteNode ( ListNode node ) { node . val = node . next . val ; node . next = node . next . next ; } } Complexity Analysis Metric Complexity Time Complexity O(1) Space Comp
科技前沿
Alex Vindman Survived Trump’s Retaliation Machine. Now He’s Running for Senate
In 2019, Alex Vindman testified during President Trump’s first impeachment trial–a decision that ended his military career. Now he wants to challenge the president from the halls of Congress.
AI 资讯
Benn Jordan longs for the days of tech that didn’t spy on you
Benn Jordan may have initially gained notoriety for his music as Flashbulb and later, reviewing synths and effects pedals on YouTube under Benn and Gear. But about five years ago, Benn decided to take his YouTube channel in a different direction. He didn't stop covering music gear overnight, but as time progressed, his channel became […]
AI 资讯
The Interview Prep Mistake That Kept Holding Me Back
[While preparing for interviews, I realized I had a strange habit. I would solve a problem, get stuck, open the solution, understand it, and move on feeling productive. A few days later, I couldn’t solve a similar problem on my own. The issue wasn’t lack of practice. The issue was that I was consuming solutions faster than I was developing problem-solving skills. So I changed my approach. Instead of looking for answers, I started forcing myself to think longer, write down my ideas, identify where I was stuck, and only then seek guidance. That worked much better. But I couldn’t find a tool that supported this style of learning. Most platforms either: Give you the answer. Give you the editorial. Give you AI that writes the code for you. So I started building my own. The goal was simple: An AI coach that guides the thought process instead of generating the solution. Over time I added: DSA practice System Design preparation Low-Level Design preparation Company-wise interview questions Topic-wise strength and weakness analysis Personalized revision lists The interesting part wasn’t building it. The interesting part was realizing that interview preparation is less about collecting solutions and more about training how you think. What has helped you improve more during interview prep? Reading solutions? Or struggling with the problem first? Sde vault - https://sdevaultweb.onrender.com/
AI 资讯
More than a decade later, the team behind N++ is back with a multiplayer sequel
Back in 2015, the two-person studio Metanet released N++, a brutally hard 2D platformer that was a decade in the making, building off of previous releases dating back to the freeware Flash title N. At the time, cofounder Raigan Burns issued some famous last words: "We hope it's not another 10 years before we come […]
产品设计
McLaren CEO Zak Brown Still Gets FOMO About Racing Cars
Zak Brown spent a decade racing before joining the business side of Formula One. He talks to WIRED about rebuilding a legendary brand, obsessive fans, and the pull of the driver’s seat.
AI 资讯
6 Advanced JavaScript Questions That Separate Seniors from Mid-Levels
1. Stale closure & primitive capture What is the output of the following code? function createIncrement () { let count = 0 ; const message = `Count is ${ count } ` ; function increment () { count ++ ; } function log () { console . log ( message ); } return { increment , log }; } const { increment , log } = createIncrement (); increment (); increment (); log (); Test your understanding of closures, lexical scope, and primitive value capture. ✅ Output Count is 0 🧠 Explanation This is a classic stale closure trap — but not in the way most developers expect. Step-by-step execution: createIncrement() is invoked → new lexical environment created: count = 0 (mutable binding) message = "Count is 0" (primitive string, interpolated immediately at assignment) Inner functions increment and log are defined. Both close over the same lexical environment. increment() is called twice: count mutates: 0 → 1 → 2 ✓ This works as expected. log() is called: It references the variable message message still holds the original string value "Count is 0" The template literal was evaluated once, at the moment of assignment — not re-evaluated when log() runs. 🔑 Core Concept > Closures capture variables , not expressions . > But if a variable holds a primitive value (string, number, boolean), that value is fixed at assignment time. message is not a live reference to count . It is a snapshot . 🛠 How to fix it (if dynamic output is desired) Re-evaluate the template literal inside log() : function log () { console . log ( `Count is ${ count } ` ); } 🎯 What this question tests Concept Why it matters Template literal evaluation timing They run at assignment, not at access Primitive vs reference types Primitives are copied by value; objects/arrays are referenced Closure capture semantics Closures close over bindings, but the value of a primitive is immutable once assigned Mental model of "live" variables Not all variables in a closure are "live views" — only the bindings themselves are 2. JavaScript co
AI 资讯
Welcome to Night Vale host Cecil Baldwin shares his tech pet peeves
Cecil Baldwin's résumé includes appearances on Gravity Falls, narrating the documentary Scream, Queen! My Nightmare on Elm Street, and performing as part of the New York Neo-Futurists theater company. But he is best known as the host of the podcast Welcome to Night Vale, a long-running fiction show that blends macabre Lovecraftian horror with absurdist […]
AI 资讯
Backrooms is at the forefront of horror’s YouTube wave
Though YouTube has always been a place where up-and-coming artists could be discovered and make it big, in recent years the platform has become a launching pad for some of Hollywood's most exciting new horror directors. The filmmakers behind films like Talk to Me, Iron Lung, and Obsession all started off as content creators posting […]
AI 资讯
Amazon STAR Method 2026: The Complete Cheat Sheet (30+ Questions + Scored Examples)
If you're interviewing at Amazon this year, you've probably read that you need to "prepare STAR stories." What most guides don't tell you is exactly how Amazon uses STAR differently from every other company — and what interviewers are silently scoring you against while you talk. Here's the complete 2026 breakdown: the cheat sheet, the full question bank, scored example answers, and the four mistakes that get candidates rejected even when their stories are genuinely impressive. Why Amazon STAR Is Different Amazon evaluates every behavioral answer against its 16 Leadership Principles. This isn't just culture marketing — interviewers are trained to map your stories to specific LPs and give them discrete scores. A Bar Raiser isn't just listening; they're running a rubric. The STAR formula at Amazon has specific time allocations that most candidates ignore: Situation (10%): Set the context in 20–30 seconds max Task (10%): What was specifically your responsibility Action (50%): What you did — not your team, not your manager Result (30%): Quantified outcomes only That weighting is the whole game. Most candidates spend 60% of their answer on Situation and Task, then rush through Action and Result — which is exactly backwards from what gets high scores. The "I" Rule: The Single Biggest Reason Candidates Fail Bar Raisers flag one thing more than any other: candidates who say "we" during the Action phase. Weak answer: "We decided to refactor the codebase, and we deployed a caching layer to fix the latency issue." Strong answer: "I identified the bottleneck using distributed tracing. I proposed the Redis caching layer to my tech lead and personally implemented the proof-of-concept over a weekend before bringing it to the team." Amazon hires individuals. If you can't cleanly separate your contribution from the group's work, interviewers have no signal on whether you were the driver or just along for the ride. Every sentence in your Action phase should start with "I." 30 Amazon S