<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title>Alireza M. Kamelabad — Life</title><subtitle>Essays and opinions — living in Sweden, culture, film, music, and the occasional argument with the internet.</subtitle><id>https://ali.mk/life/atom.xml</id><link rel="alternate" type="text/html" href="https://ali.mk/life/" /><link rel="self" type="application/atom+xml" href="https://ali.mk/life/atom.xml" /><updated>2026-07-30T00:00:00.000Z</updated><author><name>Alireza M. Kamelabad</name></author><entry><title>Words as Weapons: How Media Framing Shapes the Iran War Narrative</title><id>https://ali.mk/posts/words-as-weapons-how-media-framing-shapes-the-iran-war-narrative/</id><link href="https://ali.mk/posts/words-as-weapons-how-media-framing-shapes-the-iran-war-narrative/" /><published>2026-07-30T00:00:00.000Z</published><updated>2026-07-30T00:00:00.000Z</updated><summary>Why “hit” and “destroyed” dominate coverage of US-Israeli strikes while “intercepted” and “no damage” define Iranian ones — and what that gap in language reveals.</summary><category term="media bias" /><category term="war journalism" /><category term="Iran war coverage" /><category term="media framing" /><category term="battle damage assessment" /><category term="Western media" /><category term="propaganda" /><category term="information war" /><category term="Al Jazeera" /><category term="Pentagon transparency" /><category term="Iran" /><content type="html"><![CDATA[<p>There is a pattern I cannot unsee: when Iran launches missiles, headlines often lead with “intercepted”, “targeted”, or “no damage”. When the US or Israel attacks Iran, the language is more often “hit”, “destroyed”, or “struck”. This difference is not proof that every Iranian claim is true or that every Western report is false. But it does shape what the public assumes before the evidence is fully available.</p>
<h2 id="the-language-gap-is-documented">The Language Gap Is Documented</h2>
<p>This is not only an impression. Analyses of coverage of the Iran–Israel–US confrontation argue that Western reporting frequently presents US and Israeli attacks through a “self-defence” frame while casting Iranian action as “provocation”, with consequences for how legitimacy, aggression, and civilian harm are understood<sup><a href="#user-content-fn-1" id="user-content-fnref-1" data-footnote-ref="" aria-describedby="footnote-label">1</a></sup>. A comparative study of American and European television coverage also found a broad predominance of “war journalism” — coverage that relies heavily on official sources and military frames rather than civilian impact and independent ground verification<sup><a href="#user-content-fn-2" id="user-content-fnref-2" data-footnote-ref="" aria-describedby="footnote-label">2</a></sup>.</p>
<p>Other comparative research identifies a related divide: Western coverage tends to foreground stability, deterrence, and security, while Middle Eastern coverage more often foregrounds sovereignty, historical grievance, and humanitarian consequences<sup><a href="#user-content-fn-3" id="user-content-fnref-3" data-footnote-ref="" aria-describedby="footnote-label">3</a></sup>. Neither lens is neutral. Each selects facts, sources, and language that make a different side’s violence appear more reasonable, necessary, or effective.</p>
<h2 id="intercepted-is-not-a-final-assessment">“Intercepted” Is Not a Final Assessment</h2>
<p>An early statement that a missile was “intercepted” may be accurate in a narrow sense: an air-defence system engaged it. It does not, on its own, establish that every projectile was destroyed, that no debris reached a site, or that there was no damage. Nor does an initial “no damage” claim substitute for a completed battle-damage assessment.</p>
<p>The most reliable record often arrives later, through commercial satellite imagery, geolocation, post-strike photographs, repair activity, casualty reporting, and congressional disclosures. That delay gives official military narratives a major advantage: they become the first headline, while more complicated evidence appears days or weeks later.</p>
<h2 id="the-evidence-that-emerged-later">The Evidence That Emerged Later</h2>
<p>The Washington Post conducted a satellite-imagery investigation using imagery published by Iranian state-affiliated media and independently verified damage to at least 228 structures or pieces of equipment at US military sites. The Post found the extent of damage was substantially greater than what had previously been reported or publicly acknowledged by the US government<sup><a href="#user-content-fn-4" id="user-content-fnref-4" data-footnote-ref="" aria-describedby="footnote-label">4</a></sup>. Reporting on that investigation identified affected assets including hangars, barracks, fuel depots, aircraft, radar, communications, and air-defence equipment across multiple countries<sup><a href="#user-content-fn-5" id="user-content-fnref-5" data-footnote-ref="" aria-describedby="footnote-label">5</a></sup>.</p>
<p>The New York Times separately reported that satellite images released by Iran showed at least 20 structures at US-linked facilities completely or partly destroyed<sup><a href="#user-content-fn-6" id="user-content-fnref-6" data-footnote-ref="" aria-describedby="footnote-label">6</a></sup>. CNN also geolocated imagery showing a severely damaged US Air Force E-3 Sentry early-warning aircraft at Prince Sultan Air Base in Saudi Arabia after an Iranian strike<sup><a href="#user-content-fn-7" id="user-content-fnref-7" data-footnote-ref="" aria-describedby="footnote-label">7</a></sup>. Other CNN reporting based on satellite imagery described damage to the AN/TPY-2 radar component of the THAAD missile-defence system at the same base<sup><a href="#user-content-fn-8" id="user-content-fnref-8" data-footnote-ref="" aria-describedby="footnote-label">8</a></sup>.</p>
<p>These findings do not validate every official Iranian military claim. They do demonstrate that early accounts centered on “interception” and “no damage” did not tell the full story.</p>
<h2 id="the-money-trail-matters">The Money Trail Matters</h2>
<p>The question becomes even harder to dismiss when looking at the cost of the war. Pentagon comptroller Jules Hurst acknowledged during congressional questioning that the department’s public $29 billion war-cost figure did not include a final accounting of damage to US installations; when pressed, the Pentagon did not provide a complete figure<sup><a href="#user-content-fn-9" id="user-content-fnref-9" data-footnote-ref="" aria-describedby="footnote-label">9</a></sup>. Senator Patty Murray described the estimate as “suspiciously low” and criticized the lack of transparency over damage to US facilities<sup><a href="#user-content-fn-9" id="user-content-fnref-9-2" data-footnote-ref="" aria-describedby="footnote-label">9</a></sup>.</p>
<p>Senate Democrats later urged investigators to examine the Pentagon’s accounting. USA Today reported that outside analysts and congressional sources estimated repair and replacement costs — including battle damage not captured in the official figure — could add roughly $15–25 billion<sup><a href="#user-content-fn-10" id="user-content-fnref-10" data-footnote-ref="" aria-describedby="footnote-label">10</a></sup>. The discrepancy does not prove deliberate deception in every case, but it strongly suggests that initial public estimates were incomplete.</p>
<h2 id="why-this-narrative-persists">Why This Narrative Persists</h2>
<p>There are practical reasons for the gap. Battle-damage assessment takes time, and militaries often withhold operational details for security reasons. But there are political reasons too: acknowledging effective Iranian strikes challenges claims of overwhelming air-defence superiority, raises the visible costs of the war, and weakens public confidence in escalation.</p>
<p>That creates a recurring informational sequence: an Iranian strike is immediately described as “intercepted” or ineffective; days later, satellite imagery, local evidence, or financial disclosures reveal a more serious outcome. By then, the first headline has already shaped the public impression.</p>
<h2 id="whose-media-whose-narrative">Whose Media, Whose Narrative</h2>
<p>Iranian state media is not neutral. It has obvious incentives to inflate Iran’s military effectiveness and suppress its own losses. But US and allied official statements should not be treated as neutral final verdicts either, especially when later independent imagery and reporting contradict the first account.</p>
<p>The deeper imbalance is one of reach and agenda-setting. American and allied outlets dominate the English-language information environment, with far greater resources, access to officials, and syndication power than Iranian domestic media. That influence helps establish which vocabulary becomes normal: US and Israeli attacks “hit”; Iranian attacks are “intercepted”, “targeted”, or said to have caused “no damage”.</p>
<p>The responsible response is not to reverse the bias and accept every Iranian claim uncritically. It is to treat all same-day military claims as provisional, distinguish official assertions from independently verified evidence, and revisit early headlines when the satellite record, repair data, and human consequences become visible. In war, the first account is often the most politically useful one — not necessarily the most complete.</p>
<section data-footnotes="" class="footnotes"><h2 class="sr-only" id="footnote-label">Footnotes</h2>
<ol>
<li id="user-content-fn-1">
<p><a href="https://institute.aljazeera.net/en/ajr/article/3575">Al Jazeera Media Institute — “Missiles Made of Words: How Western Media Narratives Shape the Iran–Israel–US Conflict”</a> <a href="#user-content-fnref-1" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-2">
<p><a href="https://peerianjournal.com/index.php/tpj/article/view/1199">The Peerian Journal — “The Role of Framing in Reframing Conflict: A Comparative Quantitative Content Analysis of American and European Television Coverage of the 2025 Iran-Israel War”</a> <a href="#user-content-fnref-2" data-footnote-backref="" aria-label="Back to reference 2" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-3">
<p><a href="https://qrjsocial.com/index.php/38/article/view/987">Qualitative Research Journal for Social Studies — “Bias and Ideology in Western and Middle Eastern Media Coverage of the Iran–Israel War”</a> <a href="#user-content-fnref-3" data-footnote-backref="" aria-label="Back to reference 3" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-4">
<p><a href="https://www.washingtonpost.com/investigations/2026/05/06/iran-us-bases-satellite-images/">The Washington Post — “Iran has hit far more U.S. military assets than reported, satellite images show”</a> <a href="#user-content-fnref-4" data-footnote-backref="" aria-label="Back to reference 4" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-5">
<p><a href="https://www.middleeasteye.net/news/satellite-imagery-suggests-far-more-us-middle-east-sites-hit-iran-reported">Middle East Eye — “Satellite imagery suggests far more US assets in Middle East hit by Iran than reported”</a> <a href="#user-content-fnref-5" data-footnote-backref="" aria-label="Back to reference 5" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-6">
<p><a href="https://www.nytimes.com/2026/07/22/world/middleeast/iran-war-us-bases-images.html">The New York Times — “What Visuals Show About Recent Damage to U.S. Military Bases”</a> <a href="#user-content-fnref-6" data-footnote-backref="" aria-label="Back to reference 6" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-7">
<p><a href="https://www.cnn.com/2026/03/30/us/video/us-aircraft-damaged-saudi-vrtc">CNN — “Images show vital US radar aircraft damaged after Iranian strike”</a> <a href="#user-content-fnref-7" data-footnote-backref="" aria-label="Back to reference 7" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-8">
<p><a href="https://fakti.bg/en/world/1045941-cnn-iran-hits-key-us-missile-defense-radar-at-saudi-air-base">CNN reporting, summarized by Fakti — “Iran hits key US missile defense radar at Saudi air base”</a> <a href="#user-content-fnref-8" data-footnote-backref="" aria-label="Back to reference 8" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-9">
<p><a href="https://www.pbs.org/newshour/politics/watch-murray-calls-pentagons-iran-war-cost-estimate-suspiciously-low-presses-for-damage-price-tag">PBS NewsHour — “Murray calls Pentagon’s Iran war cost estimate ‘suspiciously low,’ presses for damage price tag”</a> <a href="#user-content-fnref-9" data-footnote-backref="" aria-label="Back to reference 9" class="data-footnote-backref">↩</a> <a href="#user-content-fnref-9-2" data-footnote-backref="" aria-label="Back to reference 9-2" class="data-footnote-backref">↩<sup>2</sup></a></p>
</li>
<li id="user-content-fn-10">
<p><a href="https://www.usatoday.com/story/news/politics/2026/05/28/senate-democrats-iran-war-cost-letter/90278167007/">USA Today — “Senate Dems urge investigators to check Pentagon’s math on Iran war”</a> <a href="#user-content-fnref-10" data-footnote-backref="" aria-label="Back to reference 10" class="data-footnote-backref">↩</a></p>
</li>
</ol>
</section>]]></content></entry><entry><title>When Fine Print Fails: How We Took On an Airline’s (Jetstar) &quot;Final Position&quot;</title><id>https://ali.mk/posts/2026-07-21-when-fine-print-fails-how-we-took-on-an-airlines-final-position/</id><link href="https://ali.mk/posts/2026-07-21-when-fine-print-fails-how-we-took-on-an-airlines-final-position/" /><published>2026-07-21T00:00:00.000Z</published><updated>2026-07-21T00:00:00.000Z</updated><summary>The story of how I got a full refund for a Jetstar flight cancelled due to weather.</summary><category term="Legal" /><category term="Jetstar" /><category term="Consumer rights" /><category term="Airline refunds" /><category term="Australia" /><content type="html"><![CDATA[<p>We were scheduled to fly from Melbourne to Brisbane on Jetstar Flight JQ568. A major cyclone (I think it was called Alfred) hit on March 6, the flight was suddenly pulled, and our travel plans were instantly wiped out. Basically, the beach of Brisbane was no more after the cyclone 🌀🤦🏻. Unheard of in the last 50 years 😐 (speaking of luck)</p>
<p>While weather cancellations are an unfortunate reality of travel, but in the EU at least we are used to just get a refund for our flight and call it a bad luck. So I was very surprised that it was not the case in Australia. What followed was a masterclass in corporate stonewalling—and an empowering reminder of why knowing your legal rights actually matters.</p>
<h2 id="the-offer-we-couldnt-use">The Offer We Couldn’t Use</h2>
<p>Shortly after the cancellation, Jetstar sent a notification and offered us their standard resolution: <strong>a credit voucher</strong>.</p>
<p>For local Australian frequent flyers, a voucher might be a fair compromise (depending on what you consider fair). But as residents of another continent, a domestic Australian flight credit is completely useless to us. I contacted their support team and requested what made sense: a full monetary refund for both of our bookings.</p>
<p>The initial support experience was incredibly frustrating. When I pressed for a refund, their live chat agent abruptly ended the session without notice, completely shutting down the conversation. Escalating the issue to Jetstar’s resolutions team only resulted in a firm <strong>“No.”</strong></p>
<p>They cited <strong>Clause 8.2</strong> of their <em><a href="https://www.jetstar.com/us/en/conditions-of-carriage-jq">Conditions of Carriage</a></em><sup><a href="#user-content-fn-1" id="user-content-fnref-1" data-footnote-ref="" aria-describedby="footnote-label">1</a></sup>:</p>
<blockquote>
<p>8.2 Changes due to Events Beyond Our Control</p>
<p>Where we make a Significant Change to your flight due to an Event Beyond Our Control, whether you have checked in or not, we will:</p>
<ul>
<li>use reasonable endeavours to rebook you on the next available flight on our services at no additional cost to you; or</li>
<li>alternatively, if we are unable to rebook you on services acceptable to you, we will provide you with a flight credit where the purpose of your trip cannot be achieved.</li>
</ul>
</blockquote>
<p>Claiming that because the disruption was caused by weather (an “Event Beyond Our Control”), their policy stated they were not obligated to issue cash refunds. To drive the point home, their agent quoted the clause in an email and declared that this was their <strong>“final position,”</strong> effectively stonewalling us and stating they would no longer respond to further inquiries.</p>
<p>Case closed? Not quite. It just sounded outrageous to me and I could not accept that.</p>
<h2 id="spotting-the-omission-in-the-fine-print">Spotting the Omission in the Fine Print</h2>
<p>Instead of taking “final position” for an answer, I decided to pull up Jetstar’s actual <em>Conditions of Carriage</em> to read Clause 8.2 line by line.</p>
<p>That’s when I noticed something glaring.</p>
<p>In their email denying our refund, the agent quoted the clause but conveniently stopped short right before the final sentence. The actual clause ends with a crucial caveat stating:</p>
<blockquote>
<p><em>“You may also have rights to remedies under applicable law.”</em><sup><a href="#user-content-fn-2" id="user-content-fnref-2" data-footnote-ref="" aria-describedby="footnote-label">2</a></sup></p>
</blockquote>
<p>By deliberately leaving out that sentence, they were presenting their internal policy as absolute truth while hiding the very legal escape hatch built into it.</p>
<h2 id="the-legal-grounding-australian-consumer-law">The Legal Grounding: Australian Consumer Law</h2>
<p>Under the <a href="https://www.accc.gov.au/consumers/specific-products-and-activities/travel-delays-and-cancellations">Australian Consumer Law (ACL)</a><sup><a href="#user-content-fn-3" id="user-content-fnref-3" data-footnote-ref="" aria-describedby="footnote-label">3</a></sup>, travel services automatically come with basic consumer rights known as consumer guarantees. One of these is the guarantee that services will be provided within a reasonable time.</p>
<p>When a business sells a product or service that fails to meet these consumer guarantees, it is legally required to offer the consumer a solution. A “<strong>major failure</strong>” occurs when a service is substantially unfit for purpose and cannot be fixed within a reasonable time, which entitles the consumer to choose between a replacement or a full refund.<sup><a href="#user-content-fn-4" id="user-content-fnref-4" data-footnote-ref="" aria-describedby="footnote-label">4</a></sup></p>
<p>Crucially, <em>an airline’s internal compensation policy does not replace the consumer guarantees that automatically apply</em>. In short: internal terms and conditions cannot strip away statutory consumer protections.</p>
<h2 id="taking-action-the-final-resolution">Taking Action: The Final Resolution</h2>
<p>With the law clearly on our side, I prepared a multi-pronged strategy:</p>
<ol>
<li><strong>The Formal Complaints:</strong> I didn’t just threaten to report them; I actually lodged formal complaints with the <a href="https://www.airlinecustomeradvocate.com.au/">Airline Customer Advocate (ACA)</a><sup><a href="#user-content-fn-5" id="user-content-fnref-5" data-footnote-ref="" aria-describedby="footnote-label">5</a></sup> and the <a href="https://www.accc.gov.au/">Australian Competition and Consumer Commission (ACCC)</a>. Interestingly, while the ACA initially deemed the complaint ineligible, the sheer act of filing it triggered an internal escalation at Jetstar. My case was finally moved out of the standard “Resolutions” queue and handed over to their Customer Advocacy Team.</li>
</ol>
<p>In case if you wonder why ACA complaint was deemed ineligible initially was because Jetstar had not closed the support case in their system yet. ACA needs your case to have been concluded without a desired resolution first, to take up the case.</p>
<p><img src="/assets/images/image.png" alt="The email from Jetstar after ACA complaint."></p>
<ol start="2">
<li><strong>The Chargeback Dispute:</strong> Since Jetstar had declared they were closing the case on their end, I also took the matter directly to our payment provider, <a href="https://www.klarna.com/">Klarna</a>. I opened a dispute on the grounds of <strong>“Services Not Rendered,”</strong> providing them with the full email transcript showing Jetstar’s refusal to refund and the legal argument demonstrating the airline’s failure to fulfill its statutory obligations.</li>
</ol>
<h3 id="the-airline-backs-down">The Airline Backs Down</h3>
<p>Once escalated to the Customer Advocacy Team, a new case manager reached out. For the first time, someone acknowledged our situation. She noted that we reside in Sweden and requested official supporting documentation confirming our residency. I immediately sent over our public registry extracts from the Swedish Tax Agency (<em>Skatteverket</em>).</p>
<p>Within days, we received the email we had been fighting for. Jetstar stated: <em>“As a gesture of goodwill, we will proceed with a full refund for both bookings.”</em> (They still couldn’t admit they were legally obligated, wrapping it in “goodwill” instead).</p>
<p>While there were still some frustrating delays that required a few more follow-up chats to get their finance team to process the transactions, the funds finally cleared. I received the full cash refunds back to my PayPal and Klarna accounts across July and August.</p>
<p>Ironically, Klarna had actually closed my dispute in the merchant’s favor at one point because I missed an email requesting further evidence—but it didn’t matter Jetstar had already conceded and initiated the refunds on their end anyway.</p>
<h2 id="the-aftermath-a-quiet-policy-update">The Aftermath: A Quiet Policy Update</h2>
<p>Perhaps the most satisfying part of this entire ordeal happened after the dust settled. Out of curiosity, I checked Jetstar’s website again and noticed that they had quietly updated Clause 8.2.</p>
<p>The clause now explicitly includes the very laws they originally tried to ignore:</p>
<p>“…including the <a href="https://www.jetstar.com/au/en/help/australian-consumer-law-information">Australian Consumer Law</a>, the New Zealand Consumer Law, the Convention and/or the Civil Aviation Law (NZ). We will not be responsible for paying any costs or expenses you may incur as a result of the delay or cancellation, unless otherwise required by applicable laws, such as the <a href="https://www.jetstar.com/au/en/help/australian-consumer-law-information">Australian Consumer Law</a>, the New Zealand Consumer Law, the Convention and/or the Civil Aviation Law (NZ).”</p>
<p>It’s proof that pushing back works. They knew their original framing was misleading, and our dispute forced them to clarify their obligations in their public-facing terms.</p>
<h3 id="key-takeaways-for-travelers">Key Takeaways for Travelers</h3>
<ul>
<li><strong>Company policy is not law:</strong> A contract or terms-of-service page cannot void your statutory consumer rights.</li>
<li><strong>Read the full clause:</strong> Companies often quote their policies selectively to protect their bottom line. Always verify the source text yourself.</li>
<li><strong>Document everything:</strong> Save emails, chat logs, booking references, and cancellation notices.</li>
<li><strong>Use your payment protections:</strong> If a merchant refuses a lawful refund after failing to provide a service, leverage your bank or payment provider for a chargeback.</li>
</ul>
<p>Standing up for your consumer rights takes effort, but holding companies accountable is always worth the fight</p>
<hr>
<section data-footnotes="" class="footnotes"><h2 class="sr-only" id="footnote-label">Footnotes</h2>
<ol>
<li id="user-content-fn-1">
<p><a href="https://www.jetstar.com/us/en/conditions-of-carriage-jq">Jetstar Conditions of Carriage, Clause 8.2</a>  Outlines Jetstar’s policy on delays and cancellations due to “Events Beyond Our Control”. <a href="#user-content-fnref-1" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-2">
<p>Jetstar Conditions of Carriage, Clause 8.2 explicitly notes that terms do not override statutory rights under national law. <a href="#user-content-fnref-2" data-footnote-backref="" aria-label="Back to reference 2" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-3">
<p><a href="https://www.accc.gov.au/consumers/specific-products-and-activities/travel-delays-and-cancellations">ACCC: Travel Delays and Cancellations</a>  Explains that consumer guarantees automatically apply to travel services and cannot be replaced by internal airline policies. <a href="#user-content-fnref-3" data-footnote-backref="" aria-label="Back to reference 3" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-4">
<p>Australian Consumer Law (ACL), Schedule 2 of the <em>Competition and Consumer Act 2010</em>. <a href="#user-content-fnref-4" data-footnote-backref="" aria-label="Back to reference 4" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-5">
<p><a href="https://www.airlinecustomeradvocate.com.au/">Airline Customer Advocate (ACA)</a>  A free and independent service facilitating the resolution of unresolved complaints about major Australian airlines. <a href="#user-content-fnref-5" data-footnote-backref="" aria-label="Back to reference 5" class="data-footnote-backref">↩</a></p>
</li>
</ol>
</section>]]></content></entry><entry><title>The (rotten) Apple Illusion</title><id>https://ali.mk/posts/2026-07-14-the-rotten-apple-illusion/</id><link href="https://ali.mk/posts/2026-07-14-the-rotten-apple-illusion/" /><published>2026-07-14T00:00:00.000Z</published><updated>2026-07-14T00:00:00.000Z</updated><summary>How the EU Standoff Exposed a Walled Garden of Disrespect</summary><category term="Apple" /><category term="DMA" /><category term="European Union (EU)" /><content type="html"><![CDATA[<p>As a tech enthusiast, I’ve always believed in experimenting with different ecosystems to find the best tools for my daily life and workflow. Up until early 2025, I was fully immersed in the Samsung ecosystem. My Galaxy S22 Plus, Galaxy Tab S8 Plus, and Buds Pro worked flawlessly together. They were cutting-edge, unrestricted, and constantly evolving with new AI integrations.</p>
<p>But I wanted to experience the legendary “Apple magic.” I wanted to see what the absolute pinnacle of their hardware and software integration felt like.</p>
<p>So, in March 2025, I made a massive financial commitment. I went all-in, purchasing the iPhone 16 Pro, an iPad Pro M4, AirPods Pro 2nd Gen, an Apple TV, AirTags, and an Apple Pencil Pro. These flagship devices were significantly more expensive than my Samsung setup, but I was buying into a promise: seamless integration, premium performance, and the highly anticipated “Apple Intelligence” they had promised would revolutionize their platforms.<sup><a href="#user-content-fn-1" id="user-content-fnref-1" data-footnote-ref="" aria-describedby="footnote-label">1</a></sup></p>
<p>It didn’t take long for the buyer’s remorse to set in.</p>
<hr>
<h2 id="a-timeline-of-broken-promises">A Timeline of Broken Promises</h2>
<p>The initial failure was Apple’s inability to deliver Apple Intelligence on time. When iOS 18 rolled out, instead of stepping into the future, I felt like I had been thrown four years back in time. The capabilities of my brand-new, premium iPhone 16 Pro were fundamentally lagging behind what my older Samsung S22 Plus was doing before Gemini even became a standard feature.</p>
<p>Then came the iOS 26 cycle. Apple heavily marketed a suite of new features, but as a user living in the European Union, I quickly realized the fine print: the best features were either locked to US English or completely geoblocked in the EU. Features as simple as iPhone Mirroring were stripped from my multi-thousand-euro devices.<sup><a href="#user-content-fn-2" id="user-content-fnref-2" data-footnote-ref="" aria-describedby="footnote-label">2</a></sup></p>
<p>But today was the breaking point.</p>
<p>I recently updated to the iOS 27 beta, eager to finally experience the revamped Siri interface and the next-generation AI features Apple has been showcasing. After installing the update, I searched everywhere. Nothing. The new Siri experience was completely missing.</p>
<p>After digging through Apple’s official statements and reading through frustrating Reddit threads, the reality hit me: Apple has intentionally blocked the new Siri AI in the EU.<sup><a href="#user-content-fn-3" id="user-content-fnref-3" data-footnote-ref="" aria-describedby="footnote-label">3</a></sup></p>
<p>Their justification? The European Union’s Digital Markets Act (DMA).<sup><a href="#user-content-fn-4" id="user-content-fnref-4" data-footnote-ref="" aria-describedby="footnote-label">4</a></sup></p>
<hr>
<h2 id="the-regulatory-standoff-privacy-as-a-weapon">The Regulatory Standoff: Privacy as a Weapon</h2>
<p>Under the DMA, gatekeeper companies like Apple are required to allow interoperability. If Apple gives its own AI (Siri) deep, system-level hooks into iOS to read context, messages, and screen data, the EU dictates they must offer a secure way for third-party assistants to have that same access.</p>
<p>In June 2026, Apple proposed a “Trusted System Agent” to act as a middleman for this data, which the European Commission rejected.<sup><a href="#user-content-fn-5" id="user-content-fnref-5" data-footnote-ref="" aria-describedby="footnote-label">5</a></sup> Following a major court loss on July 8, 2026, where Europe’s General Court upheld the DMA’s strict gatekeeper rules against Apple’s appeals,<sup><a href="#user-content-fn-6" id="user-content-fnref-6" data-footnote-ref="" aria-describedby="footnote-label">6</a></sup> Apple threw its hands up. Instead of complying, they took their ball and went home, indefinitely blocking the new Siri AI for the entire European market.</p>
<p>Apple’s public defense is entirely predictable: <em>Privacy and Security</em>. They claim that granting third-party AIs the deep system access required by the DMA is fundamentally dangerous, arguing that it is impossible to mitigate the risks of bad actors scraping user data.</p>
<p>But when you actually scrutinize this argument, it completely falls apart under basic technical and logical analysis.</p>
<h4 id="1-the-solvable-engineering-problem-the-waterfall-proxy-solution">1. The Solvable Engineering Problem (The Waterfall Proxy Solution)</h4>
<p>Apple’s claim that it is “impossible” to safely comply with the interoperability rules is an insult to their users’ intelligence. As anyone with a background in software web development knows, secure data isolation and intermediary routing are highly solvable problems.</p>
<p>Instead of allowing third-party AI systems direct, unfettered access to core system hooks, Apple could easily engineer a <strong>waterfall proxy architecture</strong> at the OS level. This middle layer would sequentially intercept, authenticate, and safely sandbox third-party AI requests before routing them to system apps. It would act as a secure buffer, ensuring external assistants never directly touch raw underlying data. Apple has the best software engineering talent in the world; they didn’t fail to build this because it was a technical impossibility. They failed because they chose to spend their resources paying lawyers to fight the EU in court, hoping to protect their monopoly.</p>
<h4 id="2-the-patronizing-consent-argument">2. The Patronizing “Consent” Argument</h4>
<p>Apple’s stance relies on the idea that users are fundamentally incapable of managing their own risks. In modern software, we already use a robust “inform and opt-in” model. iOS asks us explicitly if we want to grant an app access to our camera, our location, or our microphone.</p>
<p>If Apple genuinely cared about user choice, they could implement a clear, highly specific warning screen:</p>
<blockquote>
<p><em>“Warning: Granting this third-party AI system access allows it to process your screen and personal data. Proceed at your own risk.”</em></p>
</blockquote>
<p>Let the user decide. Instead, Apple’s logic is patronizing: <em>We don’t trust you to make the right choice with your own hardware, so we are stripping the feature entirely.</em></p>
<h4 id="3-the-macos-hypocrisy">3. The macOS Hypocrisy</h4>
<p>The most glaring hole in Apple’s defense is macOS. On a Mac, you can download whatever third-party software you want from the open web, grant it deep accessibility permissions to read your screen, and Apple trusts you to manage it. macOS is currently exempt from the DMA’s strictest mobile gatekeeper rules, so Apple allows this freedom there.<sup><a href="#user-content-fn-7" id="user-content-fnref-7" data-footnote-ref="" aria-describedby="footnote-label">7</a></sup> The “unmitigated danger” they claim exists on iOS mysteriously vanishes when it comes to their desktop operating system.</p>
<hr>
<h2 id="double-gatekeeping-software-blocks-and-hardware-taxes">Double Gatekeeping: Software Blocks and Hardware Taxes</h2>
<p>To make matters worse, Apple is running a double-gatekeeping scheme. Even if you live outside the EU and can access these features, Apple has weaponized software updates to force a hardware super-cycle.</p>
<p>While the baseline requirement for Apple Intelligence started at the iPhone 15 Pro, running the localized, advanced voice models introduced for iOS 27 now requires devices with at least 12GB of RAM<sup><a href="#user-content-fn-8" id="user-content-fnref-8" data-footnote-ref="" aria-describedby="footnote-label">8</a></sup>—conveniently locking out users who bought flagships just a year or two ago. They are squeezing users on hardware requirements while simultaneously cutting off software access for an entire continent.</p>
<p>Meanwhile, competitors like Google and Samsung actually chose to respect their users. They adapted to the EU’s regulations, pushed Gemini and Galaxy AI to their European customers, and even backported advanced features to older hardware like the S22 series.<sup><a href="#user-content-fn-9" id="user-content-fnref-9" data-footnote-ref="" aria-describedby="footnote-label">9</a></sup> They played by the rules and delivered the technology.</p>
<hr>
<h2 id="prediction-the-long-walk-to-2027">Prediction: The Long Walk to 2027</h2>
<p>Where does this leave us? Right now, Apple is playing a corporate game of chicken, using millions of European users as leverage to pressure regulators. But Europe is too massive a market for Apple to permanently offer a degraded, second-rate product.</p>
<p>My prediction is that Apple will eventually be forced to cave, but it won’t be quick. They will likely spend the rest of 2026 licking their wounds from their recent court defeat. Only then will they quietly begin engineering the secure proxy APIs they should have built in the first place. We likely won’t see the new Siri experience unlocked in the EU until a major point-update like iOS 27.5, or alongside iOS 28 in <strong>mid-to-late 2027</strong>.</p>
<hr>
<h2 id="time-to-exit-the-walled-garden">Time to Exit the Walled Garden</h2>
<p>This entire saga is a masterclass in corporate disrespect. I paid an incredible premium to enter this ecosystem, expecting a company that delivers on its promises. Instead, I was handed an artificially crippled device, caught in the crossfire of a political standoff that Apple manufactured by refusing to innovate within the law.</p>
<p>As a tech enthusiast who just wanted to experience their take on the future of computing, they have devastatingly failed me. I refuse to hold onto devices that treat me like a second-class consumer while a four-year-old Samsung phone handles modern AI workflows with ease.</p>
<p>I am officially done waiting. It is time to offload my Apple devices on the secondary market, liquidate the Apple stock in my portfolio, and return to an ecosystem that actually functions, respects its users, and innovates without holding its customers hostage.</p>
<hr>
<section data-footnotes="" class="footnotes"><h2 class="sr-only" id="footnote-label">Footnotes</h2>
<ol>
<li id="user-content-fn-1">
<p><a href="https://www.apple.com/newsroom/2024/06/apple-introduces-apple-intelligence-for-iphone-ipad-and-mac/">Apple introduces Apple Intelligence</a> (Apple Newsroom, WWDC 2024 announcement). <a href="#user-content-fnref-1" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-2">
<p><a href="https://www.cnbc.com/2024/06/21/apple-says-it-wont-roll-out-ai-features-in-europe-due-to-regulatory-concerns.html">Apple says it won’t roll out AI features in Europe due to regulatory concerns</a> (CNBC, June 21, 2024 — details the initial EU delay of Apple Intelligence, iPhone Mirroring, and SharePlay). <a href="#user-content-fnref-2" data-footnote-backref="" aria-label="Back to reference 2" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-3">
<p><a href="https://www.apple.com/newsroom/2026/06/due-to-dma-siri-ai-delayed-in-eu-for-ios-27-and-ipados-27/">Due to DMA, Siri AI delayed in EU for iOS 27 and iPadOS 27</a> (Apple Newsroom, June 8, 2026 — Apple’s own statement confirming Siri AI ships on macOS 27 and visionOS 27 but not iOS 27, iPadOS 27, or watchOS 27 in the EU). <a href="#user-content-fnref-3" data-footnote-backref="" aria-label="Back to reference 3" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-4">
<p><a href="https://commission.europa.eu/strategy-and-policy/priorities-2019-2024/europe-fit-digital-age/digital-markets-act-ensuring-fair-and-open-digital-markets_en">The Digital Markets Act: ensuring fair and open digital markets</a> (European Commission official overview). <a href="#user-content-fnref-4" data-footnote-backref="" aria-label="Back to reference 4" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-5">
<p><a href="https://www.macrumors.com/2026/06/09/eu-says-decision-not-to-launch-siri-ai-in-europe-is-apples/">EU Says Decision Not to Launch Siri AI in Europe Is Apple’s Alone</a> (MacRumors, June 9, 2026 — reports that the Commission says Apple never submitted a concrete Trusted System Agent proposal and instead sought a blanket exemption from its interoperability obligations, which the Commission does not offer). <a href="#user-content-fnref-5" data-footnote-backref="" aria-label="Back to reference 5" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-6">
<p><a href="https://www.macrumors.com/2026/07/08/apple-loses-eu-fight-app-store-gatekeeper-label/">Apple Loses EU Fight Over App Store Gatekeeper Label</a> (MacRumors, July 8, 2026); see also the <a href="https://curia.europa.eu/site/upload/docs/application/pdf/2026-07/cp260096en.pdf">General Court’s official press release</a> (Court of Justice of the European Union, July 2026), confirming the General Court dismissed Apple’s challenge to its gatekeeper designation for the App Store and iOS. <a href="#user-content-fnref-6" data-footnote-backref="" aria-label="Back to reference 6" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-7">
<p><a href="https://dataconomy.com/2026/07/09/eu-court-rejects-apple-digital-markets-act-gatekeeper-tag/">Apple loses EU court fight over App Store ‘gatekeeper’ status</a> (Dataconomy, July 9, 2026 — notes macOS has not been designated a core platform service under the DMA, unlike iOS); corroborated by Apple’s own <a href="https://www.apple.com/newsroom/2026/06/due-to-dma-siri-ai-delayed-in-eu-for-ios-27-and-ipados-27/">June 2026 statement</a> that Siri AI shipped on macOS 27 in the EU while withheld from iOS 27 and iPadOS 27. <a href="#user-content-fnref-7" data-footnote-backref="" aria-label="Back to reference 7" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-8">
<p><a href="https://www.macrumors.com/2026/06/08/most-powerful-on-device-ai-now-requires-iphone-17-pro-or-air/">Apple’s Most Powerful On-Device AI Now Requires iPhone 17 Pro or iPhone Air</a> (MacRumors, June 8, 2026 — the most advanced on-device model in iOS 27 requires 12GB of unified memory, up from the previous 8GB Apple Intelligence baseline, excluding devices like the base iPhone 17). <a href="#user-content-fnref-8" data-footnote-backref="" aria-label="Back to reference 8" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-9">
<p><a href="https://news.samsung.com/global/samsung-brings-galaxy-ai-to-more-galaxy-devices">Samsung brings Galaxy AI to more Galaxy devices</a> (Samsung Newsroom — officially backporting AI features to the Galaxy S22 series). <a href="#user-content-fnref-9" data-footnote-backref="" aria-label="Back to reference 9" class="data-footnote-backref">↩</a></p>
</li>
</ol>
</section>]]></content></entry><entry><title>Three Doors: Announcing the New Site</title><id>https://ali.mk/posts/announcing-the-new-site/</id><link href="https://ali.mk/posts/announcing-the-new-site/" /><published>2026-07-07T00:00:00.000Z</published><updated>2026-07-07T00:00:00.000Z</updated><summary>Why ali.mk is now a house with three doors instead of one crowded room.</summary><category term="design" /><category term="meta" /><category term="personal site" /><category term="astro" /><content type="html"><![CDATA[<p>I started the journey of having a personal web footprint with my first website <code>horotat.com</code>. That is right after the time that I passed the course <strong>Web Design</strong> during my bachelor’s. I started from wordpress, the moved to pure <code>HTML</code>, and adding <code>CSS</code> to it later on. I have always wanted an effective, personal, and customized digital presence. But for many years, I was very confused as in, what do I really want from my personal website. Since for now, I am in academia, this was a perfect opportunity for me to establish a real base for presenting myself properly in the scientific society. That is when I discovered <code>Jekyll</code> around 2018. I moved to <code>Jekyll</code> using <em>GitHub Pages</em> to deploy my static, fast website. After exploring much, I endded up with the amazing <a href="https://chirpy.cotes.page/posts/getting-started/">Chirpy</a> theme. It has a great active commmunity around it who are taking it forward to date, and make it even better.</p>
<p>In the meantime, I figured out the north macedonian domain of <code>.mk</code> which was the exact initials of my last name (<strong>M</strong>ahmoudi <strong>K</strong>amelabad) and I noticed that my short and long first names (ali and alireza) are both available for this domain so I quickly grabbed them and I love them very much. I must say, I have never seen a better personal website domain than mine! So I became: <a href="https://ali.mk">ali.mk and alireza.mk</a>.</p>
<p>As I grew and did my career and personality, I felt that I need more than one dimension to present online, each of which have their own audience; yet, the information of each would mostly be noise for the other ones---a recruiter scrolling past political essays to find my CV, a fellow researcher wading through film reviews to find a publication, a friend getting a wall of BibTeX before the actual writing. Everyone got the whole of me, whether they’d asked for it or not. It worked, technically. It never quite felt right. That is where the idea of the three door came from.</p>
<p>The people I needed to talk to are:</p>
<ol>
<li><strong>Professionals Hiring</strong>: who would want to quickly get to know about my skills, passion, and match for their workflow and business.</li>
<li><strong>Academics</strong>: the fellow researchers and scientists who can access my papers, resources, and contributions to science.</li>
<li><strong>Readers and Followers</strong>: a place where I could publish my non-academic writings, whether political, opinion, diary, etc.</li>
</ol>
<p>The new site fixes that by not trying to be one thing. The root page is a <strong>threshold</strong> — you pick a door, and each door opens onto a self-contained room that never cross-surfaces the others’ content:</p>
<ul>
<li><strong><a href="/research/">/research</a></strong> — publications, field notes, the academic CV. For fellow researchers.</li>
<li><strong><a href="/work/">/work</a></strong> — experience, toolbox, craft notes, the availability line. For people hiring.</li>
<li><strong><a href="/life/">/life</a></strong> — essays (politics and opinion included), the shelf of films and shows, the running/hiking log, the parts of me that don’t belong on a CV.</li>
</ul>
<p>Nothing is hidden — everything is still public and indexed — the separation is about <em>surfacing</em>, not secrecy. A recruiter reading Work is simply never pitched an essay about closing my Twitter account; a reader in Life is never handed a CV. The only threads back are the wordmark, which always returns to the threshold, and a quiet footer line: “elsewhere in the house.”</p>
<h3 id="the-design-language">The design language</h3>
<p>Once the three-room idea was settled, the visual language had to do two contradictory things: read as one coherent person, and let each room have its own temperament. The solve was to fix almost everything — type, spacing, the warm paper-and-ink base — and let exactly one thing vary: an accent color per room, used sparingly enough that color still <em>means</em> something (“which room am I in”) instead of just decorating the page.</p>
<p>Type is doing more work than color, actually. Headlines and the wordmark are set in <strong>Instrument Serif</strong>, with the occasional word breaking into italic — <em>Research</em> — a signature move I made myself use sparingly, at most once per view, after an early draft turned it into a tic. Long-form essay text sits in <strong>Newsreader</strong>, sized and leaded for actual reading rather than scanning. Numerals — years in a publication list, in a BibTeX block — get <strong>JetBrains Mono</strong>, and nowhere else; an earlier pass had mono-caps in the navigation and it immediately read as a developer’s terminal rather than someone’s front door, so that idea died fast.</p>
<blockquote>
<p>Color always means “which room am I in,” never decoration.</p>
</blockquote>
<p>Research got a blue that reads scholarly and a little cold on purpose; Work got a green that’s meant to feel dependable; Life got a warm orange-red, on paper that warms half a shade to match. Dark mode isn’t an inversion — it’s a second, separately tuned palette, system-synced by default with a manual override that remembers your choice.</p>
<p>The tokens themselves, for anyone curious enough to check the CSS:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="css"><code><span class="line"><span style="color:#6A737D">/* base — light */</span></span>
<span class="line"><span style="color:#E1E4E8">--paper: </span><span style="color:#FDAEB7;font-style:italic">#F7F2E9;</span><span style="color:#E1E4E8">  --ink: </span><span style="color:#FDAEB7;font-style:italic">#1C1712</span><span style="color:#E1E4E8">;  --ink-2: </span><span style="color:#FDAEB7;font-style:italic">#6C6053</span><span style="color:#E1E4E8">;  --ink-3: </span><span style="color:#FDAEB7;font-style:italic">#A2937F;</span></span>
<span class="line"><span style="color:#6A737D">/* base — dark */</span></span>
<span class="line"><span style="color:#E1E4E8">--paper: </span><span style="color:#FDAEB7;font-style:italic">#141009</span><span style="color:#E1E4E8">;  --ink: </span><span style="color:#FDAEB7;font-style:italic">#F2EADC;</span><span style="color:#E1E4E8">  --ink-2: </span><span style="color:#FDAEB7;font-style:italic">#A99A85;</span><span style="color:#E1E4E8">  --ink-3: </span><span style="color:#FDAEB7;font-style:italic">#6E6252</span><span style="color:#E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D">/* rooms      light      dark    */</span></span>
<span class="line"><span style="color:#E1E4E8">--research:  </span><span style="color:#FDAEB7;font-style:italic">#2447C5</span><span style="color:#E1E4E8">;   </span><span style="color:#FDAEB7;font-style:italic">#7B94FF</span><span style="color:#E1E4E8">;</span></span>
<span class="line"><span style="color:#E1E4E8">--work:      </span><span style="color:#FDAEB7;font-style:italic">#166E5A</span><span style="color:#E1E4E8">;   </span><span style="color:#FDAEB7;font-style:italic">#4CC7A4</span><span style="color:#E1E4E8">;</span></span>
<span class="line"><span style="color:#E1E4E8">--life:      </span><span style="color:#FDAEB7;font-style:italic">#D14E24;</span><span style="color:#FDAEB7;font-style:italic">   #FF7847;</span></span></code></pre>
<h3 id="building-it">Building it</h3>
<p>The honest version of this story includes a false start. An earlier attempt at rebuilding the site tried to do the room-separation via subdomains, three fully separate themes, and <a href="https://strapi.io">Strapi</a> — a headless CMS — running in its own Docker container. It was technically impressive and operationally exhausting: every room ended up looking like it came from a different template rather than one house, and writing a single post meant a server had to be up somewhere first. I shelved it. The only thing worth keeping was the thinking around how publication data should be modeled, which survived into this version.</p>
<p>What I actually wanted was smaller than a CMS with more features — it was the ability to write a post from whatever device I had open, without spinning anything up first. That’s what sent me looking past headless CMSes entirely, toward something that would commit straight to Git. What shipped reflects that: a static Astro site, one content pipeline where a post declares which room(s) it belongs to in its front matter, no CSS framework — just custom properties and plain CSS, because the design system is small enough that a framework would be more ceremony than help. Editing happens through <a href="https://pagescms.org">Pages CMS</a>, a lightweight browser editor that commits straight to this repo and triggers a deploy — no admin server to run, no separate database to back up. I’m typing this very announcement into a form field, and in a few minutes it’ll be a live page.</p>
<p><em>Built with:</em></p>
<div style="display:flex; flex-wrap:wrap; gap:28px; justify-content:center; margin:0.6em 0 0.2em;">
  <div style="display:flex; flex-direction:column; align-items:center; gap:6px; width:78px;">
    <svg width="30" height="30" viewBox="0 0 24 24" fill="#BC52EE" aria-hidden="true"><path d="M8.358 20.162c-1.186-1.07-1.532-3.316-1.038-4.944.856 1.026 2.043 1.352 3.272 1.535 1.897.283 3.76.177 5.522-.678.202-.098.388-.229.608-.36.166.473.209.95.151 1.437-.14 1.185-.738 2.1-1.688 2.794-.38.277-.782.525-1.175.787-1.205.804-1.531 1.747-1.078 3.119l.044.148a3.158 3.158 0 0 1-1.407-1.188 3.31 3.31 0 0 1-.544-1.815c-.004-.32-.004-.642-.048-.958-.106-.769-.472-1.113-1.161-1.133-.707-.02-1.267.411-1.415 1.09-.012.053-.028.104-.045.165h.002zm-5.961-4.445s3.24-1.575 6.49-1.575l2.451-7.565c.092-.366.36-.614.662-.614.302 0 .57.248.662.614l2.45 7.565c3.85 0 6.491 1.575 6.491 1.575L16.088.727C15.93.285 15.663 0 15.303 0H8.697c-.36 0-.615.285-.784.727l-5.516 14.99z"></path></svg>
    <span style="font-size:12px; color:var(--ink-3);">Astro</span>
  </div>
  <div style="display:flex; flex-direction:column; align-items:center; gap:6px; width:78px;">
    <svg width="30" height="30" viewBox="0 0 24 24" fill="#3178C6" aria-hidden="true"><path d="M1.125 0C.502 0 0 .502 0 1.125v21.75C0 23.498.502 24 1.125 24h21.75c.623 0 1.125-.502 1.125-1.125V1.125C24 .502 23.498 0 22.875 0zm17.363 9.75c.612 0 1.154.037 1.627.111a6.38 6.38 0 0 1 1.306.34v2.458a3.95 3.95 0 0 0-.643-.361 5.093 5.093 0 0 0-.717-.26 5.453 5.453 0 0 0-1.426-.2c-.3 0-.573.028-.819.086a2.1 2.1 0 0 0-.623.242c-.17.104-.3.229-.393.374a.888.888 0 0 0-.14.49c0 .196.053.373.156.529.104.156.252.304.443.444s.423.276.696.41c.273.135.582.274.926.416.47.197.892.407 1.266.628.374.222.695.473.963.753.268.279.472.598.614.957.142.359.214.776.214 1.253 0 .657-.125 1.21-.373 1.656a3.033 3.033 0 0 1-1.012 1.085 4.38 4.38 0 0 1-1.487.596c-.566.12-1.163.18-1.79.18a9.916 9.916 0 0 1-1.84-.164 5.544 5.544 0 0 1-1.512-.493v-2.63a5.033 5.033 0 0 0 3.237 1.2c.333 0 .624-.03.872-.09.249-.06.456-.144.623-.25.166-.108.29-.234.373-.38a1.023 1.023 0 0 0-.074-1.089 2.12 2.12 0 0 0-.537-.5 5.597 5.597 0 0 0-.807-.444 27.72 27.72 0 0 0-1.007-.436c-.918-.383-1.602-.852-2.053-1.405-.45-.553-.676-1.222-.676-2.005 0-.614.123-1.141.369-1.582.246-.441.58-.804 1.004-1.089a4.494 4.494 0 0 1 1.47-.629 7.536 7.536 0 0 1 1.77-.201zm-15.113.188h9.563v2.166H9.506v9.646H6.789v-9.646H3.375z"></path></svg>
    <span style="font-size:12px; color:var(--ink-3);">TypeScript</span>
  </div>
  <div style="display:flex; flex-direction:column; align-items:center; gap:6px; width:78px;">
    <svg width="30" height="30" viewBox="0 0 24 24" fill="#F38020" aria-hidden="true"><path d="M10.715 14.32H5.442l-.64-1.203L13.673 0l1.397.579-1.752 9.112h5.24l.648 1.192L10.719 24l-1.412-.54ZM4.091 5.448a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm1.543 0a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm1.544 0a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm8.657-2.7h5.424l.772.771v16.975l-.772.772h-7.392l.374-.579h6.779l.432-.432V3.758l-.432-.432h-4.676l-.552 2.85h-.59l.529-2.877.108-.552ZM2.74 21.265l-.772-.772V3.518l.772-.771h7.677l-.386.579H2.98l-.432.432v16.496l.432.432h5.586l-.092.579zm1.157-1.93h3.28l-.116.58h-3.55l-.192-.193v-3.473l.578 1.158zm13.117 0 .579.58H14.7l.385-.58z"></path></svg>
    <span style="font-size:12px; color:var(--ink-3);">Cloudflare Pages</span>
  </div>
  <div style="display:flex; flex-direction:column; align-items:center; gap:6px; width:78px;">
    <svg width="30" height="30" viewBox="0 0 24 24" fill="#2088FF" aria-hidden="true"><path d="M10.984 13.836a.5.5 0 0 1-.353-.146l-.745-.743a.5.5 0 1 1 .706-.708l.392.391 1.181-1.18a.5.5 0 0 1 .708.707l-1.535 1.533a.504.504 0 0 1-.354.146zm9.353-.147l1.534-1.532a.5.5 0 0 0-.707-.707l-1.181 1.18-.392-.391a.5.5 0 1 0-.706.708l.746.743a.497.497 0 0 0 .706-.001zM4.527 7.452l2.557-1.585A1 1 0 0 0 7.09 4.17L4.533 2.56A1 1 0 0 0 3 3.406v3.196a1.001 1.001 0 0 0 1.527.85zm2.03-2.436L4 6.602V3.406l2.557 1.61zM24 12.5c0 1.93-1.57 3.5-3.5 3.5a3.503 3.503 0 0 1-3.46-3h-2.08a3.503 3.503 0 0 1-3.46 3 3.502 3.502 0 0 1-3.46-3h-.558c-.972 0-1.85-.399-2.482-1.042V17c0 1.654 1.346 3 3 3h.04c.244-1.693 1.7-3 3.46-3 1.93 0 3.5 1.57 3.5 3.5S13.43 24 11.5 24a3.502 3.502 0 0 1-3.46-3H8c-2.206 0-4-1.794-4-4V9.899A5.008 5.008 0 0 1 0 5c0-2.757 2.243-5 5-5s5 2.243 5 5a5.005 5.005 0 0 1-4.952 4.998A2.482 2.482 0 0 0 7.482 12h.558c.244-1.693 1.7-3 3.46-3a3.502 3.502 0 0 1 3.46 3h2.08a3.503 3.503 0 0 1 3.46-3c1.93 0 3.5 1.57 3.5 3.5zm-15 8c0 1.378 1.122 2.5 2.5 2.5s2.5-1.122 2.5-2.5-1.122-2.5-2.5-2.5S9 19.122 9 20.5zM5 9c2.206 0 4-1.794 4-4S7.206 1 5 1 1 2.794 1 5s1.794 4 4 4zm9 3.5c0-1.378-1.122-2.5-2.5-2.5S9 11.122 9 12.5s1.122 2.5 2.5 2.5 2.5-1.122 2.5-2.5zm9 0c0-1.378-1.122-2.5-2.5-2.5S18 11.122 18 12.5s1.122 2.5 2.5 2.5 2.5-1.122 2.5-2.5zm-13 8a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0zm2 0a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0zm12 0c0 1.93-1.57 3.5-3.5 3.5a3.503 3.503 0 0 1-3.46-3.002c-.007.001-.013.005-.021.005l-.506.017h-.017a.5.5 0 0 1-.016-.999l.506-.017c.018-.002.035.006.052.007A3.503 3.503 0 0 1 20.5 17c1.93 0 3.5 1.57 3.5 3.5zm-1 0c0-1.378-1.122-2.5-2.5-2.5S18 19.122 18 20.5s1.122 2.5 2.5 2.5 2.5-1.122 2.5-2.5z"></path></svg>
    <span style="font-size:12px; color:var(--ink-3);">GitHub Actions</span>
  </div>
  <div style="display:flex; flex-direction:column; align-items:center; gap:6px; width:78px;">
    <svg width="30" height="30" viewBox="0 0 24 24" fill="#111111" aria-hidden="true"><path d="M18 6a6 6 0 10-6 6 6 6 0 015.35 9h1.5A7.5 7.5 0 0012 10.5 4.5 4.5 0 1116.5 6Zm-6-3a3 3 0 000 6 1 1 0 000-6m0 1.5a1.5 1.5 0 010 3 1 1 0 010-3M7.5 15v1.5H9v6H4.5V24h15v-1.5H15v-6h1.5V15Zm3 1.5h3v6h-3zm-6 1.5a7.5 7.5 0 00.7 3h1.5a6 6 0 01-.7-3Z"></path></svg>
    <span style="font-size:12px; color:var(--ink-3);">Simple Icons</span>
  </div>
