<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: henry</title>
    <description>The latest articles on DEV Community by henry (@henry123).</description>
    <link>https://dev.to/henry123</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4130904%2Fae4cadb3-3070-4f81-9875-e7527999a2e3.png</url>
      <title>DEV Community: henry</title>
      <link>https://dev.to/henry123</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/henry123"/>
    <language>en</language>
    <item>
      <title>The follow up email is short, specific, and sent the same day</title>
      <dc:creator>henry</dc:creator>
      <pubDate>Thu, 22 Oct 2026 14:09:06 +0000</pubDate>
      <link>https://dev.to/henry123/the-follow-up-email-is-short-specific-and-sent-the-same-day-426d</link>
      <guid>https://dev.to/henry123/the-follow-up-email-is-short-specific-and-sent-the-same-day-426d</guid>
      <description>&lt;p&gt;The follow up email is short, specific, and sent the same day&lt;br&gt;
Most advice about this is either far too long or tells you not to bother. Here is what I send, when I send it, and what to do about the silence that follows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0g0b3faskvya4fw6uk3k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0g0b3faskvya4fw6uk3k.png" alt=" " width="456" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Written after over thinking a four sentence email for an hour. Updated October 2026. 6 min read&lt;/p&gt;

&lt;p&gt;Company norms vary. The timing below is a reasonable default rather than a rule.&lt;/p&gt;

&lt;p&gt;I spent an hour on four sentences&lt;br&gt;
And nearly did not send them.&lt;/p&gt;

&lt;p&gt;My first thank you email went through about six drafts. The version I sent was four sentences long, took forty seconds to write once I stopped editing, and got a reply within the hour mentioning a detail I had raised.&lt;/p&gt;

&lt;p&gt;I have no idea whether it changed the outcome. What I do know is that the hour of agonising added nothing to the email.&lt;/p&gt;

&lt;p&gt;The email is not an argument for hiring you. It is a short, human acknowledgement of someone making time for you.&lt;br&gt;
The four sentences&lt;br&gt;
Same day, before you forget the detail.&lt;/p&gt;

&lt;p&gt;1&lt;br&gt;
Thanks&lt;br&gt;
One line. Name the&lt;br&gt;
person, name the&lt;br&gt;
day.&lt;br&gt;
2&lt;br&gt;
One detail&lt;br&gt;
Something specific&lt;br&gt;
from the&lt;br&gt;
conversation.&lt;br&gt;
3&lt;br&gt;
One line of interest&lt;br&gt;
Why the role still&lt;br&gt;
appeals, briefly.&lt;br&gt;
4&lt;br&gt;
An open door&lt;br&gt;
Happy to answer&lt;br&gt;
anything further.&lt;br&gt;
Four lines. Anything longer starts to read as a pitch.&lt;br&gt;
The specific detail is the part that matters. It proves the message was written after the conversation rather than before it, and it quietly reminds them which candidate you were.&lt;/p&gt;

&lt;p&gt;What not to include&lt;br&gt;
All of these have been suggested to me and all of them are worse.&lt;/p&gt;

&lt;p&gt;Works&lt;br&gt;
Four short sentences&lt;br&gt;
One concrete detail&lt;br&gt;
Sent within a few hours&lt;br&gt;
Plain subject line&lt;br&gt;
Backfires&lt;br&gt;
A summary of your qualifications&lt;br&gt;
Attaching extra work nobody asked for&lt;br&gt;
Correcting an answer at length&lt;br&gt;
Anything that mentions how badly you want it&lt;br&gt;
The correction one deserves a caveat. If you got something factually wrong and the fix is one sentence, including it is fine and occasionally impressive. Three paragraphs relitigating a design decision is not.&lt;/p&gt;

&lt;p&gt;The waiting part&lt;br&gt;
Which is harder than the writing.&lt;/p&gt;

&lt;p&gt;Ask for a timeline&lt;br&gt;
At the end of the interview, so you are not guessing later.&lt;br&gt;
Wait the stated time&lt;br&gt;
Then a day or two more, then check in.&lt;br&gt;
One polite check in&lt;br&gt;
Two sentences. Still interested, any update, no pressure.&lt;br&gt;
One final message&lt;br&gt;
A week later. Then stop and keep applying.&lt;br&gt;
What silence usually means&lt;br&gt;
Rarely what it feels like.&lt;/p&gt;

&lt;p&gt;Silence after an interview is almost always internal. A panel member is on leave, the role is being re-scoped, another candidate is mid process, or someone simply forgot. It occasionally means a no that nobody has written up yet. It very rarely means anything about you personally, even though it feels extremely personal when it is your week.&lt;/p&gt;

