Write a polite but firm email to a landlord who has not fixed the heating for three weeks. I want the repair, not a fight.
MiMo V2.6 Pro
Subject: Heating Repair Request – [Your Address, Unit #] – Unresolved for Three Weeks
Dear [Landlord's Name],
I hope you're doing well. I'm writing to follow up on the heating issue at [address, unit number], which I first reported on [date of first report] and have mentioned again on [dates of follow-ups]. As of today, the heating has been non-functional for three weeks.
With winter temperatures, this has become a serious concern for the habitability and safety of the unit. I'd really like to work with you to get this resolved as quickly as possible.
To make scheduling easy, here is my availability for a repair visit:
[Day/date/time window]
[Day/date/time window]
[Day/date/time window]
I'm happy to provide access at other times with a day's notice, and I can be reached at [phone number] or this email address.
If there's anything you need from me to move this forward—whether it's scheduling flexibility, coordination with a technician, or additional photos of the issue—please let me know. My goal is simply to have working heat as soon as possible.
Could you please confirm by [date, e.g., 48 hours from now] that a repair has been scheduled? If I don't hear back, I'll follow up again, and I may need to explore the repair options available to tenants under [your state/city]'s habitability standards. I'd much prefer to handle this directly with you.
Thank you for your attention to this—I appreciate your help.
Best regards, [Your Name] [Phone Number] [Unit/Address]
A few tips:
Keep a paper trail. This email itself is documentation. If you've called or talked in person before, note those dates in the email (as placeholders above).
Be specific but not emotional. The tone above is cooperative, while still putting a deadline and flagging your rights without issuing a threat.
Save everything. Screenshot the sent email, keep any replies, and note the indoor temperature if it's dangerously cold.
Check your local rules. Some jurisdictions allow tenants to "repair and deduct" or withhold rent after proper notice. Mentioning this lightly (as the email does) often motivates action without escalating.
Want me to adjust the tone (warmer, shorter, more formal) or tailor it to a specific situation?
Asked Nov 1, 2026. Unedited.
Write a React hook that debounces a value and cancels on unmount. Include the TypeScript types.
MiMo V2.6 Pro
import { useEffect, useState, useRef } from 'react';
/**
* Debounces a value so it only updates after a specified delay of
* no further changes. The pending timer is cancelled on unmount.
*
* @template T The type of the value being debounced.
* @param value The value to debounce.
* @param delayMs Delay in milliseconds (default: 300).
* @returns The debounced value (updates only after `delayMs` of silence).
*/
function useDebouncedValue<T>(value: T, delayMs: number = 300): T {
const [debouncedValue, setDebouncedValue] = useState<T>(value);
const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
useEffect(() => {
// Cancel any pending timeout when value changes or on unmount
if (timerRef.current !== null) {
clearTimeout(timerRef.current);
}
timerRef.current = setTimeout(() => {
setDebouncedValue(value);
}, delayMs);
// Cleanup runs on every re-run (value change) AND on unmount
return () => {
if (timerRef.current !== null) {
clearTimeout(timerRef.current);
}
};
}, [value, delayMs]);
return debouncedValue;
}
export default useDebouncedValue;How it works
| Concern | Mechanism |
|---|---|
| Debounce | Every time value changes, a new setTimeout is scheduled. The state is only updated after delayMs has elapsed with no further changes. |
| Cancel on unmount | The useEffect cleanup function clears the pending timeout. This cleanup runs on every dependency change and when the component unmounts. |
| Cancel on rapid changes | Because the previous timer is cleared before creating a new one, rapid successive changes never fire stale updates. |
| Type safety | The generic T propagates from the input value to the returned value — no casting needed. |
Usage example
import { useState } from 'react';
import useDebouncedValue from './useDebouncedValue';
function SearchBar() {
const [query, setQuery] = useState('');
const debouncedQuery = useDebouncedValue(query, 500);
// Only runs when the user pauses typing for 500 ms
useEffect(() => {
if (!debouncedQuery) return;
fetchResults(debouncedQuery);
}, [debouncedQuery]);
return (
<input
value={query}
onChange={(e) => setQuery(e.target.value)}
placeholder="Search…"
/>
);
}Optional: debounce a callback instead
If you need to debounce a function call rather than a value (e.g. an event handler), here is a companion hook that also cancels on unmount:
import { useEffect, useRef, useCallback } from 'react';
function useDebouncedCallback<A extends unknown[]>(
callback: (...args: A) => void,
delayMs: number = 300
): (...args: A) => void {
const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
const callbackRef = useRef(callback);
// Keep the latest callback without re-creating the debounce timer
useEffect(() => {
callbackRef.current = callback;
}, [callback]);
// Cancel pending call on unmount
useEffect(() => {
return () => {
if (timerRef.current !== null) {
clearTimeout(timerRef.current);
}
};
}, []);
return useCallback(
(...args: A) => {
if (timerRef.current !== null) {
clearTimeout(timerRef.current);
}
timerRef.current = setTimeout(() => {
callbackRef.current(...args);
}, delayMs);
},
[delayMs]
);
}This variant uses callbackRef to always invoke the latest version of the callback while keeping the debounce timer stable, and tears down the timer in a dedicated unmount cleanup.
Asked Nov 1, 2026. Unedited.
A drug test is 99% accurate, and 0.5% of people use the drug. Someone tests positive. What is the probability they use it, and why does the answer surprise people?
MiMo V2.6 Pro
The False Positive Paradox
Setting Up the Problem
| Fact | |
|---|---|
| Base rate of drug use | 0.5% of people (1 in 200) |
| Test accuracy (sensitivity) | 99% — correctly flags a user |
| Test accuracy (specificity) | 99% — correctly clears a non-user |
Applying Bayes' Theorem
Imagine a population of 10,000 people:
50 are drug users (0.5% of 10,000)
9,950 are not drug users
Now run the tests:
| True users (50) | Non-users (9,950) | |
|---|---|---|
| Test Positive | 50 × 0.99 = ~50 | 9,950 × 0.01 = ~99 |
| Test Negative | ~0 | ~9,851 |
Total positives: 50 + 99 = 149
$$P(\text{user} \mid \text{positive}) = \frac{50}{149} \approx \textbf{33\%}$$
The probability the person actually uses the drug is only about 1 in 3.
Why This Surprises People
People intuitively think "99% accurate → 99% chance they're a user." The trap is ignoring the base rate:
True positives are rare because users are rare (50 out of 10,000).
False positives are abundant because non-users are the vast majority (99 out of 10,000 falsely flagged).
Even though the false positive rate is tiny (1%), it applies to ~200× more people than the true positive rate.
This is the base rate fallacy: we over-focus on the test's accuracy and under-weight how unlikely the condition was to begin with. The 99% accuracy describes how well the test performs within each group — it does not tell you the chance that a positive result means you have the condition.
Key takeaway: When a condition is rare, even highly accurate tests produce mostly false alarms. The prior probability matters enormously.
Asked Nov 1, 2026. Unedited.
What it’s good at
Ranked against 42 models, from public leaderboards and our own blind tests where we have them. How we rank
- #5of 42 for coding
- #8of 42 for math
- #10of 42 for writing
The facts
MiMo V2.6 Pro is Xiaomi’s largest MiMo model, with open weights. It takes images, audio and video as well as text.
Scores from artificialanalysis.ai and lmarena.ai.
- Made by
- Xiaomi
- API price, per 1M tokens
- $0.43 in, $0.87 out
- Speed
- 56 tokens a second
- Artificial Analysis Index
- 46.3
- LMArena text
- 1,491
- LMArena coding
- 1,533
- Updated
- Oct 26, 2026