</div>
<h3 id="under-the-hood">Under the hood</h3>
<p>Content lives in a couple of Astro content collections, each checked against a schema — a post’s <code>rooms</code> array has to contain at least one of <code>research | work | life</code>, dates get coerced automatically, and anything that doesn’t match fails the build rather than showing up broken in someone’s browser. One shared layout renders a post regardless of which room it’s in, which is also why something like an optional cover photo only had to be written once to work everywhere.</p>
<p>Routing follows the room structure directly — no server, no database, just static files generated at build time:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="mermaid"><code><span class="line"><span style="color:#E1E4E8">graph TD</span></span>
<span class="line"><span style="color:#E1E4E8">  classDef research fill:#2447C5,stroke:#2447C5,color:#fff</span></span>
<span class="line"><span style="color:#E1E4E8">  classDef work fill:#166E5A,stroke:#166E5A,color:#fff</span></span>
<span class="line"><span style="color:#E1E4E8">  classDef life fill:#D14E24,stroke:#D14E24,color:#fff</span></span>
<span class="line"></span>
<span class="line"><span style="color:#E1E4E8">  T["/ — threshold"] --> R["/research"]:::research</span></span>
<span class="line"><span style="color:#E1E4E8">  T --> W["/work"]:::work</span></span>
<span class="line"><span style="color:#E1E4E8">  T --> L["/life"]:::life</span></span>
<span class="line"><span style="color:#E1E4E8">  R --> RP["publications"]:::research</span></span>
<span class="line"><span style="color:#E1E4E8">  R --> RN["notes"]:::research</span></span>
<span class="line"><span style="color:#E1E4E8">  R --> RC["cv"]:::research</span></span>
<span class="line"><span style="color:#E1E4E8">  R --> RCon["contact"]:::research</span></span>
<span class="line"><span style="color:#E1E4E8">  W --> WN["notes"]:::work</span></span>
<span class="line"><span style="color:#E1E4E8">  W --> WC["cv"]:::work</span></span>
<span class="line"><span style="color:#E1E4E8">  W --> WCon["contact"]:::work</span></span>
<span class="line"><span style="color:#E1E4E8">  L --> LE["essays"]:::life</span></span>
<span class="line"><span style="color:#E1E4E8">  L --> LS["shelf"]:::life</span></span>
<span class="line"><span style="color:#E1E4E8">  L --> LA["about"]:::life</span></span></code></pre>
<p><em>Fig. 1 — routing, colored by room: research in blue, work in green, life in orange.</em></p>
<p>The node colors above are the exact room tokens from the block earlier — not a coincidence, the diagram is styled from the same three hex values as the site.</p>
<p>Deployment is the same shape as the CMS itself: everything funnels down to a single <code>git push</code> to the <code>v2</code> branch, whether that push comes from a terminal or from Pages CMS saving a form.</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="mermaid"><code><span class="line"><span style="color:#E1E4E8">graph LR</span></span>
<span class="line"><span style="color:#E1E4E8">  classDef gha stroke:#2088FF,stroke-width:2px</span></span>
<span class="line"><span style="color:#E1E4E8">  classDef cf stroke:#F38020,stroke-width:2px</span></span>
<span class="line"><span style="color:#E1E4E8">  classDef logo stroke:#A2937F,stroke-width:1.5px</span></span>
<span class="line"></span>
<span class="line"><span style="color:#E1E4E8">  A["Edit in Pages CMS"] --> B["&#x3C;span>&#x3C;img src='/assets/images/icons/github.svg' width='24' height='24'/>&#x3C;/span>"]</span></span>
<span class="line"><span style="color:#E1E4E8">  C["&#x3C;span>&#x3C;img src='/assets/images/icons/git.svg' width='24' height='24'/>&#x3C;/span>"] --> B</span></span>
<span class="line"><span style="color:#E1E4E8">  B --> D["&#x3C;img src='/assets/images/icons/github-actions.svg' width='22' height='22'/>&#x26;nbsp;&#x3C;img src='/assets/images/icons/astro.svg' width='22' height='22'/>"]:::gha</span></span>
<span class="line"><span style="color:#E1E4E8">  D --> E["&#x3C;img src='/assets/images/icons/cloudflare-pages.svg' width='22' height='22'/>&#x26;nbsp;&#x3C;img src='/assets/images/icons/rocket.svg' width='22' height='22'/>"]:::cf</span></span>
<span class="line"><span style="color:#E1E4E8">  E --> F["&#x3C;span>&#x3C;img src='/assets/images/icons/threshold-lines.svg' width='34' height='34'/>&#x3C;/span>"]:::logo</span></span></code></pre>
<p><em>Fig. 2 — an edit becomes a live page: git/GitHub, GitHub Actions running an Astro build, Cloudflare Pages deploying it, landing at ali.mk.</em></p>
<p>Nothing to patch, nothing to back up, no build step I have to remember to run by hand — the whole loop from “edit a field” to “it’s live” takes under a minute.</p>
<p>Zoomed out, the whole system is small enough to draw on one diagram: content and code meet at the <code>v2</code> branch, GitHub Actions turns that into static files, Cloudflare serves them at the edge, and a visitor’s browser reports back a single privacy-respecting pageview.</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="mermaid"><code><span class="line"><span style="color:#E1E4E8">graph TB</span></span>
<span class="line"><span style="color:#E1E4E8">  classDef gha fill:#2088FF,stroke:#2088FF,color:#fff</span></span>
<span class="line"><span style="color:#E1E4E8">  classDef cf fill:#F38020,stroke:#F38020,color:#fff</span></span>
<span class="line"><span style="color:#E1E4E8">  classDef gc fill:#0EA5A0,stroke:#0EA5A0,color:#fff</span></span>
<span class="line"></span>
<span class="line"><span style="color:#E1E4E8">  subgraph Authoring</span></span>
<span class="line"><span style="color:#E1E4E8">    CMS["Pages CMS&#x3C;br/>(browser form)"]</span></span>
<span class="line"><span style="color:#E1E4E8">    Term["Terminal&#x3C;br/>(git push)"]</span></span>
<span class="line"><span style="color:#E1E4E8">  end</span></span>
<span class="line"><span style="color:#E1E4E8">  CMS -->|commit| Repo["GitHub&#x3C;br/>v2 branch"]</span></span>
<span class="line"><span style="color:#E1E4E8">  Term -->|push| Repo</span></span>
<span class="line"><span style="color:#E1E4E8">  Repo --> CI["GitHub Actions&#x3C;br/>astro build"]:::gha</span></span>
<span class="line"><span style="color:#E1E4E8">  CI -->|static HTML/CSS/JS| CDN["Cloudflare Pages&#x3C;br/>edge network"]:::cf</span></span>
<span class="line"><span style="color:#E1E4E8">  CDN --> Visitor["Visitor's browser"]</span></span>
<span class="line"><span style="color:#E1E4E8">  Visitor -.->|one pageview,&#x3C;br/>no cookies| GC["GoatCounter"]:::gc</span></span></code></pre>
<p><em>Fig. 3 — the whole system in one picture: authoring, build, hosting, and analytics.</em></p>
<h3 id="analytics-briefly">Analytics, briefly</h3>
<p>The pageview count on this site comes from <a href="https://www.goatcounter.com/">GoatCounter</a> — open source, no cookies, no personal data collected, nothing to justify in a cookie banner because there’s nothing to consent to. The only wrinkle is that this site does client-side page transitions (Astro’s view transitions swap content without a full reload), so a plain analytics snippet that only fires <code>onload</code> would count the first page of every visit and miss the rest. The fix was small: disable GoatCounter’s automatic count and fire it manually on <code>astro:page-load</code>, an event Astro dispatches on the initial load <em>and</em> every soft navigation after it — so every room, every essay, every publication page gets counted exactly once, however someone got there.</p>
<h3 id="standing-on-open-source">Standing on open source</h3>
<p>None of this exists without a long list of people who gave their work away for free. This site runs on <a href="https://astro.build">Astro</a> and <a href="https://www.typescriptlang.org/">TypeScript</a>, validates its content with <a href="https://zod.dev">Zod</a>, renders the diagrams above with <a href="https://mermaid.js.org/">Mermaid</a>, highlights its code blocks with Shiki (bundled straight into Astro), draws its brand logos from <a href="https://simpleicons.org">Simple Icons</a>, sets its type with self-hosted <a href="https://fontsource.org">Fontsource</a> packages of Instrument Sans, Instrument Serif, Newsreader, and JetBrains Mono, and gets edited through <a href="https://pagescms.org">Pages CMS</a> — a genuinely lovely piece of software for something I don’t pay a cent for. <a href="https://www.goatcounter.com/">GoatCounter</a> covers analytics, <a href="https://github.com/features/actions">GitHub Actions</a> covers the build, and <a href="https://pages.cloudflare.com/">Cloudflare Pages</a> covers hosting, all on free tiers that exist because someone decided small personal projects deserve good infrastructure too. And further back, this whole habit started with <a href="https://jekyllrb.com/">Jekyll</a> and the <a href="https://chirpy.cotes.page/">Chirpy</a> theme, which is still out there being maintained by people who owe me nothing.</p>
<p>If you maintain any of the above: thank you. Genuinely.</p>
<h3 id="what-its-for">What it’s for</h3>
<p>The point was never to look different for its own sake. It was to stop asking one page to perform three roles simultaneously, and to stop <em>self-censoring by architecture</em> — quietly softening an opinion, or leaving out a film review, because it might sit two scrolls away from someone deciding whether to fund my next project. Now the writing can be as direct as it needs to be in whichever room it belongs to, because the room it belongs to is the only room it’s in.</p>
<p>Come in through whichever door fits why you’re here. Or, if you’re curious, try all three — that’s kind of the point of having them.</p>]]></content></entry><entry><title>Why I&apos;m Closing My Twitter Account</title><id>https://ali.mk/posts/why-im-closing-my-twitter-account/</id><link href="https://ali.mk/posts/why-im-closing-my-twitter-account/" /><published>2024-08-25T00:00:00.000Z</published><updated>2024-08-25T00:00:00.000Z</updated><summary>On platforms, principles, and what we owe the places where we speak.</summary><category term="social media" /><category term="digital freedom" /><category term="platform accountability" /><content type="html"><![CDATA[<p>After more than a decade on Twitter, a platform I joined in 2011 to stay informed on political news, technological advancements, and to engage in discussions on topics I am passionate about, I’ve made the decision to close my account. This decision is driven by the recent developments that have fundamentally altered the nature of the platform.</p>
<p>The acquisition of Twitter by Elon Musk, and the subsequent rebranding to X, marks a significant shift in how the platform is governed and utilized. While I recognize that capitalism allows for such moves, I firmly believe that platforms that have become essential tools for communication in our society should not be subject to the whims of a single individual or a small group. The actions taken by Musk—limiting freedom of speech, reinstating controversial figures, and manipulating algorithms to serve personal interests—are deeply troubling and contrary to the values of open and fair communication.</p>
<p><img src="/assets/images/posts/twitterx.webp" alt="">
I signed up for Twitter, not X, and I do not agree with the new terms and conditions imposed by this transformation. While I acknowledge that this decision comes later than perhaps it should have, I am closing my Twitter account today in protest of these changes.</p>
<p>For those who wish to stay in touch, you can find alternative ways to connect with me through the contact details available on my website. I look forward to continuing our conversations on platforms that respect the diversity of thought and the integrity of open communication.</p>]]></content></entry><entry><title>The Role of Noises in Chinese Dining Etiquette: A Cultural Insight</title><id>https://ali.mk/posts/noises-in-chinese-dining-etiquette/</id><link href="https://ali.mk/posts/noises-in-chinese-dining-etiquette/" /><published>2024-08-20T00:00:00.000Z</published><updated>2024-08-20T00:00:00.000Z</updated><summary>Slurping, burping, and rènao — why a good meal in China is supposed to be loud, and what the old ritual texts actually said about it.</summary><category term="china" /><category term="culture" /><category term="food" /><content type="html"><![CDATA[<p>Sit down at a proper Chinese banquet and the first thing you notice isn’t the food — it’s the noise. The lazy Susan creaks as someone spins it toward the last dumpling. Ice cracks in a dozen glasses. Someone two seats over is halfway through a bowl of noodle soup, slurping with real commitment. Over all of it, a half-dozen conversations run at full volume, punctuated by toasts. If you grew up eating dinner in near-silence, your instinct is to apologize for existing.</p>
<p>That instinct is misplaced. The noise isn’t a lapse in manners — it has a name, 热闹 (<em>rènao</em>, literally “hot and noisy”), and in Chinese social life it isn’t the exception to a good meal. It’s closer to the definition of one.</p>
<h2 id="rènao-the-case-for-a-loud-table">Rènao: the case for a loud table</h2>
<p><em>Rènao</em> is one of those words that resists a clean English translation, built from 热 (hot) and 闹 (noisy, bustling). Marketing researchers who set out to pin it down found it clusters around a specific set of associations — crowds, food, noise, and a sense of occasion — that Chinese consumers consistently link to a <em>successful</em> social space.<sup><a href="#user-content-fn-1" id="user-content-fnref-1" data-footnote-ref="" aria-describedby="footnote-label">1</a></sup> A restaurant that’s dead silent isn’t calm, in this reading; it’s failing. A wedding banquet, a hotpot dinner where six people are talking over each other, a market at dusk — these are <em>rènao</em>, and <em>rènao</em> is good. It’s the same logic behind the firecrackers and gongs at Lunar New Year: noise announces that something worth celebrating is happening, and it’s meant to be heard.</p>
<p>Slurping and burping sit inside that framework. They’re not purely about the food-appreciation angle the internet loves to repeat, though that’s part of it — they’re evidence that you’ve relaxed into the room. Eating in total silence at a family dinner reads less like discipline and more like distance.</p>
<h2 id="the-actual-physics-of-a-slurp">The actual physics of a slurp</h2>
<p><img src="/assets/images/posts/lanzhou-beef-noodles.jpg" alt="A bowl of Lanzhou beef noodle soup, hand-pulled noodles in a clear broth">
<em>Lanzhou beef noodle soup — the kind of bowl slurping was made for.</em></p>
<p>There’s also a mechanical reason the sound happens at all, and it’s the same one across the noodle-eating world. Pulling broth and noodles in fast draws a rush of air in alongside them, which does two things at once: it cools food that’s often served close to boiling, and it aerosolizes the broth’s aromatic compounds, forcing them up the back of the throat toward the olfactory receptors behind the nose. That pathway is called retronasal olfaction, and it’s most of what “flavor” means once you get past the five basic tastes. A 2021 study in <em>Frontiers in Nutrition</em> found that more vigorous, more numerous chewing strokes measurably increase the concentration of aroma compounds reaching the nose — more forceful eating quite literally tastes like more.<sup><a href="#user-content-fn-2" id="user-content-fnref-2" data-footnote-ref="" aria-describedby="footnote-label">2</a></sup></p>
<p>Japan’s soba shops arrived at the same mechanism from the opposite direction. Soba culture took shape in Edo-period Tokyo, where buckwheat noodles were cheap, fast food sold from street stalls to laborers eating standing up — no time and no occasion for the formality of a sit-down meal. Slurping (<em>susuru</em>) caught on partly because cold soba’s aroma is faint, and drawing it in fast with a rush of air is close to the only way to taste it at all; one Tokyo soba-shop owner has compared the technique directly to how a sommelier aerates wine.<sup><a href="#user-content-fn-3" id="user-content-fnref-3" data-footnote-ref="" aria-describedby="footnote-label">3</a></sup> It’s a strikingly similar physical trick to the Chinese case, arrived at from a completely different direction — Japan’s noodle noise grew out of the practical demands of cheap street food, China’s grew out of a broader value placed on a lively table. The sound is the same. The reason for it isn’t.</p>
<h2 id="what-the-old-rules-actually-said">What the old rules actually said</h2>
<p>This is the part the “ancient Chinese tradition” version of this story usually skips: the classical texts most associated with Chinese dining ritual don’t endorse noise. They endorse the opposite.</p>
<p>The <em>Analects</em> record Confucius eating in careful, deliberate quiet: “When eating, he did not converse. When in bed, he did not speak.”<sup><a href="#user-content-fn-4" id="user-content-fnref-4" data-footnote-ref="" aria-describedby="footnote-label">4</a></sup> It’s not a throwaway line, either — a South China Morning Post columnist recently traced her own family’s mealtime silence straight back to it, describing a childhood where talking at dinner simply wasn’t done, on the belief (also drawn from traditional Chinese medicine) that conversation, and even too much liquid, worked against digestion.<sup><a href="#user-content-fn-5" id="user-content-fnref-5" data-footnote-ref="" aria-describedby="footnote-label">5</a></sup> The <em>Book of Rites</em> (<em>Liji</em>), one of the Five Classics compiled from Zhou-dynasty material, goes further, devoting whole passages to the correct choreography of a banquet: who sits facing the door, who tastes the food first, how dishes are apportioned down the table.<sup><a href="#user-content-fn-6" id="user-content-fnref-6" data-footnote-ref="" aria-describedby="footnote-label">6</a></sup> Anthropologist Eugene Cooper’s field account of contemporary Chinese table manners makes the same argument from the other end — much of what happens at a Chinese table, he writes, is a system for communicating rank and relationship, dressed up as generosity: who serves whom, who eats first, who gets the best piece.<sup><a href="#user-content-fn-7" id="user-content-fnref-7" data-footnote-ref="" aria-describedby="footnote-label">7</a></sup> None of that is loud. It’s closer to choreography than celebration.</p>
<p>Even now, etiquette guides written for a Chinese audience keep both halves of this alive without much apparent friction. A list of core table manners circulated by the World Federation of Chinese Catering Industry puts “the eldest tastes first” right next to “keep quiet while eating, per Confucius” — two rules from the same code, neither one about slurping.<sup><a href="#user-content-fn-8" id="user-content-fnref-8" data-footnote-ref="" aria-describedby="footnote-label">8</a></sup></p>
<p>So the honest version of this story runs on two registers, not one continuous “ancient tradition of joyful noise.” A formal register — quiet, hierarchical, closely watched — inherited from ritual texts over two thousand years old. And a separate, more vernacular register, <em>rènao</em>, that prizes exactly the opposite: noise, crowding, a table so alive it spills over. Slurping your soup lives entirely in the second register. Do it in front of the wrong people at the wrong table and you’ll get a very different reaction than you will halfway through a hotpot with friends.</p>
<h2 id="same-country-different-room">Same country, different room</h2>
<p>That’s really the throughline: how much noise is welcome depends far more on the room than the country. A business banquet in Beijing runs on the formal register — assigned seating built around seniority, a fixed order for toasts, a junior colleague angling their glass slightly lower than a senior’s when clinking, as a small, wordless sign of deference.<sup><a href="#user-content-fn-9" id="user-content-fnref-9" data-footnote-ref="" aria-describedby="footnote-label">9</a></sup> A hotpot dinner with friends in Chengdu runs on <em>rènao</em>, and nobody there is quietly monitoring anyone’s noodle technique.</p>
<p>Journalist Luisa Tam put the personal version of this well, in a column defending her own eating habits abroad. She’ll adjust plenty about how she eats when she travels, she wrote — but she wasn’t going to sit through a bowl of noodles in dignified silence and pretend she wasn’t enjoying them. After warning her French hosts what was coming, she “slurped through it unashamedly” until the bowl was empty, and came away, in her words, feeling liberated.<sup><a href="#user-content-fn-10" id="user-content-fnref-10" data-footnote-ref="" aria-describedby="footnote-label">10</a></sup></p>
<p>Burping gets folded into the same story constantly — you’ll find it stated flatly, across a hundred travel guides, that a burp is a compliment to the chef in China. Treat that one with a bit more caution than the slurping claim. It’s real enough as a piece of folk belief and older etiquette, repeated in guide after guide for decades,<sup><a href="#user-content-fn-11" id="user-content-fnref-11" data-footnote-ref="" aria-describedby="footnote-label">11</a></sup> but it’s also one of the first things to have softened with a generation raised on international travel and Western dining norms — particularly in cities, and particularly at anything resembling a formal meal. It hasn’t disappeared. It’s just no longer quite the safe bet the internet makes it out to be.</p>
<h2 id="conclusion">Conclusion</h2>
<p>None of this makes the popular version of the story wrong, exactly. Slurping really is fine, often genuinely appreciated, and physically tied to how the food actually tastes. It just isn’t a straight line back to some unbroken ancient custom of joyful eating noise — it’s closer to a compromise Chinese dining culture has always negotiated between two real, competing instincts: the old ritual insistence on order and restraint, and a newer, equally strong sense that a good table should sound like one. Next time you’re at a meal that’s properly <em>rènao</em> — loud, crowded, dish after dish still arriving — slurp with a clear conscience. Just read the room first.</p>
<p><em>Photo credits: cover photo by <a href="https://commons.wikimedia.org/wiki/File:Chinese_banquet_in_a_banquet_hall.JPG">Ctny</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC BY-SA 3.0</a>); noodle-soup photo by <a href="https://commons.wikimedia.org/wiki/File:Lanzhou_Ramen.JPG">Berthe</a> (<a href="https://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>), both via Wikimedia Commons.</em></p>
<section data-footnotes="" class="footnotes"><h2 class="sr-only" id="footnote-label">Footnotes</h2>
<ol>
<li id="user-content-fn-1">
<p>Warden, C.A., &#x26; Chen, J.F. (2009). <a href="https://doi.org/10.1108/13555850910950040">When hot and noisy is good: Chinese values of renao and consumption metaphors</a>. <em>Asia Pacific Journal of Marketing and Logistics</em>, 21(2), 216–231. <a href="#user-content-fnref-1" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-2">
<p>Okawa, J., Hori, K., Yoshimoto, T., Salazar, S.E., &#x26; Ono, T. (2021). <a href="https://doi.org/10.3389/fnut.2021.623507">Higher masticatory performance and higher number of chewing strokes increase retronasal aroma</a>. <em>Frontiers in Nutrition</em>, 8, 623507. <a href="#user-content-fnref-2" data-footnote-backref="" aria-label="Back to reference 2" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-3">
<p>Motohashi, T. (2017, June 20). <a href="https://www.nippon.com/en/views/b07501/">A Cultural History of Noodle Slurping</a>. <em>Nippon.com</em> — soba-shop owner Horii Yoshinori compares slurping’s aroma-release effect to wine-tasting technique. <a href="#user-content-fnref-3" data-footnote-backref="" aria-label="Back to reference 3" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-4">
<p><em>The Analects</em>, Book X (“Xiang Dang”), trans. James Legge, via the <a href="https://ctext.org/analects/xiang-dang">Chinese Text Project</a>. <a href="#user-content-fnref-4" data-footnote-backref="" aria-label="Back to reference 4" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-5">
<p>Yang, X. (2026, June 27). <a href="https://www.scmp.com/opinion/china-opinion/article/3358413/talking-when-you-eat-bad-you-and-other-chinese-beliefs">Talking when you eat is bad for you, and other Chinese beliefs</a>. <em>South China Morning Post</em>. <a href="#user-content-fnref-5" data-footnote-backref="" aria-label="Back to reference 5" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-6">
<p><a href="https://www.britannica.com/topic/Liji">Liji</a>. <em>Encyclopaedia Britannica</em> — overview of the Book of Rites’ place in the Confucian ritual canon and its treatment of banquet and ceremonial procedure. <a href="#user-content-fnref-6" data-footnote-backref="" aria-label="Back to reference 6" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-7">
<p>Cooper, E. (1986). <a href="https://doi.org/10.17730/humo.45.2.4034u85x3058m025">Chinese Table Manners: You Are How You Eat</a>. <em>Human Organization</em>, 45(2), 179–184. <a href="#user-content-fnref-7" data-footnote-backref="" aria-label="Back to reference 7" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-8">
<p><a href="https://artsandculture.google.com/story/8-tips-for-chinese-table-manners-world-federation-of-chinese-catering-industry/rAURl4mH72mvmQ">8 Tips for Chinese Table Manners</a>, World Federation of Chinese Catering Industry, via Google Arts &#x26; Culture. <a href="#user-content-fnref-8" data-footnote-backref="" aria-label="Back to reference 8" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-9">
<p><a href="https://harris-sliwoski.com/chinalawblog/chinese-business-dinner-etiquette-the-essentials/">Chinese Business Dinner Etiquette: The Essentials</a> (China Law Blog, Harris Sliwoski LLP, updated 2025-09-24 — on toast order, seating by seniority, and glass-clinking etiquette). <a href="#user-content-fnref-9" data-footnote-backref="" aria-label="Back to reference 9" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-10">
<p>Tam, L. (2018, December 3). <a href="https://www.scmp.com/news/hong-kong/society/article/2176092/its-nice-respect-different-cultures-table-manners-i-wont-stop">It’s nice to respect different cultures’ table manners – but I won’t stop slurping my soup noodles</a>. <em>South China Morning Post</em>. <a href="#user-content-fnref-10" data-footnote-backref="" aria-label="Back to reference 10" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-11">
<p><a href="https://www.rd.com/list/rude-american-manners/">Where Is Burping a Compliment? 14 Global Etiquette Differences</a>. <em>Reader’s Digest</em>. <a href="#user-content-fnref-11" data-footnote-backref="" aria-label="Back to reference 11" class="data-footnote-backref">↩</a></p>
</li>
</ol>
</section>]]></content></entry><entry><title>ADHD Care and Diagnosis in Sweden</title><id>https://ali.mk/posts/adhd-diagnosis-in-sweden/</id><link href="https://ali.mk/posts/adhd-diagnosis-in-sweden/" /><published>2023-10-23T00:00:00.000Z</published><updated>2023-10-23T00:00:00.000Z</updated><summary>The practical, bureaucratic, and emotional map of getting assessed in Stockholm.</summary><category term="adhd" /><category term="sweden" /><category term="mental health" /><content type="html"><![CDATA[<!--  -->
<h1 id="adhd-in-sweden">ADHD in Sweden</h1>
<p>In Sweden, <strong>Attention Deficit Hyperactivity Disorder (ADHD)</strong> is recognized as a neurodevelopmental disorder and is diagnosed and treated within both the public healthcare system and the private healthcare sector. Sadly, the quality of care differs significantly between the two — private care is generally far better resourced than its public counterpart. The public healthcare system in Sweden is overwhelmed and heavily understaffed in terms of specialists, nurses, and therapists. This has led to <em>long waiting times</em> for diagnosis and treatment of ADHD, especially for adults.</p>
<p>In this post, I share general information about how to start getting help — whether you have already been diagnosed with ADHD or suspect you might have it. I also share my personal experience navigating the public healthcare system in Stockholm, including the challenges I have faced and some practical approaches that have worked for me.</p>
<p>In Swedish society, ADHD as a term is fairly well-known — but usually only at a surface level. People tend to have a general awareness of the broad symptoms, which can sometimes give those of us <em>with</em> ADHD the mistaken impression that others truly understand our day-to-day challenges. Unfortunately, that is rarely the case.</p>
<p>One of the most important early steps you can take is to <strong>educate your immediate manager, colleagues, friends, and family</strong> about ADHD — specifically, how it affects <em>you</em>, and how they can support you. This is especially valuable in the workplace, where difficulties with time management, organization, and communication are common. By creating that awareness around you, you can build a more supportive environment, avoid unnecessary conflicts, and reduce misunderstandings that are not your fault to begin with. Below, I have collected some of the best resources in both Swedish and English to help you do that.</p>
<h2 id="swedish-adhd-websites">Swedish ADHD Websites</h2>
<ul>
<li><strong><a href="https://www.1177.se/sjukdomar--besvar/hjarna-och-nerver/neuropsykiatriska-funktionsnedsattningar/adhd/">1177.se – Adhd</a></strong> — Sweden’s official healthcare guide. Explains what ADHD is, symptoms, diagnosis criteria, and treatments (including medication). Written in plain, accessible Swedish. A great starting point for anyone with no prior background. <a href="https://www.1177.se/sjukdomar--besvar/hjarna-och-nerver/neuropsykiatriska-funktionsnedsattningar/adhd/">1177</a></li>
<li><strong><a href="https://www.hjarnfonden.se/om-hjarnan/diagnos/adhd/vad-ar-adhd-hos-barn/">Hjärnfonden – Adhd hos barn</a> &#x26; <a href="https://www.hjarnfonden.se/om-hjarnan/diagnos/adhd/vad-ar-adhd-hos-vuxna/">Adhd hos vuxna</a></strong> — The Brain Foundation of Sweden. Has separate, well-structured pages for ADHD in children and adults. Both were updated in May 2026, so the content is current. <a href="https://www.hjarnfonden.se/om-hjarnan/diagnos/adhd/vad-ar-adhd-hos-barn/">hjarnfonden</a></li>
<li><strong><a href="https://attention.se">Riksförbundet Attention (attention.se)</a></strong> — Sweden’s main interest organization for people with neuropsychiatric conditions (NPF), including ADHD. Aimed at people with ADHD, their families, and professionals. Also runs <strong>attentionung.se</strong> specifically for young people. <a href="https://www.funktionshindersguiden.se/intresseorganisationer/attention/">funktionshindersguiden</a></li>
<li><strong><a href="https://www.vardochinsats.se/adhd/om-tillstaandet/adhd-hos-barn-ungdomar-och-vuxna/">Vardochinsats.se – Adhd</a></strong> — National program for care and support. More detailed clinical information, updated December 2024, covering children, adolescents, and adults. Good if you want deeper reading. <a href="https://www.vardochinsats.se/adhd/om-tillstaandet/adhd-hos-barn-ungdomar-och-vuxna/">vardochinsats</a></li>
<li><strong><a href="https://kunskapsguiden.se/omraden-och-teman/funktionshinder/adhd/utredning-och-diagnos/">Kunskapsguiden.se – Adhd</a></strong> — Run by the Swedish National Board of Health and Welfare (Socialstyrelsen). Covers diagnosis, investigation, and treatment. Updated November 2025. More technical, but thorough. <a href="https://kunskapsguiden.se/omraden-och-teman/funktionshinder/adhd/utredning-och-diagnos/">kunskapsguiden</a></li>
<li><strong><a href="https://www.habilitering.se/om-oss/vara-mottagningar/adhd-center/">Habilitering.se – Adhd-center</a></strong> — Region Stockholm’s ADHD center. Offers practical tips for everyday life, particularly for families with children. <a href="https://www.habilitering.se/om-oss/vara-mottagningar/adhd-center/">habilitering</a></li>
<li><strong><a href="https://www.understood.org/en/topics/adhd">Understood.org – ADHD Explained</a></strong> — An English-language resource from the US, but very accessible and well-structured. Covers all aspects of ADHD clearly.
<strong>Best for a total beginner:</strong> Start with <strong>1177.se</strong> for a clear overview, then <strong>Hjärnfonden</strong> for more depth.</li>
</ul>
<p>On top of that, the best video I have ever seen explaining ADHD is a 30-minute talk by <strong>Dr. Brown</strong>, a clinical psychologist and ADHD expert. He explains ADHD in a simple, clear, and deeply human way — and helps people <em>without</em> ADHD understand the real challenges those of us with it face every day. I highly recommend sharing it with anyone you want to bring on board:</p>
<p><youtube id="ouZrZa5pLXk"></youtube></p>
<h2 id="recognition-as-a-disability">Recognition as a Disability</h2>
<p>In Sweden, ADHD is recognized as a disability under the <strong>Swedish Discrimination Act</strong> (<em>Diskrimineringslagen</em>). This means that individuals with ADHD are protected from discrimination in employment, education, and access to public services.</p>
<p>This recognition matters in practice. In the workplace, employers are <em>required</em> to provide reasonable accommodations — such as flexible working hours or modified responsibilities. In education, students with ADHD may be entitled to special services or academic accommodations. Even for things like the driver’s license theory exam, people with ADHD are allowed extra time and other adjustments.</p>
<p>Overall, this legal framework helps ensure that individuals with ADHD have equal access to support and the opportunity to thrive in both their personal and professional lives.</p>
<hr>
<h1 id="adhd-treatment-in-sweden">ADHD Treatment in Sweden</h1>
<p>To receive treatment for ADHD in Sweden, you need a diagnosis from a psychiatrist. In the public sector, there are specialized psychiatric centers for ADHD diagnosis and treatment, called <em><strong>ADHD-mottagning</strong></em> in Swedish. You can find a list of all <a href="https://www.1177.se/Stockholm/hitta-vard/?st=e4ffc212-8d33-4a35-8ad3-7ede300c4433&#x26;nearby=false&#x26;s=distance&#x26;g=&#x26;lat=&#x26;lng=&#x26;location=&#x26;caretype=ADHD&#x26;q=&#x26;openN=&#x26;openE=&#x26;openW=&#x26;openTN=&#x26;openTE=&#x26;openTW=&#x26;ow=&#x26;es=&#x26;l=&#x26;lq=">ADHD-mottagningar at 1177</a>.</p>
<p>Below is the general adult ADHD treatment pathway in Sweden:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="mermaid"><code><span class="line"><span style="color:#E1E4E8">flowchart TD</span></span>
<span class="line"><span style="color:#E1E4E8">    A([🏥 Initial Contact\nPrimary care or specialist psychiatry])</span></span>
<span class="line"><span style="color:#E1E4E8">    A --> B[📋 Initial Mapping\nFunctional &#x26; needs assessment]</span></span>
<span class="line"><span style="color:#E1E4E8">    B --> C[🤝 Early Support\nCan start before diagnosis based on need]</span></span>
<span class="line"><span style="color:#E1E4E8">    B --> D{🔍 Strong suspicion of ADHD\nand specialist assessment needed?}</span></span>
<span class="line"><span style="color:#E1E4E8"> </span></span>
<span class="line"><span style="color:#E1E4E8">    D -- No --> E([🔄 Continue support &#x26; follow-up\nat appropriate care level])</span></span>
<span class="line"><span style="color:#E1E4E8">    D -- Yes --> F[🧠 Diagnostic Assessment\nSpecialist psychiatry — Utredning]</span></span>
<span class="line"><span style="color:#E1E4E8"> </span></span>
<span class="line"><span style="color:#E1E4E8">    F --> G{📁 Documented prior diagnosis\naccepted after specialist review?}</span></span>
<span class="line"><span style="color:#E1E4E8">    G -- Yes --> H[📝 Individualized Treatment Plan\nwith assigned psychiatrist]</span></span>
<span class="line"><span style="color:#E1E4E8">    G -- No --> I[⏳ Complete diagnostic process\nWaiting list if needed]</span></span>
<span class="line"><span style="color:#E1E4E8">    I --> H</span></span>
<span class="line"><span style="color:#E1E4E8"> </span></span>
<span class="line"><span style="color:#E1E4E8">    H --> J([💊 Multimodal Treatment\nPsychoeducation · CBT / Group Therapy · OT · Medication when indicated])</span></span>
<span class="line"><span style="color:#E1E4E8"> </span></span>
<span class="line"><span style="color:#E1E4E8">    J --> K[📅 Weekly follow-ups\nDuring dose titration — after each dose increase\nBP &#x26; pulse · Effect &#x26; side effects · Adjust dose]</span></span>
<span class="line"><span style="color:#E1E4E8">    K --> L[📅 Structured review at 3–6 months\nAfter stable dose reached\nBP · pulse · weight · ASRS · function · adherence]</span></span>
<span class="line"><span style="color:#E1E4E8">    L --> M[📅 Follow-up every 6 months\nOngoing maintenance\nBP · pulse · weight · ASRS · symptoms · side effects]</span></span>
<span class="line"><span style="color:#E1E4E8">    M --> N([📅 Annual physician review\nEvaluate continued treatment &#x26; cardiovascular status])</span></span>
<span class="line"><span style="color:#E1E4E8"> </span></span>
<span class="line"><span style="color:#E1E4E8">    style A fill:#c6d8e4,stroke:#006494,color:#1a1a1a</span></span>
<span class="line"><span style="color:#E1E4E8">    style B fill:#f9f8f5,stroke:#dcd9d5,color:#1a1a1a</span></span>
<span class="line"><span style="color:#E1E4E8">    style C fill:#f9f8f5,stroke:#dcd9d5,color:#1a1a1a</span></span>
<span class="line"><span style="color:#E1E4E8">    style D fill:#fef9e7,stroke:#c07d0a,color:#1a1a1a</span></span>
<span class="line"><span style="color:#E1E4E8">    style E fill:#f9f8f5,stroke:#dcd9d5,color:#1a1a1a</span></span>
<span class="line"><span style="color:#E1E4E8">    style F fill:#c6d8e4,stroke:#006494,color:#1a1a1a</span></span>
<span class="line"><span style="color:#E1E4E8">    style G fill:#fef9e7,stroke:#c07d0a,color:#1a1a1a</span></span>
<span class="line"><span style="color:#E1E4E8">    style H fill:#cedcd8,stroke:#01696f,color:#1a1a1a</span></span>
<span class="line"><span style="color:#E1E4E8">    style I fill:#e7d7c4,stroke:#da7101,color:#1a1a1a</span></span>
<span class="line"><span style="color:#E1E4E8">    style J fill:#d4dfcc,stroke:#437a22,color:#1a1a1a</span></span>
<span class="line"><span style="color:#E1E4E8">    style K fill:#d4dfcc,stroke:#437a22,color:#1a1a1a</span></span>
<span class="line"><span style="color:#E1E4E8">    style L fill:#d4dfcc,stroke:#437a22,color:#1a1a1a</span></span>
<span class="line"><span style="color:#E1E4E8">    style M fill:#d4dfcc,stroke:#437a22,color:#1a1a1a</span></span>
<span class="line"><span style="color:#E1E4E8">    style N fill:#dacfde,stroke:#7a39bb,color:#1a1a1a</span></span></code></pre>
<!-- EMBED START: paste everything from here into your Jekyll markdown -->
<style>
@import url('https://api.fontshare.com/v2/css?f[]=satoshi@400,500,600,700&display=swap');
 
.ap{--ap-bg:#f7f6f2;--ap-surf:#ffffff;--ap-border:#dcd9d5;--ap-text:#28251d;--ap-muted:#7a7974;--ap-blue:#006494;--ap-blue-l:#ddeaf3;--ap-gold:#b87200;--ap-gold-l:#fef6e4;--ap-teal:#01696f;--ap-teal-l:#e0f0ef;--ap-green:#437a22;--ap-green-l:#e4f0da;--ap-orange:#c05e00;--ap-orange-l:#faeade;--ap-purple:#6b35a8;--ap-purple-l:#ede5f7;--ap-shadow:0 1px 3px rgba(0,0,0,.07),0 4px 12px rgba(0,0,0,.05);--ap-shadow-h:0 2px 8px rgba(0,0,0,.1),0 8px 24px rgba(0,0,0,.08);--ap-r:10px;font-family:'Satoshi',system-ui,sans-serif;background:var(--ap-bg);border-radius:16px;padding:2rem 1.5rem 2.5rem;max-width:700px;margin:0 auto;color:var(--ap-text);box-sizing:border-box}
.ap *{box-sizing:border-box}
 
/* ── Banner ── */
.ap-banner{background:var(--ap-teal-l);border:1px solid var(--ap-teal);border-radius:8px;padding:.6rem .9rem;font-size:.75rem;line-height:1.55;display:flex;gap:.55rem;align-items:flex-start;margin-bottom:2rem;color:var(--ap-text)}
.ap-banner svg{flex-shrink:0;color:var(--ap-teal);margin-top:1px}
.ap-banner a{color:var(--ap-teal);font-weight:600;text-decoration:underline;text-underline-offset:2px}
 
/* ── Flow column ── */
.ap-flow{display:flex;flex-direction:column;align-items:center}
 
/* ── Generic node ── */
.ap-node{width:100%;max-width:480px;border-radius:var(--ap-r);padding:.7rem 1.15rem;box-shadow:var(--ap-shadow);font-size:.855rem;font-weight:500;line-height:1.5;text-align:center;transition:box-shadow .18s,transform .18s;background:var(--ap-surf);border:1.5px solid var(--ap-border)}
.ap-node:hover{box-shadow:var(--ap-shadow-h);transform:translateY(-1px)}
.ap-node .ap-sub{display:block;font-size:.72rem;font-weight:400;color:var(--ap-muted);margin-top:.2rem}
.ap-node.ap-pill{border-radius:999px;padding:.65rem 1.5rem}
.ap-n-start{background:var(--ap-blue-l);border-color:var(--ap-blue)}
.ap-n-diag{background:var(--ap-orange-l);border-color:var(--ap-orange)}
.ap-n-psych{background:var(--ap-teal-l);border-color:var(--ap-teal)}
.ap-n-treat{background:var(--ap-green-l);border-color:var(--ap-green);font-weight:700;font-size:.9rem}
 
/* ── Straight arrow (between main-flow nodes) ── */
.ap-arr{width:2px;height:35px;background:var(--ap-border);margin:0px auto 3px auto;position:relative;flex-shrink:0}
.ap-arr::after{content:'';position:absolute;bottom:-1px;left:50%;transform:translateX(-50%);border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid var(--ap-border)}
 
/* ── Fork section ──
   max-width 540px — the decision diamond + branches + merge all live here.
   Branch column centres: col-1 at 90px (16.7%), col-3 at 450px (83.3%).
   Both the combined fork SVG (xMidYMid meet) and the merge SVG
   (preserveAspectRatio=none) use x=90/x=450, so they always align with
   the 3-col CSS grid column centres at any rendered width.
── */
.ap-fork-section{width:100%;max-width:540px;display:flex;flex-direction:column}
.ap-fork-section>svg{width:100%;display:block}
 
/* ── Branches: 3 equal columns (No | gap | Yes) ── */
.ap-branches{display:grid;grid-template-columns:repeat(3,1fr);width:100%}
.ap-branch{display:flex;flex-direction:column;align-items:center;padding:0 .55rem}
.ap-branch .ap-node{max-width:100%;width:100%}
 
/* Small arrow within a branch path */
.ap-branch-arr{width:2px;height:18px;background:var(--ap-border);margin:0 auto;position:relative;flex-shrink:0}
.ap-branch-arr::after{content:'';position:absolute;bottom:-1px;left:50%;transform:translateX(-50%);border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid var(--ap-border)}
 
/* Filler: flex:1 stretches both branch cols to equal height;
   ::before draws the vertical line running its full height */
.ap-branch-filler{flex:1;min-height:32px;position:relative;width:100%}
.ap-branch-filler::before{content:'';position:absolute;left:50%;transform:translateX(-50%);top:0;bottom:0;width:2px;background:var(--ap-border)}
 
/* ── Divider label ── */
.ap-divider{display:flex;align-items:center;gap:.6rem;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ap-muted);width:100%;max-width:480px;margin:.1rem 0}
.ap-divider::before,.ap-divider::after{content:'';flex:1;height:1px;background:var(--ap-border)}
 
/* ── Timeline ── */
.ap-tl{width:100%;max-width:480px;border-left:2px solid var(--ap-border);padding-left:1.5rem;display:flex;flex-direction:column;gap:1rem}
.ap-tl-item{position:relative}
/*
  Dot positioning:
    - .ap-tl has padding-left:1.5rem=24px and border-left:2px
    - .ap-tl-item left edge is at 24+2=26px from .ap-tl outer-left
    - We want dot centre (5px from left edge) ON the border centre (1px from outer-left)
    - dot left from item = 1 - 5 - 26 = -30px = calc(-1.5rem - 6px)
*/
.ap-tl-dot{position:absolute;left:calc(-1.5rem - 6px);top:.35rem;width:10px;height:10px;border-radius:50%;border:2.5px solid var(--ap-green);background:var(--ap-bg)}
.ap-tl-item.ap-tl-blue .ap-tl-dot{border-color:var(--ap-blue)}
/* Purple dot: hollow like all others — no background override */
.ap-tl-item.ap-tl-purple .ap-tl-dot{border-color:var(--ap-purple)}
.ap-tl-phase{display:inline-block;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--ap-muted);background:var(--ap-surf);border:1px solid var(--ap-border);border-radius:999px;padding:.15rem .5rem;margin-bottom:.3rem}
.ap-tl-time{font-size:.76rem;font-weight:700;color:var(--ap-green)}
.ap-tl-item.ap-tl-blue .ap-tl-time{color:var(--ap-blue)}
.ap-tl-item.ap-tl-purple .ap-tl-time{color:var(--ap-purple)}
.ap-tl-desc{font-size:.82rem;line-height:1.45;margin-top:.1rem}
.ap-tl-detail{font-size:.73rem;color:var(--ap-muted);margin-top:.1rem;line-height:1.4}
 
/* ── Footnote ── */
.ap-footnote{margin-top:2rem;padding:.9rem 1rem;background:var(--ap-surf);border:1px solid var(--ap-border);border-radius:10px;font-size:.73rem;color:var(--ap-muted);line-height:1.6}
.ap-footnote strong{color:var(--ap-text)}
.ap-footnote a{color:var(--ap-teal);text-decoration:underline;text-underline-offset:2px}
.ap-footnote ol{padding-left:1.1rem;margin-top:.45rem}
.ap-footnote li{margin-bottom:.25rem}
.ap-footnote p{margin-top:.5rem;font-size:.7rem}
 
/* ── Mobile ── */
@media(max-width:500px){
  .ap{padding:1.25rem 1rem 1.5rem}
  .ap-node{font-size:.8rem;padding:.6rem .9rem}
  .ap-branch{padding:0 .25rem}
}
</style>
<div class="ap">
<div class="ap-banner">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4M12 8h.01"></path></svg>
<span>Follow-up schedule based on <a href="https://www.vardochinsats.se/adhd/behandling-och-stoed/uppfoeljning-av-laekemedelsbehandling/" target="_blank" rel="noopener">Nationellt Vård- och Insatsprogram (NVP) for ADHD</a> &#x26; <strong>Socialstyrelsen Nationella Riktlinjer (2022)</strong>. Pathway structure reflects standard Swedish specialist psychiatry practice.</span>
</div>
<div class="ap-flow">
<!-- 1. Entry -->
<div class="ap-node ap-pill ap-n-start">🏥 Contact Vårdcentral</div>
<div class="ap-arr"></div>
<!-- 2. Remiss -->
<div class="ap-node">
Referral to ADHD Clinic
<span class="ap-sub">Remiss — via GP or self-referral to vuxenpsykiatri</span>
</div>
<div class="ap-arr"></div>
<!-- 3. Utredning -->
<div class="ap-node">
Utredning
<span class="ap-sub">Comprehensive neuropsychiatric investigation at the ADHD clinic</span>
</div>
<!-- No separate .ap-arr here: the fork SVG includes the incoming connector -->
<!-- ═══════════════════════════════════════════════════════════════
FORK SECTION
Combined SVG: connector + diamond + side arms + vertical drops
───────────────────────────────────────────────────────────────
viewBox 0 0 540 145
Diamond: "270,1 380,56 270,111 160,56"
· Width 220 units, Height 110 units → 2:1 ratio (classic)
· Centre at (270,56)
· Left tip  (160,56) → left arm  → x=90  (16.7% of 540)
· Right tip (380,56) → right arm → x=450 (83.3% of 540)
No/Yes badges drawn ON the arm lines, covering them visually.
Vertical drops from arm corners (x=90, x=450) end with arrowheads.
═══════════════════════════════════════════════════════════════ -->
<p><svg viewBox="0 0 540 124" xmlns="http://www.w3.org/2000/svg" width="100%" role="img" aria-label="Decision diamond: Prior diagnosis from abroad?">
<defs>
<filter id="ap-dshadow2" x="-12%" y="-12%" width="124%" height="124%">
<feDropShadow dx="0" dy="2" stdDeviation="4" flood-color="#00000010"></feDropShadow>
</filter>
</defs></svg></p>
<!-- Incoming connector from Utredning node above
<line x1="270" y1="0" x2="270" y2="20" stroke="#dcd9d5" stroke-width="2"/>
<polygon points="264,16 276,16 270,23" fill="#dcd9d5"/> -->
<!-- ── Diamond shape: width 220, height 110 → 2:1 ratio ── -->
<p><polygon points="270,1 380,56 270,111 160,56" fill="#fef6e4" stroke="#b87200" stroke-width="2" filter="url(#ap-dshadow2)"></polygon></p>
<!--
Diamond text (embedded in SVG so it scales with the shape).
Checked all lines fit within the polygon at their respective y values:
y=51 (5 above centre): available width ≈ 196u → "Prior diagnosis from abroad?" at 12px ≈ 165u ✓
y=65 (9 below centre): available width ≈ 184u → sub line 1 at 9.5px ≈ 155u ✓
y=76 (20 below centre): available width ≈ 140u → sub line 2 at 9.5px ≈ 124u ✓
-->
<p><text x="270" y="51" font-family="Satoshi,system-ui,-apple-system,sans-serif" font-size="12" font-weight="700" fill="#28251d" text-anchor="middle">Prior diagnosis from abroad?</text>
<text x="270" y="65" font-family="Satoshi,system-ui,-apple-system,sans-serif" font-size="9.5" font-weight="400" fill="#7a7974" text-anchor="middle">Formally documented &#x26; available</text>
<text x="270" y="76" font-family="Satoshi,system-ui,-apple-system,sans-serif" font-size="9.5" font-weight="400" fill="#7a7974" text-anchor="middle">at time of investigation</text></p>
<!-- ══ LEFT ARM (No path) ══
Arm from left diamond tip (160,56) → branch centre (90,56)
Badge centre at arm midpoint: x = (160+90)/2 = 125
Line drawn first; badge rect drawn over it (covers the line) -->
<line x1="160" y1="56" x2="90" y2="56" stroke="#dcd9d5" stroke-width="2">
<!-- No badge pill overlaid on arm -->
<rect x="101" y="46" width="48" height="20" rx="10" fill="#faeade" stroke="#c05e00" stroke-width="1.5">
<text x="125" y="60" font-family="Satoshi,system-ui,-apple-system,sans-serif" font-size="11" font-weight="700" fill="#c05e00" text-anchor="middle">No</text>
<!-- Left vertical drop → arrowhead tip at (90,121) -->
<line x1="90" y1="56" x2="90" y2="112" stroke="#dcd9d5" stroke-width="2">
<polygon points="84,112 96,112 90,118" fill="#dcd9d5">
<!-- ══ RIGHT ARM (Yes path) ══
Arm from right diamond tip (380,56) → branch centre (450,56)
Badge centre at arm midpoint: x = (380+450)/2 = 415 -->
<line x1="380" y1="56" x2="450" y2="56" stroke="#dcd9d5" stroke-width="2">
<!-- Yes badge pill overlaid on arm -->
<rect x="391" y="46" width="48" height="20" rx="10" fill="#e0f0ef" stroke="#01696f" stroke-width="1.5">
<text x="415" y="60" font-family="Satoshi,system-ui,-apple-system,sans-serif" font-size="11" font-weight="700" fill="#01696f" text-anchor="middle">Yes</text>
<!-- Right vertical drop → arrowhead tip at (450,120) -->
<line x1="450" y1="56" x2="450" y2="112" stroke="#dcd9d5" stroke-width="2">
<polygon points="444,112 456,112 450,118" fill="#dcd9d5">

<!-- ── Branches: 3-col grid (No | spacer | Yes) ──
Col centres: 540/6=90px and 540*5/6=450px
→ aligns with x=90 and x=450 in both SVGs above and below ✓ -->
<div class="ap-branches">
<!-- No branch (col 1) -->
<div class="ap-branch">
<div class="ap-node ap-n-diag">
Placed on Diagnosis<br>Waiting List
</div>
<div class="ap-branch-arr"></div>
<div class="ap-node ap-n-diag">
✓ Diagnosis confirmed
</div>
<!-- filler extends the vertical connector line to the grid row bottom -->
<div class="ap-branch-filler"></div>
</div>
<!-- Middle spacer (col 2): empty — no line drawn here -->
<div></div>
<!-- Yes branch (col 3) -->
<div class="ap-branch">
<div class="ap-node ap-n-psych">
Assigned Psychiatrist<br>&#x26; Treatment Plan
</div>
<!-- filler stretches to match No-branch height -->
<div class="ap-branch-filler"></div>
</div>
</div><!-- end .ap-branches -->
<!-- ── Merge SVG ──
preserveAspectRatio="none" keeps height fixed while x-coords scale:
at 540px: x=90 → 90px, x=450 → 450px (match col centres) ✓
at 400px: x=90 → 66.7px, x=450 → 333.3px (still match 1/3 and 5/6) ✓ -->
<p><svg viewBox="0 0 540 42" height="42" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" width="100%" aria-hidden="true">
<line x1="90" y1="0" x2="90" y2="20" stroke="#dcd9d5" stroke-width="2"></line>
<line x1="450" y1="0" x2="450" y2="20" stroke="#dcd9d5" stroke-width="2"></line>
<line x1="90" y1="20" x2="450" y2="20" stroke="#dcd9d5" stroke-width="2"></line>
<line x1="270" y1="20" x2="270" y2="34" stroke="#dcd9d5" stroke-width="2"></line>
<polygon points="264,32 276,32 270,42" fill="#dcd9d5"></polygon>
</svg></p>
</polygon></line></rect></line></polygon></line></rect></line></div><!-- end .ap-fork-section -->
<!-- 5. Treatment -->
<div class="ap-node ap-n-treat">
💊 Treatment
<span class="ap-sub" style="font-size:.78rem">Medication (stimulant / non-stimulant)  ·  Psychoeducation  ·  CBT / Group Therapy  ·  Occupational Therapy</span>
</div>
<div class="ap-arr"></div>
<!-- Divider -->
<div class="ap-divider">Follow-up schedule — per NVP / Socialstyrelsen</div>
<div class="ap-arr"></div>
<!-- Timeline -->
<div class="ap-tl">
<div class="ap-tl-item">
<div class="ap-tl-dot"></div>
<div class="ap-tl-phase">Phase 1 — Dose titration</div>
<div class="ap-tl-time">Weekly — after each dose increase</div>
<div class="ap-tl-desc">Follow-up — Nurse (or Psychiatrist)</div>
<div class="ap-tl-detail">Blood pressure &#x26; pulse  ·  Effect &#x26; side effects  ·  Increase dose if tolerated  ·  Continue until optimal dose is reached</div>
</div>
<div class="ap-tl-item ap-tl-blue">
<div class="ap-tl-dot"></div>
<div class="ap-tl-phase">Phase 2 — Maintenance dose reached</div>
<div class="ap-tl-time">3–6 months after stable dose</div>
<div class="ap-tl-desc">Structured follow-up — Psychiatrist &#x26; Nurse</div>
<div class="ap-tl-detail">Medication effect  ·  Symptoms &#x26; function  ·  Side effects &#x26; adherence  ·  BP, pulse &#x26; weight  ·  ASRS questionnaire  ·  Revise care plan if needed</div>
</div>
<div class="ap-tl-item ap-tl-blue">
<div class="ap-tl-dot"></div>
<div class="ap-tl-time">Every 6 months (ongoing)</div>
<div class="ap-tl-desc">Follow-up — Psychiatrist &#x26; Nurse</div>
<div class="ap-tl-detail">Medication effect  ·  Symptoms &#x26; function  ·  Side effects &#x26; adherence  ·  BP, pulse &#x26; weight  ·  ASRS questionnaire</div>
</div>
<div class="ap-tl-item ap-tl-purple">
<div class="ap-tl-dot"></div>
<div class="ap-tl-phase">Phase 3 — Long-term (layered on 6-month checks)</div>
<div class="ap-tl-time">Every 12 months (ongoing)</div>
<div class="ap-tl-desc">Annual follow-up with Physician</div>
<div class="ap-tl-detail">Evaluate need &#x26; conditions for continued medication  ·  Cardiovascular status check</div>
</div>
</div><!-- end .ap-tl -->
<!-- Footnote -->
<div class="ap-footnote" style="width:100%">
<strong>Sources</strong>
<ol>
<li><a href="https://www.vardochinsats.se/adhd/behandling-och-stoed/uppfoeljning-av-laekemedelsbehandling/" target="_blank" rel="noopener">NVP — Uppföljning av läkemedelsbehandling vid adhd</a>, Socialstyrelsen &#x26; SKR</li>
<li><a href="https://www.socialstyrelsen.se/kunskapsstod-och-regler/regler-och-riktlinjer/nationella-riktlinjer/" target="_blank" rel="noopener">Nationella riktlinjer för vård och stöd vid adhd och autism</a>, Socialstyrelsen (2022)</li>
<li><a href="https://www.vardochinsats.se/adhd/" target="_blank" rel="noopener">NVP för adhd — overview</a>, vardochinsats.se</li>
</ol>
<p>Note: Actual intervals may vary by region and clinical judgment. More frequent follow-up is warranted when new side effects or symptom worsening occur.</p>
</div>
</div><!-- end .ap-flow -->
<!-- end .ap -->
<!-- EMBED END -->
<h2 id="the-treatment-pathway--step-by-step">The Treatment Pathway — Step by Step</h2>
<p>Here is what each stage of the flowchart actually involves in practice:</p>
<p><strong>1. Initial Contact</strong>
Your journey begins at a primary care center (<em>Vårdcentral</em>) or, in some cases, directly with specialist psychiatry. You describe your difficulties to a general practitioner (GP), who assesses whether a referral to a specialist is appropriate.</p>
<p><strong>2. Initial Mapping and Needs Assessment</strong>
The GP or referring professional carries out a brief mapping of your functional needs — understanding how your symptoms affect daily life, work, and relationships. Based on this, <em>early support</em> such as practical coping strategies or workplace adjustments can begin even before a formal diagnosis is established.</p>
<p><strong>3. Decision Point: Specialist Assessment Needed?</strong>
If there is a strong enough suspicion of ADHD and specialist-level evaluation is warranted, a referral (<em>remiss</em>) is issued to an ADHD clinic. If not, support continues at the primary care level with regular follow-up.</p>
<p><strong>4. Diagnostic Assessment — <em>Utredning</em></strong>
At the specialist clinic, a thorough diagnostic process (<em>utredning</em>) is carried out by a psychiatrist. This typically includes structured clinical interviews, validated questionnaires (such as the ASRS), a review of your developmental history — and often, input from people who knew you in childhood, such as parents or teachers.</p>
<p><strong>5. Prior Diagnosis?</strong></p>
<ul>
<li><strong>If you have a documented diagnosis from abroad</strong>, the specialist reviews and validates it. If accepted, you are assigned a psychiatrist and a personalized treatment plan can begin within weeks — you can largely skip the waiting list.</li>
<li><strong>If no prior diagnosis exists</strong>, you enter the full diagnostic process, which may involve a waiting list of several months to over a year depending on the clinic and region.
<strong>6. Individualized Treatment Plan</strong>
Once diagnosed, you and your assigned psychiatrist co-create a treatment plan tailored to your specific profile, symptoms, and functional needs. This is <em>your</em> plan — bring your questions, your goals, and your history to this conversation.</li>
</ul>
<p><strong>7. Multimodal Treatment</strong>
Treatment in Sweden is <em>multimodal</em> in principle, meaning it is intended to combine several approaches. In practice, access to the non-medication components varies significantly by region and clinic:</p>
<ul>
<li>
<p><strong>Psychoeducation</strong>: Understanding how ADHD works and how it specifically affects you</p>
</li>
<li>
<p><strong>CBT and Group Therapy</strong>: Cognitive behavioural therapy or structured group sessions (where available — often only in Swedish)</p>
</li>
<li>
<p><strong>Occupational Therapy (OT)</strong>: Practical strategies for day-to-day functioning, organization, and environment</p>
</li>
<li>
<p><strong>Medication</strong>: Stimulants (e.g., methylphenidate-based: <em>Ritalin</em>, <em>Concerta</em>, <em>Medikinet</em>, <em>Equasym</em>) or non-stimulants (e.g., <em>atomoxetine</em> / <em>Strattera</em>), when clinically indicated. The choice of medication and dosage is based on your individual symptoms, medical history, and response to treatment.
<strong>8. Follow-up Schedule</strong>
Follow-up is structured and progressive. Think of it like calibrating a new instrument — the early checks are frequent, and they gradually space out as things stabilize:</p>
</li>
<li>
<p><strong>During dose titration</strong>: Short check-ins after <em>each</em> dose increase — monitoring blood pressure, pulse, perceived effect, and side effects, with dosage adjusted as needed</p>
</li>
<li>
<p><strong>At 3–6 months</strong>: A structured review once a stable dose is reached — covering blood pressure, pulse, weight, ASRS score, functional status, and medication adherence</p>
</li>
<li>
<p><strong>Every 6 months</strong>: Ongoing maintenance visits covering the same parameters, plus symptom trajectory and any emerging concerns</p>
</li>
<li>
<p><strong>Annual physician review</strong>: A comprehensive evaluation of whether continued treatment is appropriate and a full cardiovascular status check</p>
</li>
</ul>
<hr>
<h1 id="adhd-diagnosis">ADHD Diagnosis</h1>
<p>Many people have asked me about the procedure for getting an ADHD diagnosis as a resident of Sweden (Swedish citizens and legal residents with a <em>personnummer</em> and state healthcare coverage). I have tried to summarize the process clearly below, and I will keep this post updated as things change.</p>
<p>Currently, there is an overwhelming number of patients on waiting lists across Sweden awaiting their initial appointment for ADHD assessment. This is especially severe in larger cities (Stockholm, Göteborg, Malmö). Waiting times for the initial appointment can reach up to two years — a long time to wait when you have been struggling for much of your life. That said, I have also heard of people reaching the diagnosis stage in around two months recently, so the picture is uneven.</p>
<p>Below are the two most practical routes to getting diagnosed while living in Sweden as an independent adult.</p>
<blockquote class="prompt-info">
<p>Beware that for all the ways below, you need to have a <a href="https://www.skatteverket.se/privat/folkbokforing/personnummer.4.3810a01c150939e893f18c29.html">personal number (personnummer)</a> and <a href="https://www.bankid.com/">BankID</a> already active.</p>
</blockquote>
<h2 id="diagnosis-in-sweden">Diagnosis in Sweden</h2>
<h3 id="1-get-a-referral-from-general-practitioner-for-a-psychiatrist">1. Get a Referral from General Practitioner for a Psychiatrist</h3>
<p>First, you need to be registered with a primary care center (<em>Vårdcentral</em>). You can find the closest one by searching “Vårdcentral” in Google Maps, or asking friends or colleagues for recommendations. Personally, I recommend using <a href="https://www.kry.se/">Kry</a>, which lets you book a video appointment with a GP quickly and without a physical visit.</p>
<p>When you meet the GP, be clear: tell them either that you have a prior ADHD diagnosis and wish to continue treatment in Sweden, or that you have been struggling with ADHD symptoms for a long time and would like to be assessed. <strong>Be specific about how your symptoms affect your daily life</strong> — this is what will support your referral.</p>
<h3 id="2-book-appointment-with-the-psychiatrist">2. Book Appointment with the Psychiatrist</h3>
<p>The GP will refer you to an ADHD clinic in your region (<em>ADHD-mottagning</em>). In Swedish, this referral is called a <em><strong>remiss</strong></em>.</p>
<blockquote class="prompt-info">
<p>You can find a list of ADHD clinics <a href="https://www.1177.se/Stockholm/hitta-vard/?st=6015bced-3a87-4218-93ab-db4b2b021a43&#x26;nearby=false&#x26;s=distance&#x26;g=&#x26;lat=41.1496568&#x26;lng=-8.6148196&#x26;location=&#x26;caretype=ADHD&#x26;q=">here</a>.</p>
</blockquote>
<p>After the referral is sent, the clinic should contact you within a week. If they do not, <em>follow up yourself</em> — call them and mention your <em>remiss</em>. Depending on availability, they will set an appointment within up to three months. This first appointment is called the <em><strong>Utredning</strong></em> — the initial investigation for ADHD diagnosis.</p>
<p>Worth noting: some ADHD centers do not require a GP referral, and you can self-refer (<em>egenremiss</em>) directly. It is worth checking whether any clinic in your region offers this, as it can save time.</p>
<blockquote class="prompt-warning">
<p>Read this page thoroughly before attending your first appointment: <a href="https://www.1177.se/Stockholm/behandling--hjalpmedel/undersokningar-och-provtagning/psykiatriska-utredningar/neuropsykiatrisk-utredning/"><strong>ADHD Utredning</strong></a></p>
</blockquote>
<h3 id="3-attend-the-initial-appointment">3. Attend the Initial Appointment</h3>
<p><strong>Before you go</strong>, create a note on your phone listing <em>everything</em> that has been affecting you — the specific situations, the patterns you have noticed, and how long they have been part of your life. This is important: in the moment, it is easy to forget, minimize, or struggle to articulate what you live with every day. A written list keeps you grounded and ensures nothing gets left out.</p>
<p>At the <em>utredning</em>, the doctor (usually a psychiatrist) will listen to your challenges, have you fill in questionnaires about your symptoms, and try to build a picture of your difficulties. Based on their assessment, they will decide whether further investigation is needed. If it is, you may be placed on a waiting list — but if you already have a diagnosis from abroad, you can skip this entirely (see below).</p>
<h3 id="4-the-routine-starts">4. The Routine Starts</h3>
<p>After diagnosis, you enter a structured follow-up cycle with consecutive appointments. Use this time well — educate yourself about ADHD through reliable sources, and come to appointments with questions. Here is a resource I recommend as a starting point:</p>
<ul>
<li><a href="https://www.1177.se/Stockholm/sjukdomar--besvar/hjarna-och-nerver/neuropsykiatriska-funktionsnedsattningar/adhd/">Sweden: ADHD i Vuxen Ålder (in Swedish, translate using Google Translate)</a></li>
</ul>
<h2 id="already-have-a-diagnosis-from-another-country">Already Have a Diagnosis from Another Country?</h2>
<p>If you already have a diagnosis from another country, <strong>you can skip the long waiting list</strong> and move directly into treatment in Sweden. At <a href="#1-get-a-referral-from-general-practitioner-for-a-psychiatrist">step 1</a>, make sure to tell your GP about your prior diagnosis. When you attend your first appointment at the ADHD clinic, bring all your documentation. The psychiatrist will review and validate your prior diagnosis, and if accepted, a treatment plan can be established within weeks.</p>
<h2 id="danish-diagnosis-shortcut">Danish Diagnosis (Shortcut)</h2>
<p>Compared to Sweden, the waiting time for ADHD diagnosis in Denmark is <em>dramatically</em> shorter — in some cases, you can complete a full assessment in a fraction of the time. Getting diagnosed in Denmark and then continuing your treatment in Sweden is a legitimate and practical route for many people.</p>
<p><em>Practical information about how to do this will be updated here soon.</em></p>
<hr>
<h1 id="my-personal-experience">My Personal Experience</h1>
<blockquote class="prompt-info">
<p>My experience is mainly from my contact with two ADHD centers where I have been treated for my ADHD in Stockholm: <a href="https://www.aleris.se/psykiatri/adhd/stockholm/">Aleris Psykiatri Spånga</a> — which has since transitioned fully to private under <a href="https://wemind.se/psykiatri/vuxenpsykiatri/spanga/">WeMind</a> — and my current clinic, <a href="https://www.norrastockholmspsykiatri.se/vard-hos-oss/mottagningar/specialistpsykiatrisk-mottagning-4-st-eriksplan/">Specialistpsykiatrisk mottagning 4, S:t Eriksplan</a>. I have been treated exclusively under the public healthcare system.</p>
</blockquote>
<p>At the time of writing, the public healthcare system in Sweden is overwhelmed and heavily understaffed across the board — specialists, nurses, psychologists, and occupational therapists alike. In practical terms, this means that what is described on paper as “multimodal treatment” often translates into <em>medication-only care</em> in the public sector. <strong>There is little to no access to psychotherapy, cognitive behavioural therapy, or individual psychological support.</strong> Group therapies exist in some clinics, but are available only in Swedish and are limited in number. The shortage of qualified professionals is acute, and it directly shapes the quality of care patients receive.</p>
<h2 id="challenges-and-difficulties">Challenges and Difficulties</h2>
<p>I was first diagnosed with ADHD at age 12. I was re-diagnosed at 24 in Italy, during my master’s degree. My ADHD treatment journey in Sweden began in 2021, after moving to Stockholm. I was able to visit a psychiatrist relatively quickly by presenting my Italian diagnosis, and a treatment plan was established fairly promptly.</p>
<p>However, what became apparent over time was that the public sector ADHD services in Sweden are, in many ways, <em>not adequately equipped</em> to care for adults with ADHD. The level of expertise varies widely, and the field’s more recent developments — particularly around adult presentations of ADHD and evidence-based psychological interventions — are often not reflected in the care provided.</p>
<p>I have been requesting access to psychotherapy for <strong>five years</strong>. Every request has been declined, with the explanation that psychotherapy is not an officially recommended first-line treatment for ADHD in Sweden, and that psychotherapists are in critically short supply. While the former is debatable and the latter is undeniably true, the cumulative effect is a system that leaves many adults — <em>particularly those with complex presentations or co-occurring conditions</em> — without the full range of support they need.</p>
<p>This is not a criticism of the individual professionals I have worked with, many of whom are dedicated and competent within the constraints they face. It is a structural problem, and one worth naming clearly so that others navigating this system know what to expect.</p>]]></content></entry></feed>