&lt;p&gt;The practical response is to assume nothing, send your two messages on schedule, and keep other processes moving so that this one is not carrying all your hope.&lt;/p&gt;

&lt;p&gt;After a rejection&lt;br&gt;
One short reply, which costs nothing.&lt;/p&gt;

&lt;p&gt;Thank them, say you enjoyed the conversation, and ask whether there is anything specific you could improve. Many companies will decline to say. The ones who answer usually give you one precise sentence, and that sentence is worth more than a week of guessing.&lt;/p&gt;

&lt;p&gt;When the feedback named a round rather than a quality, which it usually did for me, that was the thing to go and drill. I used Phantom Code AI[&lt;a href="https://www.phantomcodeai.com/" rel="noopener noreferrer"&gt;https://www.phantomcodeai.com/&lt;/a&gt;]&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Femy0dxy45w007z4yipda.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Femy0dxy45w007z4yipda.png" alt=" " width="456" height="230"&gt;&lt;/a&gt; for that, since rotating between coding, system design, SQL and behavioral practice in one place made it easy to spend a fortnight on whichever round the feedback pointed at rather than starting a whole new routine.&lt;/p&gt;

&lt;p&gt;Common questions&lt;br&gt;
Short answers.&lt;/p&gt;

&lt;p&gt;Should I send a thank you email?&lt;br&gt;
How long before following up?&lt;br&gt;
What if there is no reply?&lt;br&gt;
Should I ask for feedback after a no?&lt;br&gt;
Short, specific, and then let it go&lt;br&gt;
The follow up is one of the few parts of a job search you fully control, which is exactly why people overwork it. Four sentences, one detail, and then your attention belongs to the next application.&lt;/p&gt;

&lt;p&gt;Write your template tonight so that after your next interview it takes two minutes rather than an hour.&lt;/p&gt;

&lt;p&gt;Written after finally sending the first draft&lt;/p&gt;

&lt;p&gt;Do you send thank you emails?&lt;/p&gt;

&lt;p&gt;I was convinced they were pointless until one got a reply.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Preparing for Interviews in More Than One Language</title>
      <dc:creator>henry</dc:creator>
      <pubDate>Tue, 20 Oct 2026 13:00:39 +0000</pubDate>
      <link>https://dev.to/henry123/preparing-for-interviews-in-more-than-one-language-49lf</link>
      <guid>https://dev.to/henry123/preparing-for-interviews-in-more-than-one-language-49lf</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy97ka9kvssga6bxk7qqn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy97ka9kvssga6bxk7qqn.png" alt=" " width="742" height="395"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Preparing for Interviews in More Than One Language&lt;br&gt;
Interviewing in a second language adds a hidden tax: you translate while solving.&lt;/p&gt;

&lt;p&gt;Build a bilingual glossary&lt;br&gt;
List technical terms in both languages so neither slows you down.&lt;/p&gt;

&lt;p&gt;Practice out loud in the target language&lt;br&gt;
Narrate your reasoning, not just your code.&lt;/p&gt;

&lt;p&gt;Tools&lt;br&gt;
Phantom Code AI offers real-time transcription in 50+ languages and bilingual modes for code-switching conversations, which makes it a useful rehearsal partner.&lt;/p&gt;

&lt;p&gt;Explore language support at phantomcode.co[&lt;a href="https://www.phantomcodeai.com/" rel="noopener noreferrer"&gt;https://www.phantomcodeai.com/&lt;/a&gt;]&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Nail Behavioral Interviews: Turning Your Resume into STAR Stories Behavioral</title>
      <dc:creator>henry</dc:creator>
      <pubDate>Thu, 15 Oct 2026 16:14:24 +0000</pubDate>
      <link>https://dev.to/henry123/nail-behavioral-interviews-turning-your-resume-into-star-storiesbehavioral-5f0h</link>
      <guid>https://dev.to/henry123/nail-behavioral-interviews-turning-your-resume-into-star-storiesbehavioral-5f0h</guid>
      <description>&lt;p&gt;Nail Behavioral Interviews: Turning Your Resume into STAR Stories&lt;br&gt;
Behavioral rounds decide more offers than people admit. The fix is preparation: a bank of real stories drawn from your own resume.&lt;/p&gt;

&lt;p&gt;Step 1: Mine your resume&lt;br&gt;
For each project, note the problem, your role, the decision you made and the result. Metrics matter: latency cut by 40%, onboarding time halved.&lt;/p&gt;

&lt;p&gt;Step 2: Structure with STAR&lt;br&gt;
Situation, Task, Action, Result. Spend most of your time on Action and Result. Keep the Situation to two sentences.&lt;/p&gt;

&lt;p&gt;Step 3: Cover the classics&lt;br&gt;
Conflict with a teammate, a failure, a tight deadline, a time you led without authority, and a technical disagreement.&lt;/p&gt;

&lt;p&gt;Step 4: Rehearse out loud&lt;br&gt;
Stories read well on paper and sound rambling aloud. Record yourself and trim.&lt;/p&gt;

&lt;p&gt;Phantom Code AI lets you upload a resume once and tailors behavioral and project answers to it, which is a handy way to draft and sharpen your stories before the real conversation. Always make the final answers your own and truthful.&lt;/p&gt;

&lt;p&gt;Ready to practice? Explore Phantom Code AI at &lt;a href="https://phantomcode.co/" rel="noopener noreferrer"&gt;https://phantomcode.co/&lt;/a&gt;. Always follow the rules set by your employer or assessment provider.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Microservices questions are really questions about failure</title>
      <dc:creator>henry</dc:creator>
      <pubDate>Tue, 13 Oct 2026 18:08:45 +0000</pubDate>
      <link>https://dev.to/henry123/microservices-questions-are-really-questions-about-failure-14d1</link>
      <guid>https://dev.to/henry123/microservices-questions-are-really-questions-about-failure-14d1</guid>
      <description>&lt;p&gt;Microservices questions are really questions about failure&lt;br&gt;
Drawing three boxes is easy. The round turns on what you say happens when one box stops answering, and whether you can admit that a monolith might be the better choice.&lt;/p&gt;

&lt;p&gt;Written after a design round that fell apart on retries. Updated October 2026. 8 min read&lt;/p&gt;

&lt;p&gt;Bad answer: the order fails because email failed.&lt;br&gt;
Better: the order is placed, the email is queued and retried, and the user sees a success.&lt;br&gt;
The short version: draw boundaries around data ownership rather than around nouns, prefer asynchronous messaging for anything that is not needed to answer the user right now, make retried operations idempotent, and be willing to say that a single service would be simpler here. That last one impresses more interviewers than it loses.&lt;/p&gt;

&lt;p&gt;Terminology varies between teams. What matters is that you can defend the boundaries you draw.&lt;/p&gt;

&lt;p&gt;The round that fell apart on one follow up&lt;br&gt;
"What happens if the email service is down?"&lt;/p&gt;

&lt;p&gt;I had drawn orders, payments and email, with arrows between them, and I felt good. Then the interviewer took the email service away. In my design the order request waited for it, so taking it away meant customers could not place orders because a receipt could not be sent.&lt;/p&gt;

&lt;p&gt;Nobody is impressed by the boxes. They are listening for what happens when one of them stops answering.&lt;br&gt;
Boundaries follow data, not nouns&lt;br&gt;
The first question to answer out loud.&lt;/p&gt;

&lt;p&gt;A service should own its data and be deployable on its own. If two services need to write the same table to do their jobs, the boundary is in the wrong place. If a single user action requires five synchronous hops, the boundary is also in the wrong place, just in a different way.&lt;/p&gt;

&lt;p&gt;Synchronous or asynchronous&lt;br&gt;
Decide per call, and say why.&lt;/p&gt;

&lt;p&gt;Sometimes&lt;br&gt;
Not the tool for this&lt;br&gt;
Which style suits which kind of work.&lt;br&gt;
The rule I use out loud: if the user cannot get an answer without it, call it synchronously. Everything else becomes an event, which is also what stops one failing dependency from taking down the main path.&lt;/p&gt;

&lt;p&gt;Retries make idempotency mandatory&lt;br&gt;
Say this before you are asked.&lt;/p&gt;

&lt;p&gt;Once calls can be retried, every operation must be safe to receive twice. That usually means a key on the request that the receiver stores, so a duplicate returns the original result rather than creating a second payment. This is the single most common follow up in distributed design rounds.&lt;/p&gt;

&lt;p&gt;The vocabulary worth having ready&lt;br&gt;
Four terms, one sentence each.&lt;/p&gt;

&lt;p&gt;Circuit breaker&lt;br&gt;
Stop calling a failing dependency for a while so you fail fast rather than queueing.&lt;br&gt;
Backoff with jitter&lt;br&gt;
Space out retries and randomise them so clients do not retry in lockstep.&lt;br&gt;
Saga&lt;br&gt;
A workflow across services where each step has a compensating action.&lt;br&gt;
Outbox&lt;br&gt;
Write the event in the same transaction as the data so the two cannot disagree.&lt;br&gt;
The answer that scores well&lt;br&gt;
Being willing to say monolith.&lt;/p&gt;

&lt;p&gt;Reasons to split&lt;br&gt;
Different scaling profiles&lt;br&gt;
Clear data ownership&lt;br&gt;
Teams blocking each other on deploys&lt;br&gt;
Different reliability requirements&lt;br&gt;
Reasons to wait&lt;br&gt;
A small team&lt;br&gt;
An unclear domain&lt;br&gt;
No deployment automation yet&lt;br&gt;
Every change touching several services&lt;br&gt;
How I practised the follow ups&lt;br&gt;
Design, then remove a service.&lt;/p&gt;

&lt;p&gt;My routine was to draw a design and then delete one box and talk through what happens. I used Phantom Code AI[&lt;a href="https://www.phantomcodeai.com/" rel="noopener noreferrer"&gt;https://www.phantomcodeai.com/&lt;/a&gt;] in its slower reasoning mode to attack the design rather than produce one, asking what breaks when a dependency times out or when a message is delivered twice. Since it covers coding, SQL and behavioral practice as well, one evening habit carried the whole loop.&lt;/p&gt;

&lt;p&gt;Common questions&lt;br&gt;
Short answers.&lt;/p&gt;

&lt;p&gt;How do I pick boundaries?&lt;br&gt;
When should calls be asynchronous?&lt;br&gt;
What is a saga?&lt;br&gt;
Is a monolith ever right?&lt;br&gt;
Design for the day something is down&lt;br&gt;
Every distributed design question eventually becomes a question about partial failure, because that is what the job actually is.&lt;/p&gt;

&lt;p&gt;Take a design you have drawn and remove one service. Write what the user sees.&lt;/p&gt;

&lt;p&gt;Written after an email service taught me a lesson&lt;/p&gt;

&lt;p&gt;What is the smallest useful service you have shipped?&lt;/p&gt;

&lt;p&gt;And did it stay that size?&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>microservices</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Machine Learning Interviews and How to Spot Data Leakage</title>
      <dc:creator>henry</dc:creator>
      <pubDate>Fri, 02 Oct 2026 14:42:20 +0000</pubDate>
      <link>https://dev.to/henry123/machine-learning-interviews-and-how-to-spot-data-leakage-20g5</link>
      <guid>https://dev.to/henry123/machine-learning-interviews-and-how-to-spot-data-leakage-20g5</guid>
      <description>&lt;p&gt;A model achieves an impressive score, but its performance collapses after deployment. In a machine learning interview, one explanation to investigate is data leakage: information reached the training or evaluation process in a way that would not be available for the intended prediction.&lt;/p&gt;

&lt;p&gt;Start with the prediction moment. For this exercise, a service predicts on Monday whether an account will cancel during the following 30 days. Every feature must be justified in relation to what the system knows on Monday. A feature can look harmless in a spreadsheet and still reveal the future.Ask when each feature becomes available&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0928pknldl5by0syw3ep.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0928pknldl5by0syw3ep.png" alt=" " width="510" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recent activity measured before Monday may be eligible. A final cancellation reason recorded three weeks later is not. A customer status field can also be dangerous if historical training rows were assembled from the latest account table rather than a snapshot from the prediction time.&lt;/p&gt;

&lt;p&gt;That problem is not solved by removing a column named cancelled. Information about the outcome can hide in support workflows, billing adjustments, or fields updated after the event. Ask how each feature was produced and whether the historical value matches what a production request would have seen.&lt;/p&gt;

&lt;p&gt;Distinguish event time from ingestion time. An event that happened before Monday but only arrived on Wednesday might still be unavailable to Monday's live prediction. The relevant boundary is actual availability under the proposed serving process.&lt;/p&gt;

&lt;p&gt;Make the split match the question&lt;/p&gt;

&lt;p&gt;If deployment predicts future behavior, a chronological evaluation can help test that setting. If the same person appears in multiple rows, consider whether splitting related rows across training and evaluation creates an easier problem than the one you intend to solve.&lt;/p&gt;

&lt;p&gt;There is no universal split that fits every task. Explain the generalization you care about: future periods, unseen people, new organizations, or another population. Then choose a split that approximates it and state what it leaves untested.&lt;/p&gt;

&lt;p&gt;Fit preprocessing in the right place&lt;/p&gt;

&lt;p&gt;Transformations learned from data can leak information too. A scaler, imputer, or feature-selection step fitted using evaluation data has already learned something from the examples intended to assess the model.&lt;/p&gt;

&lt;p&gt;The scikit-learn common-pitfalls guide discusses this issue and the use of pipelines to keep fitted transformations tied to the training process. In cross-validation, learned preprocessing should be fitted within each training fold. A pipeline helps enforce that organization, but it cannot fix features that already contain future information.&lt;/p&gt;

&lt;p&gt;Investigate a suspicious score&lt;/p&gt;

&lt;p&gt;Ask for a simple baseline, a feature-availability audit, and a comparison using a split that matches deployment. Remove questionable features and observe how performance changes. A score drop is evidence worth examining, but it does not by itself identify which feature was invalid or prove the remaining model is ready.&lt;/p&gt;

&lt;p&gt;Check the evaluation metric against the decision too. A churn model may inform a limited outreach budget, so ranking quality at a useful operating point can matter alongside aggregate metrics. Avoid making business claims from one score without defining how predictions will be used.&lt;/p&gt;

&lt;p&gt;For general technical rehearsal, explore PhantomCodeAI's interview resources, then validate ML-specific advice against the modeling library and your data construction. A useful practice prompt asks you to audit feature timestamps and defend the split, rather than merely recite a definition of leakage.&lt;/p&gt;

&lt;p&gt;Finish with a production question: can every feature be computed with the same meaning and timing when a real request arrives? That question connects offline evaluation to the system you actually intend to build.&lt;/p&gt;

</description>
      <category>career</category>
      <category>interview</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Coding Interview Patterns and the Sliding Window Invariant</title>
      <dc:creator>henry</dc:creator>
      <pubDate>Wed, 30 Sep 2026 14:35:32 +0000</pubDate>
      <link>https://dev.to/henry123/coding-interview-patterns-and-the-sliding-window-invariant-2odh</link>
      <guid>https://dev.to/henry123/coding-interview-patterns-and-the-sliding-window-invariant-2odh</guid>
      <description>&lt;p&gt;Recognizing a coding interview pattern is useful only when you can explain why the pattern applies. Sliding window is a good example. It is tempting to see an array or string and start moving two pointers, but the important decision is what those pointers represent.&lt;/p&gt;

&lt;p&gt;Consider this practice question: find the length of the longest contiguous substring with no repeated characters. For the string abcaef, the answer is five, corresponding to bcaef. The problem gives you a window whose validity you can test and restore as you move through the input&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvigi0l0c7mdhngytxbs1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvigi0l0c7mdhngytxbs1.png" alt=" " width="800" height="380"&gt;&lt;/a&gt;&lt;br&gt;
Worked example using the string abcaef. The longest substring without repeated characters is bcaef.&lt;/p&gt;

&lt;p&gt;State what must remain true&lt;/p&gt;

&lt;p&gt;Let the left and right positions define the current substring. After processing each new character and repairing the window, every character inside that substring must be unique. That statement is the invariant: the property you preserve as the algorithm progresses.&lt;/p&gt;

&lt;p&gt;Read the characters from left to right. The window grows from a to ab to abc. When the next a arrives, keeping the original a would create a duplicate. Move the left boundary past that earlier a. The valid window becomes bca. Adding e and f then produces bcaef.&lt;/p&gt;

&lt;p&gt;Notice what you did not do. You did not restart the entire search after seeing a duplicate. Earlier positions that would still include the repeated a cannot produce a valid window ending at the current position. Moving the boundary discards those possibilities for a reason.&lt;/p&gt;

&lt;p&gt;Choose an implementation you can explain&lt;/p&gt;

&lt;p&gt;One approach uses a set of characters. When a new character is already present, repeatedly remove the leftmost character and advance the left boundary until the duplicate has been removed. Then add the new character and update the best length.&lt;/p&gt;

&lt;p&gt;Another approach records the most recent index of each character. On a repeat, move the left boundary to the larger of its current value and one position after the previous occurrence. That maximum matters. A character that appeared before the current window must not pull the boundary backward.&lt;/p&gt;

&lt;p&gt;Both approaches require assumptions about character comparison and indexing. For a basic practice problem, ordinary character units may be sufficient. If the question concerns user-visible Unicode characters, clarify the required unit instead of silently assuming that every language handles strings identically.&lt;/p&gt;

&lt;p&gt;Derive the running time from movement&lt;/p&gt;

&lt;p&gt;In the set-based approach, a nested loop does not automatically mean quadratic time. The right boundary advances across the string once. The left boundary also advances at most across the string once. With average constant-time hash-set operations, the total work is linear in the input length.&lt;/p&gt;

&lt;p&gt;Space depends on the maximum number of distinct characters held in the window. State that relationship before claiming constant space. A fixed, bounded alphabet and an unrestricted character set are different assumptions.&lt;/p&gt;

&lt;p&gt;The PhantomCodeAI coding interviews hub includes pattern-based preparation. When using a guide or an AI hint, ask it to explain the invariant before showing an implementation. That makes the exercise transferable to unfamiliar wording.&lt;/p&gt;

&lt;p&gt;Learn when the pattern stops working&lt;/p&gt;

&lt;p&gt;The same boundary movement does not automatically solve every contiguous-subarray problem. For example, reasoning that extending a window always increases its sum depends on the values being nonnegative. Negative numbers can break that reasoning.&lt;/p&gt;

&lt;p&gt;Finish your practice by testing an empty string, a string of identical characters, a string with all unique characters, and a repeat that occurs outside the current window. Then explain the algorithm without naming the pattern. If you can justify each boundary movement, you understand more than its label.&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>coding</category>
      <category>computerscience</category>
      <category>interview</category>
    </item>
    <item>
      <title>The failure question is not a trap. It is an ownership test.</title>
      <dc:creator>henry</dc:creator>
      <pubDate>Mon, 28 Sep 2026 12:12:32 +0000</pubDate>
      <link>https://dev.to/henry123/the-failure-question-is-not-a-trap-it-is-an-ownership-test-1od4</link>
      <guid>https://dev.to/henry123/the-failure-question-is-not-a-trap-it-is-an-ownership-test-1od4</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F63oeyxxzcpkj6wn5m5aw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F63oeyxxzcpkj6wn5m5aw.png" alt=" " width="800" height="285"&gt;&lt;/a&gt;used to answer this with a failure that was secretly someone else's fault. Interviewers hear that immediately. Here is the structure that works and the kind of story worth telling.&lt;/p&gt;

&lt;p&gt;Written after telling this story badly several times · Updated September 2026 · 6 min readThe answer that quietly cost me&lt;br&gt;
A failure that was, conveniently, somebody else's fault.&lt;/p&gt;

&lt;p&gt;My old answer went something like: the deadline was unrealistic, requirements changed twice, and the release slipped. All true. Also a description of a situation rather than a decision, and every interviewer could hear that I had not taken anything personally out of it.&lt;/p&gt;

&lt;p&gt;This question is not looking for a flaw. It is looking for evidence that you can hold a decision that went wrong.&lt;br&gt;
The three part structure&lt;br&gt;
Under ninety seconds.A worked example: "I ran a schema migration on a Friday without a dry run because we were behind. It locked the orders table and checkout was down for forty minutes. The deadline was real but skipping the dry run was my call. We added a dry run and a rollback plan to the migration checklist, and I have not run one without both since."How I practised saying it calmly&lt;br&gt;
Out loud, with pushback.&lt;/p&gt;

&lt;p&gt;Writing the story was easy. Saying it without either minimising or over apologising took repetition. I uploaded my resume to Phantom Code AI[/&lt;a href="http://www.phantomcodeai.com" rel="noopener noreferrer"&gt;www.phantomcodeai.com&lt;/a&gt;] and used its mock practice so the follow up questions referenced the actual project, which made the rehearsal feel like a conversation rather than a monologue. Then a friend ran it once and told me my voice went up at the end, as if asking permission.&lt;/p&gt;

&lt;p&gt;That was the real fix. The story was fine. The delivery was apologising for existing.&lt;/p&gt;

&lt;p&gt;Common questions&lt;br&gt;
Short answers.&lt;/p&gt;

&lt;p&gt;Which failure should I choose?&lt;br&gt;
Can it be non technical?&lt;br&gt;
What if nothing big has gone wrong?&lt;br&gt;
How long should the answer be?&lt;br&gt;
Own one decision and show the change&lt;br&gt;
Everyone has shipped something that broke. The candidates who do well are the ones who can name their part in it without flinching and point at what is different now.&lt;/p&gt;

&lt;p&gt;Write yours in three sentences tonight. Read it back and delete any sentence that shifts the blame.&lt;/p&gt;

&lt;p&gt;Written by someone who now dry runs everything&lt;/p&gt;

&lt;p&gt;What failure would you tell?&lt;/p&gt;

&lt;p&gt;The good ones usually still sting a little.&lt;br&gt;
Some third-party reviews of these tools are published by competing products, so verify prices on official sites before buying.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Some interviews now let you use AI. That's harder, not easier.</title>
      <dc:creator>henry</dc:creator>
      <pubDate>Thu, 24 Sep 2026 13:32:57 +0000</pubDate>
      <link>https://dev.to/henry123/some-interviews-now-let-you-use-ai-thats-harder-not-easier-5gnk</link>
      <guid>https://dev.to/henry123/some-interviews-now-let-you-use-ai-thats-harder-not-easier-5gnk</guid>
      <description>&lt;p&gt;A growing number of companies hand you the tools and watch how you use them. Same 45 minutes, completely different scoring, and a very obvious gap between people who direct a model and people who follow one.&lt;/p&gt;

&lt;p&gt;Written after two AI-permitted rounds · Updated September 2026 · 8 min read&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fox9k3icupyuk3byeblnt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fox9k3icupyuk3byeblnt.png" alt=" " width="782" height="302"&gt;&lt;/a&gt;&lt;br&gt;
AI tools: allowed in this round&lt;br&gt;
45:00&lt;/p&gt;

&lt;p&gt;!&lt;br&gt;
The short version: when AI is allowed, the code stops being the signal. What gets scored is whether you had a plan before you prompted, whether you reviewed what came back, and whether you can defend the result under questioning. Prompting fast and pasting fast is the fastest way to fail an open-tools round.&lt;/p&gt;

&lt;p&gt;This is about rounds where AI is explicitly permitted. When it isn't, using it is cheating, whatever a tool's marketing says.&lt;/p&gt;

&lt;p&gt;The round where my instincts were wrong&lt;br&gt;
I'd trained myself to hide the tools. Then they handed me one.&lt;/p&gt;

&lt;p&gt;Every piece of advice I'd absorbed said: close everything, prove it's all you. Then an interviewer said, "use whatever you'd use on a normal workday, just talk me through it." I froze for a second, which is a funny way to fail a round designed to be easier.&lt;/p&gt;

&lt;p&gt;What I learned over the next forty minutes is that open-tools rounds are not a relaxation of the standard. They move the standard somewhere harder to fake.&lt;/p&gt;

&lt;p&gt;When the code is free, the only thing left to evaluate is your judgement about it.&lt;br&gt;
What actually gets scored&lt;br&gt;
Four things, none of them typing.&lt;/p&gt;

&lt;p&gt;A plan before the prompt&lt;br&gt;
"Here's my approach; I'll use the tool for the boilerplate." Said out loud, before anything is generated.&lt;br&gt;
Review of what came back&lt;br&gt;
Reading the output critically, out loud, including what you'd change.&lt;br&gt;
Knowing when not to use it&lt;br&gt;
Writing the core logic yourself is a signal, not a weakness.&lt;br&gt;
Defending the result&lt;br&gt;
Every line is yours the moment you submit it.&lt;br&gt;
Two candidates, same tools&lt;br&gt;
The difference shows up in one question.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F943gabpiqn6ehqqt3uzf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F943gabpiqn6ehqqt3uzf.png" alt=" " width="652" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How to practise for open-tools rounds&lt;br&gt;
Narrating is the skill.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsi87ki652h00e54zdks2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsi87ki652h00e54zdks2.png" alt=" " width="771" height="307"&gt;&lt;/a&gt;&lt;br&gt;
Practising this alone is awkward, because the natural way to use a tool at home is silently. So I made the narration the point. In my nightly sessions with Phantom Code AI I'd state my plan out loud first, then capture the problem and compare its approach and complexity against mine, saying what I'd keep and what I'd change. It covers coding, system design, SQL and behavioral rounds, so the same habit carried across the whole loop, including the closed-tools rounds where I practised without it entirely.&lt;/p&gt;

&lt;p&gt;What it can't do is play the interviewer who interrupts you at minute twelve to ask why. A friend did that once a week, and those sessions were where the narration actually became natural.&lt;/p&gt;

&lt;p&gt;The closed-tools rounds still exist&lt;br&gt;
And the rules there are absolute.&lt;/p&gt;

&lt;p&gt;Most interviews are still no-tools, and in those, hidden assistance is cheating regardless of how a product markets itself. Detection keeps improving on assessment platforms, and the follow-up question exposes borrowed answers faster than any software does. If the round is closed, close everything.&lt;/p&gt;

&lt;p&gt;Ask which kind of round it is. Ten seconds of clarification beats forty-five minutes of guessing.&lt;br&gt;
Common questions&lt;br&gt;
Short answers.&lt;/p&gt;

&lt;p&gt;Do companies allow AI now?&lt;br&gt;
What's scored when it's allowed?&lt;br&gt;
Should I use it if I'm faster alone?&lt;br&gt;
What if they don't say?&lt;br&gt;
The tools stopped being the secret&lt;br&gt;
For two years the anxious question was whether you could get away with using AI. The more interesting question now is whether you can be trusted with it, and that one you answer out loud.&lt;/p&gt;

&lt;p&gt;Next practice session, narrate the whole thing as if someone is listening. It's harder than it sounds and it's the entire skill.&lt;/p&gt;

&lt;p&gt;— Written after being told to use whatever I'd normally use&lt;/p&gt;

&lt;p&gt;Have you had an AI-permitted round yet?&lt;/p&gt;

&lt;p&gt;I want to know how common this is getting.&lt;br&gt;
Some third-party reviews of these tools are published by competing products, so verify prices on official sites before buying.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>career</category>
      <category>interview</category>
    </item>
    <item>
      <title>AI mock interviews vs human ones: I tried both. You need both.</title>
      <dc:creator>henry</dc:creator>
      <pubDate>Mon, 21 Sep 2026 13:39:04 +0000</pubDate>
      <link>https://dev.to/henry123/ai-mock-interviews-vs-human-ones-i-tried-both-you-need-both-3mm0</link>
      <guid>https://dev.to/henry123/ai-mock-interviews-vs-human-ones-i-tried-both-you-need-both-3mm0</guid>
      <description>&lt;p&gt;An AI never gets tired of your fifth attempt at the same problem. A human notices when you stop making eye contact. Here's what each is actually good for, and the weekly mix that worked.&lt;/p&gt;

&lt;p&gt;Written after 40+ practice sessions of both kinds · Updated September 2026 · 8 min read&lt;/p&gt;

&lt;p&gt;WHO SHOULD INTERVIEW YOU TONIGHT?&lt;br&gt;
🤖&lt;/p&gt;

&lt;p&gt;Short answer: use AI for volume and humans for realism. An AI mock interview tool like Phantom Code AI (free plan, from $19 a month) is unbeatable for nightly repetition across coding, system design, SQL and behavioral rounds. A human mock, from a peer or a paid coach, catches what AI can't: nerves, pacing, body language and the awkward silence. My mix: five AI sessions and one human session a week.&lt;/p&gt;

&lt;p&gt;Prices and features checked September 2026 and may change. Always verify on official websites before buying.&lt;/p&gt;

&lt;p&gt;Forty mocks, two very different teachers&lt;br&gt;
Neither one alone was enough.&lt;/p&gt;

&lt;p&gt;For the first month of my job search I only practised with an AI tool. My solutions got cleaner, my complexity explanations got sharper, and then my first real interviewer interrupted me mid-sentence and I lost the thread completely. The AI never interrupted.&lt;/p&gt;

&lt;p&gt;For the second month I added human mocks, and discovered the opposite problem: people are brilliant at pressure and terrible at availability. My peer partner cancelled twice in a week.&lt;/p&gt;

&lt;p&gt;!&lt;br&gt;
AI taught me what to say. Humans taught me how to say it with someone watching.&lt;br&gt;
What each one is actually good at&lt;br&gt;
An honest split.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fknvlzo400k5wf7bogo6h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fknvlzo400k5wf7bogo6h.png" alt=" " width="717" height="317"&gt;&lt;/a&gt;&lt;br&gt;
Not clearly listed&lt;br&gt;
My experience across roughly forty sessions. "Limited" means it depends heavily on the person or tool.&lt;br&gt;
The pattern is clean. AI wins everything to do with volume and explanation. Humans win everything to do with being watched. Nothing in the chart is a close call.&lt;/p&gt;

&lt;p&gt;widely and are often $100 or more per session; peer platforms are often free. AI assumes one month of a paid plan or a free plan.&lt;br&gt;
Ten coaching sessions can cost more than a year of an AI tool. That does not make coaching bad; a great coach can c&lt;br&gt;
Common questions&lt;br&gt;
Quick answers.&lt;/p&gt;

&lt;p&gt;Are AI mocks as good as human ones?&lt;br&gt;
How much does a human coach cost?&lt;br&gt;
How often should I do mocks?&lt;br&gt;
Which AI mock tool should I use?&lt;br&gt;
Don't pick a side. Build a rhythm.&lt;br&gt;
The question isn't AI or human. It's what each one is for. Let AI carry the hundreds of repetitions nobody else has patience for, and save human time for the one thing it's uniquely good at: making you feel watched.&lt;/p&gt;

&lt;p&gt;Five nights with AI, one with a person. That rhythm got me further in four weeks than three months of either alone.&lt;/p&gt;

&lt;p&gt;Start AI practice tonight on a free plan&lt;br&gt;
Book one human mock for this weekend&lt;br&gt;
Ask the human to interrupt you on purpose&lt;br&gt;
Fix their notes with AI on Sunday&lt;br&gt;
— Someone who finally learned to talk slower&lt;/p&gt;

&lt;p&gt;Have you ever done a mock with a stranger?&lt;/p&gt;

&lt;p&gt;How did it compare to practising alone?&lt;br&gt;
Some third-party reviews of these tools are published by competing products, so verify prices on official sites before buying.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
