<?xml version="1.0" encoding="UTF-8" ?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" version="2.0"> <channel> <title><![CDATA[MC Project]]></title> <description><![CDATA[Global digital products and freelance services. Focuses on development, production and distribution of programming scripts, application source code, plugins, themes and templates.]]></description> <image> <title><![CDATA[MC Project]]></title> <url>https://en.mycoding.id/favicon.ico</url> <link>https://en.mycoding.id/</link> </image> <category><![CDATA[Software Engineering, Website Development, Mobile Android App, Application Source Code, Programming Scripts]]></category> <link>https://en.mycoding.id/</link> <atom:link href="https://en.mycoding.id/rss.xml" rel="self" type="application/rss+xml"/> <atom:link href="https://en.mycoding.id/rss-videos.xml" rel="alternate" type="application/rss+xml"/> <atom:link href="https://en.mycoding.id/" rel="alternate" type="text/html"/> <pubDate>Tue, 03 Nov 2026 21:45:10 +0700</pubDate> <lastBuildDate>Tue, 03 Nov 2026 21:45:10 +0700</lastBuildDate> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <managingEditor>support@mycoding.id (Adi Gunawan)</managingEditor> <webMaster>support@mycoding.id (Adi Gunawan)</webMaster> <language>en_US</language> <copyright>MC Project</copyright> <generator>MC Project</generator> <item> <title><![CDATA[ChatGPT's search volume is now roughly 20% of Google's. Wow, people were really sick of Google, huh?]]></title> <description><![CDATA[ChatGPT's search volume is now roughly 20% of Google's. Wow, people were really sick of Google, huh?. OpenAI's Adam Fry told Big Technology that ChatGPT has about a fifth of Google's hunt query volume. Google can't be thrilled concerning that.]]></description> <media:thumbnail url="https://i.insider.com/6aea322c94c155f6acb2e152?width=1200&amp;format=jpeg"/> <category><![CDATA[Business]]></category> <link>https://en.mycoding.id/chatgpt-s-search-volume-is-now-roughly-20-of-google-s-wow-people-were-really-sick-of-google-huh-75483</link> <content:encoded><![CDATA[<div e-name="post-hero" data-component-type="post-hero" data-load-strategy="exclude"> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject"> <div> <p><img src="https://i.insider.com/6aea3012f5f059691404abb4?width=2000&amp;format=jpeg&amp;auto=webp" srcset="https://i.insider.com/6aea3012f5f059691404abb4?width=400&amp;format=jpeg&amp;auto=webp 400w, https://i.insider.com/6aea3012f5f059691404abb4?width=500&amp;format=jpeg&amp;auto=webp 500w, https://i.insider.com/6aea3012f5f059691404abb4?width=700&amp;format=jpeg&amp;auto=webp 700w, https://i.insider.com/6aea3012f5f059691404abb4?width=1000&amp;format=jpeg&amp;auto=webp 1000w, https://i.insider.com/6aea3012f5f059691404abb4?width=1300&amp;format=jpeg&amp;auto=webp 1300w, https://i.insider.com/6aea3012f5f059691404abb4?width=2000&amp;format=jpeg&amp;auto=webp 2000w" sizes=" 1280px) 900px" alt="a phone searching google" decoding="sync"> </p></div> <span> <span> <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewbox="0 0 24 24"> <path fill="currentColor" fill-rule="evenodd" d="m4.56 18.5 7.486-7.72 7.394 7.626 2.56-2.64L12.046 5.5 2 15.86l2.56 2.64Z"></path> </svg> <figcaption e-name="image-caption"> <span>People were getting fed up alongside Google search, which made it uncomplicated for ChatGPT to stage in.</span> <span> <span e-name="image-source" itemprop="creditText">Robert Michael/picture alliance via Getty Images</span> </span> </figcaption> </span> </span> </figure> </div> <div data-component-type="image-modal" data-load-strategy="lazy"> <p>OpenAI is coming for Google Search, and it's working.</p><p>"ChatGPT's quantity of search-like queries is now approximately one-fifth the quantity of queries of Google," Adam Fry, ChatGPT's person merchandise lead, told <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;outbound_click&quot;}' rel=" nofollow">Alex Kantrowitz of the Big Technology newsletter.</a></p><p>It's fine news for OpenAI. For Google? Not so great. It not lone shows that group are consenting to use AI, but that group were really, really, fed up alongside Google hunt results.</p><p>We already knew that essential data searching is currently the top use of LLMs akin ChatGPT. <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;outbound_click&quot;}' rel=" nofollow">Pew Research Center released a report</a> this summer that showed that the top use case was to "search for information," alongside 42% of American adults surveyed saying they have used AI for that.</p><p>("For tasks at work" was the second most average use, alongside 38% of employed adults reporting that. Lesser uses contain entertainment, getting news, and medicinal advice.)</p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view" itemscope="" itemtype="https://schema.org/ImageObject"> <div> <p><img src="image/svg+xml,%3C%3Fxml%20version=&#039;1.0&#039;%20encoding=&#039;UTF-8&#039;%3F%3E%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20width=&#039;1&#039;%20height=&#039;1&#039;/%3E" data-content-type="image/png" data-srcs='//i.insider.com/6aea31a394c155f6acb2e14a&quot;:{&quot;contentType&quot;:&quot;image/png&quot;,&quot;aspectRatioW&quot;:840,&quot;aspectRatioH&quot;:1064}}' alt="pew inage concerning hunt and activity are most ccommon ai uses"> </p></div> <span> <figcaption e-name="image-caption"> Searching for data is the #1 use for chatbots akin ChatGPT, according to a Pew report.&nbsp; <span e-name="image-source" itemprop="creditText"> Pew Research Center </span> </figcaption> </span> </figure> <p>This study wasn't specifically concerning ChatGPT, but it's by far the most famous AI chatbot (44% of American adults surveyed told Pew they've used ChatGPT, and lone 24% have used Gemini, the next most common).</p><p>ChatGPT now has 1.2 milliard weekly users. We don't cognize how many of those users are doing informational searches as opposed to another things akin coding or generating images, but it seems apt that person who uses it to create images or conversation would additionally ask it for information.</p><p>Google did not immediately react to a petition for comment on the competition from ChatGPT, but final twelvemonth Alphabet CEO Sundar Pichai addressed the matter during an <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;outbound_click&quot;}' rel=" nofollow">interview</a> alongside Bloomberg's Emily Chang.</p><p>"You've had these chatbots measure up to hundreds of millions of users. We've grown in queries," Pichai stated at the time. "So I think it feels extremely far from a zero-sum equivalent to me. To use another parallel, TikTok came in, everybody started using TikTok. YouTube grew and did very, extremely fine in those moments too."</p> <h2 id="63cbb7a4-03f5-43db-b1af-d3dc14c2bd38" data-toc-id="63cbb7a4-03f5-43db-b1af-d3dc14c2bd38">People started to awareness akin Google hunt had gotten worse</h2><p>Google says that it handles <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;outbound_click&quot;}' rel=" nofollow">5 trillion searches </a>per year; it's dominated hunt for two decades, and extremely profitably!</p><p>But many group were getting really ill of Google search. So frequently in the final few years, I've heard allies or another group objection how <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;outbound_click&quot;}' rel=" nofollow">Google hunt feels broken</a>. Search results were so stuffed alongside SEO-friendly links that it frequently felt difficult to<a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;outbound_click&quot;}' rel=" nofollow"> rely item </a>or discover the results you really were searching for.</p><p>Users had started to add the term "Reddit" at the end of searches in hopes of getting improved results &mdash; which ended up being <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">a boon in traffic for Reddit </a>(sadly, this didn't last; <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">Reddit fair reported a drop</a> in hunt referral traffic because of Google's AI Overviews that it doesn't anticipate to get back).</p><p>So whenever ChatGPT came along, abruptly there was a new way to get data and answers without all the SEO fluff &mdash; and plentifulness of group were thrilled. Sure, the data isn't continually reliable. Everyone should cognize improved than to blindly rely facts doled out by AI, which is prone to hallucinations or fair plain bungling, akin <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">telling group to put glue in their pizza</a>.</p><p>Despite the issues alongside trusting AI for data (and to be fair, it has improved since the glue/pizza fiasco of 2024), it's apparent that lots of group were very, extremely blessed to toggle complete to ChatGPT alternatively of Google for their informational searching needs.</p><p>I think what we should regard is that says a lot additional concerning how <em>bad</em> Google had gotten than it does concerning how <em>good</em> ChatGPT is. There's a compelling case to be made that Google <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">enshittified</a> its flagship merchandise so seriously &mdash; perchance from the years and years of having no meaningful competitors &mdash; that it was a sitting duck, prepared to have its lunch eaten by the archetypal new disruptor to arrive alongside and recommendation group a improved way.</p><p>Google eventually realized it was in trouble, issuing a <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">"code red"</a> in 2022 complete ChatGPT. It power be period to matter another one?</p> </div> <h2>Read next</h2> <div data-recommendations-content data-track-click-shared='&quot;Read next&quot;}'> <div e-name="read-next-list" data-recommendations-list> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> </div> </div> <a e-name="read-next-image-link" data-recommendations-image-link data-recommendations-link tabindex="-1"> <p><img alt=""> </p> </a> <h3> <a e-name="read-next-title-link" data-recommendations-link data-recommendations-title></a> </h3> <div data-component-type="post-bottom-authors" data-load-strategy="exclude" data-track-view='&quot;module_in_view&quot;}' data-track-click-shared='&quot;navigation&quot;}'> <div data-track-view='&quot;module_in_view&quot;}'> <div> <p><span>Katie Notopoulos is a elder equal at Business Insider who writes concerning technology, business, and culture.</span><span>Previously, Katie was a tech newsman at BuzzFeed News and has written for The Atlantic, The New York Times, Fast Company, and MIT Technology Review.</span><span></span> </p> </div> </div> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/chatgpt-s-search-volume-is-now-roughly-20-of-google-s-wow-people-were-really-sick-of-google-huh-75483</guid> <pubDate>Tue, 03 Nov 2026 21:45:10 +0700</pubDate> <author><![CDATA[support@mycoding.id (Katie Notopoulos)]]></author> </item> <item> <title><![CDATA[The midterm races to watch if you care about money, Musk, and the AI boom]]></title> <description><![CDATA[The midterm races to watch if you care about money, Musk, and the AI boom. AI, tech, and data centers are shaping key 2026 midterm races in Ohio, Michigan, Pennsylvania, and Wisconsin. Here are the eight races to watch.]]></description> <media:thumbnail url="https://i.insider.com/6ae8fe2f978e617b0a2a4cfb?width=1200&amp;format=jpeg"/> <category><![CDATA[Business]]></category> <link>https://en.mycoding.id/the-midterm-races-to-watch-if-you-care-about-money-musk-and-the-ai-boom-75484</link> <content:encoded><![CDATA[<div e-name="post-hero" data-component-type="post-hero" data-load-strategy="exclude"> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject"> <div> <p><img src="https://i.insider.com/6ae8f2f3426e175d4818d806?width=2000&amp;format=jpeg&amp;auto=webp" srcset="https://i.insider.com/6ae8f2f3426e175d4818d806?width=400&amp;format=jpeg&amp;auto=webp 400w, https://i.insider.com/6ae8f2f3426e175d4818d806?width=500&amp;format=jpeg&amp;auto=webp 500w, https://i.insider.com/6ae8f2f3426e175d4818d806?width=700&amp;format=jpeg&amp;auto=webp 700w, https://i.insider.com/6ae8f2f3426e175d4818d806?width=1000&amp;format=jpeg&amp;auto=webp 1000w, https://i.insider.com/6ae8f2f3426e175d4818d806?width=1300&amp;format=jpeg&amp;auto=webp 1300w, https://i.insider.com/6ae8f2f3426e175d4818d806?width=2000&amp;format=jpeg&amp;auto=webp 2000w" sizes=" 1280px) 900px" alt="Ken Paxton and James Talarico" decoding="sync"> </p></div> <span> <span e-name="image-source" itemprop="creditText">Michael Gonzalez/Getty; Brandon Bell/Getty; BI</span> </span> </figure> </div> <div data-component-type="image-modal" data-load-strategy="lazy"> <p>The 2026 midterms have arrived.</p><p>Beyond authority of Congress, Tuesday's ballot volition exemplify the degree of Silicon Valley's governmental power and the breadth of the AI backlash.</p><p>SpaceX CEO <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">Elon Musk</a>, in particular, has a lot at stake, alongside document donations powering a last-minute attempt to preserve a Texas Senate place and perchance the GOP majority, too.</p><p>In supplement to the candidates, there are big ballot questions looming, none additional so than the California prosperity tax fight.</p><p>Here's what we're watching.</p><h2 id="360bc698-df35-4aa2-9ecc-bf8ac166b6de" data-toc-id="360bc698-df35-4aa2-9ecc-bf8ac166b6de"><strong>Ohio Senate</strong></h2> <figure data-type="img" e-name="image-figure-image" data-media-container="image" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view" itemscope="" itemtype="https://schema.org/ImageObject"> <div> <p><img src="image/svg+xml,%3C%3Fxml%20version=&#039;1.0&#039;%20encoding=&#039;UTF-8&#039;%3F%3E%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20width=&#039;1&#039;%20height=&#039;1&#039;/%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/6ae9001cfa15dcc2eae9224d&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:4759,&quot;aspectRatioH&quot;:3193}}' alt="Jon Husted walks former Donald Trump"> </p></div> <span> <figcaption e-name="image-caption"> Sen. Jon Husted, a Republican from Ohio, walks former President Donald Trump&nbsp; <span e-name="image-source" itemprop="creditText"> Kevin Dietsch/Getty Images </span> </figcaption> </span> </figure> <p id="6b9cc230-bc6f-46f7-86d2-0c85dcff2c88"><strong>Candidates:</strong> Sen. Jon Husted, a Republican; erstwhile Sen. Sherrod Brown, a Democrat; Bill Redpath, a libertarian; and Greg Levy, an independent</p><p id="6b9cc230-bc6f-46f7-86d2-0c85dcff2c88"><strong>Where it stands: </strong>Husted, a erstwhile lieutenant governor, is trying to suspend on to Vice President JD Vance's Senate seat, but he's facing a fierce difficulty from Brown, a erstwhile three-term legislator who is seeking to come back to Congress. Brown has criticized Husted for his former assistance for data center development. Husted has stated the matter have to be remaining to communities and no longer supports offering tax incentives for new data center construction. Earlier this summer, Senate Republicans' run arm warned AI labs that if Husted goes downward "and data centers get the blame, politicians throughout the nation volition obtain notice &mdash; and they volition not go near the next one."</p><p id="6b9cc230-bc6f-46f7-86d2-0c85dcff2c88"><strong>Polls close:</strong> 7:30 pm EST</p><p id="6b9cc230-bc6f-46f7-86d2-0c85dcff2c88"><strong>The outlook: </strong>Cook Political Report rates it as a "Toss-Up."</p> <p id="6b9cc230-bc6f-46f7-86d2-0c85dcff2c88"><strong>History: </strong>President Donald Trump won the province by 11 points. Brown misplaced to now-Sen. Bernie Moreno, a Republican, by fair under 4 points.</p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view" itemscope="" itemtype="https://schema.org/ImageObject"> <div> <p><img src="image/svg+xml,%3C%3Fxml%20version=&#039;1.0&#039;%20encoding=&#039;UTF-8&#039;%3F%3E%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20width=&#039;1&#039;%20height=&#039;1&#039;/%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/6ae8ffc5978e617b0a2a4d18&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:2500,&quot;aspectRatioH&quot;:1666}}' alt="Elon Musk talks during an event"> </p></div> <span> <figcaption e-name="image-caption"> SpaceX CEO Elon Musk&nbsp; <span e-name="image-source" itemprop="creditText"> Mark Schiefelbein/AP </span> </figcaption> </span> </figure> <h2 id="298e19da-b117-4e67-9eef-8fc9de1e95d1" data-toc-id="298e19da-b117-4e67-9eef-8fc9de1e95d1"><strong>Texas Senate</strong></h2><p id="298e19da-b117-4e67-9eef-8fc9de1e95d1"><strong>Candidates: </strong>Texas Attorney General Ken Paxton, a Republican; State Rep. James Talarico, a Democrat; Ted Brown, a libertarian</p><p id="298e19da-b117-4e67-9eef-8fc9de1e95d1"><strong>Where it stands: </strong>Paxton is expecting to keep the place in Republican hands following Trump's endorsement pushed him complete Sen. John Cornyn following a bitter chief and runoff. Cornyn warned that if Paxton won, Republicans would have to expend important sums to assistance an officeholder saddled alongside scandals, impeachment, and a separation on "biblical grounds." Enter Musk. The world's richest man has been frequently trashing Talarico on X. More importantly, Musk has donated at smallest $158 myriad that has been routed to a pro-Paxton excellent PAC.</p><p id="298e19da-b117-4e67-9eef-8fc9de1e95d1"><strong>Polls close: </strong>Most polls in the province near at 8 pm EST, but for locations in the Mountain Time Zone they near at 9 pm EST.</p><p id="298e19da-b117-4e67-9eef-8fc9de1e95d1"><strong>The outlook: </strong>Cook Political Report rates it as a "Toss-Up."</p><p id="298e19da-b117-4e67-9eef-8fc9de1e95d1"><strong>History: </strong>In 2024, President Donald Trump won the province by approximately 14 points. Sen. Ted Cruz, a Republican, won reelection by fair under 9 points. No Texas Democrat has won a statewide ballot since 1994.</p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view" itemscope="" itemtype="https://schema.org/ImageObject"> <div> <p><img src="image/svg+xml,%3C%3Fxml%20version=&#039;1.0&#039;%20encoding=&#039;UTF-8&#039;%3F%3E%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20width=&#039;1&#039;%20height=&#039;1&#039;/%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/6ae90074426e175d4818d8ad&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:3197,&quot;aspectRatioH&quot;:2132}}' alt="Abdul El-Sayed speaks during an event"> </p></div> <span> <figcaption e-name="image-caption"> Michigan Democratic US Senate nominee Abdul El-Sayed&nbsp; <span e-name="image-source" itemprop="creditText"> Jeff Kowalsky/ AFP via Getty Images </span> </figcaption> </span> </figure> <h2 id="285ef28a-b847-4a77-9174-8cafe1704cb2" data-toc-id="285ef28a-b847-4a77-9174-8cafe1704cb2">Michigan Senate</h2><p id="285ef28a-b847-4a77-9174-8cafe1704cb2"><strong>Candidates: </strong>Former Wayne County Health Director Abdul El-Sayed, a Democrat; erstwhile Rep. Mike Rogers, a Republican; Douglas P. Marsh, Green Party; Lydia Christensen, Libertarian Party</p><p id="285ef28a-b847-4a77-9174-8cafe1704cb2"><strong>Where it stands: </strong>No competition compares to the perform of the Michigan Senate race. On Sunday, Rep. Haley Stevens, who misplaced to El-Sayed following a bitter primary, reversed herself and issued a last-minute endorsement of Rogers. Beyond the headlines, the competition offers several engaging guideline contrasts. Echoing Sen. Bernie Sanders (and Trump), El-Sayed has called for the authorities to obtain equity stakes in AI companies. El-Sayed additionally wants to power tech giants akin Microsoft to divest from AI companies akin OpenAI and Anthropic. Rogers, the Republican hopeful, has called for a intermission on data center betterment in the state. If Republicans desire to clasp the majority, Rogers volition nearly certainly need to flip the seat.</p><p id="285ef28a-b847-4a77-9174-8cafe1704cb2"><strong>Polls close:</strong> Most polls in the province near at 8 pm EST. For counties in the Central Time Zone, polls near at 9 p.m EST.</p><p id="285ef28a-b847-4a77-9174-8cafe1704cb2"><strong>The outlook: </strong>Cook Political Report rates it as a "Lean Democrat."</p><p id="285ef28a-b847-4a77-9174-8cafe1704cb2"><strong>History: </strong>In 2024, Trump won by fair complete 1 point. At the identical time, Sen. Elissa Slotkin narrowly attack Rogers by approximately 202,000 votes. Michigan has not elected a Republican legislator since 1994.</p><h2 id="d7e03cfd-5ecb-4261-abb6-26a72d869536" data-toc-id="d7e03cfd-5ecb-4261-abb6-26a72d869536">Michigan 7th District</h2><p id="d7e03cfd-5ecb-4261-abb6-26a72d869536"><strong>Candidates: </strong>Rep. Tom Barrett, a Republican; Sunrise Movement cofounder William Lawrence, a Democrat; Shane Dedrick, Green Party</p><p id="d7e03cfd-5ecb-4261-abb6-26a72d869536"><strong>Where it stands: </strong>Barrett is seeking reelection in a southernmost Michigan district centered about Lansing. William Lawrence, a cofounder of the advancing climate-focused institution Sunrise Movement, has tried to tie Barrett to a projected $1 milliard hyperscale data center near Mason, Michigan. Barrett has stated that local officials have to be capable to create decisions concerning data centers, contrasting his views alongside Lawrence's assistance of a data center moratorium.</p><p id="d7e03cfd-5ecb-4261-abb6-26a72d869536"><strong>The outlook: </strong>Cook Political Report rates it a "Toss-Up."</p><p id="d7e03cfd-5ecb-4261-abb6-26a72d869536"><strong>History: </strong>In 2024, Trump won the district by fair complete 1 point, according to The Downballot's estimates. Barrett won by fair under 17,000 votes.</p><h2 id="525f283c-9603-423e-a916-ec48024eca70" data-toc-id="525f283c-9603-423e-a916-ec48024eca70"><strong>Ohio 9th District</strong></h2><p id="525f283c-9603-423e-a916-ec48024eca70"><strong>Candidates: </strong>Rep. Marcy Kaptur, a Democrat; erstwhile Ohio province Rep. Derek Merrin, a Republican</p><p id="525f283c-9603-423e-a916-ec48024eca70"><strong>Where it stands: </strong>Republicans' hopes of defying history<strong> </strong>and keep their bulk run squarely through Rep. Marcy Kaptur, a 22-term Ohio Democrat, and her northwestern Ohio district that stretches from the Indiana border to fair west of Cleveland. Kaptur has criticized Merrin for voting in favor of tax incentives for data center development. Merrin has stated Kaptur is "lying" concerning his record, but as part of a sweeping 2017 prosperity law, Ohio lawmakers voted to broaden the deadline for certain data centers to meet requirements for tax incentives.</p><p id="525f283c-9603-423e-a916-ec48024eca70"><strong>The outlook: </strong>The Cook Political Report rates it as a "Lean Democrat."</p><p id="525f283c-9603-423e-a916-ec48024eca70"><strong>History: </strong>In 2024, Trump won the district by approximately 11 points, according to The Downballot's estimates. Kaptur won by under 2,400 votes. Kaptur is one of 22 Democrats representing districts that Trump additionally won.</p><h2 id="326f7ea3-0c33-417f-bc3c-65bf7a4e27cb" data-toc-id="326f7ea3-0c33-417f-bc3c-65bf7a4e27cb">Pennsylvania 1st District</h2><p id="326f7ea3-0c33-417f-bc3c-65bf7a4e27cb"><strong>Candidates: </strong>Rep. Brian Fitzpatrick, a Republican; Bucks County commissioner Bob Harvie, a Democrat</p><p id="326f7ea3-0c33-417f-bc3c-65bf7a4e27cb"><strong>Where it stands: </strong>Fitzpatrick, a five-term Pennsylvania Republican, romped to reelection two years ago but is now fighting to suspend onto his seat. Harvie focused his archetypal ad of the broad ballot on his call for a data center moratorium. He additionally ruined Fitzpatrick complete the Republican's former assistance for a enormous Amazon data center in Falls Township, which is in Bucks County.</p><p id="326f7ea3-0c33-417f-bc3c-65bf7a4e27cb"><strong>Polls close: </strong>8 pm EST</p><p id="326f7ea3-0c33-417f-bc3c-65bf7a4e27cb"><strong>The outlook: </strong>The Cook Political Report rates it as a "Toss-Up."</p><p id="326f7ea3-0c33-417f-bc3c-65bf7a4e27cb"><strong>History: </strong>In 2024, Trump narrowly misplaced the district, according to The Downballot's estimates. Fitzpatrick motionless effortlessly won reelection by nearly 13 points. He is one of fair three Republican lawmakers representing districts Trump lost.</p><h2 id="a4660c77-a779-4d50-b5ac-1c5fb7c2ed88" data-toc-id="a4660c77-a779-4d50-b5ac-1c5fb7c2ed88">Wisconsin 3rd District</h2><p id="326f7ea3-0c33-417f-bc3c-65bf7a4e27cb"><strong>Candidates: </strong>Rep. Derrick Van Orden, a Republican; Rebecca Cooke, a Democrat</p><p id="326f7ea3-0c33-417f-bc3c-65bf7a4e27cb"><strong>Where it stands: </strong>Van Orden, a two-term Wisconsin Republican, is trying to clasp on to his occidental Wisconsin district, which includes Eau Claire and La Crosse. Cooke, a erstwhile governmental adviser who now plant as a waitress, has echoed Sen. Bernie Sanders' call for a national moratorium on data center development. Cooke has additionally hammered Van Orden complete data centers. In response, Van Orden has accused Cooke of operating too closely alongside tech groups.</p><p id="326f7ea3-0c33-417f-bc3c-65bf7a4e27cb"><strong>Polls close: </strong>9 pm EST</p><p id="326f7ea3-0c33-417f-bc3c-65bf7a4e27cb"><strong>The outlook: </strong>The Cook Political Report rates it as "Lean Democrat."</p><p id="326f7ea3-0c33-417f-bc3c-65bf7a4e27cb"><strong>History: </strong>In 2024, Trump won the district by complete 7 points, according to The Downballot's estimates. Van Orden defeated Cooke by approximately 3 points.</p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view" itemscope="" itemtype="https://schema.org/ImageObject"> <div> <p><img src="image/svg+xml,%3C%3Fxml%20version=&#039;1.0&#039;%20encoding=&#039;UTF-8&#039;%3F%3E%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20width=&#039;1&#039;%20height=&#039;1&#039;/%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/6ae900d8426e175d4818d8b2&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:7836,&quot;aspectRatioH&quot;:5226}}' alt="Sergey Brin speaks alongside Donald Trump"> </p></div> <span> <figcaption e-name="image-caption"> Google cofounder Sergey Brin speaks alongside Trump&nbsp; <span e-name="image-source" itemprop="creditText"> Win McNamee/Getty Images </span> </figcaption> </span> </figure> <h2 id="b598f244-7ce2-4abd-86f6-5128e3e3883f" data-toc-id="b598f244-7ce2-4abd-86f6-5128e3e3883f"><strong>California billionaire tax</strong></h2><p id="b598f244-7ce2-4abd-86f6-5128e3e3883f"><strong>What's on</strong>&nbsp;<strong>the ballot:&nbsp;</strong>A one-time 5% tax on Californians alongside complete $1 milliard in wealth. Two competing proposals would efficiently nullify the projected tax.</p><p id="b598f244-7ce2-4abd-86f6-5128e3e3883f"><strong>The sides: </strong>The Service Employees International Union-United Healthcare Workers West labor union projected the tax. Rep. Ro Khanna, a Democrat who is a imaginable 2028 candidate, has lent his support, as has Sen. Bernie Sanders. Gov. Gavin Newsom, another imaginable 2028 candidate, is opposing the measure. A figure of Silicon Valley elites are additionally in opposition, including Google cofounder Sergey Brin.</p><p id="b598f244-7ce2-4abd-86f6-5128e3e3883f"><strong>Polls close: </strong>11 pm EST</p><p id="b598f244-7ce2-4abd-86f6-5128e3e3883f"><strong>The outlook: </strong>There's been small polling this fall. The few community polls have been all complete the place. A latest UC Berkeley Institute of Governmental Studies-Los Angeles Times study established opponents had a 50% to 42% border among apt voters.</p><p id="b598f244-7ce2-4abd-86f6-5128e3e3883f"><strong>Be prepared to wait: </strong>California has a lot of votes to count, and historically several races have taken days or equal weeks to call. The fact that there are three intertwined ballot initiatives may additionally create it additional difficult for news organizations to project a winner. In the event that multiple initiatives pass, the one that receives the most affirmative votes mostly trumps conflicting ones.</p> </div> <h2>Read next</h2> <div data-recommendations-content data-track-click-shared='&quot;Read next&quot;}'> <div e-name="read-next-list" data-recommendations-list> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> </div> </div> <a e-name="read-next-image-link" data-recommendations-image-link data-recommendations-link tabindex="-1"> <p><img alt=""> </p> </a> <h3> <a e-name="read-next-title-link" data-recommendations-link data-recommendations-title></a> </h3> <div data-component-type="post-bottom-authors" data-load-strategy="exclude" data-track-view='&quot;module_in_view&quot;}' data-track-click-shared='&quot;navigation&quot;}'> <div data-track-view='&quot;module_in_view&quot;}'> <p><a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='1}'>Brent D. Griffiths</a> <span data-disable-for-sooth-user data-component-type="follow-button" data-load-strategy="lazy" role="tooltip" data-tooltip-position="middle" data-tooltip-active="false" data-state="" data-topic-type="author" data-topic-slug="brent-d-griffiths" data-topic-link="https://www.businessinsider.com/author/brent-d-griffiths" data-topic-label="Brent D. Griffiths" data-topic-location="author_bio" data-topic-shortened-label="Brent D. Griffiths"> </span> </p> <div> <p><span>Brent Griffiths is a elder newsman at Business Insider who covers AI and tech. Previously, he worked at the Washington Post. He started his occupation at Politico.</span> </p> </div> </div> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/the-midterm-races-to-watch-if-you-care-about-money-musk-and-the-ai-boom-75484</guid> <pubDate>Tue, 03 Nov 2026 21:40:12 +0700</pubDate> <author><![CDATA[support@mycoding.id (Brent D. Griffiths)]]></author> </item> <item> <title><![CDATA[I Dumped Apple's Fucking Word List]]></title> <description><![CDATA[I Dumped Apple's Fucking Word List. Comments]]></description> <media:thumbnail url="https://helgesver.re/og/article-macos-vulgar-word-flags.png"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/i-dumped-apple-s-fucking-word-list-75485</link> <content:encoded><![CDATA[<div><td data-clippy-readable="true"><p>November 3, 2026</p><div><h2 id="tldr"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>TL;DR</h2> <ul> <li>~/Library/Keyboard/VulgarWordUsage.db is real. It records which promise words you use, <strong>per app and per recipient</strong>, so autocorrect learns to halt "ducking" you. On my Mac it is empty, and typing promise words into a native app did not inhabit it.</li> <li>The engaging part is upstream. Apple's scheme dictionary flags all term alongside one of three tiers (<strong>vulgar</strong>, <strong>offensive</strong>, <strong>sensitive</strong>) and up to eleven topic flags (sex, drugs, religion, politics, violence, &hellip;).</li> <li>There is no community API for any of it. I peruse the flags alongside a few personal C functions from Lexicon.framework. Code below, in C and in Swift. The complete dumps for 15 languages are in <a href="https://en.mycoding.id/category/technology" target="_blank">this gist</a> (uncensored, so intellect the content warning).</li> <li>Highlights: <em>Oedipus</em> is vulgar. <em>Tom</em> and <em>Mick</em> are offensive. <em>pee</em>, <em>poo</em>, <em>niggle</em> and <em>underling</em> are sensitive. And <strong>"Trump" is the lone living politician in the English delicate tier</strong>, next to Hitler, Mao, Osama bin Laden and the Taliban. Biden, Obama and Putin are clean.</li> </ul> <p><strong>Content note:</strong> this part prints the words uncensored, slurs included, since the entire item is to see what Apple flags. The one elimination is the n-word: it is in the catalog in English and multiple another languages, and I'm not writing it out.</p> <h2 id="it-started-with-a-tweet"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>It started alongside a tweet</h2> <p><img alt=" macOS has a repository to track our use of profanity&#039;, showing a Finder listing alongside user_model_database.sqlite-wal and VulgarWordUsage.db. Helge replies &#039;Where is it located?&#039; and Nick answers &#039;~/Library/Keyboard/VulgarWordUsage.db&#039;." loading="lazy" width="600" height="608" decoding="async" data-nimg="1" srcset="/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fvulgar-word-usage-tweet.289c366e.webp&amp;w=640&amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fvulgar-word-usage-tweet.289c366e.webp&amp;w=1200&amp;q=75 2x" src="https://helgesver.re/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fvulgar-word-usage-tweet.289c366e.webp&amp;w=1200&amp;q=75"></p><p><a href="https://en.mycoding.id/category/technology" target="_blank">Nick posted this</a>, I asked anywhere it lives, and he answered. A database that tracks my profanity is not item I can depart alone, so I opened mine.</p> <h2 id="the-database"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>The database</h2> <div><pre>$ sqlite3 -readonly ~/Library/Keyboard/VulgarWordUsage.db .schema CREATE TABLE properties <span>(</span>ROWID INTEGER PRIMARY KEY, key, value, UNIQUE <span>(</span>key<span>))</span><span>;</span> CREATE TABLE IF NOT EXISTS <span>"vword_usage"</span> <span>(</span> ROWID INTEGER PRIMARY KEY AUTOINCREMENT, app TEXT, -- app identifier recipient TEXT, -- recipient identifier vword TEXT, -- vulgar word word_reading TEXT, -- the study form of a term <span>(</span>relevant <span>for</span> Japanese<span>)</span> usage_count INTEGER DEFAULT <span>0</span>, last_use_timestamp REAL DEFAULT <span>0</span>, -- final use timestamp <span>(</span>seconds since the citation <span>date</span><span>)</span> journaled <span>)</span><span>;</span> CREATE UNIQUE INDEX app_recipient_vword_word_reading_idx ON vword_usage<span>(</span>app, recipient, vword, word_reading<span>)</span><span>;</span> </pre></div> <p>So the keyboard can cognize that you say <em>fuck</em> in Messages to one particular friend, but not in Mail to your boss. The unique indicator is on (app, recipient, word, reading), so that is the granularity.</p> <p>Mine has zero rows. The properties array holds type = 2 and nothing else. The document was final written in April 2024.</p> <h3 id="what-it-is-for"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>What it is for</h3> <p>At WWDC in June 2023, Craig Federighi announced the iOS 17 autocorrect rewrite alongside this line: <em>"In those moments anywhere you fair desire to category a ducking word, well, the keyboard volition study it, too."</em> (<a href="https://en.mycoding.id/category/technology" target="_blank">TechCrunch</a>, <a href="https://en.mycoding.id/category/technology" target="_blank">NPR</a>)</p> <p>This repository is how it learns. The sign names in the macOS shared archive cache enchantment out the flow:</p> <div><pre>TI::VulgarWordUsageDatabaseWrapper::set_current_app_id(CFString) TI::VulgarWordUsageDatabaseWrapper::set_current_recipient_ids(vector&lt;string&gt;) TI::VulgarWordUsageDatabaseWrapper::increment_usage_count(word, reading, recipients) TI::VulgarWordUsageDatabaseWrapper::decrement_usage_count(...) TI::VulgarWordUsageDatabaseWrapper::can_autocorrect(word, app, recipients) TI::VulgarWordUsageDatabaseWrapper::can_autocorrect_somewhere(word, reading) KB::FilterNonVulgarIfTopCandidateVulgar::filter_candidates(...) KB::Candidate::every_vulgar_word_is_allowlisted(VulgarWordUsageDatabaseWrapper*, ...) </pre></div> <p>Plus log strings akin Passing recipient IDs to the vulgar term use repository wrapper; figure of IDs: %lu.</p> <p>In plain terms:</p> <ol> <li>When you commencement typing, the keyboard motor tells the wrap which app you're in and who you're penning to.</li> <li>When you category a vulgar term and keep it, its figure goes up for that app and those recipients. Undoing the word brings the figure rear down.</li> <li>When the motor ranks suggestions, it asks whether all vulgar term in a applicant is allowlisted for this context. If it isn't, the spotless substitute wins: <em>ducking</em>.</li> </ol> <p>A _KSUserWordsSynchroniser sharedAcrossLanguagesVulgarWordUsageValue sign suggests it syncs between devices like your another learned words.</p> <h3 id="mine-is-empty"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>Mine is empty</h3> <p>I tried to inhabit it. Using <a href="https://en.mycoding.id/category/technology" target="_blank">agent-desktop</a>, I opened a new TextEdit document and typed fine fuck this shit, damn it., archetypal as a content insert, afterward as idiosyncratic key presses. Nothing changed: no row, no log line, and the file's modification date stayed in 2024.</p> <p>I don't cognize why, and I couldn't activity it out. Maybe the Mac never records item here, or perchance it lone does so in some apps or settings. If you've got rows in yours, inform me what you did.</p> <p>That would be a abbreviated article. But the repository lone counts words that are <em>already</em> known to be vulgar. So who decides that?</p> <h2 id="where-the-word-list-lives"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>Where the term catalog lives</h2> <p>Searching the dyld shared cache for "vulgar" turned up a C API alongside an LX prefix (LXVulgarWordUsageDatabaseCreate, LXVulgarWordUsageDatabaseCanAutocorrect, &hellip;) and, additional usefully, two functions on dictionary entries:</p> <div><pre>_LXEntryGetCategoryFlags _LXEntryGetMetaFlags </pre></div> <p>LX is Lexicon.framework, a personal example that says the per-language dictionaries under /System/Library/LinguisticData/. Every term in those dictionaries is an LXEntry alongside two 32-bit emblem fields. If the vulgarity ranking is anywhere, it's in those bits.</p> <h2 id="there-is-no-public-api"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>There is no community API</h2> <p>I looked. NSSpellChecker, UITextChecker, NaturalLanguage and UILexicon don't disclose vulgarity. SensitiveContentAnalysis covers images and video, not text. The lone places "profanity" shows up on developer.apple.com are App Store age ratings and assessment guidelines.</p> <p>So: personal functions. Lexicon has no headers, but the C functions are exported, and their signatures are uncomplicated to guess since they prosecute CoreFoundation conventions. This program opens the dictionary for a locale, walks all entry, and prints the two emblem fields:</p> <div><pre> <span><span>#</span><span>include</span> <span>&lt;CoreFoundation/CoreFoundation.h&gt;</span></span> <span><span>#</span><span>include</span> <span>&lt;stdbool.h&gt;</span></span> <span><span>#</span><span>include</span> <span>&lt;stdio.h&gt;</span></span> <span>typedef</span> <span>const</span> <span>void</span> <span>*</span>LXLexiconRef<span>,</span> <span>*</span>LXCursorRef<span>,</span> <span>*</span>LXEntryRef<span>;</span> <span>extern</span> CFStringRef kLXLexiconLocaleKey<span>;</span> LXLexiconRef <span>LXLexiconCreate</span><span>(</span>CFDictionaryRef options<span>,</span> CFErrorRef <span>*</span>error<span>)</span><span>;</span> LXCursorRef <span>LXLexiconCreateRootCursor</span><span>(</span>LXLexiconRef<span>)</span><span>;</span> <span>void</span> <span>LXCursorEnumerateEntriesRecursively</span><span>(</span>LXCursorRef<span>,</span> <span>void</span> <span>(</span><span>^</span><span>)</span><span>(</span>LXEntryRef<span>,</span> bool <span>*</span>stop<span>)</span><span>)</span><span>;</span> CFStringRef <span>LXEntryCopyString</span><span>(</span>LXEntryRef<span>)</span><span>;</span> <span>uint32_t</span> <span>LXEntryGetCategoryFlags</span><span>(</span>LXEntryRef<span>)</span><span>;</span> <span>uint32_t</span> <span>LXEntryGetMetaFlags</span><span>(</span>LXEntryRef<span>)</span><span>;</span> <span>int</span> <span>main</span><span>(</span><span>int</span> argc<span>,</span> <span>char</span> <span>*</span><span>*</span>argv<span>)</span> <span>{</span> CFStringRef locale <span>=</span> <span>CFStringCreateWithCString</span><span>(</span><span>NULL</span><span>,</span> argc <span>&gt;</span> <span>1</span> <span>?</span> argv<span>[</span><span>1</span><span>]</span> <span>:</span> <span>"en_US"</span><span>,</span> kCFStringEncodingUTF8<span>)</span><span>;</span> <span>const</span> <span>void</span> <span>*</span>keys<span>[</span><span>]</span> <span>=</span> <span>{</span>kLXLexiconLocaleKey<span>}</span><span>,</span> <span>*</span>values<span>[</span><span>]</span> <span>=</span> <span>{</span>locale<span>}</span><span>;</span> CFDictionaryRef options <span>=</span> <span>CFDictionaryCreate</span><span>(</span><span>NULL</span><span>,</span> keys<span>,</span> values<span>,</span> <span>1</span><span>,</span> <span>&amp;</span>kCFTypeDictionaryKeyCallBacks<span>,</span> <span>&amp;</span>kCFTypeDictionaryValueCallBacks<span>)</span><span>;</span> LXLexiconRef lexicon <span>=</span> <span>LXLexiconCreate</span><span>(</span>options<span>,</span> <span>NULL</span><span>)</span><span>;</span> <span>if</span> <span>(</span><span>!</span>lexicon<span>)</span> <span>return</span> <span>1</span><span>;</span> <span>LXCursorEnumerateEntriesRecursively</span><span>(</span><span>LXLexiconCreateRootCursor</span><span>(</span>lexicon<span>)</span><span>,</span> <span>^</span><span>(</span>LXEntryRef entry<span>,</span> bool <span>*</span>stop<span>)</span> <span>{</span> <span>char</span> word<span>[</span><span>512</span><span>]</span> <span>=</span> <span>""</span><span>;</span> CFStringRef s <span>=</span> <span>LXEntryCopyString</span><span>(</span>entry<span>)</span><span>;</span> <span>if</span> <span>(</span>s<span>)</span> <span>{</span> <span>CFStringGetCString</span><span>(</span>s<span>,</span> word<span>,</span> <span>sizeof</span> word<span>,</span> kCFStringEncodingUTF8<span>)</span><span>;</span> <span>CFRelease</span><span>(</span>s<span>)</span><span>;</span> <span>}</span> <span>printf</span><span>(</span><span>"%08x\t%08x\t%s\n"</span><span>,</span> <span>LXEntryGetCategoryFlags</span><span>(</span>entry<span>)</span><span>,</span> <span>LXEntryGetMetaFlags</span><span>(</span>entry<span>)</span><span>,</span> word<span>)</span><span>;</span> <span>}</span><span>)</span><span>;</span> <span>}</span> </pre></div> <div><pre>$ ./lx en_US <span>|</span> <span>wc</span> -l <span>199019</span> $ ./lx en_US <span>|</span> <span>awk</span> -F<span>'\t'</span> <span>'$3 == "fuck" || $3 == "table" || $3 == "Trump"'</span> 00000000 00800002 fuck 00000000 00000000 table 00002000 02000081 Trump </pre></div> <p>The identical item in Swift, loading the functions at runtime alongside dlopen and dlsym so you don't need to nexus against a personal framework. It prints lone words that transport among the three tiers:</p> <div><pre> <span>import</span> <span>Foundation</span> <span>let</span> lexicon <span>=</span> <span>dlopen</span><span>(</span><span><span>"/System/Library/PrivateFrameworks/Lexicon.framework/Lexicon"</span></span><span>,</span> <span>RTLD_NOW</span><span>)</span><span>!</span> <span>func</span> <span>sym</span><span>&lt;</span><span>T</span><span>&gt;</span><span>(</span><span>_</span> name<span>:</span> <span>String</span><span>,</span> <span>as</span> <span>_</span><span>:</span> <span>T</span><span>.</span><span>Type</span><span>)</span> <span>-&gt;</span> <span>T</span> <span>{</span> <span>unsafeBitCast</span><span>(</span><span>dlsym</span><span>(</span>lexicon<span>,</span> name<span>)</span><span>!</span><span>,</span> to<span>:</span> <span>T</span><span>.</span><span>self</span><span>)</span> <span>}</span> <span>typealias</span> <span>LXRef</span> <span>=</span> <span>UnsafeRawPointer</span> <span>let</span> create <span>=</span> <span>sym</span><span>(</span><span><span>"LXLexiconCreate"</span></span><span>,</span> <span>as</span><span>:</span> <span>(</span><span>@convention</span><span>(</span>c<span>)</span> <span>(</span><span>CFDictionary</span><span>,</span> <span>UnsafeMutablePointer</span><span>&lt;</span><span>Unmanaged</span><span>&lt;</span><span>CFError</span><span>&gt;?&gt;?</span><span>)</span> <span>-&gt;</span> <span>LXRef</span><span>?</span><span>)</span><span>.</span><span>self</span><span>)</span> <span>let</span> rootCursor <span>=</span> <span>sym</span><span>(</span><span><span>"LXLexiconCreateRootCursor"</span></span><span>,</span> <span>as</span><span>:</span> <span>(</span><span>@convention</span><span>(</span>c<span>)</span> <span>(</span><span>LXRef</span><span>)</span> <span>-&gt;</span> <span>LXRef</span><span>?</span><span>)</span><span>.</span><span>self</span><span>)</span> <span>let</span> enumerate <span>=</span> <span>sym</span><span>(</span><span><span>"LXCursorEnumerateEntriesRecursively"</span></span><span>,</span> <span>as</span><span>:</span> <span>(</span><span>@convention</span><span>(</span>c<span>)</span> <span>(</span><span>LXRef</span><span>,</span> <span>@convention</span><span>(</span>block<span>)</span> <span>(</span><span>LXRef</span><span>,</span> <span>UnsafeMutablePointer</span><span>&lt;</span><span>Bool</span><span>&gt;</span><span>)</span> <span>-&gt;</span> <span>Void</span><span>)</span> <span>-&gt;</span> <span>Void</span><span>)</span><span>.</span><span>self</span><span>)</span> <span>let</span> copyString <span>=</span> <span>sym</span><span>(</span><span><span>"LXEntryCopyString"</span></span><span>,</span> <span>as</span><span>:</span> <span>(</span><span>@convention</span><span>(</span>c<span>)</span> <span>(</span><span>LXRef</span><span>)</span> <span>-&gt;</span> <span>Unmanaged</span><span>&lt;</span><span>CFString</span><span>&gt;?</span><span>)</span><span>.</span><span>self</span><span>)</span> <span>let</span> metaFlags <span>=</span> <span>sym</span><span>(</span><span><span>"LXEntryGetMetaFlags"</span></span><span>,</span> <span>as</span><span>:</span> <span>(</span><span>@convention</span><span>(</span>c<span>)</span> <span>(</span><span>LXRef</span><span>)</span> <span>-&gt;</span> <span>UInt32</span><span>)</span><span>.</span><span>self</span><span>)</span> <span>let</span> category <span>=</span> <span>sym</span><span>(</span><span><span>"LXEntryGetCategoryFlags"</span></span><span>,</span> <span>as</span><span>:</span> <span>(</span><span>@convention</span><span>(</span>c<span>)</span> <span>(</span><span>LXRef</span><span>)</span> <span>-&gt;</span> <span>UInt32</span><span>)</span><span>.</span><span>self</span><span>)</span> <span>let</span> localeKey <span>=</span> <span>dlsym</span><span>(</span>lexicon<span>,</span> <span><span>"kLXLexiconLocaleKey"</span></span><span>)</span><span>!</span><span>.</span><span>load</span><span>(</span><span>as</span><span>:</span> <span>CFString</span><span>.</span><span>self</span><span>)</span> <span>let</span> locale <span>=</span> <span>CommandLine</span><span>.</span>arguments<span>.</span><span>dropFirst</span><span>(</span><span>)</span><span>.</span>first <span>??</span> <span><span>"en_US"</span></span> <span>guard</span> <span>let</span> lex <span>=</span> <span>create</span><span>(</span><span>[</span>localeKey<span>:</span> locale<span>]</span> <span>as</span> <span>CFDictionary</span><span>,</span> <span>nil</span><span>)</span><span>,</span> <span>let</span> base <span>=</span> <span>rootCursor</span><span>(</span>lex<span>)</span> <span>else</span> <span>{</span> <span>fatalError</span><span>(</span><span><span>"could not open lexicon for </span><span>\(</span><span>locale</span><span>)</span><span>"</span></span><span>)</span> <span>}</span> <span>let</span> tiers<span>:</span> <span>[</span><span>(</span><span>UInt32</span><span>,</span> <span>String</span><span>)</span><span>]</span> <span>=</span> <span>[</span><span>(</span><span>0x0080_0000</span><span>,</span> <span><span>"vulgar"</span></span><span>)</span><span>,</span> <span>(</span><span>0x0100_0000</span><span>,</span> <span><span>"offensive"</span></span><span>)</span><span>,</span> <span>(</span><span>0x0200_0000</span><span>,</span> <span><span>"sensitive"</span></span><span>)</span><span>]</span> <span>enumerate</span><span>(</span>root<span>)</span> <span>{</span> entry<span>,</span> <span>_</span> <span>in</span> <span>let</span> meta <span>=</span> <span>metaFlags</span><span>(</span>entry<span>)</span> <span>guard</span> <span>let</span> tier <span>=</span> tiers<span>.</span><span>first</span><span>(</span><span>where</span><span>:</span> <span>{</span> meta <span>&amp;</span> <span>$0</span><span>.</span><span>0</span> <span>!=</span> <span>0</span> <span>}</span><span>)</span><span>?</span><span>.</span><span>1</span><span>,</span> <span>let</span> term <span>=</span> <span>copyString</span><span>(</span>entry<span>)</span><span>?</span><span>.</span><span>takeRetainedValue</span><span>(</span><span>)</span> <span>else</span> <span>{</span> <span>return</span> <span>}</span> <span>print</span><span>(</span>tier<span>,</span> <span>String</span><span>(</span>format<span>:</span> <span><span>"%05x"</span></span><span>,</span> <span>category</span><span>(</span>entry<span>)</span><span>)</span><span>,</span> word<span>,</span> separator<span>:</span> <span><span>"\t"</span></span><span>)</span> <span>}</span> </pre></div> <p>Both are read-only. They open the identical dictionary the keyboard uses and imprint it.</p> <h2 id="decoding-the-bits"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>Decoding the bits</h2> <p>Apple doesn't document these flags, so all definition below is inferred: I grouped words by bit and peruse samples until each group's theme was obvious. The scheme code helps alongside one of them. An enum case called offensiveVulgarSensitive sits correct next to the vulgar-word code, and three neighboring meta bits equivalent it.</p> <h3 id="the-three-tiers-meta-flags"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>The three tiers (meta flags)</h3> <table readabilitydatatable="1"><thead><tr><th>Bit</th><th>Tier</th><th>en_US words</th><th>Examples</th></tr></thead><tbody><tr><td>0x00800000</td><td>vulgar</td><td>1,050</td><td>fuck, shit, cunt, cock, crap, wtf, fml, bullshitting, fucktard, shizzle, merde</td></tr><tr><td>0x01000000</td><td>offensive</td><td>663</td><td>kike, wop, dago, fag, Paki, japs, Klansman, retard, Oriental, ass, asshole</td></tr><tr><td>0x02000000</td><td>sensitive</td><td>2,558</td><td>damn, bitch, idiot, LSD, abortion, gun, suicide, anus, pee, poo</td></tr></tbody></table> <p>In en_US a term has at most one tier: they never overlap. Out of 199,019 entries, 4,271 have one.</p> <p>Roughly: <strong>vulgar</strong> is swearing and sex slang, <strong>offensive</strong> is slurs aimed at groups of people, and <strong>sensitive</strong> is everything a keyboard shouldn't recommendation you unprompted: mild swears, insults, drugs, weapons, extremism, sickness and bodily functions.</p> <h3 id="the-topics-category-flags"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>The topics (category flags)</h3> <p>The another site is a topic bitmask, and a term can have multiple topics:</p> <table readabilitydatatable="1"><thead><tr><th>Bit</th><th>Topic</th><th>en_US words</th><th>Examples</th></tr></thead><tbody><tr><td>0x00100</td><td>excretion</td><td>123</td><td>feces, barf, crapper, piddle, pooped</td></tr><tr><td>0x00200</td><td>body parts</td><td>958</td><td>nipples, navel, buttock, perineum, triceps</td></tr><tr><td>0x00400</td><td>insults, identity-loaded</td><td>823</td><td>idiot, cretin, hick, pleb, sexist, homophobic, blacklist</td></tr><tr><td>0x00800</td><td>disease</td><td>93</td><td>Covid, herpes, PTSD, leprosy, monkeypox</td></tr><tr><td>0x01000</td><td>drugs</td><td>222</td><td>heroin, shroom, crackhead, hotbox, OD</td></tr><tr><td>0x02000</td><td>politics, extremism</td><td>266</td><td>Hamas, Goebbels, Leninism, democrat, swastikas, Trump</td></tr><tr><td>0x04000</td><td>religion, damnation</td><td>420</td><td>Sikhism, jihadi, Beelzebub, damn, hell, jeez</td></tr><tr><td>0x08000</td><td>sex</td><td>473</td><td>nude, nookie, lecher, harlots, Pornhub, Hooters</td></tr><tr><td>0x10000</td><td>violence, death</td><td>373</td><td>suicide, lynch, murders, hangings, slave, slaveholder</td></tr><tr><td>0x20000</td><td>weapons, terrorism</td><td>268</td><td>AK-47, grenadier, jihad, sarin, kamikaze, yellowcake</td></tr><tr><td>0x40000</td><td>catch-all "sensitive context"</td><td>1,080</td><td>God, Allah, Jews, gay, trans, bi, crazy, fat, ugly, sex, die</td></tr></tbody></table> <p>The topic flags and the tiers are independent. 2,052 English words have a topic but no tier: <em>gay</em>, <em>fat</em>, <em>God</em>, <em>Allah</em> and <em>sex</em> are all tagged "sensitive context" but are not vulgar, insulting or sensitive. My conjecture is the topic is a clue ("be careful how you position this") and the tier is the rule.</p> <p>The lesser meta bits are dull: appropriate nouns, abbreviations, camel-case brand names akin <em>iMac</em> and <em>tvOS</em>. Nothing to see there.</p> <h2 id="the-weird-ones"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>The weird ones</h2> <p>This is anywhere it gets fun. Some flags are evidently right, and several made me laugh.</p> <h3 id="vulgar"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>Vulgar</h3> <ul> <li><strong>Oedipus</strong>: vulgar. Presumably since of <em>motherfucker</em>-adjacent jokes, or the complex. Sophocles would be thrilled.</li> <li><strong>reams</strong>: vulgar. As in "to ream someone".</li> <li><strong>cooties</strong>: vulgar. Your nine-year-old is swearing.</li> <li><strong>orgy</strong>, <strong>sext</strong>, <strong>merde</strong>: fair enough.</li> </ul> <h3 id="offensive"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>Offensive</h3> <ul> <li><strong>Tom</strong> and <strong>Mick</strong>: offensive. <em>Uncle Tom</em> and the slur for Irish people, but additionally extremely average archetypal names.</li> <li><strong>Oriental</strong>: offensive.</li> <li><strong>papooses</strong>: offensive.</li> <li><strong>conservatards</strong>: offensive, the one governmental criticism I established in the slur tier.</li> <li><strong>niggardly</strong>: offensive. It method "stingy" and comes from Old Norse, unrelated to the slur. It has additionally caused <a href="https://en.mycoding.id/category/technology" target="_blank">real controversies</a>, which is presumably why it's there.</li> <li><strong>ass</strong> and <strong>asshole</strong>: offensive, not vulgar.</li> </ul> <h3 id="sensitive"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>Sensitive</h3> <ul> <li><strong>pee</strong> and <strong>poo</strong>: sensitive, alongside the excretion topic. So are <em>premenstrual</em>, <em>leprosy</em> and <em>herpesvirus</em>.</li> <li><strong>niggle</strong> (a small worry, of Scandinavian origin) and <strong>underling</strong> (Old English for a subordinate) are delicate and share the criticism topic. Similar words aren't flagged: <em>snigger</em> is spotless but <em>niggle</em> is flagged, and <em>minion</em>, <em>lackey</em>, <em>flunky</em> and <em>stooge</em> are spotless but <em>underling</em> is flagged. These appearance akin hand-picked entries, not rules.</li> <li><strong>blacklist</strong> and <strong>whitelist</strong> are delicate alongside the insult/identity topic. That matches the industry move to <em>blocklist</em> and <em>allowlist</em>. Apple's own phrase-filter records are named blocklist.dat.</li> <li><strong>Braves</strong> and <strong>Chiefs</strong> (team names alongside Native American mascots), <strong>Londonderry</strong> (the contested name for Derry), <strong>Gentile</strong>, <strong>Jehovah</strong>, <strong>Mongol</strong> and <strong>Frenchier</strong> are all sensitive.</li> <li><strong>Isis</strong> is delicate alongside the government topic. Sorry to the Egyptian goddess.</li> <li><strong>slave</strong>, <strong>slavery</strong> and <strong>slaveholder</strong> are delicate alongside the aggression topic.</li> <li><strong>idiot</strong> is delicate in English. Norwegian is stricter and puts <em>idiot</em> in the insulting tier.</li> </ul> <h2 id="the-trump-flag"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>The Trump flag</h2> <p>The delicate tier has 109 capitalized words. Here is all of it:</p> <blockquote> <p>Al-Qaeda, Al-Qaida, Aryan, Aryans, Auschwitz, Bacchus, Beelzebub, Birkenau, Brave(s), Buchenwald, Chief(s), Chippendale(s), Christ-y, Christer(s), Crip(s), Dachau, Eichmann, Frenchier, Gentile(s), Gestapo(s), Goebbels, Goering, Hamas, Hezbollah, Himmler, Hitler, Hitlerian, Hitlerism, Hitlerite(s), Hitlerjugend, Hooters, Isis, Islamophobe(s), Islamophobic, Jehovah(s), Jewfro(s), Jezebel(s), Kalashnikov(s), Kristallnacht, Kuomintang, Londonderry, Luftwaffe, Mao, Mauthausen, Mickie(s), Mollie(s), Mongol(s), Mossad, Nazi(s), Nazism, Osama, Pornhub, Quaalude(s), Reich, Reichsmark, Reichstag, Sachsenhausen, Satan, Satanism, Shoah, Sinophobe(s), Sinophobic, Sodom, Stasi, Taliban, Treblinka, <strong>Trump, Trumps</strong>, Unabomber, Uzi(s)</p> </blockquote> <p>(Plurals and possessives folded for brevity.)</p> <p>Every another genuine individual on that catalog is dead, and nearly all of them are Nazi officials, dictators or terrorists. Then there's Trump:</p> <div><pre>category meta word 00002000 02000081 Trump delicate tier + government topic 00002000 02000081 Trumps 00002000 02000081 Trump's 00000000 00000000 trump (the card-game word: clean) 00000000 00000000 trumped </pre></div> <p>For comparison:</p> <table readabilitydatatable="1"><thead><tr><th>Word</th><th>en_US</th></tr></thead><tbody><tr><td>Trump</td><td>sensitive, government topic</td></tr><tr><td>Hitler</td><td>sensitive, government topic</td></tr><tr><td>Biden</td><td>clean</td></tr><tr><td>Obama</td><td>clean</td></tr><tr><td>Putin</td><td>clean</td></tr><tr><td>Stalin</td><td>clean</td></tr><tr><td>Musk</td><td>not in the dictionary</td></tr></tbody></table> <p>en_GB matches en_US. Other languages differ: the German dictionary has <em>Trump</em> spotless (and puts <em>Hitler</em> in the <strong>offensive</strong> tier), and Swedish is the one that flags <em>Putin</em> as sensitive.</p> <p>What the emblem <em>does</em> matters here. As far as I can tell, a delicate term is one the keyboard shouldn't propose on its own. You can motionless category it and it won't be corrected away. Think "keep this out of the QuickType bar unless the person is clearly heading there", which is a lot milder than a ban.</p> <p>There is a plausible logic Apple would desire that for one particular name. In February 2025, iPhone dictation briefly showed "Trump" whenever group stated "racist". It went viral, and Apple called it a "<a href="https://en.mycoding.id/category/technology" target="_blank">phonetic overlap</a>" in the address example and shipped a fix inside a day (<a href="https://en.mycoding.id/category/technology" target="_blank">9to5Mac</a>). The dictionary records on my Mac are from July 2025. A regulation that keeps the name out of unprompted suggestions would halt that benevolent of item from happening again through the keyboard. I can't demonstrate that's why it's there, and I don't have an older dictionary to compare against. But it fits.</p> <h3 id="norwegian-politics-for-comparison"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>Norwegian politics, for comparison</h3> <p>Because I'm Norwegian and had to check:</p> <table readabilitydatatable="1"><thead><tr><th>Word</th><th>Topic</th><th>Tier</th></tr></thead><tbody><tr><td>FrP, H&oslash;yre, Venstre, R&oslash;dt, SV, KrF, MDG</td><td>politics</td><td>none</td></tr><tr><td>St&oslash;re</td><td>politics</td><td>none</td></tr><tr><td>Solberg, Erna, Sylvi</td><td>none</td><td>none</td></tr><tr><td>Listhaug</td><td>n/a</td><td>not in the dictionary</td></tr><tr><td>Breivik, Quisling, Hitler</td><td>none</td><td>sensitive</td></tr></tbody></table> <p>Every gathering gets the government topic and none gets a tier. The lone Norwegians in the delicate tier are a mass murderer and a Nazi collaborator.</p> <h2 id="other-languages"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>Other languages</h2> <p>The identical three tiers be in all European dictionary I tried, Cyrillic included. The counts are entries, not lemmas, so heavily inflected languages akin Polish and Russian appearance much worse than they are: all case and coalition of a swear term is a distinct entry.</p> <table readabilitydatatable="1"><thead><tr><th>Locale</th><th>Vulgar</th><th>Offensive</th><th>Sensitive</th><th>Notable</th></tr></thead><tbody><tr><td>en_US</td><td>1,050</td><td>663</td><td>2,558</td><td><em>idiot</em> is sensitive</td></tr><tr><td>en_GB</td><td>1,055</td><td>872</td><td>2,337</td><td><em>chav</em> is offensive; <em>chink</em> is submitted as <strong>vulgar</strong>, not offensive</td></tr><tr><td>nb_NO</td><td>2,393</td><td>1,324</td><td>6,446</td><td><em>idiot</em> is offensive</td></tr><tr><td>da_DK</td><td>1,179</td><td>3,314</td><td>8,551</td><td><em>fjols</em> ("fool") is offensive</td></tr><tr><td>sv_SE</td><td>637</td><td>1,247</td><td>16,193</td><td><em>idiot</em> is <strong>vulgar</strong>; <em>Putin</em> is sensitive</td></tr><tr><td>fi_FI</td><td>569</td><td>872</td><td>47</td><td>The complete delicate tier is <em>kakka</em> ("poop"), <em>kakkakasa</em> ("pile of poop") and <em>saakeli</em></td></tr><tr><td>de_DE</td><td>3,218</td><td>3,518</td><td>9,446</td><td><em>Hitler</em> and <em>beknackt</em> ("daft") are offensive; <em>Trump</em> is clean</td></tr><tr><td>nl_NL</td><td>57</td><td>1,180</td><td>3,805</td><td>Only 57 vulgar words, but <em>kanker</em> ("cancer", the traditional Dutch swear) is one</td></tr><tr><td>fr_FR</td><td>2,151</td><td>262</td><td>5,562</td><td><em>boche</em> is offensive</td></tr><tr><td>es_ES</td><td>3,931</td><td>313</td><td>13,431</td><td><em>sudacas</em> and <em>fachas</em> are offensive</td></tr><tr><td>it_IT</td><td>3,886</td><td>377</td><td>6,543</td><td><em>terrone</em> is offensive, and so is <em>nazismi</em></td></tr><tr><td>pt_BR</td><td>1,590</td><td>1,891</td><td>3,332</td><td><em>machista</em> and <em>velhinhos</em> ("little old people") are offensive</td></tr><tr><td>pl_PL</td><td>9,698</td><td>1,436</td><td>6,190</td><td>The biggest vulgar tier here, mostly inflections (<em>dupczysz</em>, <em>srasz</em>)</td></tr><tr><td>ru_RU</td><td>10,821</td><td>3,239</td><td>24,721</td><td>Same story: &#1084;&#1072;&#1090; inflects a lot</td></tr></tbody></table> <p>The bits don't appear to average the identical item everywhere. Arabic and Hebrew come back hundreds of thousands of "sensitive" entries, so those dictionaries likely reuse the bits for item else, and I remaining them out. Korean, Catalan and Hungarian come back nothing, and Japanese crashes my dumper.</p> <p>Samples from Norwegian, since that's what I category in whenever I'm not typing English:</p> <ul> <li><strong>Vulgar:</strong> faen, j&aelig;vla, dritt, fitte, kuk, pule, pissehull, r&aelig;vhull, pulekanin, k&aring;t, <em>morrabr&oslash;d</em>.</li> <li><strong>Offensive:</strong> <em>idiot</em>, <em>sig&oslash;yner</em>, <em>kinamann</em>, <em>riskokers</em> (literally "rice cookers", a slur for Asians), affirmative the Norwegian n-word.</li> <li><strong>Sensitive:</strong> helvete, satan, homo, quisling, Breivik, skinhead, abortnekt, trusene ("the panties").</li> </ul> <p>The tier words are mostly what you'd expect, but the edges are distinct in all language, and that is anywhere the human-edited parts show. Norwegian calls <em>idiot</em> insulting and English calls it sensitive. German thinks Hitler is a slur.</p> <h2 id="phrases-not-just-words"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>Phrases, not fair words</h2> <p>There is a second, distinct filter. Every English tongue example has a blocklist.bundle, and there's a qp_blocklist.bundle for QuickPath, the rub keyboard:</p> <div><pre>/System/Library/LinguisticData/RequiredAssets_en.bundle/AssetData/en.lm/ &#9500;&#9472;&#9472; blocklist.bundle/{blocklist.dat, blocklistidmap.dat} &#9492;&#9472;&#9472; qp_blocklist.bundle/{blocklist.dat, blocklistidmap.dat} </pre></div> <p>blocklistidmap.dat is a 20-byte header followed by (lexicon token ID, category ID) pairs of 32-bit integers. Mapping the token IDs rear through the dictionary gives 2,544 words in 930 classes. Most classes are inflection groups:</p> <div><pre>931 fuck | fucked | fucking | fucks 1181 molest | molestation | molested | molester | molesting 1514 died | dies | dying 1611 Holocaust | holocaust | holocausts 1614 denied | denies | refuse | denying 923 Semite | Semites | Semitic 1487 ghetto | ghettoes | ghettos 1720 animals | brown | cats </pre></div> <p>blocklist.dat is a packed trie complete those category IDs, so it blocks <em>sequences</em>: "deny" followed by "Holocaust", and whatever 1720 pairs with. A category that puts <em>brown</em> next to <em>animals</em> and <em>cats</em> suggests the catalog targets specific phrasings fairly than sole words, although which phrasings I can't inform without decoding the trie. The runtime inspect is LMLanguageModelTokenSequenceIsBlocklisted in LanguageModeling.framework. I got far adequate to study that its fourth and fifth arguments contain an output pointer, but my investigation motionless crashes intermittently, so I haven't peruse the genuine phrases yet. That's for a follow-up.</p> <h2 id="caveats"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>Caveats</h2> <ul> <li><strong>Meanings are inferred.</strong> Apple documents none of these bits. The tier names arrive from an enum in the scheme code and the topics from study thousands of samples. Both are consistent, but they're motionless a reading.</li> <li><strong>Flagged is not censored.</strong> As far as I can inform these flags decide what the keyboard volunteers, not what you can type.</li> <li><strong>One machine.</strong> Everything current comes from macOS 15.6 (24G84) alongside LinguisticData build 438 from July 2025. iOS and other macOS versions may container distinct dictionaries.</li> <li><strong>Private API.</strong> The functions can alter or disappear in any update. Don't container this in an app.</li> </ul> <h2 id="try-it-yourself"><a href="https://en.mycoding.id/category/technology" target="_blank"><span></span></a>Try it yourself</h2> <div><pre> sqlite3 -readonly ~/Library/Keyboard/VulgarWordUsage.db <span>'select * from vword_usage'</span> swiftc -O lexflags.swift -o lexflags ./lexflags en_US <span>|</span> <span>awk</span> -F<span>'\t'</span> <span>'$1 == "vulgar" {print $3}'</span> <span>|</span> <span>sort</span> -u <span>|</span> <span>less</span> ./lexflags nb_NO <span>|</span> <span>awk</span> -F<span>'\t'</span> <span>'$3 == "faen" || $3 == "helvete" || $3 == "idiot"'</span> </pre></div> <p>If you'd fairly not build anything, the <a href="https://en.mycoding.id/category/technology" target="_blank">gist</a> has all tiered term for 15 locales as TSV, affirmative the code and a manuscript that regenerates them. It's a snapshot of macOS 15.6 and won't be kept up to date.</p> <p>If you discover item funnier than <em>Oedipus</em>, I desire to comprehend concerning it.</p></div><br><hr><br></td><td><img src="image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" width="1" height="1" alt=""></td></div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/i-dumped-apple-s-fucking-word-list-75485</guid> <pubDate>Tue, 03 Nov 2026 21:33:23 +0700</pubDate> <author><![CDATA[support@mycoding.id (Putri Silvia)]]></author> </item> <item> <title><![CDATA[iPhone 18 rumors suggest a bigger battery, higher price next year]]></title> <description><![CDATA[iPhone 18 rumors suggest a bigger battery, higher price next year. After Apple raised iPhone prices before this year, a new rumor claims it plans to initiate the basis iPhone 18 alongside a higher price, too. A Weibo article from leaker ...]]></description> <media:thumbnail url="https://platform.theverge.com/wp-content/uploads/sites/2/2025/09/257946_iPhone_17_AKrales_0063.jpg?quality=90&amp;strip=all&amp;crop=0%2C10.732984293194%2C100%2C78.534031413613&amp;w=1200"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/iphone-18-rumors-suggest-a-bigger-battery-higher-price-next-year-75476</link> <content:encoded><![CDATA[<div><div><div><div><div><p><a href="https://en.mycoding.id/category/technology" target="_blank"><img alt="Stevie Bonifield" data-chromatic="ignore" loading="lazy" width="36" height="36" decoding="async" data-nimg="1" srcset="https://platform.theverge.com/wp-content/uploads/sites/2/2025/10/STEVIE_BONIFIELD_BLURPLE.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=48 1x, https://platform.theverge.com/wp-content/uploads/sites/2/2025/10/STEVIE_BONIFIELD_BLURPLE.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=96 2x" src="https://platform.theverge.com/wp-content/uploads/sites/2/2025/10/STEVIE_BONIFIELD_BLURPLE.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=96"></a></p><div><p><span aria-expanded="false" aria-haspopup="true" role="button" tabindex="0"><span id="follow-author-standard_article_details-dmcyOmF1dGhvclByb2ZpbGU6ODAzMzIw"><span><span><svg width="9" height="9" viewbox="0 0 9 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-label="Follow"><path d="M5 0H4V4H0V5H4V9H5V5H9V4H5V0Z"></path></svg></span></span><span>Stevie Bonifield</span></span></span></p> <p><span>is a news author covering all things person tech. Stevie started out at Laptop Mag penning news and reviews on hardware, gaming, and AI.</span></p></div></div></div></div></div><div id="zephr-anchor"><p>After Apple <a href="https://en.mycoding.id/category/technology" target="_blank">raised iPhone prices</a> before this year, a new rumor claims it plans to initiate the basis iPhone 18 alongside a higher price, too. A Weibo article from leaker <a href="https://en.mycoding.id/category/technology" target="_blank">Digital Chat Station</a>, spotted by <a href="https://en.mycoding.id/category/technology" target="_blank"><em>9to5Mac</em></a>, says the basis iPhone 18 is getting a brace upgrades alongside the cost hike, including a larger power division and a new 2-nanometer A20 chip. However, it reportedly won&rsquo;t have the smaller Dynamic Island featured on the <a href="https://en.mycoding.id/category/technology" target="_blank">iPhone 18 Pro and Pro Max</a>.</p><p>The basis iPhone 18 <a href="https://en.mycoding.id/category/technology" target="_blank">wasn&rsquo;t included</a> in Apple&rsquo;s autumn iPhone initiate event, but Digital Chat Station claims it volition attain first next year, in row alongside <a href="https://en.mycoding.id/category/technology" target="_blank">previous reports</a>. It&rsquo;s rumored to initiate alongside a <a href="https://en.mycoding.id/category/technology" target="_blank">second-gen iPhone Air</a> and the iPhone 18e, which Digital Chat Station additionally mentions.</p><p>The leaker doesn&rsquo;t define how much the iPhone 18&rsquo;s cost power addition compared to its predecessor. All of Apple&rsquo;s old models, including the iPhone 17, <a href="https://en.mycoding.id/category/technology" target="_blank">got a $100 cost hike</a> in September. Google and Samsung <a href="https://en.mycoding.id/category/technology" target="_blank">have additionally raised phone prices</a> by the identical amount complete the former year, driven by <a href="https://en.mycoding.id/category/technology" target="_blank">shortages of RAM</a> and another components. Earlier this week, Apple reported <a href="https://en.mycoding.id/category/technology" target="_blank">record-breaking iPhone sales</a>, notwithstanding the higher prices.</p><div><p><span><strong>Follow topics and authors</strong> from this narrative to see additional akin this in your personalized homepage nourish and to obtain email updates.</span></p><ul><li id="follow-author-article_footer-dmcyOmF1dGhvclByb2ZpbGU6ODAzMzIw"><span aria-expanded="false" aria-haspopup="true" role="button" tabindex="0"><span><span><svg width="9" height="9" viewbox="0 0 9 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-label="Follow"><path d="M5 0H4V4H0V5H4V9H5V5H9V4H5V0Z"></path></svg></span><span>Stevie Bonifield</span></span></span></li><li><li><li><li><li></ul></div></div></div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/iphone-18-rumors-suggest-a-bigger-battery-higher-price-next-year-75476</guid> <pubDate>Tue, 03 Nov 2026 21:16:54 +0700</pubDate> <author><![CDATA[support@mycoding.id (Stevie Bonifield)]]></author> </item> <item> <title><![CDATA[Apple starts giving Siri AI access to third-party apps]]></title> <description><![CDATA[Apple starts giving Siri AI access to third-party apps. Apple volition now let Siri AI execute actions throughout third-party apps. As part of the iOS 27.3 update rolling out on Tuesday, Apple announced developers can now in...]]></description> <media:thumbnail url="https://platform.theverge.com/wp-content/uploads/sites/2/2026/07/Siri-AI-Being-invoked-6.jpg?quality=90&amp;strip=all&amp;crop=0%2C10.736302165243%2C100%2C78.527395669513&amp;w=1200"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/apple-starts-giving-siri-ai-access-to-third-party-apps-75477</link> <content:encoded><![CDATA[<div id="zephr-anchor"><p>Apple volition now let Siri AI execute actions throughout third-party apps. As part of the iOS 27.3 update rolling out on Tuesday, Apple <a href="https://en.mycoding.id/category/technology" target="_blank">announced developers</a> can now merge Siri AI&rsquo;s new features in &ldquo;all apps,&rdquo; allowing the sound aide to diagram on a user&rsquo;s individual context, procedure natural tongue prompts, and use on-screen awareness to complete requests.</p><p>The update, which is rolling out as part of a Developer Preview, additionally adds a new &ldquo;app skills&rdquo; characteristic that third-party developers can create to merge multiple tasks into a sole action. In <a href="https://en.mycoding.id/category/technology" target="_blank">Apple&rsquo;s developer documentation</a>, the business says users won&rsquo;t have to citation an app&rsquo;s name in their petition during it&rsquo;s in the foreground, during a Live Activity, or in a conversation alongside Siri AI concerning the app.</p><p>&ldquo;For example, a individual power petition a journey alongside a journey portion app, prosecute updates to the app&rsquo;s Live Activity during they delay for their journey to arrive, afterward petition to move the pickup location to a distinct location by saying &lsquo;Hey Siri, alter my journey pickup to a new address,&rsquo;&rdquo; Apple says. As <a href="https://en.mycoding.id/category/technology" target="_blank">noted by <em>9to5Mac</em></a>, Apple earlier made a smaller set of features accessible to third-party developers.</p><p>Apple is bringing Siri AI&rsquo;s expanded capabilities to its own apps as well, including Calendar, Files, Finder, Journal, Mail, Maps, Messages, Music, Notes, Photos, Preview, Reminders, Safari, Shortcuts, and Weather apps. &ldquo;Users can do things akin discover a coffee shop they visited final week or archive records that haven&rsquo;t been opened in complete a year,&rdquo; according to Apple. The business notes that users can ask Siri AI what it can do in all app.</p><div><p><span><strong>Follow topics and authors</strong> from this narrative to see additional akin this in your personalized homepage nourish and to obtain email updates.</span></p><ul><li id="follow-author-article_footer-dmcyOmF1dGhvclByb2ZpbGU6MTE2"><span aria-expanded="false" aria-haspopup="true" role="button" tabindex="0"><span><span><svg width="9" height="9" viewbox="0 0 9 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-label="Follow"><path d="M5 0H4V4H0V5H4V9H5V5H9V4H5V0Z"></path></svg></span><span>Emma Roth</span></span></span></li><li><li><li><li><li><li></ul></div></div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/apple-starts-giving-siri-ai-access-to-third-party-apps-75477</guid> <pubDate>Tue, 03 Nov 2026 21:16:17 +0700</pubDate> <author><![CDATA[support@mycoding.id (Emma Roth)]]></author> </item> <item> <title><![CDATA[Pratt parsing is a black box]]></title> <description><![CDATA[Pratt parsing is a black box. Comments]]></description> <media:thumbnail url="https://vinipsmaker.github.io/blog-heading.webp"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/pratt-parsing-is-a-black-box-75486</link> <content:encoded><![CDATA[<div> <p>It caught my notice that most of Pratt parsing tutorials that I've stumbled on expend nearly all of their period explaining Pratt's algorithm and none explaining the properties rearward Pratt that really matter. Pratt fits into fair 9 lines of code if you're programming in a high-level tongue specified as Rhombus:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span> let mutable remaining = t.nud()</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span> let mutable remaining = t.nud()</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span> let mutable remaining = t.nud()</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span> let mutable remaining = t.nud()</span></pre> </div> </div> </div> </div> </div> <p>And here's a secret: that's the smallest crucial item you need to comprehend concerning Pratt's. In fact, you don't need to comprehend this part at all! Imagine if you were lone capable to use quicksort if you understood its implementation. Imagine if you were lone capable to use records if you knew how to execute a filesystem from scratch. It's the identical logic here. If you deficiency the power to abstract, you'll attain nowhere in device discipline since that's how the entire site works. In fact, I wrote the backbone of a heavily Pratt-based parsing machinery for a compiler that I've been penning since final twelvemonth w/o equal bothering to comprehend the complete snippet in any detail.</p> <p>Not convinced? Think for a second on how they do in traditional parsing techniques: compiler compilers! They use code generators to spit the parsing algorithm since fair a minuscule assemblage bothers to study what the parsing motor is really doing. It's no distinct alongside Pratt. However Pratt is so small that you can fair copy'n'paste these 9 lines of code in your project and call it a day alternatively of adding a new complex dependency to your project. The algorithm hasn't changed since 1973 and it's not gonna alter now.</p> <p>In this part I'll go complete what you really need to keep in intellect for Pratt parsing. The item won't be concerning memorizing any of it though. The item is concerning acquiring a mindset. As lengthy as you get the mindset you don't need to equal annoy to recall equal a sole term of what I say here.</p> <p>The lone tutorial on Pratt parsing that I can firmly propose to person who has never been exposed to the topic is really a conversation that Douglas Crockford gave in the gathering GOTO 2013<a href="https://en.mycoding.id/category/technology" target="_blank">&sup1;</a>. Douglas Crockford nailed it whenever he stated:</p> <blockquote> <p>Pratt takes parsing which is a really complex item and reduces it to one uncomplicated question: <em>What do we anticipate to see to the remaining of a token</em>?</p> </blockquote> <p>&mdash; Douglas Crockford, GOTO 2013</p> <p>At archetypal glance it may appearance akin a mystical declaration devoid of meaning, but that's the inquiry that becomes the example on how you visage parsing problems and it'll rewire your brain to internalize the Pratt parsing mindset. That's the most crucial item you need to understand. You enroll semantic actions for two categories: nuds and leds. A nud is a token that expects nothing to its remaining (nud stands for null denotation) during a led expects item (led stands for remaining denotation).</p> <p>Traditional parsing techniques enroll semantic actions to manufacturing rules. Here's an example I took direct from GNU Bison's manual:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span>expr: expr '+' expr { $$ = $1 + $3; } ;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span>expr: expr '+' expr { $$ = $1 + $3; } ;</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span>expr: expr '+' expr { $$ = $1 + $3; } ;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span>expr: expr '+' expr { $$ = $1 + $3; } ;</span></pre> </div> </div> </div> </div> </div> <p>The content between the braces is code that executes whenever the BNF-like grammar on the remaining matches. I'm gonna reiterate myself since that's really important: traditional parsing techniques enroll semantic actions to <em>production rules</em> (which by definition are non-terminal symbols). In difference Pratt parsing registers semantic actions to the <em>terminals themselves</em> instead. That's a essential change on how you visage parsing problems.</p> <p>Here's a stripped downward type of the code for the tables that I have in my compiler correct now:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>static</span><span> constinit </span><span>const</span><span> </span><span>auto</span><span> nud_table </span><span>=</span><span> </span><span>make_dispatch_table</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lparen</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_lparen</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lbrace</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_lbrace</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>exclamation_mark</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_negation</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>less_than_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_enter_type_scope</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>plus_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_unary_plus</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>minus_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_unary_minus</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dplus_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_preincrement</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>user_macro</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_user_macro_expansion</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>identifier</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_identifier</span><span>&gt;</span></pre> </div> <div> <pre></pre> <pre><span></span><span>static</span><span> constinit </span><span>const</span><span> </span><span>auto</span><span> led_table </span><span>=</span><span> </span><span>make_dispatch_table</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lparen</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_function_call</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lbrack</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_array_indexing</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dvertical_bar</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_logical_disjunction</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dampersand</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_logical_conjunction</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dequals_sign</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_equality</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dminus_sign</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_postdecrement</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>asterisk</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_multiplication</span><span>&gt;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>prefix_operator_binding_power </span><span>=</span><span> </span><span>120</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span></span><span>static</span><span> </span><span>constexpr</span><span> </span><span>auto</span><span> binding_power </span><span>=</span><span> </span><span>make_dispatch_table</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dvertical_bar</span><span>,</span><span> </span><span>10</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dampersand</span><span>,</span><span> </span><span>20</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dequals_sign</span><span>,</span><span> </span><span>30</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>lparen</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>lbrack</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dplus_sign</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dminus_sign</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dot_asterisk</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>rarrow</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dot</span><span>,</span><span> </span><span>130</span><span>&gt;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>static</span><span> constinit </span><span>const</span><span> </span><span>auto</span><span> nud_table </span><span>=</span><span> </span><span>make_dispatch_table</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lparen</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_lparen</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lbrace</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_lbrace</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>exclamation_mark</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_negation</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>less_than_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_enter_type_scope</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>plus_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_unary_plus</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>minus_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_unary_minus</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dplus_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_preincrement</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>user_macro</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_user_macro_expansion</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>identifier</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_identifier</span><span>&gt;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>static</span><span> constinit </span><span>const</span><span> </span><span>auto</span><span> led_table </span><span>=</span><span> </span><span>make_dispatch_table</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lparen</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_function_call</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lbrack</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_array_indexing</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dvertical_bar</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_logical_disjunction</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dampersand</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_logical_conjunction</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dequals_sign</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_equality</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dminus_sign</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_postdecrement</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>asterisk</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_multiplication</span><span>&gt;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>prefix_operator_binding_power </span><span>=</span><span> </span><span>120</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>static</span><span> </span><span>constexpr</span><span> </span><span>auto</span><span> binding_power </span><span>=</span><span> </span><span>make_dispatch_table</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dvertical_bar</span><span>,</span><span> </span><span>10</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dampersand</span><span>,</span><span> </span><span>20</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dequals_sign</span><span>,</span><span> </span><span>30</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>lparen</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>lbrack</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dplus_sign</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dminus_sign</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dot_asterisk</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>rarrow</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dot</span><span>,</span><span> </span><span>130</span><span>&gt;</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>static</span><span> constinit </span><span>const</span><span> </span><span>auto</span><span> nud_table </span><span>=</span><span> </span><span>make_dispatch_table</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lparen</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_lparen</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lbrace</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_lbrace</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>exclamation_mark</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_negation</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>less_than_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_enter_type_scope</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>plus_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_unary_plus</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>minus_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_unary_minus</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dplus_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_preincrement</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>user_macro</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_user_macro_expansion</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>identifier</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_identifier</span><span>&gt;</span></pre> </div> <div> <pre></pre> <pre><span></span><span>static</span><span> constinit </span><span>const</span><span> </span><span>auto</span><span> led_table </span><span>=</span><span> </span><span>make_dispatch_table</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lparen</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_function_call</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lbrack</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_array_indexing</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dvertical_bar</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_logical_disjunction</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dampersand</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_logical_conjunction</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dequals_sign</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_equality</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dminus_sign</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_postdecrement</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>asterisk</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_multiplication</span><span>&gt;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>prefix_operator_binding_power </span><span>=</span><span> </span><span>120</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span></span><span>static</span><span> </span><span>constexpr</span><span> </span><span>auto</span><span> binding_power </span><span>=</span><span> </span><span>make_dispatch_table</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dvertical_bar</span><span>,</span><span> </span><span>10</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dampersand</span><span>,</span><span> </span><span>20</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dequals_sign</span><span>,</span><span> </span><span>30</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>lparen</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>lbrack</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dplus_sign</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dminus_sign</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dot_asterisk</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>rarrow</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dot</span><span>,</span><span> </span><span>130</span><span>&gt;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>static</span><span> constinit </span><span>const</span><span> </span><span>auto</span><span> nud_table </span><span>=</span><span> </span><span>make_dispatch_table</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lparen</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_lparen</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lbrace</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_lbrace</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>exclamation_mark</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_negation</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>less_than_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_enter_type_scope</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>plus_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_unary_plus</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>minus_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_unary_minus</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dplus_sign</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_preincrement</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>user_macro</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_user_macro_expansion</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>identifier</span><span>,</span><span> token</span><span>::</span><span>nud</span><span>::</span><span>parse_identifier</span><span>&gt;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>static</span><span> constinit </span><span>const</span><span> </span><span>auto</span><span> led_table </span><span>=</span><span> </span><span>make_dispatch_table</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lparen</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_function_call</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>lbrack</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_array_indexing</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dvertical_bar</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_logical_disjunction</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dampersand</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_logical_conjunction</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dequals_sign</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_equality</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dminus_sign</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_postdecrement</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>asterisk</span><span>,</span><span> token</span><span>::</span><span>led</span><span>::</span><span>parse_multiplication</span><span>&gt;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>prefix_operator_binding_power </span><span>=</span><span> </span><span>120</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>static</span><span> </span><span>constexpr</span><span> </span><span>auto</span><span> binding_power </span><span>=</span><span> </span><span>make_dispatch_table</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dvertical_bar</span><span>,</span><span> </span><span>10</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dampersand</span><span>,</span><span> </span><span>20</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dequals_sign</span><span>,</span><span> </span><span>30</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>lparen</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>lbrack</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dplus_sign</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dminus_sign</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dot_asterisk</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>rarrow</span><span>,</span><span> </span><span>130</span><span>&gt;</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>rule_c</span><span>&lt;</span><span>token</span><span>::</span><span>code</span><span>::</span><span>dot</span><span>,</span><span> </span><span>130</span><span>&gt;</span></pre> </div> </div> </div> </div> </div> <p>All values on the remaining of all array are the lexer codes for terminal symbols. The values on the correct depend on the array kind:</p> Nud tables <p>Functions matching the signature <span><span><span>ExprPtr(Context&amp;,reader,reader&amp;)</span></span><span><span>ExprPtr(Context&amp;,reader,reader&amp;)</span></span></span>.</p> Led tables <p>Functions matching the signature <span><span><span>ExprPtr(Context&amp;,reader,reader&amp;,ExprPtr)</span></span><span><span>ExprPtr(Context&amp;,reader,reader&amp;,ExprPtr)</span></span></span>.</p> Binding power tables <p>Positive integers.</p> <p>Most of the semantic actions in these tables have code whose implementation amount to one semicolon in their build at most. Here's the code for <span><span><span>parse_unary_plus()</span></span><span><span>parse_unary_plus()</span></span></span>:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_unary_plus</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>UnaryPlus</span><span>&gt;</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> prefix_operator_binding_power</span><span>)</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_unary_plus</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>UnaryPlus</span><span>&gt;</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> prefix_operator_binding_power</span><span>)</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_unary_plus</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>UnaryPlus</span><span>&gt;</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> prefix_operator_binding_power</span><span>)</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_unary_plus</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>UnaryPlus</span><span>&gt;</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> prefix_operator_binding_power</span><span>)</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> </div> <p>On the exterior it may appear fair akin a distinct but motionless extremely akin way to arrange your code, but the effect is in fact huge. Here are a few differences from traditional parsing techniques that stem from this sole departure alone:</p> <ul> <li> <p>You don't need to concern concerning left-recursion problems that happen in traditional parsing techniques specified as LL(k). Given the dispatch to a semantic act is done alongside its connected token already consumed from the stream, left-recursion fair doesn't happen. It's a non-issue.</p> </li> <li> <p>The parsing motor doesn't need to test alternatives or backtrack. The customary dichotomy between speed versus recollection that is established in several parsers (e.g. PEG vs packrat) is gone. Pratt is fast, and it's not gonna starve for insane amounts of memoization. Pratt is fair going to difference numbers, and iterate or recurse.</p> </li> <li> <p>Related to the former point, but value to regard on its own: semantic actions run exactly once! That method there's no need to rollback to a former province if a equivalent fails. In another words your actions may merge side-effects. In my parser I use this asset to do name reservation/release on lexical range through a shared environment entity juggled through all layer. Just observe out to not abuse side-effects and end up alongside spaghetti.</p> </li> <li> <p>Also related: your semantic act continually knows it's the accurate match. Therefore it may appearance arbitrarily far onward if it wants to. In another words: you can additional use PEG parsers (or layered Pratt parsers) in the semantic actions. While Pratt itself lone eats 1 token at a time, the nuds &amp; leds themselves may eat additional tokens per round. You fair unlocked the power of parser combinators.</p> </li> <li> <p>Most of the grammar ambiguities rotate into array collisions so you discarded small period on the simpler ambiguity cases. If you merge multiple parsers afterward it's motionless imaginable to have grammar ambiguities. So you motionless have activity as a grammar designer, but in my cognition it's much small work. When you merge parsers you're really combining grammars. Pratt as the parsing algorithm won't act as the all-seeing oracle and detect all imaginable ambiguity in the complete grammar amalgamation. Pratt (just akin PEG) volition fair come back the archetypal imaginable equivalent in this case.</p> </li> <li> <p>Unfilled gaps in your tables rotate into trivial expansion points in your grammar. You may inhabit these gaps in reply to the content parsed so far. In another words you can execute macros and equal parse a tongue that extends its own operators. In difference extending a pre-existing grammar according to manufacturing rules (the orthodox parsing school) is a job value the complexity of PhD researches.</p> </li> </ul> <p>You may equal discover a few of these properties in the traditional academy as well, but lone to certain extents, or alongside a huge complexity toll.</p> <p>Nonetheless I mentioned before that this institution is a mindset <em>shift</em>, but so far I've lone mentioned properties that you can use from adopting Pratt, so where's the change really? Consider the customary EBNF regulation for parsing function calls:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span>function_call = identifier, "(", [ argument_list ], ")" ;</span></pre> </div> <div> <pre></pre> <pre><span>argument_list = expression, { ",", expression } ;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span>function_call = identifier, "(", [ argument_list ], ")" ;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>argument_list = expression, { ",", expression } ;</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span>function_call = identifier, "(", [ argument_list ], ")" ;</span></pre> </div> <div> <pre></pre> <pre><span>argument_list = expression, { ",", expression } ;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span>function_call = identifier, "(", [ argument_list ], ")" ;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>argument_list = expression, { ",", expression } ;</span></pre> </div> </div> </div> </div> </div> <p>How do you method this issue whenever alternatively of manufacturing rules your toolbox contains lone nuds &amp; leds? The key study is that the beginning parentheses continually anticipate item to its left, so it's a led. There you go: enroll a led for lparen and parse the function call from there. It's not immediately obvious, specially whenever you've lone been exposed to the traditional parsing school. Hence why Douglas Crockford nailed it whenever he stated:</p> <blockquote> <p>Pratt takes parsing which is a really complex item and reduces it to one uncomplicated question: <em>What do we anticipate to see to the remaining of a token</em>?</p> </blockquote> <p>&mdash; Douglas Crockford, GOTO 2013</p> <p>The led for gathering indexing is extremely akin to the led for function call. Here's the assortment that I use in my own parser:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_array_indexing</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>left</span><span>)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>std</span><span>::</span><span>vector</span><span>&lt;</span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span>&gt;</span><span> indexes</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>if</span><span> </span><span>(</span><span>r</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>!=</span><span> rbrack</span><span>)</span><span> </span><span>{</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>indexes</span><span>.</span><span>emplace_back</span><span>(</span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> parse_until_end</span><span>)</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>while</span><span> </span><span>(</span><span>r</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>!=</span><span> rbrack</span><span>)</span><span> </span><span>{</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>if</span><span> </span><span>(</span><span>!</span><span>r</span><span>.</span><span>eat</span><span>&lt;</span><span>code</span><span>::</span><span>comma</span><span>&gt;</span><span>(</span><span>)</span><span>)</span><span> </span><span>{</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>throw</span><span> </span><span>unexpected_token</span><span>{</span><span>r</span><span>,</span><span> </span><span>/*</span><span>expected=</span><span>*/</span><span>"</span><span>]</span><span>"</span><span>}</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>indexes</span><span>.</span><span>emplace_back</span><span>(</span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> parse_until_end</span><span>)</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>assert</span><span>(</span><span>r</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>==</span><span> rbrack</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>ArrayIndexing</span><span>&gt;</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span><span> left</span><span>,</span><span> </span><span>std</span><span>::</span><span>move</span><span>(</span><span>indexes</span><span>)</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_array_indexing</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>left</span><span>)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>std</span><span>::</span><span>vector</span><span>&lt;</span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span>&gt;</span><span> indexes</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>if</span><span> </span><span>(</span><span>r</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>!=</span><span> rbrack</span><span>)</span><span> </span><span>{</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>indexes</span><span>.</span><span>emplace_back</span><span>(</span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> parse_until_end</span><span>)</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>while</span><span> </span><span>(</span><span>r</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>!=</span><span> rbrack</span><span>)</span><span> </span><span>{</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>if</span><span> </span><span>(</span><span>!</span><span>r</span><span>.</span><span>eat</span><span>&lt;</span><span>code</span><span>::</span><span>comma</span><span>&gt;</span><span>(</span><span>)</span><span>)</span><span> </span><span>{</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>throw</span><span> </span><span>unexpected_token</span><span>{</span><span>r</span><span>,</span><span> </span><span>/*</span><span>expected=</span><span>*/</span><span>"</span><span>]</span><span>"</span><span>}</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>indexes</span><span>.</span><span>emplace_back</span><span>(</span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> parse_until_end</span><span>)</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>assert</span><span>(</span><span>r</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>==</span><span> rbrack</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>ArrayIndexing</span><span>&gt;</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span><span> left</span><span>,</span><span> </span><span>std</span><span>::</span><span>move</span><span>(</span><span>indexes</span><span>)</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_array_indexing</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>left</span><span>)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>std</span><span>::</span><span>vector</span><span>&lt;</span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span>&gt;</span><span> indexes</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>if</span><span> </span><span>(</span><span>r</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>!=</span><span> rbrack</span><span>)</span><span> </span><span>{</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>indexes</span><span>.</span><span>emplace_back</span><span>(</span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> parse_until_end</span><span>)</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>while</span><span> </span><span>(</span><span>r</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>!=</span><span> rbrack</span><span>)</span><span> </span><span>{</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>if</span><span> </span><span>(</span><span>!</span><span>r</span><span>.</span><span>eat</span><span>&lt;</span><span>code</span><span>::</span><span>comma</span><span>&gt;</span><span>(</span><span>)</span><span>)</span><span> </span><span>{</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>throw</span><span> </span><span>unexpected_token</span><span>{</span><span>r</span><span>,</span><span> </span><span>/*</span><span>expected=</span><span>*/</span><span>"</span><span>]</span><span>"</span><span>}</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>indexes</span><span>.</span><span>emplace_back</span><span>(</span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> parse_until_end</span><span>)</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>assert</span><span>(</span><span>r</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>==</span><span> rbrack</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>ArrayIndexing</span><span>&gt;</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span><span> left</span><span>,</span><span> </span><span>std</span><span>::</span><span>move</span><span>(</span><span>indexes</span><span>)</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_array_indexing</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>left</span><span>)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>std</span><span>::</span><span>vector</span><span>&lt;</span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span>&gt;</span><span> indexes</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>if</span><span> </span><span>(</span><span>r</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>!=</span><span> rbrack</span><span>)</span><span> </span><span>{</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>indexes</span><span>.</span><span>emplace_back</span><span>(</span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> parse_until_end</span><span>)</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>while</span><span> </span><span>(</span><span>r</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>!=</span><span> rbrack</span><span>)</span><span> </span><span>{</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>if</span><span> </span><span>(</span><span>!</span><span>r</span><span>.</span><span>eat</span><span>&lt;</span><span>code</span><span>::</span><span>comma</span><span>&gt;</span><span>(</span><span>)</span><span>)</span><span> </span><span>{</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>throw</span><span> </span><span>unexpected_token</span><span>{</span><span>r</span><span>,</span><span> </span><span>/*</span><span>expected=</span><span>*/</span><span>"</span><span>]</span><span>"</span><span>}</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>indexes</span><span>.</span><span>emplace_back</span><span>(</span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> parse_until_end</span><span>)</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>assert</span><span>(</span><span>r</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>==</span><span> rbrack</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>ArrayIndexing</span><span>&gt;</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span><span> left</span><span>,</span><span> </span><span>std</span><span>::</span><span>move</span><span>(</span><span>indexes</span><span>)</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> </div> <p>Pratt is not fair precedence climbing. Pratt is a way to arrange your code. First learning Pratt as a dreary box really helps to comprehend this difference. If you don't have admission to the dreary box, you won't be tempted to decrease Pratt to precedence climbing. Hopefully by the period you desire to obtain distant the idea and see what's inner you won't create the error of treating Pratt fair akin a uncomplicated assortment of precedence climbing since by afterward you'll have already been exposed to all the power unlocked by Pratt parsing. Andy Chu's blog article on Pratt parsing without prototypal bequest is value study as it contrasts two opposing styles of penning Pratt parsers<a href="https://en.mycoding.id/category/technology" target="_blank">&sup2;</a>. Here's a minimal calculator written in Rhombus that is (stylistically) nearer to a type that'd use prototypal bequest than the manner that Andy Chu shows:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span>class Token(~nud: nud_impl = #false,</span></pre> </div> <div> <pre></pre> <pre><span> method nud(): nud_impl(this)</span></pre> </div> <div> <pre></pre> <pre><span> method led(lhs): led_impl(this, lhs)</span></pre> </div> <div> <pre></pre> <pre><span> method prefix(): expression(30)</span></pre> </div> <div> <pre></pre> <pre><span> method rhs(): expression(this.lbp)</span></pre> </div> <div> <pre></pre> <pre><span>class RParen(): extends Token</span></pre> </div> <div> <pre></pre> <pre><span> ~led: fun(tok, lhs): lhs + tok.rhs(),</span></pre> </div> <div> <pre></pre> <pre><span> ~led: fun(tok, lhs): lhs - tok.rhs(),</span></pre> </div> <div> <pre></pre> <pre><span> ~led: fun(tok, lhs): lhs * tok.rhs(),</span></pre> </div> <div> <pre></pre> <pre><span> ~led: fun(tok, lhs): lhs / tok.rhs(),</span></pre> </div> <div> <pre></pre> <pre><span> | digit+: Token(~nud: fun(_): String.to_int(lexeme))</span></pre> </div> <div> <pre></pre> <pre><span> | error("expected decision parens")</span></pre> </div> <div> <pre></pre> <pre><span>def input = Port.Input.open_string("4 * (3 - 3) / 2 + -10")</span></pre> </div> <div> <pre></pre> <pre><span>def mutable token = lex(input)</span></pre> </div> <div> <pre></pre> <pre><span>fun advance(): token := lex(input)</span></pre> </div> <div> <pre></pre> <pre><span> let mutable remaining = t.nud()</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span>class Token(~nud: nud_impl = #false,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> method nud(): nud_impl(this)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> method led(lhs): led_impl(this, lhs)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> method prefix(): expression(30)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> method rhs(): expression(this.lbp)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>class RParen(): extends Token</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> ~led: fun(tok, lhs): lhs + tok.rhs(),</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> ~led: fun(tok, lhs): lhs - tok.rhs(),</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> ~led: fun(tok, lhs): lhs * tok.rhs(),</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> ~led: fun(tok, lhs): lhs / tok.rhs(),</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> | digit+: Token(~nud: fun(_): String.to_int(lexeme))</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> | error("expected decision parens")</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>def input = Port.Input.open_string("4 * (3 - 3) / 2 + -10")</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>def mutable token = lex(input)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>fun advance(): token := lex(input)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> let mutable remaining = t.nud()</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span>class Token(~nud: nud_impl = #false,</span></pre> </div> <div> <pre></pre> <pre><span> method nud(): nud_impl(this)</span></pre> </div> <div> <pre></pre> <pre><span> method led(lhs): led_impl(this, lhs)</span></pre> </div> <div> <pre></pre> <pre><span> method prefix(): expression(30)</span></pre> </div> <div> <pre></pre> <pre><span> method rhs(): expression(this.lbp)</span></pre> </div> <div> <pre></pre> <pre><span>class RParen(): extends Token</span></pre> </div> <div> <pre></pre> <pre><span> ~led: fun(tok, lhs): lhs + tok.rhs(),</span></pre> </div> <div> <pre></pre> <pre><span> ~led: fun(tok, lhs): lhs - tok.rhs(),</span></pre> </div> <div> <pre></pre> <pre><span> ~led: fun(tok, lhs): lhs * tok.rhs(),</span></pre> </div> <div> <pre></pre> <pre><span> ~led: fun(tok, lhs): lhs / tok.rhs(),</span></pre> </div> <div> <pre></pre> <pre><span> | digit+: Token(~nud: fun(_): String.to_int(lexeme))</span></pre> </div> <div> <pre></pre> <pre><span> | error("expected decision parens")</span></pre> </div> <div> <pre></pre> <pre><span>def input = Port.Input.open_string("4 * (3 - 3) / 2 + -10")</span></pre> </div> <div> <pre></pre> <pre><span>def mutable token = lex(input)</span></pre> </div> <div> <pre></pre> <pre><span>fun advance(): token := lex(input)</span></pre> </div> <div> <pre></pre> <pre><span> let mutable remaining = t.nud()</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span>class Token(~nud: nud_impl = #false,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> method nud(): nud_impl(this)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> method led(lhs): led_impl(this, lhs)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> method prefix(): expression(30)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> method rhs(): expression(this.lbp)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>class RParen(): extends Token</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> ~led: fun(tok, lhs): lhs + tok.rhs(),</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> ~led: fun(tok, lhs): lhs - tok.rhs(),</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> ~led: fun(tok, lhs): lhs * tok.rhs(),</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> ~led: fun(tok, lhs): lhs / tok.rhs(),</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> | digit+: Token(~nud: fun(_): String.to_int(lexeme))</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> | error("expected decision parens")</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>def input = Port.Input.open_string("4 * (3 - 3) / 2 + -10")</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>def mutable token = lex(input)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>fun advance(): token := lex(input)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> let mutable remaining = t.nud()</span></pre> </div> </div> </div> </div> </div> <div> <h2>Algorithmic &amp; grammar constraints</h2> </div> <p>The former division power have been the densest in this entire blog article so I desire to tune it downward during you incubate the Pratt mindset and go on trivial things for now:</p> <ul> <li> <p>Pratt requires a distinct lexer. Some contemporary parsing engines can activity in a scannerless manner (e.g. PEG) or equal embed the lexer definition immediately in the parser itself, but Pratt requires a distinct lexer. That shouldn't be a big concern, but it's item to keep in mind.</p> </li> <li> <p>Pratt is fast. The algorithm lone compares numbers and iterate or recurse. It's lone looking 1 token ahead, and not doing item alternatively really. It doesn't go rear to test alternatives or to backtrack on unsuccessful manufacturing rules. It fair doesn't go rear at all. It's a full-speed locomotive lone looking onward dining 1 token at a time.</p> </li> <li> <p>Given Pratt itself is already fast, if you desire to optimize anything, the lone item remaining is the dispatch code for nuds &amp; leds. In my case I use earth read-only dispatch tables, but most of the tutorials I've seen in the untamed use energetic objects in extremely energetic scripting languages.</p> </li> <li> <p>Pratt can't parse statements. You have to merge it alongside another techniques to parse languages alongside statements. I've already gone through this constraint in my final blog article anywhere you can discover solutions.</p> </li> <li> <p>Pratt is a form of recursive decline parsing definition it's operating tradition person code (i.e. code in a Turing-complete language) for the semantic actions, but that's not the entire picture. The semantic actions additional run the parsing choices/direction which method that your code power appearance at the environment (e.g. former declarations) to decide how to parse the next part of the input text. In summary you can have several forms of context-sensitive parsing which opens the entrance for additional classes of languages.</p> </li> <li> <p>You'll have to retreat to modal lexing to parse several complex languages established in the wild, but I'll reserve a afterward division of this blog article to contact on this topic.</p> </li> <li> <p>Pratt can't be used for incremental parsing as done in GLR parsing. However that's not a power established in most parsing algorithms anyhow (I'm operating out of algorithmic properties to conversation about). Incremental parsing is used in tools specified as tree-sitter.</p> </li> </ul> <div> <h2>Right-to-left associative operators</h2> </div> <p>My entire disagreement today is that Pratt is a dreary box abstraction, so let's go alongside this disagreement and lay downward what contracts you need to regard to use Pratt:</p> <ul> <li> <p>Only tokens alongside connected leds need a value in the binding power table. Tutorials in the untamed are normally written in a way anywhere this asset isn't obvious. It becomes additional apparent whenever you compose your parser using fixed tables fairly than extremely energetic objects in scripting languages.</p> </li> <li> <p>Related to the former point: You motionless need a value for the binding power of prefix operators, but this value isn't used in the Pratt iteration at all. Therefore it's not a necessity to inflate the binding power array alongside a value for the prefix operators, but that's what most of the code I've seen in the untamed do anyway. If you think it's easier to fair material the binding power for prefix operators in the identical array be my visitant and go ahead. Just withstand in intellect that this famous institution isn't a difficult requirement. Only the nud implementing the prefix controller itself needs to cognize the binding power for prefix operators.</p> </li> <li> <p>Never allocate a binding power of zero to a led.</p> </li> <li> <p>Separators specified as comma and unknown/error/EOF tokens anywhere the parser must halt should have a binding power of zero. They don't need to be in the binding power table.</p> </li> <li> <p>If you're penning in decimal akin all individual being, clasp increments of 10 in the binding power table. When study these values, you may fair disregard the final zero, but the additional area between operators enables several tricks.</p> </li> </ul> <p>So how do we execute right-to-left associative operators alongside Pratt? First let's appearance at a average left-to-right associative infix operator. Here's my code for the led <span><span><span>+</span></span><span><span>+</span></span></span>:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>static</span><span> </span><span>constexpr</span><span> </span><span>auto</span><span> bp </span><span>=</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>binding_power</span><span>[</span><span>static_cast</span><span>&lt;</span><span>unsigned</span><span>&gt;</span><span>(</span><span>code</span><span>::</span><span>plus_sign</span><span>)</span><span>]</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_addition</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>left</span><span>)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>auto</span><span> correct </span><span>=</span><span> </span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> bp</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>Addition</span><span>&gt;</span><span>(</span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span><span> left</span><span>,</span><span> right</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>static</span><span> </span><span>constexpr</span><span> </span><span>auto</span><span> bp </span><span>=</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>binding_power</span><span>[</span><span>static_cast</span><span>&lt;</span><span>unsigned</span><span>&gt;</span><span>(</span><span>code</span><span>::</span><span>plus_sign</span><span>)</span><span>]</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_addition</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>left</span><span>)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>auto</span><span> correct </span><span>=</span><span> </span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> bp</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>Addition</span><span>&gt;</span><span>(</span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span><span> left</span><span>,</span><span> right</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>static</span><span> </span><span>constexpr</span><span> </span><span>auto</span><span> bp </span><span>=</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>binding_power</span><span>[</span><span>static_cast</span><span>&lt;</span><span>unsigned</span><span>&gt;</span><span>(</span><span>code</span><span>::</span><span>plus_sign</span><span>)</span><span>]</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_addition</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>left</span><span>)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>auto</span><span> correct </span><span>=</span><span> </span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> bp</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>Addition</span><span>&gt;</span><span>(</span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span><span> left</span><span>,</span><span> right</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>static</span><span> </span><span>constexpr</span><span> </span><span>auto</span><span> bp </span><span>=</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>binding_power</span><span>[</span><span>static_cast</span><span>&lt;</span><span>unsigned</span><span>&gt;</span><span>(</span><span>code</span><span>::</span><span>plus_sign</span><span>)</span><span>]</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_addition</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>left</span><span>)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>auto</span><span> correct </span><span>=</span><span> </span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> bp</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>Addition</span><span>&gt;</span><span>(</span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span><span> left</span><span>,</span><span> right</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> </div> <p>If we wanted to create the controller right-to-left associative, we'd fair need to use <span><span><span>bp - 1</span></span><span><span>bp - 1</span></span></span> alternatively of <span><span><span>bp</span></span><span><span>bp</span></span></span>:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_additionr</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>left</span><span>)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>bp </span><span>/*</span><span> HERE'S THE DIFFERENCE: </span><span>*/</span><span> </span><span>-</span><span> </span><span>1</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>Addition</span><span>&gt;</span><span>(</span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span><span> left</span><span>,</span><span> right</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_additionr</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>left</span><span>)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>bp </span><span>/*</span><span> HERE'S THE DIFFERENCE: </span><span>*/</span><span> </span><span>-</span><span> </span><span>1</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>Addition</span><span>&gt;</span><span>(</span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span><span> left</span><span>,</span><span> right</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_additionr</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>left</span><span>)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>bp </span><span>/*</span><span> HERE'S THE DIFFERENCE: </span><span>*/</span><span> </span><span>-</span><span> </span><span>1</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>Addition</span><span>&gt;</span><span>(</span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span><span> left</span><span>,</span><span> right</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_additionr</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>left</span><span>)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>bp </span><span>/*</span><span> HERE'S THE DIFFERENCE: </span><span>*/</span><span> </span><span>-</span><span> </span><span>1</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>Addition</span><span>&gt;</span><span>(</span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span><span> left</span><span>,</span><span> right</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> </div> <p>That's a norm trick in the site of Pratt parsing. A trick of the commerce so to speak. A trick you ought to know. Why does it work? It doesn't matter. It's a dreary box for today. Tomorrow it power matter, but today you should lone be focusing on how to use Pratt, not why it works.</p> <div> <h2>Macros openly interleave between lexing &amp; parsing</h2> </div> <p>Why equal compose a division for macros whenever most tongue designers won't add them? Pratt macros are fair nuds/leds implemented in the tongue that your code is parsing and interpreting. Therefore item that your own nuds/leds can do is item that ought to be imaginable in a macro and vice-versa. Lessons learned from Pratt macros are lessons learned on Pratt parsing itself.</p> <p>That's fair a principle, and not a hard-truth. It's certainly not a fact in the Pratt macros of my own language, for instance, but the regulation remains my guide (and hopefully yours as well).</p> <p>The implementation of macros exterior Lisp are traditionally extremely constricted in many fronts. In languages specified as C you have macros that are fair textual substitution templates that activity in the surroundings of a preprocessor doing textual enlargement (therefore operating on the lexing layer). It's additionally imaginable to scheme macros that activity in the AST/parsing tier specified as done in Lisp. However Pratt macros unify these two earlier severed worlds. If you're implementing procedural Pratt macros afterward it's imaginable for the macro to use APIs that alternately invoke either the lexer or the parser. My own macro scheme doesn't yet have adequate APIs so I can't showcase a genuine example, but here's how envision that it's gonna work:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span> // functions whose name commencement alongside "read"</span></pre> </div> <div> <pre></pre> <pre><span> // run the lexer (i.e. they fair consume</span></pre> </div> <div> <pre></pre> <pre><span> // functions whose name commencement alongside "parse"</span></pre> </div> <div> <pre></pre> <pre><span> // run the parser (i.e. they consume and</span></pre> </div> <div> <pre></pre> <pre><span> // come back parsed expressions)</span></pre> </div> <div> <pre></pre> <pre><span> let expr = ctx.parse_expr();</span></pre> </div> <div> <pre></pre> <pre><span>// fair akin Rust, my own macro scheme requires a</span></pre> </div> <div> <pre></pre> <pre><span>// macro invocation to end alongside an exclamation mark</span></pre> </div> <div> <pre></pre> <pre><span>// to act as a affable ocular clue that something</span></pre> </div> <div> <pre></pre> <pre><span>// comic power be going on</span></pre> </div> <div> <pre></pre> <pre><span>passthrough!(std.puts("hello world"));</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span> // functions whose name commencement alongside "read"</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> // run the lexer (i.e. they fair consume</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> // functions whose name commencement alongside "parse"</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> // run the parser (i.e. they consume and</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> // come back parsed expressions)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> let expr = ctx.parse_expr();</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>// fair akin Rust, my own macro scheme requires a</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>// macro invocation to end alongside an exclamation mark</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>// to act as a affable ocular clue that something</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>// comic power be going on</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>passthrough!(std.puts("hello world"));</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span> // functions whose name commencement alongside "read"</span></pre> </div> <div> <pre></pre> <pre><span> // run the lexer (i.e. they fair consume</span></pre> </div> <div> <pre></pre> <pre><span> // functions whose name commencement alongside "parse"</span></pre> </div> <div> <pre></pre> <pre><span> // run the parser (i.e. they consume and</span></pre> </div> <div> <pre></pre> <pre><span> // come back parsed expressions)</span></pre> </div> <div> <pre></pre> <pre><span> let expr = ctx.parse_expr();</span></pre> </div> <div> <pre></pre> <pre><span>// fair akin Rust, my own macro scheme requires a</span></pre> </div> <div> <pre></pre> <pre><span>// macro invocation to end alongside an exclamation mark</span></pre> </div> <div> <pre></pre> <pre><span>// to act as a affable ocular clue that something</span></pre> </div> <div> <pre></pre> <pre><span>// comic power be going on</span></pre> </div> <div> <pre></pre> <pre><span>passthrough!(std.puts("hello world"));</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span> // functions whose name commencement alongside "read"</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> // run the lexer (i.e. they fair consume</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> // functions whose name commencement alongside "parse"</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> // run the parser (i.e. they consume and</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> // come back parsed expressions)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> let expr = ctx.parse_expr();</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>// fair akin Rust, my own macro scheme requires a</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>// macro invocation to end alongside an exclamation mark</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>// to act as a affable ocular clue that something</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>// comic power be going on</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>passthrough!(std.puts("hello world"));</span></pre> </div> </div> </div> </div> </div> <p>These APIs are beautiful much what's already used in the center nuds of many parsers using Pratt. A macro scheme lone needs to disclose them to the macros as fine to get this far. This part is really easy. Tasks really challenging in macro systems live elsewhere, not here. The hardest part of a macro scheme is hygiene<a href="https://en.mycoding.id/category/technology" target="_blank">&sup3;</a><a href="https://en.mycoding.id/category/technology" target="_blank">&#8308;</a>, not parsing (well&hellip; parsing is gonna be uncomplicated if you use Pratt parsing at least). However this blog article is concerning (Pratt) parsing, not macro systems, so I'm not gonna delve on hygiene or another macro scheme challenges (problems which I've already battled alongside and ultimately won).</p> <p>The takeaway current is that Pratt parsing enables languages alongside mighty macros that can execute beautiful unconstrained eDSLs. Pratt macros are fair an translator for your tongue that has admission to the lexer and the parser at the item anywhere the macro is being expanded. Patterns that you use in your nuds &amp; leds are patterns that you'd apt see in Pratt macros. The code being parsed is instruction the extremely parser that is parsing it on how to do so (tell me concerning meta!).</p> <p>Usually the lexer is the most neglected part of a compiler. It's a solved problem. There's no logic to discarded period on its design. You use a lexer generator to execute an productive lexer, and move on to never appearance rear again. However Pratt &ndash; the algorithm &ndash; is fair 9 lines of Rhombus code. Your lexer is most apt bigger than the parser already. Just on the visage of this your lexer is already playing a bigger part on your project by at smallest several metric (even if an unimportant one).</p> <p>However it goes additional than this. Every nud and led in your code is a subparser of sorts. Combining (sub)parsers is key to unlocking the power to parse equal additional classes of languages. The lexer becomes the sole item in average that trespass the walls between all subparsers. A fine lexer scheme improves parser composability.</p> <p>As a practitioner of the Pratt school, the sole most crucial lexing method you should study is modal lexing. The method is already helpful on its own equal if you're not using Pratt, but it's equal additional so for us. As Andy Chu succinctly explains<a href="https://en.mycoding.id/category/technology" target="_blank">&#8309;</a>, modal lexing is enabled by adding an additional indicator to your lexer:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>//</span><span> all manner triggers distinct lexing rules</span></pre> </div> <div> <pre></pre> <pre><span></span><span>Token </span><span>Read</span><span>(</span><span>lex_mode_t </span><span>mode</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>//</span><span> all manner triggers distinct lexing rules</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>Token </span><span>Read</span><span>(</span><span>lex_mode_t </span><span>mode</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>//</span><span> all manner triggers distinct lexing rules</span></pre> </div> <div> <pre></pre> <pre><span></span><span>Token </span><span>Read</span><span>(</span><span>lex_mode_t </span><span>mode</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>//</span><span> all manner triggers distinct lexing rules</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>Token </span><span>Read</span><span>(</span><span>lex_mode_t </span><span>mode</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> </div> <p>There are another ways to province the identical pattern. For my own project, I favor to use distinct functions alternatively of an enum. As a C++ programmer I've been trained fine to discern between cases of fixed versus energetic polymorphism, and here's a case anywhere plainly the dispatching data is completely known statically at compile time. Hence it doesn't create awareness to equal use an enum. The narrative could be distinct in extremely energetic macro-enabled languages though.</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span> </span><span></span><span>void</span><span> </span><span>next_on_class_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>void</span><span> </span><span>next_on_type_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>void</span><span> </span><span>next_on_expr_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>void</span><span> </span><span>next_on_skim_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>void</span><span> </span><span>next_on_class_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>void</span><span> </span><span>next_on_type_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>void</span><span> </span><span>next_on_expr_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>void</span><span> </span><span>next_on_skim_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span> </span><span></span><span>void</span><span> </span><span>next_on_class_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>void</span><span> </span><span>next_on_type_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>void</span><span> </span><span>next_on_expr_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>void</span><span> </span><span>next_on_skim_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>void</span><span> </span><span>next_on_class_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>void</span><span> </span><span>next_on_type_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>void</span><span> </span><span>next_on_expr_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>void</span><span> </span><span>next_on_skim_scope</span><span>(</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> </div> <p>Simple as it is, this sole defining trait of modal lexing unlocks the capability to parse many additional complex classes of languages by providing a way for the lexer to obtain feedback from the parser. Lexers never cognize grammatical structure, but the parser continually does. By feeding this data from the parser rear to the lexer you allow forms of tongue construction anywhere all sublanguage power have conflicting token definitions (e.g. C++11's right-shift controller spawns distinct tokens in template contexts) or fair tokens alongside distinct meanings altogether. Andy Chu already gave thorough examples on anywhere this power be useful<a href="https://en.mycoding.id/category/technology" target="_blank">&#8310;</a> so current I'll lone annoy to contribute a sole example to the corpus.</p> <p>In Rust you have a distinct sublanguage fair to province types. This category note happens in neatly delimited places inner the "main" language. It normally happens following the colon and ends on the equals-sign or delimiters specified as commas or the decision parentheses:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span>let my_variable: category note goes here;</span></pre> </div> <div> <pre></pre> <pre><span>let another_variable: the category = a_value;</span></pre> </div> <div> <pre></pre> <pre><span>fn a_function(arg1: a_type, arg2: another_type) {}</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span>let my_variable: category note goes here;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>let another_variable: the category = a_value;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>fn a_function(arg1: a_type, arg2: another_type) {}</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span>let my_variable: category note goes here;</span></pre> </div> <div> <pre></pre> <pre><span>let another_variable: the category = a_value;</span></pre> </div> <div> <pre></pre> <pre><span>fn a_function(arg1: a_type, arg2: another_type) {}</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span>let my_variable: category note goes here;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>let another_variable: the category = a_value;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span>fn a_function(arg1: a_type, arg2: another_type) {}</span></pre> </div> </div> </div> </div> </div> <p>My tongue syntax is heavily inspired by Rust's. Naturally I depend on modal lexing to parse these structures. The function <span><span><span>reader::next_on_type_scope()</span></span><span><span>reader::next_on_type_scope()</span></span></span> shown before is used for the category note sublanguage. Then I have a Pratt parser for all &ndash; <span><span><span>parse_expr()</span></span><span><span>parse_expr()</span></span></span> and <span><span><span>parse_type()</span></span><span><span>parse_type()</span></span></span>. It's a uncomplicated trick that doesn't petition much clarification really, but gets you extremely far. The code nearly writes itself following you get the idea.</p> <p>The lone caveat is that your lexer must adhere to a drag scheme alternatively of lexing all tokens upfront. For several logic group akin to lone scheme shove APIs that completely pilfer implementation flow, and these group are addicted to execute lexers that do all the activity upfront. It's a famous arrangement, but not one that volition activity for modal lexing. Pratt itself is a shove scheme so in the end you'd have a mix of designs.</p> <p>Moving on to the next topic, there are additional lexer tricks that I have to share, but for today I fair have one suggestion: don't scheme your lexers to do any IO (syscalls) nor to buffer anything. Working on a copy of your lexer shouldn't have observable side-effects on the first object. Copies have to be cheap and encouraged. Working on a copy of the lexer enables arbitrary lookahead which power be required by several subparser. Even if you lone requires a fixed amount of lookahead (e.g. 3 tokens) this scheme fits the gap all the same.</p> <p>Fulfilling this scheme is easy: fair peruse the entire document at formerly (or use mmap) and create the lexer item to this shared area to do its job. Your AST solitary is apt gonna use additional recollection than the entire input document anyhow so recollection shouldn't be a involvement here.</p> <p>Now let's revisit my nud for <span><span><span>+</span></span><span><span>+</span></span></span>:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_unary_plus</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>UnaryPlus</span><span>&gt;</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> prefix_operator_binding_power</span><span>)</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_unary_plus</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>UnaryPlus</span><span>&gt;</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> prefix_operator_binding_power</span><span>)</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_unary_plus</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>UnaryPlus</span><span>&gt;</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> prefix_operator_binding_power</span><span>)</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_unary_plus</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>UnaryPlus</span><span>&gt;</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>parse_expr</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> prefix_operator_binding_power</span><span>)</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> </div> <p>Most of the code that I see on the untamed has a tradition category for tokens, and that's get used as disagreement for the nuds &amp; leds, but I fair store/pass the lexer itself instead. My lexer is cheap to copy so there's no need to create a category to continue tokens around. The tier expecting a token can decode from the matched lexeme immediately anyhow so the lexer lone needs to shop a few pointers to the first input text. Here's the code parsing decimal literals in my project to showcase the decode-from-lexeme-directly trick:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_declit</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>/*</span><span>context</span><span>*/</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>/*</span><span>r</span><span>*/</span><span>)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>auto</span><span> apint </span><span>=</span><span> </span><span>syntax</span><span>::</span><span>parse_declit</span><span>(</span><span>tok</span><span>.</span><span>literal</span><span>(</span><span>)</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>IntegerValue</span><span>&gt;</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>llvm</span><span>::</span><span>DynamicAPInt</span><span>{</span><span>apint</span><span>.</span><span>zext</span><span>(</span><span>apint</span><span>.</span><span>getBitWidth</span><span>(</span><span>)</span><span> </span><span>+</span><span> </span><span>1</span><span>)</span><span>}</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_declit</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>/*</span><span>context</span><span>*/</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>/*</span><span>r</span><span>*/</span><span>)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>auto</span><span> apint </span><span>=</span><span> </span><span>syntax</span><span>::</span><span>parse_declit</span><span>(</span><span>tok</span><span>.</span><span>literal</span><span>(</span><span>)</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>IntegerValue</span><span>&gt;</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>llvm</span><span>::</span><span>DynamicAPInt</span><span>{</span><span>apint</span><span>.</span><span>zext</span><span>(</span><span>apint</span><span>.</span><span>getBitWidth</span><span>(</span><span>)</span><span> </span><span>+</span><span> </span><span>1</span><span>)</span><span>}</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_declit</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>/*</span><span>context</span><span>*/</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>/*</span><span>r</span><span>*/</span><span>)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>auto</span><span> apint </span><span>=</span><span> </span><span>syntax</span><span>::</span><span>parse_declit</span><span>(</span><span>tok</span><span>.</span><span>literal</span><span>(</span><span>)</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>IntegerValue</span><span>&gt;</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>llvm</span><span>::</span><span>DynamicAPInt</span><span>{</span><span>apint</span><span>.</span><span>zext</span><span>(</span><span>apint</span><span>.</span><span>getBitWidth</span><span>(</span><span>)</span><span> </span><span>+</span><span> </span><span>1</span><span>)</span><span>}</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_declit</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>/*</span><span>context</span><span>*/</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>/*</span><span>r</span><span>*/</span><span>)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>auto</span><span> apint </span><span>=</span><span> </span><span>syntax</span><span>::</span><span>parse_declit</span><span>(</span><span>tok</span><span>.</span><span>literal</span><span>(</span><span>)</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>return</span><span> </span><span>ast</span><span>::</span><span>make_expr</span><span>&lt;</span><span>ast</span><span>::</span><span>IntegerValue</span><span>&gt;</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>tok</span><span>.</span><span>line</span><span>(</span><span>)</span><span>,</span><span> tok</span><span>.</span><span>column</span><span>(</span><span>)</span><span>,</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>llvm</span><span>::</span><span>DynamicAPInt</span><span>{</span><span>apint</span><span>.</span><span>zext</span><span>(</span><span>apint</span><span>.</span><span>getBitWidth</span><span>(</span><span>)</span><span> </span><span>+</span><span> </span><span>1</span><span>)</span><span>}</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> </div> <p>Furthermore this scheme allows me to rollback 1 token which is item that I use in the nud for <span><span><span>&lt;</span></span><span><span>&lt;</span></span></span>:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>//</span><span> this nud is called by parse_expr() (hence expr-scope)</span></pre> </div> <div> <pre></pre> <pre><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_enter_type_scope</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>assert</span><span>(</span><span>tok</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>==</span><span> code</span><span>::</span><span>less_than_sign</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>r </span><span>=</span><span> tok</span><span>;</span><span> </span><span>//</span><span>&lt; 1-token rollback happens here</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>//</span><span> current we re-lex the next token (after the rollback</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>//</span><span> fair above) using the rules for type-scope (a</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>//</span><span> distinct sublanguage alongside distinct tokens)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>//</span><span> afterward we we call parse_type() (instead of parse_expr())</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>auto</span><span>&amp;</span><span> category </span><span>=</span><span> </span><span>parse_type</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> parse_until_end</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>//</span><span> this nud is called by parse_expr() (hence expr-scope)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_enter_type_scope</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>assert</span><span>(</span><span>tok</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>==</span><span> code</span><span>::</span><span>less_than_sign</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>r </span><span>=</span><span> tok</span><span>;</span><span> </span><span>//</span><span>&lt; 1-token rollback happens here</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>//</span><span> current we re-lex the next token (after the rollback</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>//</span><span> fair above) using the rules for type-scope (a</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>//</span><span> distinct sublanguage alongside distinct tokens)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>//</span><span> afterward we we call parse_type() (instead of parse_expr())</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>auto</span><span>&amp;</span><span> category </span><span>=</span><span> </span><span>parse_type</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> parse_until_end</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>//</span><span> this nud is called by parse_expr() (hence expr-scope)</span></pre> </div> <div> <pre></pre> <pre><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_enter_type_scope</span><span>(</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>assert</span><span>(</span><span>tok</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>==</span><span> code</span><span>::</span><span>less_than_sign</span><span>)</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span> </span><span>r </span><span>=</span><span> tok</span><span>;</span><span> </span><span>//</span><span>&lt; 1-token rollback happens here</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>//</span><span> current we re-lex the next token (after the rollback</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>//</span><span> fair above) using the rules for type-scope (a</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>//</span><span> distinct sublanguage alongside distinct tokens)</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>//</span><span> afterward we we call parse_type() (instead of parse_expr())</span></pre> </div> <div> <pre></pre> <pre><span> </span><span></span><span>auto</span><span>&amp;</span><span> category </span><span>=</span><span> </span><span>parse_type</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> parse_until_end</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>//</span><span> this nud is called by parse_expr() (hence expr-scope)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>std</span><span>::</span><span>shared_ptr</span><span>&lt;</span><span>ast</span><span>::</span><span>Expr</span><span>&gt;</span><span> </span><span>parse_enter_type_scope</span><span>(</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>ParsingContext</span><span>&amp;</span><span> </span><span>context</span><span>,</span><span> audience </span><span>tok</span><span>,</span><span> reader</span><span>&amp;</span><span> </span><span>r</span><span>)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>assert</span><span>(</span><span>tok</span><span>.</span><span>code</span><span>(</span><span>)</span><span> </span><span>==</span><span> code</span><span>::</span><span>less_than_sign</span><span>)</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span>r </span><span>=</span><span> tok</span><span>;</span><span> </span><span>//</span><span>&lt; 1-token rollback happens here</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>//</span><span> current we re-lex the next token (after the rollback</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>//</span><span> fair above) using the rules for type-scope (a</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>//</span><span> distinct sublanguage alongside distinct tokens)</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>//</span><span> afterward we we call parse_type() (instead of parse_expr())</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span> </span><span></span><span>auto</span><span>&amp;</span><span> category </span><span>=</span><span> </span><span>parse_type</span><span>(</span><span>context</span><span>,</span><span> r</span><span>,</span><span> parse_until_end</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> </div> <p>This trick additionally requires a lexer that represents error as a dedicated token code alternatively of raising exceptions whenever they happen. You may motionless use exceptions if you desire whenever an error is fatal for all sublanguages (e.g. non-ASCII character established on the stream).</p> <p>Now what's this nud equal parsing power be a valid question, so let's go complete exactly what it's doing. Rust (which inspired my language's syntax heavily) allows one to admission sectors from a type. Field admission current is done using the controller <span><span><span>::</span></span><span><span>::</span></span></span>. For instance:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>use</span><span> </span><span>std</span><span>::</span><span>time</span><span>::</span><span>SystemTime</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span></span><span>let</span><span> now </span><span>=</span><span> </span><span>SystemTime</span><span>::</span><span>now</span><span>(</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>use</span><span> </span><span>std</span><span>::</span><span>time</span><span>::</span><span>SystemTime</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>let</span><span> now </span><span>=</span><span> </span><span>SystemTime</span><span>::</span><span>now</span><span>(</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>use</span><span> </span><span>std</span><span>::</span><span>time</span><span>::</span><span>SystemTime</span><span>;</span></pre> </div> <div> <pre></pre> <pre><span></span><span>let</span><span> now </span><span>=</span><span> </span><span>SystemTime</span><span>::</span><span>now</span><span>(</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>use</span><span> </span><span>std</span><span>::</span><span>time</span><span>::</span><span>SystemTime</span><span>;</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>let</span><span> now </span><span>=</span><span> </span><span>SystemTime</span><span>::</span><span>now</span><span>(</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> </div> <p>However what happens whenever referring to your category requires admission to the category note tongue specified as in the case for generics? Then you need an "escape hatch" in the chief tongue to admission the category note tongue explicitly, and that's done through the nud for <span><span><span>&lt;</span></span><span><span>&lt;</span></span></span>:</p> <div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>//</span><span> Inside the external &lt;&gt;, we don't interpret</span></pre> </div> <div> <pre></pre> <pre><span></span><span>//</span><span> `Vec &lt; u32` as `Vec less-than u32`.</span></pre> </div> <div> <pre></pre> <pre><span></span><span>//</span><span> Inner viewpoint brackets must be balanced.</span></pre> </div> <div> <pre></pre> <pre><span></span><span>let</span><span> my_vec </span><span>=</span><span> </span><span>&lt;</span><span>Vec</span><span>&lt;</span><span>u32</span><span>&gt;</span><span>&gt;</span><span>::</span><span>new</span><span>(</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>//</span><span> Inside the external &lt;&gt;, we don't interpret</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>//</span><span> `Vec &lt; u32` as `Vec less-than u32`.</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>//</span><span> Inner viewpoint brackets must be balanced.</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>let</span><span> my_vec </span><span>=</span><span> </span><span>&lt;</span><span>Vec</span><span>&lt;</span><span>u32</span><span>&gt;</span><span>&gt;</span><span>::</span><span>new</span><span>(</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> <div> <div> <div> <div> <pre></pre> <pre><span></span><span>//</span><span> Inside the external &lt;&gt;, we don't interpret</span></pre> </div> <div> <pre></pre> <pre><span></span><span>//</span><span> `Vec &lt; u32` as `Vec less-than u32`.</span></pre> </div> <div> <pre></pre> <pre><span></span><span>//</span><span> Inner viewpoint brackets must be balanced.</span></pre> </div> <div> <pre></pre> <pre><span></span><span>let</span><span> my_vec </span><span>=</span><span> </span><span>&lt;</span><span>Vec</span><span>&lt;</span><span>u32</span><span>&gt;</span><span>&gt;</span><span>::</span><span>new</span><span>(</span><span>)</span><span>;</span></pre> </div> </div> <div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>//</span><span> Inside the external &lt;&gt;, we don't interpret</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>//</span><span> `Vec &lt; u32` as `Vec less-than u32`.</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>//</span><span> Inner viewpoint brackets must be balanced.</span></pre> </div> <div translate="no"> <pre></pre> <pre translate="no"><span></span><span>let</span><span> my_vec </span><span>=</span><span> </span><span>&lt;</span><span>Vec</span><span>&lt;</span><span>u32</span><span>&gt;</span><span>&gt;</span><span>::</span><span>new</span><span>(</span><span>)</span><span>;</span></pre> </div> </div> </div> </div> </div> <p>So now you cognize how to parse this category of grammars alongside Pratt. Simon Ochsenreither formerly asserted that using <span><span><span>&lt;&gt;</span></span><span><span>&lt;&gt;</span></span></span> for generics is bad design<a href="https://en.mycoding.id/category/technology" target="_blank">&#8311;</a>, so perchance it's no coincidence that that's the lone period that I really had to use the rollback trick (which I regard a hack) in my project. Nevertheless it was the finest colony I could discover so I went alongside it anyway. Language scheme is hard.</p> <p>I have a lot additional of lexer tricks to share, but I'm emotion that I should postpone them to afterward articles. Some of them are already used in my project. Ironically perhaps, but I acquired the mindset that enabled me to arrive up alongside these lexer tricks from former cognition parsing HTTP and JSON which has nothing to do alongside the techniques that one uses to parse programming languages.</p> <p>Pratt is a change in parsing mindset. You must get comfortable on breaking grammatical structures into nuds &amp; leds. It's totally fine to compose shortcuts that eliminate the boilerplate by factoring the average parts of the implementation of prefix, infix and postfix operators as done by Douglas Crockford<a href="https://en.mycoding.id/category/technology" target="_blank">&#8312;</a>, but if you're changing Pratt's algorithm itself as done by Alex Kladov in 2020<a href="https://en.mycoding.id/category/technology" target="_blank">&#8313;</a> (I've done the identical error myself once) to create accommodations since you refuse to logic in conditions of nuds &amp; leds (or any another reason), you're missing out and should commencement over. Using Pratt parsing as a dreary box idea volition eliminate your capability to alter Pratt's algorithm, and it may assistance in adapting your mindset. That's my direction to get you started.</p> <p>I have a lot additional of parsing tricks to portion (e.g. Pratt-walk interpreters, REPLs alongside ideal auto-completion), but they're additional advanced, and I'll postpone them to afterward articles.</p> <ol> <li> </li> <li> </li> <li> </li> <li> </li> <li> </li> <li> </li> <li> </li> <li> </li> <li> </li> </ol> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/pratt-parsing-is-a-black-box-75486</guid> <pubDate>Tue, 03 Nov 2026 21:07:41 +0700</pubDate> <author><![CDATA[support@mycoding.id (Putri Silvia)]]></author> </item> <item> <title><![CDATA[Google’s Q3 2026 Earnings Call: Search & AI Are Merging Into One Unified Product]]></title> <description><![CDATA[Google’s Q3 2026 Earnings Call: Search & AI Are Merging Into One Unified Product. SEOs, buckle up. Google says anticipate fast betterment from recursive self-improvement, and Search is becoming an delegate manager. The article Google’s Q3 2026 Earnin...]]></description> <media:thumbnail url="https://cdn.searchenginejournal.com/wp-content/uploads/2026/11/artificial-analysis-31.png"/> <category><![CDATA[Business]]></category> <link>https://en.mycoding.id/google-s-q3-2026-earnings-call-search-ai-are-merging-into-one-unified-product-75487</link> <content:encoded><![CDATA[<div class="sej-article-content gototop-pos "> <div class="sss2_sllo_o6"> </div> <div id="narrow-cont"><p>Even although Wall Street is panicking complete <a href="https://en.mycoding.id/category/business" target="_blank">Google’s earnings call</a>, it seems apparent to me what is happening. They are not going to dilatory downward whenever it comes to AI. Throughout the call, they said of agents and how we are in the first days of how they are changing Search. <strong>They</strong> <strong>told us that AI Mode, AI overviews, and traditional Search are becoming one unified product.</strong></p> <p>They additionally stated to anticipate fast betterment since of Recursive Self-Improvement (RSI). Things are concerning to get extremely interesting.</p> <p>I think new opportunities are arising, but additionally much of the way we have traditionally been capable to create prosperity from Search is disappearing.</p> <h2>Watch My Video With Thoughts On The Earnings Call</h2> <p>If you favor video, I portion my thoughts on the call.</p><div data-total="12" id="SEJ_300x250_UnderPost_1-parent" class="content-unit sss2_sllo_o6 mmh-90-wrap"> <div class="mmh-90-inner"> <div class="mmh-90 flex-aligner"> <div data-adnumber="0" data-middle="no" data-p-slot="SEJ_300x250_UnderPost" data-slot="SEJ_300x250_UnderPost/SEJ_300x250_UnderPost_1" id="SEJ_300x250_UnderPost_1" class="sadslots"> </div> </div> </div> </div> <p><p class="embed-responsive embed-responsive-16by9 post-embed"><iframe width="560" height="315" aria-label="Preview" class="embed-responsive-item" src="https://www.youtube.com/embed/10SoCEki4I4?feature=oembed&amp;autoplay=1&amp;mute=1&amp;playsinline=1&amp;rel=0" title="YouTube video player" frameborder="0" allow="autoplay; accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p></p> <p>The chief item I took distant from this earnings call is the accent on the change to agentic search. I think this is motionless unfolding and no one completely knows what this new era of the web volition appearance like. Google gave us a few hints in this call.</p> <p>I discover it fascinating how Google’s inventory plummeted following this call. Alphabet’s revenues were up 25% YOY and Cloud income was up 103%. The broad involvement seems to be that Google is pushing AI Mode more, and so far there are small opportunities for ads shown in AI Mode. Therefore, income from Search is lesser than expected. Still, Search promotion is up 12% YOY. (Wall Street was expecting 15%.)</p><div id="summita-wrapa_112" class="middle_p_txt"></div> <p>I have no concerns complete Google’s capability to continue to thrive. They mentioned in the call that their first precedence is to create AI Mode a norm merchandise and afterward it volition concentration additional on monetizing it. Last week, Google announced that <a href="https://en.mycoding.id/category/business" target="_blank">ads in AI Mode were expanding to additional countries</a> including Australia, Canada and more.</p> <p>Philipp Schindler said:</p> <blockquote><p><em>“Our method is deliberate – prioritizing the person cognition and involvement first, afterward scaling the formats.”</em></p></blockquote> <p>Mark my word, Google volition create <em>plenty</em> of prosperity from ads in the years to come. I think the new connected apps (see additional on this below) could eventually be offered as ads.</p><div data-total="12" id="SEJ_300x250_UnderPost_3-parent" class="content-unit sss2_sllo_o6 mmh-90-wrap"> <div class="mmh-90-inner"> <div class="mmh-90 flex-aligner"> <div data-adnumber="2" data-middle="no" data-p-slot="SEJ_300x250_UnderPost" data-slot="SEJ_300x250_UnderPost/SEJ_300x250_UnderPost_3" id="SEJ_300x250_UnderPost_3" class="sadslots"> </div> </div> </div> </div> <p>They additionally said extensively concerning how there is amazing petition for Google’s computing power. It talked concerning TPUs not as part sales, but as systems. <strong>“TPU Systems” were mentioned 35 times in the call</strong>. Thomas Kurian said:</p> <blockquote><p><em>“A TPU System is not fair a chip, but it’s a specialized scheme that combines multiple things, including hardware, computer, storage, networking and so we are marketing much additional than fair a chip. Software, training, inference.”</em></p></blockquote> <p>I citation this since Google volition apt see amazing growth as additional and additional customers acquisition these TPU systems.</p> <p>What’s most engaging to me is how Google’s verbiage has shifted whenever it comes to talking concerning AI Mode and its association to Search.</p> <h2>Google Sees AI Search And Traditional Search As One Unified Product</h2> <p>The idea of traditional Search and AI Search merging into one merchandise was mentioned multiple times:</p><div data-total="12" id="SEJ_300x250_UnderPost_4-parent" class="content-unit sss2_sllo_o6 mmh-90-wrap"> <div class="mmh-90-inner"> <div class="mmh-90 flex-aligner"> <div data-adnumber="3" data-middle="no" data-p-slot="SEJ_300x250_UnderPost" data-slot="SEJ_300x250_UnderPost/SEJ_300x250_UnderPost_4" id="SEJ_300x250_UnderPost_4" class="sadslots"> </div> </div> </div> </div> <p>Sundar Pichai:</p> <blockquote><p><em>“We are construction one seamless cognition throughout AI Overviews, AI Mode, and Traditional Search.”</em></p></blockquote> <p>Philipp Schindler:</p> <blockquote><p><em>“We think of Search holistically, a unified merchandise spanning traditional results and AI powered Search.</em></p></blockquote> <h2>Agentic Search Is Unfolding</h2> <p>I cognize it feels akin Google is rearward whenever it comes to having an agentic product. X has Grokbot. OpenAI has Dots, and Meta’s Muse is taking off. It seems apparent to me that <a href="https://en.mycoding.id/category/business" target="_blank">the imagination of AI being our individual assistant</a> has been in Google’s intellect for several time. I think they’re taking their period to completely unpack it all since they need to get it right. Google’s end equivalent current is not fair an delegate that volition assistance us get things done online, but much bigger!</p> <p>In May of 2025, Demis Hassabis wrote concerning Google’s aspiration of construction what they called a “<a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">Universal AI Assistant</a>.” Much of this part discussed Google’s Genie earth models acting as training environments for robots and how Project Astra which is now in Gemini Live, volition authorize us to have understanding on the earth about us. Google’s goal to arrange the world’s data and create it universally accessible and useful.</p><div data-total="12" id="SEJ_300x250_UnderPost_5-parent" class="content-unit sss2_sllo_o6 mmh-90-wrap"> <div class="mmh-90-inner"> <div class="mmh-90 flex-aligner"> <div data-adnumber="4" data-middle="no" data-p-slot="SEJ_300x250_UnderPost" data-slot="SEJ_300x250_UnderPost/SEJ_300x250_UnderPost_5" id="SEJ_300x250_UnderPost_5" class="sadslots"> </div> </div> </div> </div> <p>I see the pieces coming together. It starts alongside online agents and volition eventually develop into all aspect of our lives particularly as the innovation develops for intelligent eyewear and in-home robots.</p> <p>Philipp Schindler said:</p> <blockquote><p><em>“We are in the first stages of agentic experiences throughout our surfaces, and enthusiastic concerning the business opportunities ahead.”</em></p></blockquote> <p>He went on to conversation concerning how they started by construction agentic experiences into Gemini Enterprise archetypal and, “as a next stage [they’re] bringing these features to Search.”</p> <p>Sundar said:</p> <blockquote><p><em>“It’s apparent that the agentic capabilities we all envision are going to be real.”</em></p></blockquote> <p>And also:</p> <blockquote><p><em>“I’m enthusiastic concerning agents, and I would perspective it as a new frontier, which brings in a new set of use cases to Search.”</em></p></blockquote> <p>Those new use cases apt commencement alongside Connected Apps.</p><div data-total="12" id="SEJ_300x250_UnderPost_6-parent" class="content-unit sss2_sllo_o6 mmh-90-wrap"> <div class="mmh-90-inner"> <div class="mmh-90 flex-aligner"> <div data-adnumber="5" data-middle="no" data-p-slot="SEJ_300x250_UnderPost" data-slot="SEJ_300x250_UnderPost/SEJ_300x250_UnderPost_6" id="SEJ_300x250_UnderPost_6" class="sadslots"> </div> </div> </div> </div> <p>By the way, if you desire to be onward of the curve in seeing how businesses are adapting to agentic search, I dispatch out an email all week alongside all of the latest news on Search &amp; AI:</p> <h2>The Connected Apps Platform – group can use your website’s functionality correct from Search</h2> <p>On the day of the call, Google announced the <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">Connected Apps Platform</a>. There are already a fistful of apps that can be used via MCP by Gemini either in the app or from inside Search. Here is an example they gave anywhere a person calls @Peloton to bring the Peloton app cognition into their agentic stream inside Gemini.</p> <p>You can use to the <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">Connected Apps Platform here</a>.</p> <p>It was six months ago that Sundar Pichai stated in an discussion that “<a href="https://en.mycoding.id/category/business" target="_blank">Search volition be an delegate manager</a>.” I think this volition be a new era anywhere we change from Search being a location to discover websites that have data to a location anywhere you use tools to assistance you (or your agents) get things done.</p><div data-total="12" id="SEJ_300x250_UnderPost_7-parent" class="content-unit sss2_sllo_o6 mmh-90-wrap"> <div class="mmh-90-inner"> <div class="mmh-90 flex-aligner"> <div data-adnumber="6" data-middle="no" data-p-slot="SEJ_300x250_UnderPost" data-slot="SEJ_300x250_UnderPost/SEJ_300x250_UnderPost_7" id="SEJ_300x250_UnderPost_7" class="sadslots"> </div> </div> </div> </div> <h2>Gemini Use Is Growing</h2> <p>Pichai said:</p> <blockquote><p><em>“The Gemini app is now at one milliard users and is the fastest expanding merchandise in Google’s History.”</em></p></blockquote> <p>A milliard users is the identical figure reported by ChatGPT in June of 2026.</p> <p><a href="https://en.mycoding.id/category/business" target="_blank">Gemini use is expanding quickly</a>.</p> <p>I discover this fascinating since my own use of the Gemini app has declined significantly. I use Gemini in Antigravity for nearly everything.</p> <h2>Coding Improvements Are Coming, Starting With Gemini 4 Carbon</h2> <p>We all cognize that <a href="https://en.mycoding.id/category/business" target="_blank">Google’s models have not been as advanced as those from OpenAI and Anthropic</a>.</p> <p>Last week, Google announced a new frontier model, fair two weeks following <a href="https://en.mycoding.id/category/business" target="_blank">Gemini 4 Argon</a>. Gemini 4 Carbon is currently undergoing voluntary evaluation as per the U.S. Government’s recommendations and volition shortly be released. <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">Artificial Analysis</a> currently has Carbon listed as the most intelligent example to date.</p><div data-total="12" id="SEJ_300x250_UnderPost_8-parent" class="content-unit sss2_sllo_o6 mmh-90-wrap"> <div class="mmh-90-inner"> <div class="mmh-90 flex-aligner"> <div data-adnumber="7" data-middle="no" data-p-slot="SEJ_300x250_UnderPost" data-slot="SEJ_300x250_UnderPost/SEJ_300x250_UnderPost_8" id="SEJ_300x250_UnderPost_8" class="sadslots"> </div> </div> </div> </div> <figure id="attachment_595530" class="wp-caption aligncenter"><img decoding="async" src="https://cdn.searchenginejournal.com/wp-content/uploads/2026/11/artificial-analysis-31.png" alt="" width="1194" height="453" class="size-full wp-image-595530" srcset="https://cdn.searchenginejournal.com/wp-content/uploads/2026/11/artificial-analysis-31-384x146.png 384w, https://cdn.searchenginejournal.com/wp-content/uploads/2026/11/artificial-analysis-31-425x161.png 425w, https://cdn.searchenginejournal.com/wp-content/uploads/2026/11/artificial-analysis-31-480x182.png 480w, https://cdn.searchenginejournal.com/wp-content/uploads/2026/11/artificial-analysis-31-680x258.png 680w, https://cdn.searchenginejournal.com/wp-content/uploads/2026/11/artificial-analysis-31-768x291.png 768w, https://cdn.searchenginejournal.com/wp-content/uploads/2026/11/artificial-analysis-31-850x322.png 850w, https://cdn.searchenginejournal.com/wp-content/uploads/2026/11/artificial-analysis-31-1024x389.png 1024w, https://cdn.searchenginejournal.com/wp-content/uploads/2026/11/artificial-analysis-31.png 1194w" sizes=" 1194px) 100vw, 1194px" loading="lazy"><figcaption class="wp-caption-text">Image Credit: Marie Haynes</figcaption></figure> <p>On the call, Sundar Pichai stated that additional models are coming soon, including “more productive versions to assistance developers optimize for speed and cost.”</p> <p>He stated they started seeing a stage alter alongside Gemini 3.8 Flash whenever it came to coding internally at Google. And afterward Gemini 4 Argon was a “huge item of inflection.” He said:</p> <blockquote><p><em>“It is among the most meaningful inner efficiency levers [they] have seen on application engineering, immediately tracking high-quality code that’s getting checked in, and the charge at which it’s getting checked in.”</em></p></blockquote><div data-total="12" id="SEJ_300x250_UnderPost_9-parent" class="content-unit sss2_sllo_o6 mmh-90-wrap"> <div class="mmh-90-inner"> <div class="mmh-90 flex-aligner"> <div data-adnumber="8" data-middle="no" data-p-slot="SEJ_300x250_UnderPost" data-slot="SEJ_300x250_UnderPost/SEJ_300x250_UnderPost_9" id="SEJ_300x250_UnderPost_9" class="sadslots"> </div> </div> </div> </div> <p>Then he said:</p> <blockquote><p><em>“Carbon is a meaningful stage up from Argon.”</em></p></blockquote> <p>Right now I use Gemini 4 Argon throughout three or four simultaneous Antigravity conversations most of the day long. On the Ultra plan, I have barely touched my quota. I idea 3.8 Flash was amazing. It helped me commencement to automate many of the SEO reports I run. When I switched to Gemini 4 Argon a intellect blowing item happened. Gemini 4 Argon + my inner <a href="https://en.mycoding.id/category/business" target="_blank">OKF</a> powered cognition brain and my algo update MCP started producing far improved consulting reports than I could alone. I really accept we are not far from the day anywhere AI volition be improved at all cognition activity than equal the finest humans in their field.</p> <h2>On AGI</h2> <p>Last week, Google announced <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">Genie 4</a>, its latest earth model. While it’s chill to see how it can create engaging scenes and games, the most breathtaking item concerning this example is that it volition be used to create training simulations for AI agents and additionally for robots.</p> <p>Sundar Pichai:</p> <blockquote><p><em>“Beyond our Gemini 4 series, yesterday we announced Genie 4, our most advanced earth example yet that simulates safe, realistic, interactive worlds alongside native audio in genuine time. This is an crucial construction obstacle for training robots and agents.”</em></p></blockquote> <p>He afterward said:</p> <blockquote><p><em>“I would anticipate the next dozen months to see continued acceleration since of RSI.”</em></p></blockquote> <p>Buckle up. RSI is “Recursive Self Improvement.” AI is being used additional and additional to assistance enhance AI. We volition see it enhance rapidly.</p> <p><a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">Here’s the call</a> if you’d akin to hear to it.</p> <p><strong>More Resources:</strong></p> <ul> <li><a href="https://en.mycoding.id/category/business" target="_blank">Google’s Task-Based Agentic Search Is Disrupting SEO Today, Not Tomorrow</a></li> <li><a href="https://en.mycoding.id/category/business" target="_blank">Google’s New Search Box Hands Queries To AI Agents, I/O Reveals</a></li> <li><a href="https://en.mycoding.id/category/business" target="_blank">Well-Known SEO Explains Why AI Agents Are Coming For You &amp; What To Do Now</a></li> </ul> <hr> <p data-pm-slice="1 1 []"><em>Read Marie’s newsletter, AI News You Can Use. <a href="https://en.mycoding.id/category/business" target="_blank" class="ProsemirrorEditor-link" target="_blank" rel="noopener">Subscribe now</a>.</em></p> <hr> <p><em>Featured Image: Sansoen Saengsakaorat/Shutterstock</em></p> </div> <div id="bcats" class="bottom-cat narrow-cont"> <span class="sej-category boxed cat-label">Category</span> <a href="https://en.mycoding.id/category/business" target="_blank">SEO</a> <a href="https://en.mycoding.id/category/business" target="_blank">AI Search</a> </div> <div class="sej-above-author-widget"> <div class="sej-widget clearfix"> <div class="sej-badge-box"> <a href="https://en.mycoding.id/category/business" target="_blank" data-placement="Under Article" aria-label="Add Search Engine Journal as a preferred origin on Google"> <svg class="sej-gps-g" viewbox="0 0 48 48" aria-hidden="true" focusable="false"> <path fill="#EA4335" d="M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"></path> <path fill="#4285F4" d="M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"></path> <path fill="#FBBC05" d="M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"></path> <path fill="#34A853" d="M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"></path> </svg> <span class="sej-gps-text">Add <b>SEJ</b> as a preferred origin on Google</span> </a> </div> </div> </div> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/google-s-q3-2026-earnings-call-search-ai-are-merging-into-one-unified-product-75487</guid> <pubDate>Tue, 03 Nov 2026 21:00:43 +0700</pubDate> <author><![CDATA[support@mycoding.id (Marie Haynes)]]></author> </item> <item> <title><![CDATA[US Space Force Guardians will join Army Rangers, Navy SEALS, and other special forces in a new command]]></title> <description><![CDATA[US Space Force Guardians will join Army Rangers, Navy SEALS, and other special forces in a new command. The new command volition train and equip Space Force Guardians to particular operations about the world.]]></description> <media:thumbnail url="https://i.insider.com/6aea0d8ff5f059691404aaae?width=1200&amp;format=jpeg"/> <category><![CDATA[Business]]></category> <link>https://en.mycoding.id/us-space-force-guardians-will-join-army-rangers-navy-seals-and-other-special-forces-in-a-new-command-75468</link> <content:encoded><![CDATA[<div e-name="post-hero" data-component-type="post-hero" data-load-strategy="exclude"> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject"> <div> <p><img src="https://i.insider.com/6aea0c1794c155f6acb2e01d?width=2000&amp;format=jpeg&amp;auto=webp" srcset="https://i.insider.com/6aea0c1794c155f6acb2e01d?width=400&amp;format=jpeg&amp;auto=webp 400w, https://i.insider.com/6aea0c1794c155f6acb2e01d?width=500&amp;format=jpeg&amp;auto=webp 500w, https://i.insider.com/6aea0c1794c155f6acb2e01d?width=700&amp;format=jpeg&amp;auto=webp 700w, https://i.insider.com/6aea0c1794c155f6acb2e01d?width=1000&amp;format=jpeg&amp;auto=webp 1000w, https://i.insider.com/6aea0c1794c155f6acb2e01d?width=1300&amp;format=jpeg&amp;auto=webp 1300w, https://i.insider.com/6aea0c1794c155f6acb2e01d?width=2000&amp;format=jpeg&amp;auto=webp 2000w" sizes=" 1280px) 900px" alt="A row of electrogmagnetic war systems are stationed on the dirt alongside a sunset in the background." decoding="sync"> </p></div> <span> <span> <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewbox="0 0 24 24"> <path fill="currentColor" fill-rule="evenodd" d="m4.56 18.5 7.486-7.72 7.394 7.626 2.56-2.64L12.046 5.5 2 15.86l2.56 2.64Z"></path> </svg> <figcaption e-name="image-caption"> <span>US Space Force Special Operations Command volition train and equip personnel for particular forces about the world.</span> <span> <span e-name="image-source" itemprop="creditText">US Space Force photo by Dave Grim</span> </span> </figcaption> </span> </span> </figure> </div> <div data-component-type="image-modal" data-load-strategy="lazy"> <p>The US Space Force has activated a new command dedicated to supporting particular operations forces. It's the military's archetypal new assistance component for US Special Operations Command since the Marines joined alongside Marine Special Operations Command in 2006.</p><p>US Space Forces Special Operations Command, or SPACEFOR-SOC, was formally activated on October 7.</p><p>Headquartered at MacDill Air Force Base in Florida, Space Forces Special Operations Command volition train and equip Space Force Guardians to local particular operations commands about the world. The new command joins another services' units that already assistance SOCOM, specified as the Navy SEALs, Army <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">Green Berets</a> and Rangers, <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">Marine Raiders</a>, and Air Force pararescue.</p><p>"For the SOF enterprise, this activation provides an enduring and accountable way to merge <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">space power</a> into particular operations," Adm. Frank Bradley, the commandant of SOCOM, stated in a statement. The new command volition provision the Space Force a imperishable existence alongside another SOF units.</p><p>Through a capability known as Space Special Warfare, SPACEFOR-SOC volition deploy small teams made up of space, cyber, and intellect specialists. Those teams are designed to provision mobile, low-signature area capabilities to particular operations units functioning in environments alongside mediocre communication.</p><p>"The Guardians of SPACEFOR-SOC are shaping how our particular operations leaders see the earth through the area domain lens, bringing critical, cutting-edge area ability immediately to the combatant command headquarters," Gen. Douglas Schiess, the Space Force's chief of area operations, said.</p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view" itemscope="" itemtype="https://schema.org/ImageObject"> <div> <p><img src="image/svg+xml,%3C%3Fxml%20version=&#039;1.0&#039;%20encoding=&#039;UTF-8&#039;%3F%3E%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20width=&#039;1&#039;%20height=&#039;1&#039;/%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/6aea0c5494c155f6acb2e01f&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:9504,&quot;aspectRatioH&quot;:4666}}' alt="A US Space Force Guardian sits in forefront of assorted device screens showing satellites and a map."> </p></div> <span> <figcaption e-name="image-caption"> The Space Force oversees resources connected to communications, navigation systems, and networks.&nbsp; <span e-name="image-source" itemprop="creditText"> Courtesy photo by US Space Force Sgt. Michael Carrasquillo </span> </figcaption> </span> </figure> <p>The activation comes as the armed forces increasingly treats area as a contested warfighting domain, specified as the air, ground, sea, and cyberspace. The new concentration is a important change from the final two decades of combat during the Global War on Terror. Today, "space" is crucial for communications, navigation, missile warning, and intelligence.</p><p><a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">GPS navigation</a> in particular is a important involvement for Space Guardians&mdash; disruptions to satellites that provision GPS can degrade operations of a bulk of weapons and technologies.</p><p>Space Force oversees satellites and another bodily resources during additionally protecting assorted networks, communications, and tracking systems. Established in 2019, it is the military's youngest branch and focuses on the area domain as fine as digital warfare.</p> <p>Ongoing conflicts have shown vulnerabilities and advantages in these spaces. In the first days of the <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">US war alongside Iran</a>, officials stated US area and cyber forces were the archetypal to commencement the fight, jamming signals, hacking networks, and disrupting satellites to blind the Iranian military. Space Command and US Cyber Command additionally supported armed forces operations against Venezuela before this twelvemonth and Iran's nuclear program final year.</p><p>These domains have additionally been crucial for Russia and Ukraine, alongside troops fighting inner the electromagnetic spectrum to forestall the another from using satellites, communications, and networks in the fight. The gait at which the two sides can employ attacks and countermeasures in these areas has risen throughout the war.</p><p>Officials have stated this new command volition bring additional of those components into another particular operations forces, contributing greater expertise. The attempt aligns alongside the expanding acknowledgment that electromagnetic spectrum, space, and cyber functions are required to run in another domains specified as sea, land, and air. </p> </div> <h2>Read next</h2> <div data-recommendations-content data-track-click-shared='&quot;Read next&quot;}'> <div e-name="read-next-list" data-recommendations-list> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> </div> </div> <a e-name="read-next-image-link" data-recommendations-image-link data-recommendations-link tabindex="-1"> <p><img alt=""> </p> </a> <h3> <a e-name="read-next-title-link" data-recommendations-link data-recommendations-title></a> </h3> <div data-component-type="post-bottom-authors" data-load-strategy="exclude" data-track-view='&quot;module_in_view&quot;}' data-track-click-shared='&quot;navigation&quot;}'> <div data-track-view='&quot;module_in_view&quot;}'> <div> <p><span>Kelsey Baker is a armed forces affairs newsman alongside Business Insider. She joined in 2025 and covers armed forces personnel issues and how the armed forces is overhauling how it prepares for forthcoming conflicts.</span><span>Prior to joining BI, she worked at The Washington Post as a Military Veterans in Journalism Fellow covering individual involvement stories and global news and at The Chronicle of the Horse mag covering equine sports. She holds a alumnus flat in Journalism from Northwestern University, a flat in Diplomacy from Norwich University, and an undergraduate flat in History from the University of Denver. She earlier served in the Marine Corps as a logistics officer, and afterward in the reserve.</span><span>Contact her via&nbsp;email at kbaker@businessinsider.com, or via Signal at KelseyBaker75.75. Use a individual email address, a nonwork WiFi network, and a nonwork device; <a href="https://en.mycoding.id/category/business" target="_blank">here's our guide to sharing data securely</a>.</span> </p> </div> </div> <div> <div> <p><span>Chris Panella is a defence newsman for Business Insider.&nbsp;He covers scientific transformations in the US armed forces alongside focuses on US armed forces modernization, US Army transformation, and emerging technologies akin synthetic intellect and drones. Globally, Panella reports on China's armed forces and Taiwan. Panella has embedded alongside the Army in Alaska, interviewed particular operators learning to fly drones, and flown alongside US Coast Guard helicopters practicing medication interdictions.&nbsp;</span><span>If you have a tip connected to these areas or broader defence coverage, Panella can be reached at&nbsp;<a href="https://en.mycoding.id/category/business" target="_blank">cpanella@businessinsider.com</a>&nbsp;or on Signal at cpanella.85.</span> </p> </div> </div> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/us-space-force-guardians-will-join-army-rangers-navy-seals-and-other-special-forces-in-a-new-command-75468</guid> <pubDate>Tue, 03 Nov 2026 20:52:20 +0700</pubDate> <author><![CDATA[support@mycoding.id (Kelsey Baker,Chris Panella)]]></author> </item> <item> <title><![CDATA[You can’t hit a wrong note when playing along with songs on Casio’s new keyboard]]></title> <description><![CDATA[You can’t hit a wrong note when playing along with songs on Casio’s new keyboard. Casio announced a new supplement to its Casiotone row of portable digital keyboards alongside a characteristic that could assistance aspiring musicians expert skills akin rhyth...]]></description> <media:thumbnail url="https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard1.jpg?quality=90&amp;strip=all&amp;crop=0,10.732984293194,100,78.534031413613"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/you-can-t-hit-a-wrong-note-when-playing-along-with-songs-on-casio-s-new-keyboard-75467</link> <content:encoded><![CDATA[<div><div><div><div><div><p><a href="https://en.mycoding.id/category/technology" target="_blank"><img alt="Andrew Liszewski" data-chromatic="ignore" loading="lazy" width="36" height="36" decoding="async" data-nimg="1" srcset="https://platform.theverge.com/wp-content/uploads/sites/2/2025/01/ANDREW_LISZEWSKI_BLURPLE.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=48 1x, https://platform.theverge.com/wp-content/uploads/sites/2/2025/01/ANDREW_LISZEWSKI_BLURPLE.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=96 2x" src="https://platform.theverge.com/wp-content/uploads/sites/2/2025/01/ANDREW_LISZEWSKI_BLURPLE.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=96"></a></p><div><p><span aria-expanded="false" aria-haspopup="true" role="button" tabindex="0"><span id="follow-author-standard_article_details-dmcyOmF1dGhvclByb2ZpbGU6MTYw"><span><span><svg width="9" height="9" viewbox="0 0 9 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-label="Follow"><path d="M5 0H4V4H0V5H4V9H5V5H9V4H5V0Z"></path></svg></span></span><span>Andrew Liszewski</span></span></span></p> <p><span>is a elder newsman who&rsquo;s been covering and reviewing the latest gadgets and tech since 2006, but has loved all things digital since he was a kid.</span></p></div></div></div></div></div><div id="zephr-anchor"><div><p>Casio announced a <a href="https://en.mycoding.id/category/technology" target="_blank" rel="sponsored">new supplement to its Casiotone row of portable digital keyboards</a> alongside a characteristic that could assistance aspiring musicians expert skills akin beat and timing without the frustrations or discouragement of hitting the incorrect note.</p></div><p>The <a href="https://en.mycoding.id/category/technology" target="_blank" rel="sponsored">Casiotone CT-FS1 is accessible now for $399.99</a> in a monochromatic dreary or pale type anywhere equal the 61 touch-responsive keys are all the identical color. It can run on AA batteries or a power adapter but at fair under 10 pounds in importance it&rsquo;s certainly not the smallest of portable keyboards. There&rsquo;s built-in stereo speakers and Bluetooth connectivity if you&rsquo;re playing for others, as fine as a bodily headphone jack.</p><div><div><div><div class=""><div><p><a href="https://en.mycoding.id/category/technology" target="_blank" data-pswp-height="601" data-pswp-width="1062" target="_blank" rel="noreferrer"><img alt="The Casio Casiotone FC-FS1 keyboard shown in its dreary and pale color options." data-chromatic="ignore" loading="lazy" decoding="async" data-nimg="fill" sizes=" 1023px) 50vw, 700px" srcset="https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=256 256w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=376 376w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=384 384w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=415 415w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=480 480w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=540 540w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=640 640w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=750 750w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=828 828w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=1080 1080w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=1200 1200w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=1440 1440w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=1920 1920w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=2048 2048w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=2400 2400w" src="https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/casiokeyboard2.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=2400"></a></p></div></div></div></div></div><p>The keyboard&rsquo;s most compelling characteristic is what Casio calls its Feel Sync innovation that plant alongside a new Feel Sync mobile app accessible for <a href="https://en.mycoding.id/category/technology" target="_blank">iOS</a> and <a href="https://en.mycoding.id/category/technology" target="_blank" rel="sponsored">Android</a> devices. Through the app you can import a opus document which is analyzed by an algorithm before playing through the keyboard. As you perform alongside alongside the opus the keyboard volition lone create notes that equivalent the song&rsquo;s harmony, no matter what keys you press. You&rsquo;re motionless liable for timing and matching the song&rsquo;s rhythm, but the keyboard takes attention of everything alternatively so you can activity on evolving your imaginative expression without being self-conscious concerning it sounding awful.</p><p>The CT-FS1 can be played akin a norm keyboard without the Feel Sync assistance, but since it&rsquo;s lengthy adequate to modify two musicians, you can additionally divided the keyboard into two zones. One flank plant akin a traditional keyboard for an informed musician to play, during the another benefits from the genuine period Feel Sync corrections.</p><div><p><span><strong>Follow topics and authors</strong> from this narrative to see additional akin this in your personalized homepage nourish and to obtain email updates.</span></p><ul><li id="follow-author-article_footer-dmcyOmF1dGhvclByb2ZpbGU6MTYw"><span aria-expanded="false" aria-haspopup="true" role="button" tabindex="0"><span><span><svg width="9" height="9" viewbox="0 0 9 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-label="Follow"><path d="M5 0H4V4H0V5H4V9H5V5H9V4H5V0Z"></path></svg></span><span>Andrew Liszewski</span></span></span></li><li><li><li></ul></div></div></div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/you-can-t-hit-a-wrong-note-when-playing-along-with-songs-on-casio-s-new-keyboard-75467</guid> <pubDate>Tue, 03 Nov 2026 20:48:41 +0700</pubDate> <author><![CDATA[support@mycoding.id (Andrew Liszewski)]]></author> </item> <item> <title><![CDATA[12 of the biggest perks of being a US senator]]></title> <description><![CDATA[12 of the biggest perks of being a US senator. Members of Congress can drag position to obtain precedence for haircuts, flights, and equal mail.]]></description> <media:thumbnail url="https://i.insider.com/5c2fc67bdde867535c293ec5?width=1200&amp;format=jpeg"/> <category><![CDATA[Business]]></category> <link>https://en.mycoding.id/12-of-the-biggest-perks-of-being-a-us-senator-75469</link> <content:encoded><![CDATA[<div e-name="post-hero" data-component-type="post-hero" data-load-strategy="exclude"> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject"> <div> <p><img src="https://i.insider.com/6aea167df5f059691404aaee?width=2000&amp;format=jpeg&amp;auto=webp" srcset="https://i.insider.com/6aea167df5f059691404aaee?width=400&amp;format=jpeg&amp;auto=webp 400w, https://i.insider.com/6aea167df5f059691404aaee?width=500&amp;format=jpeg&amp;auto=webp 500w, https://i.insider.com/6aea167df5f059691404aaee?width=700&amp;format=jpeg&amp;auto=webp 700w, https://i.insider.com/6aea167df5f059691404aaee?width=1000&amp;format=jpeg&amp;auto=webp 1000w, https://i.insider.com/6aea167df5f059691404aaee?width=1300&amp;format=jpeg&amp;auto=webp 1300w, https://i.insider.com/6aea167df5f059691404aaee?width=2000&amp;format=jpeg&amp;auto=webp 2000w" sizes=" 1280px) 900px" alt="Sen. Bernie Sanders (I-VT) questions Robert F. Kennedy Jr., U.S. President Donald Trump&#039;s nominee for Secretary of Health and Human Services during his Senate Committee on Health, Education, Labor and Pensions confirmation hearing at the Dirksen Senate Office Building on January 30, 2025" decoding="sync"> </p></div> <span> <span> <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewbox="0 0 24 24"> <path fill="currentColor" fill-rule="evenodd" d="m4.56 18.5 7.486-7.72 7.394 7.626 2.56-2.64L12.046 5.5 2 15.86l2.56 2.64Z"></path> </svg> <figcaption e-name="image-caption"> <span>Bernie Sanders has been a legislator representing Vermont since 2007.</span> <span> <span e-name="image-source" itemprop="creditText">Kevin Dietsch/Getty Images</span> </span> </figcaption> </span> </span> </figure> </div> <div data-component-type="image-modal" data-load-strategy="lazy"> <p>Like millions of Americans throughout the country, you power be spending today <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">glued to the TV</a> or social media as <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">Election Day</a> predictions and results rotate in.</p><p>After months, and sometimes years, of campaigning, hours spent prepping, and thousands of dollars raised, 35 winners volition be sworn into the US Senate in January. <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">Senate races</a> in Michigan, Texas, Ohio, and Maine have been garnering headlines for months.</p><p>In supplement to their many new responsibilities in office, there are additionally a bunch of perks that arrive alongside being a top lawmaker, including several that final far beyond their period in Congress.</p><p>Here are several of the biggest bonuses of <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">being a US senator</a>.</p> <div data-component-type="post-slides" data-load-strategy="lazy"> <div> <p> <h2>A senator's lifelong pension can be up to 80% of their salary.</h2> </p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view"> <div> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/5c2fc67cdde867535c293ec6&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:2000,&quot;aspectRatioH&quot;:1333}}' alt="nancy pelosi parliament healthcare"> </p></div> <span> <figcaption e-name="image-caption"> <span>Nancy Pelosi and John Sarbanes, D-Md., at a news conference.</span> <span> <span e-name="image-source" itemprop="creditText"> <a href="https://en.mycoding.id/category/business" target="_blank" rel="nofollow"> J. Scott Applewhite/AP </a> </span> </span> </figcaption> </span> </figure> <div> <p>The Federal Employees Retirement System provides idiosyncratic <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">pension plans</a> to members of Congress, and the amount depends on their age, salary, and figure of years in the Senate.</p><p>Based on the <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">congressional pay</a> of $174,000 a twelvemonth for most senators (it hasn't been updated since 2009), an 80% pension provides a lifelong advantage of $139,200.</p><p>This places members onward of the bulk of Americans, for whom the 2025 median family earnings was $87,460, according to the <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;outbound_click&quot;}' rel="">Census Bureau</a>.</p> </div> </div> <div> <p> <h2>If a associate of Congress dies in office, their family normally receives a $174,000 payout.</h2> </p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view"> <div> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/5c2fc67cdde867535c293ec8&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:3000,&quot;aspectRatioH&quot;:1929}}' alt="congress"> </p></div> <span> <figcaption e-name="image-caption"> <span>A shared meeting of Congress met to figure the electoral vote.</span> <span> <span e-name="image-source" itemprop="creditText"> <a href="https://en.mycoding.id/category/business" target="_blank" rel="nofollow"> Chip Somodevilla/Getty Images </a> </span> </span> </figcaption> </span> </figure> <div> <p>It's called a death gratuity, and it equals one twelvemonth of the member's salary, paid to an eligible subsister or next of kin.</p><p>By comparison, eligible survivors of armed forces personnel who die during on energetic duty or in certain reserve statuses obtain $100,000.</p> </div> </div> <div> <p> <h2>Every legislator gets an allowance from the authorities to run their offices.</h2> </p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view"> <div> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/5c2fc686dde867535c293ec9&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:3000,&quot;aspectRatioH&quot;:2069}}' alt="mitch mcconnell"> </p></div> <span> <figcaption e-name="image-caption"> <span>Kentucky Senator Mitch McConnell in 2008.</span> <span> <span e-name="image-source" itemprop="creditText"> <a href="https://en.mycoding.id/category/business" target="_blank" rel="nofollow"> Alex Wong/Getty Images </a> </span> </span> </figcaption> </span> </figure> <div> <p>The Senators' Official Personnel and Office Expense Account, or SOPOEA, is for authoritative agency operations, personnel salaries, travel, and another expenses.</p><p>It comes immediately from the US Treasury, aka our taxes. While the two senators from the identical province are allocated the identical amount of money, not all states obtain the identical amount.</p><p>It's according to a equation that takes population, extend from DC, and communication allocations into consideration.</p><p>There <em>is </em>a flat rate, which method all legislator volition obtain at smallest $677,100, although the <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;outbound_click&quot;}' rel="">2026 Senate Appropriations Committee report</a> showed that SOPOEA finances really ranged from $4,296,524 to $6,621,784, alongside an average of $4,664,423.</p> </div> </div> <div> <p> <h2>For 90 days following they depart office, members have admission to "franking" mail, or sending authoritative communication to their constituents.</h2> </p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view"> <div> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/5c2fc686dde867535c293eca&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:3000,&quot;aspectRatioH&quot;:2131}}' alt="us mail"> </p></div> <span> <figcaption e-name="image-caption"> <span>A company mailroom employee sifted through mail.</span> <span> <span e-name="image-source" itemprop="creditText"> <a href="https://en.mycoding.id/category/business" target="_blank" rel="nofollow"> Mario Tama/Getty Images </a> </span> </span> </figcaption> </span> </figure> <div> <p>You power be wondering, what's so particular concerning that?</p><p>Well, there's one big advantage to franking mail: You don't have to pay postage, which saves the legislator a lot of prosperity in the lengthy run.</p> </div> </div> <div> <p> <h2>Congressional benefits broaden beyond Capitol Hill, including liberated parking at DC-area airports.</h2> </p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view"> <div> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/6aea359229a2aa01303e3a15&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:2560,&quot;aspectRatioH&quot;:1950}}' alt="Cars of members of the House and Senate in a restricted parking lot near Ronald Reagan Washington National Airport in 1998."> </p></div> <span> <figcaption e-name="image-caption"> <span>Cars of members of the House and Senate in a restricted parking lot near Ronald Reagan Washington National Airport in 1998.</span> <span> <span e-name="image-source" itemprop="creditText">Scott J. Ferrell/Congressional Quarterly/Getty Images</span> </span> </figcaption> </span> </figure> <div> <p>Members of Congress, as fine as Supreme Court justices and diplomats, get liberated parking at Ronald Reagan Washington National Airport and Washington Dulles International Airport.</p><p>The perk dates rear decades, as shown in the photo complete of a car owned by a associate of the 105th Congress, parked at Reagan in 1998.</p> </div> </div> <div> <p> <h2>Senators additionally obtain preferential care concerning transporter client service.</h2> </p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view"> <div> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/6aea2f684b5ca383fe7cf2bb&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:4000,&quot;aspectRatioH&quot;:2667}}' alt="An Embraer E175LR passenger aircraft, operated by Republic Airways Holdings Inc., on the tarmac at Ronald Reagan Washington National Airport"> </p></div> <span> <figcaption e-name="image-caption"> <span>Aircraft on the tarmac of Reagan airfield in DC.</span> <span> <span e-name="image-source" itemprop="creditText">Al Drago/Bloomberg via Getty Images</span> </span> </figcaption> </span> </figure> <div> <p>A lobbyist told <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;outbound_click&quot;}' rel=" nofollow">Roll Call</a> in 2011 that most important airlines have dedicated client assistance phone lines to assistance those on Capitol Hill, and that senators can double-book flights.</p><p>During the TSA attack before this year, <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">Delta suspended</a> several of its perks for senators, specified as expedited security, although the particular array remained operational.</p> </div> </div> <div> <p> <h2>There's additionally the awesome haircuts.</h2> </p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view"> <div> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/5c2fc688dde867535c293ecd&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:2000,&quot;aspectRatioH&quot;:1335}}' alt="senate barber"> </p></div> <span> <figcaption e-name="image-caption"> <span>A perspective of a closed barber shop in the US Senate at the US Capitol.</span> <span> <span e-name="image-source" itemprop="creditText"> <a href="https://en.mycoding.id/category/business" target="_blank" rel="nofollow"> BRENDAN SMIALOWSKI/AFP/Getty Images </a> </span> </span> </figcaption> </span> </figure> <p>The Senate Hair Care Services has been functioning since the first 19th Century, providing a assortment of grooming services including haircuts and manicures.</p> </div> <div> <p> <h2>Don't ignore the personal subway, either.</h2> </p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view"> <div> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/6aea21d794c155f6acb2e0d1&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:8137,&quot;aspectRatioH&quot;:5425}}' alt="Sen. Chuck Grassley, R-Iowa, is seen in the legislature subway in the U.S. Capitol on Tuesday, June 3, 2025."> </p></div> <span> <figcaption e-name="image-caption"> <span>Sen. Chuck Grassley, R-Iowa, was seen in the Senate subway in the US Capitol.</span> <span> <span e-name="image-source" itemprop="creditText">Tom Williams/CQ-Roll Call, Inc via Getty Images</span> </span> </figcaption> </span> </figure> <div> <p>The <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">Capitol subway system,</a> which runs below the Capitol and connects it to legislative agency buildings, has been in location since 1909. It consists of three lines: Two for the Senate and one for the House of Representatives.</p><p>According to the <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;outbound_click&quot;}' rel="">Architect of the Capitol</a> (AOC), which operates the train line, it's there to "allow for harmless and expedient travel" for members to journey from their offices to chambers inside the Capitol to vote.</p> </div> </div> <div> <p> <h2>Senators get admission to fancy gyms that no one's allowed to see inside.</h2> </p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view"> <div> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/6aea24754b5ca383fe7cf265&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:3000,&quot;aspectRatioH&quot;:1986}}' alt="Democratic presidential hopeful Sen. Barack Obama (D-IL) shoots a basketball on the court at Riverview Elementry School, May 4, 2008"> </p></div> <span> <figcaption e-name="image-caption"> <span>Then-Senator Barack Obama attempt a basketball on the court in 2008.</span> <span> <span e-name="image-source" itemprop="creditText">Mark Wilson/Getty Images</span> </span> </figcaption> </span> </figure> <p>Per a 2011 <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;outbound_click&quot;}' rel=" nofollow">ABC News</a> report, senators paid $40 a duration for gyms armed alongside "flat-screen TVs, exercise machines and a swimming pool."</p> </div> <div> <p> <h2>Former members can motionless bask on-site amenities including the House and Senate dining rooms.</h2> </p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view"> <div> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/5c2fc688dde867535c293ed0&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:3000,&quot;aspectRatioH&quot;:1920}}' alt="us senate"> </p></div> <span> <figcaption e-name="image-caption"> <span>The hall in forefront of the US Senate Chamber is seen.</span> <span> <span e-name="image-source" itemprop="creditText"> <a href="https://en.mycoding.id/category/business" target="_blank" rel="nofollow"> Mark Wilson/Getty Images </a> </span> </span> </figcaption> </span> </figure> <p>Once you depart the Senate, that doesn't average your perks disappear. You motionless get admission to the gym, particular parking, materials through the Library of Congress, and dining facilities.</p> </div> <div> <p> <h2>They can additionally motionless buy from the Senate Stationery Room, which carries many supplies and furnishings.</h2> </p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view"> <div> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/6aea28e3f5f059691404ab88&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:3594,&quot;aspectRatioH&quot;:2568}}' alt="The statue of George Washington, the archetypal US chairman is seen in the rotunda of the US Capitol on April 16, 2009 in Washington, DC."> </p></div> <span> <figcaption e-name="image-caption"> <span>The statue of George Washington, the archetypal US president, in the rotunda of the US Capitol.</span> <span> <span e-name="image-source" itemprop="creditText">KAREN BLEIER/AFP via Getty Images</span> </span> </figcaption> </span> </figure> <p>It's basically a Senators-<a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">only Staples</a> that operates via the Senate Stationery Room Revolving Fund &mdash; so the revenue go rear into the store's prosperity and are used to restock inventory.</p> </div> <div> <p> <h2>Senators get plentifulness of period in their residence states.</h2> </p> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject" role="button" tabindex="0" aria-label="Click to open depiction in exhibition view"> <div> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-content-type="image/jpeg" data-srcs='//i.insider.com/6aea2b57f5f059691404ab96&quot;:{&quot;contentType&quot;:&quot;image/jpeg&quot;,&quot;aspectRatioW&quot;:5333,&quot;aspectRatioH&quot;:4000}}' alt="U.S. Senate Majority Leader Sen. Chuck Schumer (D-NY) speaks during a news gathering in forefront of the U.S. Capitol on May 21, 2024"> </p></div> <span> <figcaption e-name="image-caption"> <span>Senator Chuck Schumer in forefront of the US Capitol.</span> <span> <span e-name="image-source" itemprop="creditText">Alex Wong/Getty Images</span> </span> </figcaption> </span> </figure> <div> <p>The Senate's calendar includes lengthy stretches distant from Washington.</p><p>Its <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;outbound_click&quot;}' rel="">2026 schedule</a> lists 133 days of planned recess periods, whenever senators are mostly rear in their states fairly than holding flat sessions in the chamber.</p><p>That period is not necessarily a vacation: Senators frequently use it to encounter constituents, clasp events, behavior oversight, and activity on legislation.</p><p><em>Ellen Cranley worked on an before type of this story.</em></p><p><em>Editor's Note: This narrative was initially published in January 2019 and was most lately updated in November 2026.</em></p> </div> </div> </div> </div> <h2>Read next</h2> <div data-recommendations-content data-track-click-shared='&quot;Read next&quot;}'> <div e-name="read-next-list" data-recommendations-list> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> </div> </div> <a e-name="read-next-image-link" data-recommendations-image-link data-recommendations-link tabindex="-1"> <p><img alt=""> </p> </a> <h3> <a e-name="read-next-title-link" data-recommendations-link data-recommendations-title></a> </h3> <div data-component-type="post-bottom-authors" data-load-strategy="exclude" data-track-view='&quot;module_in_view&quot;}' data-track-click-shared='&quot;navigation&quot;}'> <div data-track-view='&quot;module_in_view&quot;}'> <div> <p><span>Gabbi Shaw is a newsman on Business Insider's editorial partnerships team. She has covered entertainment, travel, food, and manner for Business Insider and Insider Inc.'s partners, including MSN, Apple News, and Yahoo since 2018, and her activity has taken her to iconic mansions of the Gilded Age, the Westminster Dog Show, Disney World, the Hamptons, and additional fast-food restaurants than she cares to remember.</span><span>She graduated from Tulane University in 2017 alongside a flat in community health and now lives in New York City.</span><span></span> </p> </div> </div> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/12-of-the-biggest-perks-of-being-a-us-senator-75469</guid> <pubDate>Tue, 03 Nov 2026 20:46:50 +0700</pubDate> <author><![CDATA[support@mycoding.id (Gabbi Shaw)]]></author> </item> <item> <title><![CDATA[The Best Idea for His Business Came From a Customer. And It Led to 300% Growth: ‘We’re Going All-In on This’]]></title> <description><![CDATA[The Best Idea for His Business Came From a Customer. And It Led to 300% Growth: ‘We’re Going All-In on This’. Fit:match originator Haniff Brown built tech to assistance shoppers discover apparel that fit, until a football association asked him to try item new.]]></description> <media:thumbnail url="https://www.entrepreneur.com/wp-content/uploads/sites/2/2026/11/Haniff-Brown-Fitmatch.jpeg"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/the-best-idea-for-his-business-came-from-a-customer-and-it-led-to-300-growth-we-re-going-all-in-on-this-75478</link> <content:encoded><![CDATA[<div> <p>There are several founders who think that lone fine ideas can arrive from them. Haniff Brown is not one of those founders. </p> <p>In 2024, the Williams College math important and erstwhile personal equity capitalist was promoting his business <a href="https://en.mycoding.id/category/technology" target="_blank">Fit:match</a>&rsquo;s AI body-scanning innovation as a way to assistance shoppers discover apparel that fit. Then a important English football squad asked if he&rsquo;d bring the tech to their younker academy for an entirely distinct use. He nearly stated no, but went anyway, and following listening to the coaches, he established an entirely distinct use for the tech &mdash; and much bigger endeavor in the process. </p> <p>Today, Fit:match partners alongside <a href="https://en.mycoding.id/category/technology" target="_blank">FIFA</a>, Major League Soccer and <a href="https://en.mycoding.id/category/technology" target="_blank">Major League Baseball </a>to provision athletes a complete set of anthropometric and body-composition measurements in seconds. Brown said alongside Entrepreneur to portion his insights and direction for building, expanding and seizing unexpected opportunities.</p> <p><strong>Let&rsquo;s commencement alongside the elevator pitch. What is Fit:match?</strong><br>Fit:match is a build intellect platform. Think of us nearly akin the <a href="https://en.mycoding.id/category/technology" target="_blank">ChatGPT </a>or the <a href="https://en.mycoding.id/category/technology" target="_blank">Claude</a> or the Gemini of the individual body. We provision distant admission to build intellect and build analytics at scale. So if you desire precision or data analytics on the individual body, we are the business providing that for hospitals, for athletes, and coaches, and really throughout the board.</p> <p><strong>Talk to us concerning the pivot from your tech focusing on group purchasing clothing.</strong><br>I think it was in 2024 whenever we got a call from a really ample sports squad in England. We were doing several activity in a retailer and they stated to us, &ldquo;Hey, we really akin your technology. I cognize that you&rsquo;re using it for shopping, but can you sway by our younker academy out in the countryside in England?&rdquo; At first, we were like, no, the innovation is built for this purpose. But sometimes as an entrepreneur, you fair have to obtain a hazard and you have to go alongside your gut. And I felt, why not? So whenever I was there, I started to conversation to the coaches, I started to conversation to the scouts and afterward the sports scientists. And that really was the aha instant for us. What they told us at that academy is, &ldquo;Hey, if you can get this build scanning procedure downward to 10 to 15 seconds, you would unlock a huge advantage for us.&rdquo; Because most assessments in sports obtain a lengthy period and affect pulling an sportsperson out of training. I came rear from that trip and I was fair like, &ldquo;We&rsquo;re going all-in on this.&rdquo;</p> <p><strong>You&rsquo;re a die-hard Manchester United fan &mdash; how does it awareness to build a endeavor about item you love?</strong><br>What makes me the happiest is the fact that whether it is the MLB or Major League Soccer, we&rsquo;re doing it at the younker level. If you can democratize it the correct way, you can get admission to additional youth, you can assistance create ecosystems and pathways that don&rsquo;t be today, and you can additionally provision data to parents so they can create improved decisions for their sons and daughters.</p> <figure><img decoding="async" height="683" width="1024" src="https://www.entrepreneur.com/business-news/225" alt="" srcset="https://www.entrepreneur.com/wp-content/uploads/sites/2/2026/11/Fit_match-Scan-1.png 4128w, https://www.entrepreneur.com/wp-content/uploads/sites/2/2026/11/Fit_match-Scan-1.png?resize=300,200 300w, https://www.entrepreneur.com/wp-content/uploads/sites/2/2026/11/Fit_match-Scan-1.png?resize=768,512 768w, https://www.entrepreneur.com/wp-content/uploads/sites/2/2026/11/Fit_match-Scan-1.png?resize=1024,683 1024w, https://www.entrepreneur.com/wp-content/uploads/sites/2/2026/11/Fit_match-Scan-1.png?resize=1536,1024 1536w, https://www.entrepreneur.com/wp-content/uploads/sites/2/2026/11/Fit_match-Scan-1.png?resize=2048,1366 2048w, https://www.entrepreneur.com/wp-content/uploads/sites/2/2026/11/Fit_match-Scan-1.png?resize=337,225 337w" sizes=" 1024px) 100vw, 1024px"></figure> <p><sup><em>Photo credit: Fit:match</em></sup></p> <p><strong>For entrepreneurs, how crucial is it to put your merchandise in people&rsquo;s hands to</strong> <strong>experience it?</strong><br>You have entrepreneurs, and afterward you have founders that are trying to build item that doesn&rsquo;t exist. I&rsquo;m on the second piece. A big part of this journey for me has not lone been, &ldquo;Hey, the innovation works!&rdquo; but it&rsquo;s additionally now proving to enterprises, businesses, markets and consumers that this is item they can do. A big part of how I&rsquo;ve tackled acceptance is to put the innovation out there as much as possible. Because the additional that&rsquo;s hidden, the additional obstacles you have to visage in that marketing journey. So all client call that I have now, whether I&rsquo;m talking to Cleveland Clinic or a sports squad in Peru, I commencement alongside a demo of the technology. Not a video, not a picture. We have person on our squad get on the call, obtain out their iPhone, click four pictures, and go through the technology, since I desire to instruct the individual on the another flank that this is easy. This is an cognition that I continually inform group my eight-year-old son can do and my 70-year-old mom can do. And what I established is the <a href="https://en.mycoding.id/category/technology" target="_blank">ROI </a>and the payback on putting it out there has been huge.</p> <p><strong>What&rsquo;s your direction to founders out there seeking funding?</strong><br>I&rsquo;ve been fairly open concerning this. I do not akin <a href="https://en.mycoding.id/category/technology" target="_blank">fundraising</a>. I akin construction products, I akin scaling teams, I akin having fun on that flank of the business. So I perspective fundraising nearly as if you&rsquo;re going in a car from Los Angeles to New York, and location alongside the row you&rsquo;re gonna interrupt downward and not have any energy left. And you need a gas position alongside the journey. Fundraising is those gas stations. It&rsquo;s not the means, it&rsquo;s not the ends &mdash; it&rsquo;s fair several energy that you need to get to the next phase and execute your journey. If I build the correct product, if I build the correct market, if I have customers who are paying, I&rsquo;ll discover the correct investor. I discover a lot of entrepreneurs try to concentration on fundraising first, afterward those things second. What I established is that fundraising becomes easier formerly you resolve for those things. So my direction is to concentration on the material that investors really desire to see.</p> </div><div> <p>There are several founders who think that lone fine ideas can arrive from them. Haniff Brown is not one of those founders. </p> <p>In 2024, the Williams College math important and erstwhile personal equity capitalist was promoting his business <a href="https://en.mycoding.id/category/technology" target="_blank">Fit:match</a>&rsquo;s AI body-scanning innovation as a way to assistance shoppers discover apparel that fit. Then a important English football squad asked if he&rsquo;d bring the tech to their younker academy for an entirely distinct use. He nearly stated no, but went anyway, and following listening to the coaches, he established an entirely distinct use for the tech &mdash; and much bigger endeavor in the process. </p> <p>Today, Fit:match partners alongside <a href="https://en.mycoding.id/category/technology" target="_blank">FIFA</a>, Major League Soccer and <a href="https://en.mycoding.id/category/technology" target="_blank">Major League Baseball </a>to provision athletes a complete set of anthropometric and body-composition measurements in seconds. Brown said alongside Entrepreneur to portion his insights and direction for building, expanding and seizing unexpected opportunities.</p> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/the-best-idea-for-his-business-came-from-a-customer-and-it-led-to-300-growth-we-re-going-all-in-on-this-75478</guid> <pubDate>Tue, 03 Nov 2026 20:40:00 +0700</pubDate> <author><![CDATA[support@mycoding.id (Dan Bova)]]></author> </item> <item> <title><![CDATA[Preparing for the Flipper One Kickstarter and opening pre-orders]]></title> <description><![CDATA[Preparing for the Flipper One Kickstarter and opening pre-orders. Comments]]></description> <media:thumbnail url="http://flipper.net/cdn/shop/files/page_flipper-one_og-image.png?v=1785249769"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/preparing-for-the-flipper-one-kickstarter-and-opening-pre-orders-75470</link> <content:encoded><![CDATA[<div id="MainContent" role="main" data-page-transition-enabled="false" data-product-transition="false" data-template="page.flipper-one"> <div id="shopify-section-template--19938098610329__one-landing-hero"> <div> <div> <p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_body.png?v=1793720883&amp;width=3840" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_body.png?v=1793720883&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_body.png?v=1793720883&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_body.png?v=1793720883&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_body.png?v=1793720883&amp;width=1920 1920w, //flipper.net/cdn/shop/files/page_flipper-one_body.png?v=1793720883&amp;width=3840 3840w" width="3840" height="1557"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_nmap-animation.gif?v=1779205141&amp;width=1706" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_nmap-animation.gif?v=1779205141&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_nmap-animation.gif?v=1779205141&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_nmap-animation.gif?v=1779205141&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_nmap-animation.gif?v=1779205141&amp;width=1706 1706w" width="1706" height="960"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_body.png?v=1793720883&amp;width=886" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_body.png?v=1793720883&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_body.png?v=1793720883&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_body.png?v=1793720883&amp;width=886 886w" width="886" height="359"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_body-shadow.png?v=1779205140&amp;width=886" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_body-shadow.png?v=1779205140&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_body-shadow.png?v=1779205140&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_body-shadow.png?v=1779205140&amp;width=886 886w" width="886" height="440"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_nmap-animation.gif?v=1779205141&amp;width=804" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_nmap-animation.gif?v=1779205141&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_nmap-animation.gif?v=1779205141&amp;width=804 804w" width="804" height="452"> </p> <p>Open Linux device according to a mighty ARM processor. Network multi-tool &mdash; built-in Wi-Fi 6E and Gigabit Ethernet. Expandable via M.2 modules: 5G cellular modem, SDR broadcast and more.</p> <p><a href="https://en.mycoding.id/category/technology" target="_blank" id="OneHeroButton-template--19938098610329__one-landing-hero" aria-label="PRE-ORDER NOW">PRE-ORDER NOW</a></p><p>Follow advancement at the <a href="https://en.mycoding.id/category/technology" target="_blank" target="_blank" title="https://docs.flipper.net/one">Developer Portal &gt;&gt;</a></p> </div> <p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_console.png?v=1785164297&amp;width=1706" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_console.png?v=1785164297&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_console.png?v=1785164297&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_console.png?v=1785164297&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_console.png?v=1785164297&amp;width=1706 1706w" width="1706" height="1908"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_antenna-desktop.png?v=1785164297&amp;width=916" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_antenna-desktop.png?v=1785164297&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_antenna-desktop.png?v=1785164297&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_antenna-desktop.png?v=1785164297&amp;width=916 916w" width="916" height="1972"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_hero-terminal-mobile.png?v=1779205143&amp;width=650" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_hero-terminal-mobile.png?v=1779205143&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_hero-terminal-mobile.png?v=1779205143&amp;width=650 650w" width="650" height="1090"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_hero-switch-mobile.png?v=1779205140&amp;width=784" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_hero-switch-mobile.png?v=1779205140&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_hero-switch-mobile.png?v=1779205140&amp;width=784 784w" width="784" height="456"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_hero-tower-mobile.png?v=1779205141&amp;width=628" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_hero-tower-mobile.png?v=1779205141&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_hero-tower-mobile.png?v=1779205141&amp;width=628 628w" width="628" height="2519"> </p></div> </div><div id="shopify-section-template--19938098610329__one-landing-linux"> <div> <div> <h2>OPEN LINUX PLATFORM</h2> <div><p>Flipper One runs on entirely open-source Linux firmware alongside a mainline kernel. This method supreme compatibility alongside bleeding-edge kernel versions, liberated from vendor-specific BSP restrictions and binary blobs. Our goal is to create a completely upstream-supported ARM device that never becomes outdated, and a well-documented phase giving the community maximum liberty to customize:<br></p><ul><li>Full mainline Linux kernel support</li><li>No binary blobs</li><li>No vendor-locked BSP</li></ul></div> <p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_linux-illustration.png?v=1793720974&amp;width=2832" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_linux-illustration.png?v=1793720974&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_linux-illustration.png?v=1793720974&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_linux-illustration.png?v=1793720974&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_linux-illustration.png?v=1793720974&amp;width=1920 1920w, //flipper.net/cdn/shop/files/page_flipper-one_linux-illustration.png?v=1793720974&amp;width=2832 2832w" width="2832" height="1822"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_linux-illustration-mobile.png?v=1793720965&amp;width=1194" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_linux-illustration-mobile.png?v=1793720965&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_linux-illustration-mobile.png?v=1793720965&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_linux-illustration-mobile.png?v=1793720965&amp;width=1194 1194w" width="1194" height="776"></p><div> <p>We have partnered alongside the Collabora team, who are actively operating on bringing the RK3576 SoC into the mainline kernel, to create Flipper One completely upstream-supported and liberated from binary blobs. <a href="https://en.mycoding.id/category/technology" target="_blank">Read&nbsp;Collabora&nbsp;blog&nbsp;post</a></p> </div> </div> </div> </div><div id="shopify-section-template--19938098610329__one-landing-copro"> <div> <div> <h2>CO-PROCESSOR ARCHITECTURE</h2> <p>Two autonomous processors activity together in parallel, all controlling distinct sub-systems of Flipper One. <br> This architecture allows you to <strong>control the Linux sub-system immediately from the built-in LCD display</strong>, without losing admission to the equipment equal whenever the Linux kernel is not yet prepared or turned off.</p> <p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_copro.png?v=1793720908&amp;width=2896" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_copro.png?v=1793720908&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_copro.png?v=1793720908&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_copro.png?v=1793720908&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_copro.png?v=1793720908&amp;width=1920 1920w, //flipper.net/cdn/shop/files/page_flipper-one_copro.png?v=1793720908&amp;width=2896 2896w" width="2896" height="2375" loading="lazy"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_copro-medium.png?v=1793720892&amp;width=1436" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_copro-medium.png?v=1793720892&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_copro-medium.png?v=1793720892&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_copro-medium.png?v=1793720892&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_copro-medium.png?v=1793720892&amp;width=1436 1436w" width="1436" height="1434" loading="lazy"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_copro-mobile.png?v=1793720899&amp;width=804" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_copro-mobile.png?v=1793720899&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_copro-mobile.png?v=1793720899&amp;width=804 804w" width="804" height="1600" loading="lazy"> </p> <h3>Why 2 processors?</h3> <div><ul><li><strong>Low-power MCU (Raspberry Pi RP2350)</strong> &mdash; an energy-efficient microcontroller liable for center equipment control. It drives the LCD display, bodily buttons, and position LEDs. It manages the power sub-system and controls the Linux OS footwear parameters whenever the Linux sub-system is off. <a href="https://en.mycoding.id/category/technology" target="_blank" target="_blank" title="https://docs.flipper.net/one/mcu-firmware/about">More concerning MCU Firmware &gt;&gt;</a></li></ul><ul><li><strong>High-performance CPU (Rockchip RK3576)</strong> &mdash; a mighty 8-core ARM system-on-chip that runs the Linux functioning system. It executes person applications, controls all networking interfaces specified as Wi-Fi and Ethernet, and manages high-speed peripherals including USB3 and PCIe. It additionally integrates an NPU for AI acceleration and a GPU for graphics output via HDMI and DisplayPort. <a href="https://en.mycoding.id/category/technology" target="_blank" target="_blank" title="https://docs.flipper.net/one/cpu-software/about">More concerning Linux sub-system &gt;&gt;</a></li></ul></div> </div> </div> </div><div id="shopify-section-template--19938098610329__one-landing-cable"> <div> <div> <h2>ONE CABLE FOR EVERYTHING</h2> <div><div><p>Get SSH admission and accusation the equipment via a sole USB cable! No additional adapters needed for Linux console admission or powering the equipment &mdash; Flipper One can simultaneously emulate a virtual network adapter, a serial adapter (COM port), and a mass-storage device.</p><p>No drivers required on macOS, Linux, Windows, iOS, or Android.</p></div></div> <p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_cable.png?v=1785164299&amp;width=5760" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_cable.png?v=1785164299&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_cable.png?v=1785164299&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_cable.png?v=1785164299&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_cable.png?v=1785164299&amp;width=1920 1920w, //flipper.net/cdn/shop/files/page_flipper-one_cable.png?v=1785164299&amp;width=5760 5760w" width="5760" height="2550" loading="lazy"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_cable-medium.png?v=1779205180&amp;width=2998" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_cable-medium.png?v=1779205180&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_cable-medium.png?v=1779205180&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_cable-medium.png?v=1779205180&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_cable-medium.png?v=1779205180&amp;width=1920 1920w, //flipper.net/cdn/shop/files/page_flipper-one_cable-medium.png?v=1779205180&amp;width=2998 2998w" width="2998" height="1415" loading="lazy"></p><p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_cable-mobile.png?v=1782219750&amp;width=804" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_cable-mobile.png?v=1782219750&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_cable-mobile.png?v=1782219750&amp;width=804 804w" width="804" height="806" loading="lazy"> </p> </div> </div> </div><div id="shopify-section-template--19938098610329__one-landing-scanner"> <div> <div> <div> <h2>NETWORK SCANNER</h2> <p>Analyze wired and wireless IP networks. Flipper One helps you map network topology, detect energetic hosts, and scan for open ports and services. It can additionally act as a passive sensor to detect network attacks and study anomalies.</p> </div> <p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_scanner-desktop.png?v=1785164298&amp;width=5760" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_scanner-desktop.png?v=1785164298&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_scanner-desktop.png?v=1785164298&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_scanner-desktop.png?v=1785164298&amp;width=1920 1920w, //flipper.net/cdn/shop/files/page_flipper-one_scanner-desktop.png?v=1785164298&amp;width=2600 2600w, //flipper.net/cdn/shop/files/page_flipper-one_scanner-desktop.png?v=1785164298&amp;width=3586 3586w, //flipper.net/cdn/shop/files/page_flipper-one_scanner-desktop.png?v=1785164298&amp;width=4600 4600w, //flipper.net/cdn/shop/files/page_flipper-one_scanner-desktop.png?v=1785164298&amp;width=5760 5760w" width="5760" height="2750" loading="lazy" sizes="150vw"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_scanner-mobile.png?v=1779205148&amp;width=1024" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_scanner-mobile.png?v=1779205148&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_scanner-mobile.png?v=1779205148&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_scanner-mobile.png?v=1779205148&amp;width=1024 1024w" width="1024" height="1398" loading="lazy" sizes="100vw"> </p> </div> </div> </div><div id="shopify-section-template--19938098610329__one-landing-wattmeter"> <div> <div> <div> <h2>POWER METER</h2> <p>The power use meter plant akin a wattmeter, showing in genuine period how much power the complete scheme uses, including the CPU and peripherals. It helps you comprehend what is happening under the hood: whether the scheme is idle or actively working.</p> </div> </div> </div> </div><div id="shopify-section-template--19938098610329__one-landing-modules"> <div> <div> <div> <h2>M.2 MODULES</h2> <p>The center idea of Flipper One is an expandable hardware platform. Create your own specialized tool alongside a high-speed M.2 enlargement component that installs inner the device, under the rear plate. It supports nearly any category of component &mdash; cellular or moon modems, SDR modules, AI accelerators, SSDs (NVMe or SATA), and Wi-Fi cards via adapters.</p> </div> <p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_modules-desktop.png?v=1793720985&amp;width=2732" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_modules-desktop.png?v=1793720985&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_modules-desktop.png?v=1793720985&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_modules-desktop.png?v=1793720985&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_modules-desktop.png?v=1793720985&amp;width=1920 1920w, //flipper.net/cdn/shop/files/page_flipper-one_modules-desktop.png?v=1793720985&amp;width=2732 2732w" width="2732" height="1869" loading="lazy"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_modules-mobile.png?v=1793720991&amp;width=738" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_modules-mobile.png?v=1793720991&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_modules-mobile.png?v=1793720991&amp;width=738 738w" width="738" height="654" loading="lazy"> </p> <div> <div> <h3>M.2 tech specs</h3> <p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_modules-specs.png?v=1785164297&amp;width=1366" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_modules-specs.png?v=1785164297&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_modules-specs.png?v=1785164297&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_modules-specs.png?v=1785164297&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_modules-specs.png?v=1785164297&amp;width=1366 1366w" width="1366" height="787" loading="lazy"></p><div><ul><li>M.2 type: Key-B</li><li>Supported sizes: 2230 (via extender), 2242, 3042, 3052</li><li>Supported thickness: up to D3 (double-sided modules)</li><li>Interfaces: PCIe 2.1 &times;1 / USB 2.0 / USB 3.1 / SATA3 / SIM cardstock + eSIM</li><li>Extra interfaces: Serial Audio / UART / I&sup2;C</li></ul></div> </div> <div> <h3>Open origin mounting system</h3> <p>All mechanical parts for component mounting are <a href="https://en.mycoding.id/category/technology" target="_blank">completely open source.</a> You can scheme your own antennas, cooling system, and mounting solutions for additional accessories.</p> <p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_modules-block-two.png?v=1782219685&amp;width=1366" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_modules-block-two.png?v=1782219685&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_modules-block-two.png?v=1782219685&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_modules-block-two.png?v=1782219685&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_modules-block-two.png?v=1782219685&amp;width=1366 1366w" width="1366" height="564" loading="lazy"></p> </div> </div> </div> </div> </div><div id="shopify-section-template--19938098610329__one-landing-gpio"> <div> <div> <div> <h2>GPIO MODULES</h2> <div><div><p>DIY modules can be connected via the GPIO connector using norm 2.54 mm pin headers. To create the assembled equipment easier to transport around, the GPIO component is positioned alongside the equipment build and can be covered alongside a protective cover.</p><p>Check out&nbsp;<a href="https://en.mycoding.id/category/technology" target="_blank">GPIO specialized specification</a> and <a href="https://en.mycoding.id/category/technology" target="_blank">examples of GPIO modules</a>.</p></div></div> </div> <p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_gpio-desktop.png?v=1793720944&amp;width=2896" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_gpio-desktop.png?v=1793720944&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_gpio-desktop.png?v=1793720944&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_gpio-desktop.png?v=1793720944&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_gpio-desktop.png?v=1793720944&amp;width=1920 1920w, //flipper.net/cdn/shop/files/page_flipper-one_gpio-desktop.png?v=1793720944&amp;width=2896 2896w" width="2896" height="1918" loading="lazy"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_gpio-mobile.png?v=1793720952&amp;width=740" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_gpio-mobile.png?v=1793720952&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_gpio-mobile.png?v=1793720952&amp;width=740 740w" width="740" height="551" loading="lazy"> </p> </div> </div> </div><div id="shopify-section-template--19938098610329__one-landing-edisplay"> <div> <div> <div> <h2>Desktop Mode</h2> <p>Connect Flipper One to an external display alongside a sole USB-C cable for a complete desktop experience. Support for DisplayPort Alt Mode allows one cable to provision power, transmit video, and nexus USB peripherals specified as a keyboard and mouse simultaneously.</p> </div> <p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_display.png?v=1785164299&amp;width=5760" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_display.png?v=1785164299&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_display.png?v=1785164299&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_display.png?v=1785164299&amp;width=1920 1920w, //flipper.net/cdn/shop/files/page_flipper-one_display.png?v=1785164299&amp;width=2600 2600w, //flipper.net/cdn/shop/files/page_flipper-one_display.png?v=1785164299&amp;width=3586 3586w, //flipper.net/cdn/shop/files/page_flipper-one_display.png?v=1785164299&amp;width=4600 4600w, //flipper.net/cdn/shop/files/page_flipper-one_display.png?v=1785164299&amp;width=5760 5760w" width="5760" height="2840" loading="lazy" sizes="150vw"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_display-mobile.png?v=1785164297&amp;width=740" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_display-mobile.png?v=1785164297&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_display-mobile.png?v=1785164297&amp;width=740 740w" width="740" height="687" loading="lazy"> </p> </div> </div> </div><div id="shopify-section-template--19938098610329__one-landing-satellite"> <div> <div> <div> <h2>Satellite NTN Modem</h2> <h2> Satellite modem </h2> <p>NTN <a href="https://en.mycoding.id/category/technology" target="_blank" target="_blank">(Non-Terrestrial Networks)</a>&nbsp;&mdash; is a moon communication technology, a low-speed association designed for IoT devices, standardized by 3GPP as part of the 5G and LTE specifications. It uses the norm cellular stack, including SIM/eSIM authentication, roaming, and regular IP traffic.</p> </div> <p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_satellite-desktop.png?v=1785164298&amp;width=2896" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_satellite-desktop.png?v=1785164298&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_satellite-desktop.png?v=1785164298&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_satellite-desktop.png?v=1785164298&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_satellite-desktop.png?v=1785164298&amp;width=1920 1920w, //flipper.net/cdn/shop/files/page_flipper-one_satellite-desktop.png?v=1785164298&amp;width=2896 2896w" width="2896" height="1621" loading="lazy"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_satellite-mobile.png?v=1785164297&amp;width=740" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_satellite-mobile.png?v=1785164297&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_satellite-mobile.png?v=1785164297&amp;width=740 740w" width="740" height="1195" loading="lazy"> </p> <p>We desire to add NTN moon connectivity assistance to Flipper One to assistance popularize this innovation and provision engineers and enthusiasts a chance to activity alongside genuine moon infrastructure. <br>To create this happen, we're looking for a partner business akin <a href="https://en.mycoding.id/category/technology" target="_blank" target="_blank">Skylo</a>&nbsp;that's prepared to activity alongside us to add assistance for their moon network to our eSIM component and assistance us choose a particular <a href="https://en.mycoding.id/category/technology" target="_blank" target="_blank">NTN M.2 module</a>&nbsp;that we can officially support. <br> Read additional on the&nbsp;<a href="https://en.mycoding.id/category/technology" target="_blank" target="_blank">Modules &rarr; Satellite modem</a>&nbsp;page.</p> </div> </div> </div><div id="shopify-section-template--19938098610329__one-landing-wifi-chip"> <div> <div> <h2>Built-in Advanced Wi-Fi Chip</h2> <h2> Built-in Wi-Fi Chip </h2> <p>We desire to build the most versatile unified Wi-Fi into Flipper One &mdash; it needs to assistance all the features required for Wi-Fi network analysis, including detect manner and packet injection. For now, we've settled on the famous Mediatek MT7921U chipset. It's contemporary enough, supports three frequence bands, and ticks fair concerning all box. We're actively evaluation this part correct now and <a href="https://en.mycoding.id/category/technology" target="_blank" target="_blank">we'd affection you to associate in</a>.</p> <p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_wifi.png?v=1785164297&amp;width=2896" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_wifi.png?v=1785164297&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_wifi.png?v=1785164297&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_wifi.png?v=1785164297&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_wifi.png?v=1785164297&amp;width=1920 1920w, //flipper.net/cdn/shop/files/page_flipper-one_wifi.png?v=1785164297&amp;width=2896 2896w" width="2896" height="2227" loading="lazy"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_wifi-chip-mobile.png?v=1785164297&amp;width=740" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_wifi-chip-mobile.png?v=1785164297&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_wifi-chip-mobile.png?v=1785164297&amp;width=740 740w" width="740" height="566" loading="lazy"> </p> <div> <h3>Why MT7921AUN?</h3> <p>The identical chipset is used in the famous ALFA AWUS036AXML adapter, and there's a considerable community about the open-source MT7921U driver. The chief strengths of this chipset:</p> <div> <p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_wifi-chip-illustration.png?v=1785164296&amp;width=424" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_wifi-chip-illustration.png?v=1785164296&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_wifi-chip-illustration.png?v=1785164296&amp;width=424 424w" width="424" height="424" loading="lazy"></p><div> <ul><li>Modern Wi-Fi 6E: 802.11ax, 2x2 MIMO</li><li>Frequencies: 2.4 / 5 / 6 GHz bands</li><li>Open mainline Linux driver: mt7921u</li><li>Monitor manner support</li><li>Integrated Bluetooth 5.2</li></ul> </div> </div> </div> </div> </div> </div><div id="shopify-section-template--19938098610329__one-landing-esim"> <div> <div> <h2>BUILT-IN eSIM</h2> <div><p>Flipper One has a built-in eSIM part that comes pre&#8209;provisioned alongside a Flipper SIM data plan.</p><p>To use the eSIM data plan, you need to instal a 5G modem in the M.2 slot. You can additionally toggle between the built-in eSIM and a bodily SIM card.</p></div> <div> <div> <p><img src="https://flipper.net/cdn/shop/t/5/assets/one-esim-sim-icon.svg?v=142576394257534669311793721441" alt="" width="23" height="30" loading="lazy"></p><h3>What is Flipper SIM?</h3> </div> <p>We're operating on an experimental connectivity project for network geeks. Flipper SIM is a worldwide SIM cardstock for routers, phones, and IoT devices, alongside advanced features specified as always-on connectivity, outage-proof, traffic filtering, and network administration tools. We'll portion additional particulars soon!</p><p><span aria-disabled="true">Coming soon</span></p></div> </div> <p><img src="https://flipper.net/cdn/shop/files/page_flipper-one_esim.png?v=1793720928&amp;width=1990" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_esim.png?v=1793720928&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_esim.png?v=1793720928&amp;width=832 832w, //flipper.net/cdn/shop/files/page_flipper-one_esim.png?v=1793720928&amp;width=1200 1200w, //flipper.net/cdn/shop/files/page_flipper-one_esim.png?v=1793720928&amp;width=1920 1920w, //flipper.net/cdn/shop/files/page_flipper-one_esim.png?v=1793720928&amp;width=1990 1990w" width="1990" height="1949" loading="lazy"> <img src="https://flipper.net/cdn/shop/files/page_flipper-one_esim-mobile.png?v=1793720918&amp;width=804" alt="" srcset="//flipper.net/cdn/shop/files/page_flipper-one_esim-mobile.png?v=1793720918&amp;width=352 352w, //flipper.net/cdn/shop/files/page_flipper-one_esim-mobile.png?v=1793720918&amp;width=804 804w" width="804" height="974" loading="lazy"> </p> </div> </div> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/preparing-for-the-flipper-one-kickstarter-and-opening-pre-orders-75470</guid> <pubDate>Tue, 03 Nov 2026 20:32:13 +0700</pubDate> <author><![CDATA[support@mycoding.id (Doris Putra)]]></author> </item> <item> <title><![CDATA[Both Sizes of the Latest M5 MacBook Air Are $200 Off Right Now]]></title> <description><![CDATA[Both Sizes of the Latest M5 MacBook Air Are $200 Off Right Now. The 13-inch and 15-inch M5 MacBook Airs are the two $200 off onward of Black Friday.]]></description> <media:thumbnail url="https://lifehacker.com/imagery/articles/01KNHXW090TGXDQ96AQW67PM69/hero-image.jpg"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/both-sizes-of-the-latest-m5-macbook-air-are-200-off-right-now-75472</link> <content:encoded><![CDATA[<div class="leading-normal prose-sm m-0 line-clamp-5 font-normal">Daniel is Lifehacker's Shopping Editor covering tech deals and reviewing TVs, headphones, speakers, and projectors. He earned his master’s in reporting from Columbia University and has reported for the Miami Herald. He lives in Atlanta.</div> <hr class="custom-gradient-background my-6 h-[6px] max-w-[75px] border-0"> <p>Apple <a href="https://en.mycoding.id/category/technology" target="_blank" target="_blank">announced a slew of products</a> in March that ended up<a href="https://en.mycoding.id/category/technology" target="_blank" target="_blank"> expanding in price</a> afterward in June <a href="https://en.mycoding.id/category/technology" target="_blank" target="_blank">due to the RAM shortage</a>, including the MacBook Air alongside the M5 chip. These MacBooks arrive in the two 13-inch and 15-inch sizes, and if you're curious in either, it's a fine period to buy: Amazon is marketing the two correct now at a $200 discount. That brings the <a href="https://en.mycoding.id/category/technology" target="_blank" rel="nofollow sponsored" target="_blank" title="open in a new window">13-inch MacBook Air</a> to $1,099.99 (down from $1,299) and the <a href="https://en.mycoding.id/category/technology" target="_blank" rel="nofollow sponsored" target="_blank" title="open in a new window">15-inch MacBook Air</a> to $1,299 (originally $1,499), reaching their lowest prices since the June cost hikes, according to <a href="https://en.mycoding.id/category/technology" target="_blank" target="_blank">tracking tools</a>.</p><div class="shadow-b-2 mb-12 mt-10 rounded-md border-2 border-[#F0F0F0] px-6 py-2 shadow-lg md:px-12" role="region" aria-label="Products List" x-data=" false }"> <a href="https://en.mycoding.id/category/technology" target="_blank" data-commerce="1" target="_blank" rel="nofollow sponsored" data-parent-group="affiliate-link" title="(opens in a new window)" class="flex flex-col py-8 gap-5 border-dotted border-[#CFCFCE] cursor-default no-underline md:flex-row md:gap-y-2 md:py-7 border-b-2" data-ga-click="data-ga-click" data-ga-module="product-list" data-ga-element="offer" data-ga-item="offer-btn" data-ga-label="Apple 2026 MacBook Air 13-inch Laptop alongside M5 chip" data-ga-position="1" aria-label="Apple 2026 MacBook Air 13-inch Laptop alongside M5 part Product Card" x-cloak="x-cloak" x-show="showMore || 0 &lt; 3"> <div class="flex w-full gap-x-5"> <div class="gap-y-6"> <div class="gap-y-1"> <div class="leading-6"> Apple 2026 MacBook Air 13-inch Laptop alongside M5 chip </div> </div> <div class="gap-x-4"> <div class="justify-center font-sans leading-4 text-black"> <div class="justify-start"> <span class="font-bold"> $1,099.99 <span class="font-medium">at Amazon</span> </span> </div> <div class="justify-start"> <span class="text-sm line-through">$1,299.00</span> <span class="text-sm text-brand-green">Save $199.01</span> </div> </div> Get Deal </div> </div> <div class="order-1"> <img class="m-0 max-h-full max-w-full rounded-md" src="https://lifehacker.com/imagery/product/00MG1nFtNAXMYgoifcZx8gd/hero-image.fill.size_autoxauto.v1782404576.jpg" alt='Apple MacBook Air M5 13.6&quot; Laptop (16GB/512GB, Sky Blue)' width="auto" height="auto" loading="lazy"> </div> </div> Get Deal <div class="hidden font-sans leading-4 text-black"> <div class="justify-start"> <span class="font-bold"> $1,099.99 <span class="font-medium">at Amazon</span> </span> </div> <div class="justify-start"> <span class="text-sm line-through">$1,299.00</span> <span class="text-sm text-brand-green">Save $199.01</span> </div> </div> </a> <a href="https://en.mycoding.id/category/technology" target="_blank" data-commerce="1" target="_blank" rel="nofollow sponsored" data-parent-group="affiliate-link" title="(opens in a new window)" class="flex flex-col py-8 gap-5 border-dotted border-[#CFCFCE] cursor-default no-underline md:flex-row md:gap-y-2 md:py-7" data-ga-click="data-ga-click" data-ga-module="product-list" data-ga-element="offer" data-ga-item="offer-btn" data-ga-label="Apple 2026 MacBook Air 15-inch Laptop alongside M5 chip" data-ga-position="2" aria-label="Apple 2026 MacBook Air 15-inch Laptop alongside M5 part Product Card" x-cloak="x-cloak" x-show="showMore || 1 &lt; 3"> <div class="flex w-full gap-x-5"> <div class="gap-y-6"> <div class="gap-y-1"> <div class="leading-6"> Apple 2026 MacBook Air 15-inch Laptop alongside M5 chip </div> </div> <div class="gap-x-4"> <div class="justify-center font-sans leading-4 text-black"> <div class="justify-start"> <span class="font-bold"> $1,299.00 <span class="font-medium">at Amazon</span> </span> </div> <div class="justify-start"> <span class="text-sm line-through">$1,499.00</span> <span class="text-sm text-brand-green">Save $200.00</span> </div> </div> Get Deal </div> </div> <div class="order-1"> <img class="m-0 max-h-full max-w-full rounded-md" src="https://lifehacker.com/imagery/product/05dQgtzltKNbvGgAWOoH2qZ/hero-image.fill.size_autoxauto.v1773365647.jpg" alt=" Built for AI, 15.3-inch Liquid Retina Display, 16GB Unified Memory, 512GB SSD, 12MP Center Stage Camera, Touch ID, Wi-Fi 7; Midnight" width="auto" height="auto" loading="lazy"> </div> </div> Get Deal <div class="hidden font-sans leading-4 text-black"> <div class="justify-start"> <span class="font-bold"> $1,299.00 <span class="font-medium">at Amazon</span> </span> </div> <div class="justify-start"> <span class="text-sm line-through">$1,499.00</span> <span class="text-sm text-brand-green">Save $200.00</span> </div> </div> </a> SEE -1 MORE <svg class="-mt-[2px] inline-block size-3 fill-current text-brand-green"> </svg> </div> <p>The M5 MacBook Air is the finest laptop for most group in 2026, as they normally are alongside all new example whenever it comes to value for your money. In difference to the already outstanding M4 Airs, the M5 basis example has twice the retention at 512GB. The M5 part is mighty and makes the <a href="https://en.mycoding.id/category/technology" target="_blank" target="_blank" title="open in a new window" rel="noopener">performance equal smoother</a>, according to Mashable's review. The aluminum scheme is as fine as you'd anticipate from Apple's most famous portable laptop, keeping it lightweight and thin. It comes alongside a Liquid Retina display, Touch ID, a 12MP Center Stage Camera, and the Magic Keyboard. </p><div class="py-0" data-ga-click data-ga-template="Deals" data-ga-module="openweb_widget" data-ga-element="openweb_scroll" data-ga-item="openweb_scroll_midpage" x-data="&#039;, e); } } }" x-init="fetchCommentsCount()" x-cloak> <div class="absolute top-1/2 hidden w-full -translate-y-1/2 border-t-[1.5px] border-dashed border-black sm:block"></div> <div class="relative flex justify-center"> <div class="flex max-w-fit items-center gap-x-3 bg-white px-5"> <div class="relative"> <span class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 font-akshar text-sm font-medium text-black" aria-live="polite" x-show="hasComments" x-text="commentsCount"></span> <svg class="h-8 w-8 text-black" role="img" aria-hidden="true"> </svg> </div> <span class="text-sm font-medium text-black"> What do you think so far? </span> </div> </div> </div> <p>Typically, the inquiry would be whether to go for the slightly <a href="https://en.mycoding.id/category/technology" target="_blank" rel="nofollow sponsored" target="_blank" title="open in a new window">older M4 MacBook Air</a> or pay a bit additional for the newer M5 chip—but stated how durable it is to discover a new M4 laptop and that most refurbished ones are the identical cost as the M5 alongside 512GB of storage, it makes the choice to <a href="https://en.mycoding.id/category/technology" target="_blank" rel="nofollow sponsored" target="_blank" title="open in a new window">go alongside the M5</a> a no-brainer—especially alongside the $200 discount.</p><hr><div class="left-1/2 md:w-[780px] md:max-w-max md:-translate-x-1/2" x-data=" false }"> <div class="text-left"> <div class="rounded-tl-none"> <div class="rounded-tl-none"> <span class="text-2xl">Our Best Editor-Vetted Early Black Friday Deals Right Now</span> <div class="text-base"> <div x-show="1 || showAll"> <a href="https://en.mycoding.id/category/technology" target="_blank" data-commerce="1" target="_blank" rel="nofollow sponsored" data-parent-group="affiliate-link" title="(opens in a new window)" class="text-brand-green-700" data-ga-click="data-ga-click" data-ga-item="offer-group-item" data-ga-label="Apple AirPods Pro 3 Noise Cancelling Heart Rate Wireless Earbuds" data-ga-element="offer" data-ga-module="offer-group" data-ga-position="1"> Apple AirPods Pro 3 Noise Cancelling Heart Rate Wireless Earbuds </a> <span class="text-black"> — <span class="font-bold">$199.00</span> <span class="!text-sm"> (List Price $249.00) </span> </span> </div> <div x-show="1 || showAll"> <a href="https://en.mycoding.id/category/technology" target="_blank" data-commerce="1" target="_blank" rel="nofollow sponsored" data-parent-group="affiliate-link" title="(opens in a new window)" class="text-brand-green-700" data-ga-click="data-ga-click" data-ga-item="offer-group-item" data-ga-label='Apple iPad 11&quot; 128GB Wi-Fi Retina Tablet (Blue, 2025 Release)' data-ga-element="offer" data-ga-module="offer-group" data-ga-position="2"> Apple iPad 11" 128GB A16 WiFi Tablet (Blue, 2025) </a> <span class="text-black"> — <span class="font-bold">$399.99</span> <span class="!text-sm"> (List Price $449.00) </span> </span> </div> <div x-show="1 || showAll"> <a href="https://en.mycoding.id/category/technology" target="_blank" data-commerce="1" target="_blank" rel="nofollow sponsored" data-parent-group="affiliate-link" title="(opens in a new window)" class="text-brand-green-700" data-ga-click="data-ga-click" data-ga-item="offer-group-item" data-ga-label="Apple HomeView Smart Display (Silver, 2026 Release)" data-ga-element="offer" data-ga-module="offer-group" data-ga-position="3"> Apple HomeView Smart Display (Silver, 2026 Release) </a> <span class="text-black"> — <span class="font-bold">$299.00</span> <span class="!text-sm"> (List Price $299.00) </span> </span> </div> <div x-show="1 || showAll"> <a href="https://en.mycoding.id/category/technology" target="_blank" data-commerce="1" target="_blank" rel="nofollow sponsored" data-parent-group="affiliate-link" title="(opens in a new window)" class="text-brand-green-700" data-ga-click="data-ga-click" data-ga-item="offer-group-item" data-ga-label='TCL Tab 10 Gen 4 128GB 10.1&quot; Tablet (Dark Blue/Gray)' data-ga-element="offer" data-ga-module="offer-group" data-ga-position="4"> TCL Tab 10 Gen 4 128GB 10.1" Tablet (Dark Blue/Gray) </a> <span class="text-black"> — <span class="font-bold">$169.99</span> <span class="!text-sm"> (List Price $199.99) </span> </span> </div> <div x-show="1 || showAll"> <a href="https://en.mycoding.id/category/technology" target="_blank" data-commerce="1" target="_blank" rel="nofollow sponsored" data-parent-group="affiliate-link" title="(opens in a new window)" class="text-brand-green-700" data-ga-click="data-ga-click" data-ga-item="offer-group-item" data-ga-label='50&quot; Amazon Amber 4-Series 4K HDR10+ Smart Fire TV (2025 Model)' data-ga-element="offer" data-ga-module="offer-group" data-ga-position="5"> Amazon Ember 50" 4-Series alongside Fire TV (newest model) </a> <span class="text-black"> — <span class="font-bold">$309.99</span> <span class="!text-sm"> (List Price $399.99) </span> </span> </div> </div> </div> </div> <div class="px-6"> <span class="text-sm">Deals are selected by our commerce team</span> </div> </div> </div> <div class="leading-normal prose-sm mt-4 line-clamp-2"> <p></p><p>Covering tech deals and reviewing TVs, headphones, speakers, and projectors.</p><p><br></p> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/both-sizes-of-the-latest-m5-macbook-air-are-200-off-right-now-75472</guid> <pubDate>Tue, 03 Nov 2026 20:30:00 +0700</pubDate> <author><![CDATA[support@mycoding.id (Daniel Oropeza)]]></author> </item> <item> <title><![CDATA[Google Ad Tags In Server-Side GTM To Get Full IP Addresses]]></title> <description><![CDATA[Google Ad Tags In Server-Side GTM To Get Full IP Addresses. Google says ad tags in server-side Tag Manager volition obtain complete IP addresses during Analytics tags remain redacted. Here's what changes and how to redact. The post...]]></description> <media:thumbnail url="https://en.mycoding.id/site/assets/img/og-image.png"/> <category><![CDATA[Business]]></category> <link>https://en.mycoding.id/google-ad-tags-in-server-side-gtm-to-get-full-ip-addresses-75474</link> <content:encoded><![CDATA[<div class="sej-article-content gototop-pos "> <div class="sss2_sllo_o6"> </div> <div id="narrow-cont"><p>Server-side Google Tag Manager volition let tags for Google’s ad products obtain complete IP addresses starting Jan. 11, 2027, according to a <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">Google notice to advertisers</a>.</p> <p>The alter covers tags that dispatch data to Google Ads, Display &amp; Video 360, Search Ads 360 and Campaign Manager 360 from a server container. Google Analytics tags volition keep redacting IP addresses, the notice says.</p> <p>Google Ads expert Adriaan Dekker shared the notice on LinkedIn on Nov. 2. It carries no matter date, and Google’s <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">Tag Manager publish notes</a> don’t citation the alter as of Nov. 3.</p> <p>Advertisers alongside Google ad tags in a server receptacle have until Jan. 11 to decide whether those tags should get complete or partially redacted IP addresses.</p> <h2>What The Notice Changes</h2> <p>The notice, titled “Updates to network indication handling in server-side tagging,” explains that server containers “will passage from container-wide IP location redaction to idiosyncratic tag-level processing.” It afterward outlines four effects:</p><div data-total="6" id="SEJ_300x250_UnderPost_1-parent" class="content-unit sss2_sllo_o6 mmh-90-wrap"> <div class="mmh-90-inner"> <div class="mmh-90 flex-aligner"> <div data-adnumber="0" data-middle="no" data-p-slot="SEJ_300x250_UnderPost" data-slot="SEJ_300x250_UnderPost/SEJ_300x250_UnderPost_1" id="SEJ_300x250_UnderPost_1" class="sadslots"> </div> </div> </div> </div> <blockquote><p>Tags sending data to Google Ads, Display &amp; Video 360, Search Ads 360 and Campaign Manager 360 volition now obtain the complete IP address.</p></blockquote> <blockquote><p>Google Analytics tags volition continue to use IP redaction.</p></blockquote> <blockquote><p>Third-party tags volition keep autonomous authority complete the signals that they accept.</p></blockquote> <blockquote><p>Transformations can redact these signals before any tag accesses the data.</p></blockquote> <p>The notice addresses server containers only. It says nothing concerning the Google tag or web containers operating in the browser.</p> <p>Google’s publish notes display server-side Tag Manager could redact or anonymize IPs through Analytics server tags as of March 2021. Transformations, which edit or exclude event data before tags peruse it, followed in June 2023.</p> <p>The notice doesn’t explain how container-wide redaction is currently set up. Google’s <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">server-side setup leaf for the Google Ads conversion tag</a> says the tag sends “all the accessible conversion data to Google” unless transformations alter it, and, as of Nov. 3, doesn’t citation IP addresses.</p><div id="summita-wrapa_112" class="middle_p_txt"></div> <h2>How To Keep IP Addresses Redacted</h2> <p>The notice directs users to “our Help Centre part for detailed opt-out instructions” and does not disclose anywhere the nexus is pointing to based upon the screenshot provided. A Tag Manager Help Center page, <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">IP location redaction for server-side tagging</a>, shows an example of how to use transformations.</p> <p>The leaf outlines the chief steps to set up this functionality using transformations:</p> <ol> <li>Create a new Custom Template Variable that calls Google’s getAnonymizedIpAddress function.</li> <li>Create a new Augment event transformation that overwrites the ip_override site alongside the anonymized IP location from stage one.</li> </ol><div data-total="6" id="SEJ_300x250_UnderPost_3-parent" class="content-unit sss2_sllo_o6 mmh-90-wrap"> <div class="mmh-90-inner"> <div class="mmh-90 flex-aligner"> <div data-adnumber="2" data-middle="no" data-p-slot="SEJ_300x250_UnderPost" data-slot="SEJ_300x250_UnderPost/SEJ_300x250_UnderPost_3" id="SEJ_300x250_UnderPost_3" class="sadslots"> </div> </div> </div> </div> <p>This volition power the tags you choose (such as Google Ads or Floodlight). After completing these steps the leaf additionally states to inspect the results in Preview previous to deploying the changes to production. Additionally, the leaf explains that Analytics server tags “already use partial IP redaction by default.”</p> <p>Google’s <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">API reference</a> says the function zeroes the final octet of an IPv4 location and the final 80 bits of an IPv6 address. The Help leaf calls the outcome a “partially redacted IP.”</p> <p>Google added the function to its API citation following Oct. 12. The Internet Archive’s <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">Oct. 12 capture</a> of the leaf doesn’t catalog it. The live leaf does, and shows an Oct. 30 update date.</p> <p>Some third-party tags may need a Transformation of their own. The Help leaf notes that these tags can peruse IP addresses from tradition headers or event parameters fairly than from ip_override, so you’ll need to set the Transformation to mark the site all tag uses.</p><div data-total="6" id="SEJ_300x250_UnderPost_4-parent" class="content-unit sss2_sllo_o6 mmh-90-wrap"> <div class="mmh-90-inner"> <div class="mmh-90 flex-aligner"> <div data-adnumber="3" data-middle="no" data-p-slot="SEJ_300x250_UnderPost" data-slot="SEJ_300x250_UnderPost/SEJ_300x250_UnderPost_4" id="SEJ_300x250_UnderPost_4" class="sadslots"> </div> </div> </div> </div> <h2>Consent Requirements</h2> <p>Per the notice, advertisers using Google’s promotion products “must justify that appropriate end-user notices and legally required consents are in location before data gathering begins.” In addition, all advertisers using Google’s promotion products in the EEA “must strictly adhere” to Google’s <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">EU User Consent Policy</a>, and the guideline extends to those customers whose end users live in the United Kingdom and/or Switzerland. All customers in another areas anywhere privacy regulations use must prosecute those local requirements and phase terms.</p> <p>Google says the update “integrates privacy-enhancing technologies (PETs),” filters spam and invalid traffic, and volition enhance run performance.</p> <p>The notice does not provision data concerning how changes volition engage alongside consent manner as fine as the non-consenting requests that were stated in the Release Notes (Floodlight tags in server containers are stated to have begun sending in July 2025) nor was there any citation of anywhere or how lengthy complete IP addresses would be stored.</p> <p>The announced server-side alter is distinct from Google’s planned <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">Analytics data authority updates</a>; these volition encrypt IP addresses collected by the Google tag and SDK and continue them to connected Google Ads accounts, on dates Google plans to portion afterward this year.</p> <h2>Why This Matters</h2> <p>You can use server-side tagging to decide how much data goes alongside all tag as it leaves your servers, and Google’s notice determines whether its ad tags volition obtain complete IP addresses in this configuration.</p> <p>Prior to Jan. 11, assessment all Google Ads, Floodlight and third-party tags inner your server containers and acknowledge which IP site all tag is reading. The method outlined by Google in the assistance division on how to build a Transformation using preview evaluation is currently the documented resolution for keeping an ad tag’s IP partially masked. Your consent procedure should contain any IP data used by these tags.</p> <h2>Looking Ahead</h2> <p>Tag-level IP handling for Google server containers is scheduled to commencement January 11, 2027. There are no references to IP addresses in either of Google’s server-side pages on <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">Transformations</a> or <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">consent mode</a> as of Nov. 3.</p> <p>The Tag Manager publish notes may provision an authoritative notice whenever tag-level IP handling for server containers is accessible and the developer pages may have the detailed information. The Redaction assistance leaf have to be reviewed previous to creating your Transformation since that is how you do this now.</p> <p><em>Featured Image: Stockinq/Shutterstock</em></p> </div> <div id="bcats" class="bottom-cat narrow-cont"> <span class="sej-category boxed cat-label">Category</span> <a href="https://en.mycoding.id/category/business" target="_blank">News</a> <a href="https://en.mycoding.id/category/business" target="_blank">PPC</a> </div> <div class="sej-above-author-widget"> <div class="sej-widget clearfix"> <div class="sej-badge-box"> <a href="https://en.mycoding.id/category/business" target="_blank" data-placement="Under Article" aria-label="Add Search Engine Journal as a preferred origin on Google"> <svg class="sej-gps-g" viewbox="0 0 48 48" aria-hidden="true" focusable="false"> <path fill="#EA4335" d="M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"></path> <path fill="#4285F4" d="M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"></path> <path fill="#FBBC05" d="M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"></path> <path fill="#34A853" d="M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"></path> </svg> <span class="sej-gps-text">Add <b>SEJ</b> as a preferred origin on Google</span> </a> </div> </div> </div> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/google-ad-tags-in-server-side-gtm-to-get-full-ip-addresses-75474</guid> <pubDate>Tue, 03 Nov 2026 20:30:00 +0700</pubDate> <author><![CDATA[support@mycoding.id (Matt G. Southern)]]></author> </item> <item> <title><![CDATA[7 Mistakes Founders and CEOs Make When Talking to the Media (and How to Avoid Them)]]></title> <description><![CDATA[7 Mistakes Founders and CEOs Make When Talking to the Media (and How to Avoid Them). Even accomplished endeavor leaders create mistakes during media interviews. Here's how to evade seven average missteps that can undermine your credibility and cost...]]></description> <media:thumbnail url="https://www.entrepreneur.com/wp-content/uploads/sites/2/2026/10/talking-to-press-mistakes-1026_g2280433686.jpg"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/7-mistakes-founders-and-ceos-make-when-talking-to-the-media-and-how-to-avoid-them-75479</link> <content:encoded><![CDATA[<p> Opinions expressed by Entrepreneur contributors are their own. </p><div> <div> <h2>Key Takeaways</h2> <ul> <li>You don&rsquo;t have to answer all question, but you do need to cognize your ability and communicate it clearly.</li> <li>Prepare three key messages, guide alongside your chief point, and evade unnecessary jargon.</li> <li>Journalists desire helpful insights, not revenue pitches. Credibility and preparedness are essential.</li> </ul> </div> <p>Being a prosperous CEO doesn&rsquo;t automatically create you a awesome <a href="https://en.mycoding.id/category/technology" target="_blank">media</a> spokesperson. I&rsquo;ve coached executives throughout financial services and another expert industries who can guide organizations, navigate complex challenges and command a boardroom, yet battle to communicate efficiently alongside journalists.</p> <p>Even the most accomplished executives can undermine their credibility by talking too much, making unsupported claims or turning <a href="https://en.mycoding.id/category/technology" target="_blank">interviews</a> into revenue pitches. Fortunately, these mistakes are avoidable. Here are seven I see most frequently and how to forestall them.</p> <h2 id="h-1-thinking-you-have-to-be-an-expert-on-everything">1. Thinking you have to be an expert on everything</h2> <p>One of the biggest misconceptions executives have is that they must answer all inquiry a newsman asks. You don&rsquo;t. Even whenever a inquiry relates to your industry, it may autumn exterior your particular expertise.</p> <p>Rather than guessing, say, &ldquo;I&rsquo;m not the finest individual to answer that, but I can nexus you alongside person who is,&rdquo; or &ldquo;That&rsquo;s exterior my area of expertise, but what I can inform you is&hellip;&rdquo; <a href="https://en.mycoding.id/category/technology" target="_blank">Journalists</a> don&rsquo;t anticipate you to cognize everything. They do anticipate you to cognize what you&rsquo;re talking about. Of course, declining to estimate isn&rsquo;t the identical as evading a legitimate, difficult inquiry concerning your business.</p> <h2 id="h-2-talking-too-much-before-getting-to-the-point">2. Talking too much before getting to the point</h2> <p>A newsman asks a straightforward question, and the administrator launches into a five-minute clarification filled alongside background, caveats and unnecessary details. By the period they create their point, the newsman may have misplaced involvement or run out of time.</p> <p>My advice? <strong>Lead alongside the headline.</strong> Answer the inquiry immediately in one or two sentences, afterward stop. If the newsman wants more, recommendation an anecdote or compelling example that illustrates your point. Journalists affection <a href="https://en.mycoding.id/category/technology" target="_blank">stories</a>, but don&rsquo;t inter your chief communication below layers of explanation. If the newsman remembers lone one sentence, create certain it&rsquo;s the one that matters.</p> <h2 id="h-3-failing-to-prepare-3-key-messages">3. Failing to prepared 3 key messages</h2> <p>Before all media interview, I trainer clients to acknowledge three key messages they desire to communicate. Not 10. Not 15. Three. These power connect to your business, expertise, merchandise or the matter being discussed.</p> <p>Ask yourself: If lone three things I say create it into the story, what should they be? Even whenever a newsman calls unexpectedly on deadline, it&rsquo;s sensible to ask, &ldquo;Can I call you rear in five minutes?&rdquo; Use that period to arrange your thoughts, assuming the reporter&rsquo;s deadline allows it.</p> <p>Don&rsquo;t be fearful to fortify crucial messages naturally throughout the conversation. <a href="https://en.mycoding.id/category/technology" target="_blank">Preparation</a> isn&rsquo;t concerning memorizing a script; it&rsquo;s concerning knowing what matters before the discussion begins.</p> <h2 id="h-4-using-jargon-and-underestimating-the-journalist">4. Using terminology and underestimating the journalist</h2> <p>Financial services, healthcare, biotechnology and another specialized industries are filled alongside acronyms, credentials and specialized terminology. But fair since a term is acquainted to you doesn&rsquo;t average the newsman understands it.</p> <p>I advance executives to explain complex concepts as although they&rsquo;re talking to a family associate about the meal table. Could your mother, grandma or 10-year-old comprehend your point? If not, simplify it.</p> <p>And don&rsquo;t confuse a journalist&rsquo;s unfamiliarity alongside <a href="https://en.mycoding.id/category/technology" target="_blank">industry terminology</a> for a deficiency of intelligence. Reporters shield multiple subjects, frequently under tight deadlines. A inquiry that seems apparent to you may be exactly what their readers need answered. You&rsquo;re the subject-matter expert. Help them understand.</p> <h2 id="h-5-turning-the-interview-into-a-commercial">5. Turning the discussion into a commercial</h2> <p>A media discussion <a href="https://en.mycoding.id/category/technology" target="_blank">isn&rsquo;t a revenue presentation</a>. Journalists aren&rsquo;t interviewing you to comprehend how fantastic your business is. They&rsquo;re looking for information, viewpoint and insights that assistance them inform a compelling story.</p> <p>Statements akin &ldquo;We&rsquo;re the finest in the industry&rdquo; or &ldquo;Our resolute offers unparalleled service&rdquo; aren&rsquo;t particularly useful. Excessive self-promotion can immediately undermine your <a href="https://en.mycoding.id/category/technology" target="_blank">credibility</a>.</p> <p>Instead, portion a amazing insight, explain an emerging trend, recommendation a contrarian viewpoint or provision a real-world example. It&rsquo;s fine to provision backdrop concerning your firm, but don&rsquo;t hijack the conversation alongside a commercial. </p> <p>The finest media sources create the journalist&rsquo;s narrative better, not their own business audio bigger.</p> <h2 id="h-6-making-claims-you-can-t-substantiate">6. Making claims you can&rsquo;t substantiate</h2> <p>Unsupported statistics, exaggerated claims and overconfident predictions can quickly damage your credibility, particularly whenever discussing financial markets, <a href="https://en.mycoding.id/category/technology" target="_blank">economic conditions</a> or another complex subjects anywhere forecasts are inherently uncertain.</p> <p>If you citation a statistic, cognize anywhere it came from and be prepared to provision the source. If you&rsquo;re making a prediction, differentiate your opinion from established fact. And if you don&rsquo;t cognize an answer, say so. There&rsquo;s nothing incorrect alongside telling a reporter, &ldquo;I don&rsquo;t have that fig in forefront of me, but I can inspect and prosecute up.&rdquo;</p> <p>Journalists recall sources they can trust. Don&rsquo;t provision them a logic to inquiry yours.</p> <h2 id="h-7-forgetting-that-everything-you-say-could-become-part-of-the-story">7. Forgetting that everything you say could rotate into part of the story</h2> <p>When speaking alongside a journalist, assume you&rsquo;re on the record. That includes informal remarks, offhand observations and comments made before or following the ceremonial interview.</p> <p>I powerfully alert executives concerning going &ldquo;off the record.&rdquo; Many misunderstand what that method or assume they can province item off the document following saying it. They can&rsquo;t. Such arrangements necessitate mutual accord before data is shared, and I mostly advise clients to evade them unless there&rsquo;s a compelling logic and plainly established terms.</p> <p>The safest method is simple: Don&rsquo;t say item to a newsman that you wouldn&rsquo;t be comfortable seeing in imprint or hearing repeated publicly.</p> <h2 id="h-the-best-interviews-are-conversations-not-performances">The finest interviews are conversations, not performances</h2> <p>A <a href="https://en.mycoding.id/category/technology" target="_blank">successful media interview</a> isn&rsquo;t concerning demonstrating how intelligent you are, answering all inquiry absolutely or finding opportunities to advance your business. It&rsquo;s concerning being a credible, informed and helpful source.</p> <p>The finest spokespeople prepared without sounding rehearsed, recommendation insights fairly than commercials and cognize whenever to halt talking. Ultimately, being quotable isn&rsquo;t concerning saying more. <strong>It&rsquo;s concerning having item meaningful to say and knowing how to say it clearly.</strong></p> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/7-mistakes-founders-and-ceos-make-when-talking-to-the-media-and-how-to-avoid-them-75479</guid> <pubDate>Tue, 03 Nov 2026 20:30:00 +0700</pubDate> <author><![CDATA[support@mycoding.id (Amiee Watts)]]></author> </item> <item> <title><![CDATA[Introduction to Programming in ATS]]></title> <description><![CDATA[Introduction to Programming in ATS. Comments]]></description> <media:thumbnail url="https://en.mycoding.id/site/assets/img/og-image.png"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/introduction-to-programming-in-ats-75471</link> <content:encoded><![CDATA[<a href="https://en.mycoding.id/category/technology" target="_blank">Comments</a>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/introduction-to-programming-in-ats-75471</guid> <pubDate>Tue, 03 Nov 2026 20:25:18 +0700</pubDate> <author><![CDATA[support@mycoding.id (Doris Putra)]]></author> </item> <item> <title><![CDATA[How To Create Demand You Can Actually Convert (And Prove)]]></title> <description><![CDATA[How To Create Demand You Can Actually Convert (And Prove). Discover productive strategies to create petition and measure results for your B2B promotion campaigns successfully. The article How To Create Demand You Can Actual...]]></description> <media:thumbnail url="https://en.mycoding.id/site/assets/img/og-image.png"/> <category><![CDATA[Business]]></category> <link>https://en.mycoding.id/how-to-create-demand-you-can-actually-convert-and-prove-75475</link> <content:encoded><![CDATA[<div class="sej-article-content gototop-pos "> <div id="regWatch" class="sej-bigmark-wrap sej-bigmark-wrap--form"> <div> <div class="sej-webinar-recap-form"> <div class="sej-spinner-outer"> <div class="form-spinner-overlay"> <div class="spinner"></div> </div> <p class="text-center dnone notice center-align"></p> <h2 class="sej-web-form-h">Watch On-Demand, Now</h2> <div class="form-group"> First Name (*) <div class="sej_error_message"></div> </div> <div class="form-group"> Last Name (*) <div class="sej_error_message"></div> </div> <div class="form-group"> Work Email (*) <div class="sej_error_message"></div> </div> <div class="form-group cont_COMPANY "> Company (*) <div> </div> </div> <div class="form-group cont_COMPANY-SIZE "> Company Size (*) <div> --- 1-9 10-25 26-100 101-250 251-499 500-999 1000+ </div> </div> <div class="form-group cont_JOB-TITLE "> Job Title (*) <div> --- Agency Account Coordinator/Executive Agency Manager/Director Agency Owner/Partner Analytics Manager/Professional Brand Manager/Director Brand Professional Content Coordinator Content Manager/Director Demand Gen/Lead Gen Professional Ecommerce Strategist IT Manager/Director IT Professional Marketing Director / CMO / VP Marketing Manager Marketing Professional Media Buyer Paid Search Manager/Director Paid Search Professional Paid Social Strategist SEO Director SEO Manager SEO Professional Sales Executive/Manager/Director Social Media Manager/Director Social Media Professional UX/Designer/Developer Web Developer Other </div> </div> <div class="form-group cont_INDUSTRY "> Industry (*) <div> --- Agency (Marketing &amp; Advertising) Automotive Construction Consumer Electronics Consumer Goods &amp; Services Education &amp; Training Entertainment Financial Services Health, Wellness, &amp; Fitness Hospital &amp; Healthcare Household Services Internet Software &amp; Services Legal Logistics &amp; Fulfillment Services Manufacturing Marketing Software Provider Media &amp; Publishing Professional Services Real Estate Restaurants Retail &amp; Ecommerce Technology Transportation Travel &amp; Hospitality Other </div> </div> <div class="form-group cont_COUNTRY hide-block"> Country <div> Afghanistan Albania Algeria American Samoa Andorra Angola Anguilla Antarctica Antigua and Barbuda Argentina Armenia Aruba Australia Austria Azerbaijan Bahamas Bahrain Bangladesh Barbados Belarus Belgium Belize Benin Bermuda Bhutan Bolivia, Plurinational State of Bonaire, Sint Eustatius and Saba Bosnia and Herzegovina Botswana Bouvet Island Brazil British Indian Ocean Territory Brunei Darussalam Bulgaria Burkina Faso Burundi Cambodia Cameroon Canada Cape Verde Cayman Islands Central African Republic Chad Chile China Christmas Island Cocos (Keeling) Islands Colombia Comoros Congo Congo, The Democratic Republic of the Cook Islands Costa Rica Croatia Cuba Curaçao Cyprus Czech Republic Côte d'Ivoire Denmark Djibouti Dominica Dominican Republic Ecuador Egypt El Salvador Equatorial Guinea Eritrea Estonia Ethiopia Falkland Islands (Malvinas) Faroe Islands Fiji Finland France French Guiana French Polynesia French Southern Territories Gabon Gambia Georgia Germany Ghana Gibraltar Greece Greenland Grenada Guadeloupe Guam Guatemala Guernsey Guinea Guinea-Bissau Guyana Haiti Heard Island and McDonald Islands Holy See (Vatican City State) Honduras Hong Kong Hungary Iceland India Indonesia Iran, Islamic Republic of Iraq Ireland Isle of Man Israel Italy Jamaica Japan Jersey Jordan Kazakhstan Kenya Kiribati Korea, Democratic People's Republic of Korea, Republic of Kuwait Kyrgyzstan Lao People's Democratic Republic Latvia Lebanon Lesotho Liberia Libya Liechtenstein Lithuania Luxembourg Macao Macedonia, Republic of Madagascar Malawi Malaysia Maldives Mali Malta Marshall Islands Martinique Mauritania Mauritius Mayotte Mexico Micronesia, Federated States of Moldova, Republic of Monaco Mongolia Montenegro Montserrat Morocco Mozambique Myanmar Namibia Nauru Nepal Netherlands New Caledonia New Zealand Nicaragua Niger Nigeria Niue Norfolk Island Northern Mariana Islands Norway Oman Pakistan Palau Palestinian Territory, Occupied Panama Papua New Guinea Paraguay Peru Philippines Pitcairn Poland Portugal Qatar Romania Russian Federation Rwanda Réunion Saint Barthélemy Saint Helena, Ascension and Tristan da Cunha Saint Kitts and Nevis Saint Lucia Saint Martin (French part) Saint Pierre and Miquelon Saint Vincent and the Grenadines Samoa San Marino Sao Tome and Principe Saudi Arabia Senegal Serbia Seychelles Sierra Leone Singapore Sint Maarten (Dutch part) Slovakia Slovenia Solomon Islands Somalia South Africa South Georgia and the South Sandwich Islands South Sudan Spain Sri Lanka Sudan Suriname Svalbard and Jan Mayen Swaziland Sweden Switzerland Syrian Arab Republic Taiwan Tajikistan Tanzania, United Republic of Thailand Timor-Leste Togo Tokelau Tonga Trinidad and Tobago Tunisia Turkey Turkmenistan Turks and Caicos Islands Tuvalu Uganda Ukraine United Arab Emirates United Kingdom United States United States Minor Outlying Islands Uruguay Uzbekistan Vanuatu Venezuela, Bolivarian Republic of Viet Nam Virgin Islands, British Virgin Islands, U.S. Wallis and Futuna Western Sahara Yemen Zambia Zimbabwe Åland Islands </div> </div> <div class="form-group cont_CITY hide-block"> City <div> </div> </div> <div class="form-group cont_STATE hide-block"> State <div> </div> </div> <div class="form-group cont_ARE-YOU-CURRENTLY-USING-SOFTWARE-TO-TRACK-LEADS? "> Are you currently using application to track leads? (*) <div> --- Yes No </div> </div> <div class="form-group cont_ARE-YOU-CURRENTLY-USING-AI-OR-SOFTWARE-TO-ANALYZE-CONVERSATIONS? "> Are you currently using AI or application to analyze conversations? (*) <div> --- Yes No </div> </div> <div class="form-group cont_I-WANT-TO-RECEIVE-THE-LATEST-SEARCH-NEWS-AND-UPDATES-FROM-SEJ.-SEND-ME-ACTIONABLE-INSIGHTS-FROM-INDUSTRY-LEADING-EXPERTS. "> I desire to obtain the latest hunt news and updates from SEJ. Send me actionable insights from industry foremost experts. <div> </div> </div> <div class="form-group cont_TOPIC-OF-INTERESTS hide-block"> Topic of Interests <div> </div> </div> <div class="form-group cont_REG_INT hide-block"> REG_INT <div> </div> </div> <div class="form-group cont_REG_FIRST hide-block"> REG_FIRST <div> </div> </div> <div class="form-group cont_REG_SOURCE hide-block"> REG_SOURCE <div> </div> </div> <div class="form-group cont_RESPONDED-TO-SURVEY hide-block"> Responded to Survey <div> </div> </div> <div class="form-group text-center"> <div id="html_captchat" data-captcha-vendor="turnstile" data-sitekey="0x4AAAAAAA8F91ihKb_-uZL8" data-recaptcha-sitekey="6Ld56U8UAAAAAAK7l1mIt-JmGrwom0a17KmgDZif"></div> <div class="text-center captcha_error error_message final_message dnone text-center clear"> Please complete the captcha challenge! </div> </div> <div class="text-center form-group webinar-reg-button"> </div> <div> </div> </div> </div> </div> </div> <div class="bigmarker-footer"> <div class="bigmarker-footer-in"> <small>By clicking the "Sign Up" button, I concur and obtain the <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank">Content Agreement</a> and <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank">Privacy Policy</a> of Alpha Brand Media. Please inspect your inbox for our <span class="green-color">confirmation email</span>.</small> </div> <div class="bigmarker-footer-in"> <small> Search Engine Journal uses the data you provision to communication you concerning our applicable satisfied and promotions. Search Engine Journal volition portion the data you provision alongside our partner, <em>CallRail</em>, who volition use your data for akin purposes. You can unsubscribe from communications from Search Engine Journal at any time. </small> </div> </div> <div id="narrow-cont"><p>Adding another B2B promotion conduit lone helps if your squad can grasp the involvement it creates and measure whether that funding is working. A promising traffic study is not the identical as evidence that a run generated additional demand.</p> <p>In <a href="https://en.mycoding.id/category/business" target="_blank">How To Create Demand You Can Actually Convert (And Prove)</a>, Shaun Bruno, Senior Growth Marketing Manager at CallRail, and Colin Saunders of Matter Made explained how they approached conduit selection, secured backing for tests, and measured results before scaling spend.</p> <h2>Build The Conversion Foundation Before Adding Reach</h2> <p>Bruno described how CallRail simplified its promotion mix about paid hunt and the landing pages needed to change existing demand. The squad afterward strengthened measurement, clarified its ideal client profile, and built out deliberation and retargeting programs before investing additional in awareness.</p> <p>That sequence mattered additional than copying CallRail’s complete conduit mix. As Shaun Bruno put it:</p> <blockquote><p>“But the crucial takeaway is that you don’t need to run all these channels.”</p></blockquote> <p>See the complete on-demand clip at <a href="https://en.mycoding.id/category/business" target="_blank">11:40</a>.</p> <p>His broader item was that the base of the chimney needed to assistance the petition created at the top. More attain would not repair a landing page, offer, or follow-up procedure that unsuccessful to change curious buyers.</p> <h2>Choose Channels Around Buyer Behavior</h2> <p>Saunders distinguished between the purchasing patterns his agency encountered among smaller businesses and endeavor accounts. For SMB and mid-market programs alongside existing hunt demand, paid hunt offered a way to attain group actively researching a resolution and established acquisition benchmarks.</p> <p>Enterprise programs frequently needed additional learning and period to affect a purchasing group, so his squad leaned additional heavily on paid social. He presented these as starting approaches, not a worldwide conduit divided for all business.</p> <p>The conduit decision additionally depended on what the buyer would encounter following the click. Saunders connected positioning, the offer, and creative: a demo request, an instructional resource, and a merchandise video served distinct needs. He described evaluation imaginative and landing-page satisfied against the audience’s phase fairly than expecting one asset to do all job.</p> <h2>Get Agreement On The Test Before Requesting More Budget</h2> <p>The presenters emphasized defining a test’s endeavor intent before pitching a new platform. Saunders outlined three requirements: acknowledge the problem, concur on the measure and reporting cadence, and set a timeframe alongside a decision date.</p> <p>For a lean budget, he recommended narrowing the spectators or earth discipline alternatively of spreading expend throughout a national market. A smaller test could examine a particular segment, provided guidance understood what it could disclose and how lengthy it needed to run.</p> <p>He additionally stressed connecting promotion data alongside CRM outcomes. Form submissions could provision an first signal, but the squad needed visibility into whether those leads became opportunities and customers. That difference helped rotate a petition for additional traffic into a endeavor case for additional investment.</p> <h2>Use A Holdout To Challenge Encouraging Signals</h2> <p>Bruno’s connected TV example showed why <a href="https://en.mycoding.id/category/business" target="_blank">the session’s evaluation walkthrough</a> went beyond a run dashboard. CallRail initially saw encouraging website visits and test action from its CTV aviator through LinkedIn. Bruno cautioned that an ad visibility followed by a conversion did not established that the ad caused it.</p> <p>To examine further, the squad ran a 60-day holdout test alongside an spectators eligible for CTV visibility and a authority collection that was not. Both groups entered the identical downstream campaigns. Bruno described using the difference to assistance a broader rollout, afterward monitoring acquisition effectiveness as expend increased.</p> <p>The helpful instruction was the progression: first signals justified a additional rigorous experiment, and that test informed the next funding decision. The aviator was a case study, not a justify that another advertiser would see the identical result.</p> <h2>Keep Attribution Signals Separate</h2> <p>Bruno divided three ways of examining marketing’s contribution:</p> <ul> <li><strong>Direct attribution:</strong> A run or communication could be tied to a conversion, without necessarily explaining what archetypal motivated the buyer.</li> <li><strong>Influence attribution:</strong> Earlier video, social, or website interactions helped depict the way before a conversion.</li> <li><strong>Correlated signals:</strong> Changes in tagged search, straightforward traffic, or acquisition quantity offered directional evidence to examine alongside a conduit test.</li> </ul> <p>These views answered distinct questions. A increase in tagged hunt could fortify the case for additional investigation; it was not interchangeable alongside a immediately attributed conversion or evidence of incremental revenue.</p> <p>In their conversation of emerging LLM advertising, Saunders described constricted reporting and the difficulty of evaluating indirect effects. The presenters additionally discussed self-reported attribution as another origin of context, fairly than treating any one measure as the entire story.</p> <h2>Combine Focused Prospecting With Broader Retargeting</h2> <p>During Q&amp;A, an attendee asked whether Saunders’ advice to commencement endeavor programs alongside paid social meant LinkedIn. He stated LinkedIn was typically the starting point, during paid hunt motionless had a role.</p> <p>Bruno added a difference between finding new prospects and re-engaging group who had already visited the site. The apt location of the buyer guided prospecting; retargeting could attain that identical individual elsewhere. Saunders described YouTube retargeting as one way to commencement evaluation the conduit before expanding into prospecting.</p> <p><a href="https://en.mycoding.id/category/business" target="_blank">Watch the on-demand webinar</a> for the complete channel-planning discussion, CTV experiment, and measure examples. To use the meeting to your next proposal, build a test concise that covers:</p> <ul> <li>The buyer section and endeavor issue the new conduit would address.</li> <li>The offer, landing-page experience, and follow-up needed to grasp interest.</li> <li>The chief outcome, supporting signals, and difference that would communicate the decision.</li> <li>The budget, test window, reporting cadence, and date to decide whether to expand, change, or stop.</li> </ul> <div class="sej-join-box"> <h2 class="text-center m-top-0">Join Us For Our Next Webinar!</h2> <h3>Live Website Audit: SEO Fixes for AI Search Visibility in 2027</h3> <p>Watch Loren Baker, originator of Search Engine Journal, audit a genuine website live. He'll display how he finds what's holding a location rear in Google and AI search, and how he decides what to fix first.</p> <div class="text-center m-bot-20"> <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank">Reserve my Seat</a> </div> </div> </div> <div id="bcats" class="bottom-cat narrow-cont"> <span class="sej-category boxed cat-label">Category</span> <a href="https://en.mycoding.id/category/business" target="_blank">Digital Marketing</a> <a href="https://en.mycoding.id/category/business" target="_blank">Paid Media</a> <a href="https://en.mycoding.id/category/business" target="_blank">Webinar</a> </div> <div class="sej-above-author-widget"> <div class="sej-widget clearfix"> <div class="sej-badge-box"> <a href="https://en.mycoding.id/category/business" target="_blank" data-placement="Under Article" aria-label="Add Search Engine Journal as a preferred origin on Google"> <svg class="sej-gps-g" viewbox="0 0 48 48" aria-hidden="true" focusable="false"> <path fill="#EA4335" d="M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"></path> <path fill="#4285F4" d="M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"></path> <path fill="#FBBC05" d="M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"></path> <path fill="#34A853" d="M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"></path> </svg> <span class="sej-gps-text">Add <b>SEJ</b> as a preferred origin on Google</span> </a> </div> </div> </div> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/how-to-create-demand-you-can-actually-convert-and-prove-75475</guid> <pubDate>Tue, 03 Nov 2026 20:04:28 +0700</pubDate> <author><![CDATA[support@mycoding.id (Jennifer Mcdonald)]]></author> </item> <item> <title><![CDATA[Before He Was a Billionaire, 24-Year-Old Mark Cuban Had 5 Roommates and Lived in ‘Hell Hotel’]]></title> <description><![CDATA[Before He Was a Billionaire, 24-Year-Old Mark Cuban Had 5 Roommates and Lived in ‘Hell Hotel’. The forthcoming billionaire’s first living circumstance was a far cry from luxury.]]></description> <media:thumbnail url="https://www.entrepreneur.com/wp-content/uploads/sites/2/2026/11/Mark-Cuban-GettyImages-2263715743.jpg"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/before-he-was-a-billionaire-24-year-old-mark-cuban-had-5-roommates-and-lived-in-hell-hotel-75480</link> <content:encoded><![CDATA[<div> <div> <h2>Key Takeaways</h2> <ul> <li>At age 24, Mark Cuban shared a three-bedroom flat in Dallas alongside five roommates.</li> <li>The billionaire entrepreneur, who is now 68, slept on the area flat for two years and kept his belongings in a corner.</li> <li>Split six ways, the apartment&rsquo;s rent amounted to concerning $400 per person.</li> </ul> </div> <p>Before earning billions,<a href="https://en.mycoding.id/category/technology" target="_blank"> Mark Cuban</a> lived alongside five roommates and had no bed of his own in a cramped three-bedroom, two-bathroom flat in Dallas, Texas.</p> <p>Cuban disclosed<a href="https://en.mycoding.id/category/technology" target="_blank"> in an X post</a> before this week that he lived in a 1,352-square-foot flat for two years. He was &ldquo;the final one in&rdquo; to the arrangement, so he got<a href="https://en.mycoding.id/category/technology" target="_blank"> the flat to sleep on</a> and &ldquo;a place in the corner&rdquo; of a area to put his belongings.</p> <p>Cuban stated that he honestly &ldquo;didn&rsquo;t intellect living alongside 5 roommates.&rdquo;</p> <p>&ldquo;We all were in the identical boat,&rdquo; he wrote. &ldquo;I moved in whenever I was 24. Lived there or throughout the way for 2 years before I lone needed one roommate.&rdquo;</p> <p>He acknowledged that not everyone would be satisfied alongside the living arrangements.</p> <p>&ldquo;If it&rsquo;s not <a href="https://en.mycoding.id/category/technology" target="_blank">the manner for you</a>. So be it,&rdquo; he wrote. &ldquo;If you don&rsquo;t think fair <a href="https://en.mycoding.id/category/technology" target="_blank">getting any job</a> to get started is the correct occupation choice for you. Do what you think is right. I don&rsquo;t attention and I don&rsquo;t <a href="https://en.mycoding.id/category/technology" target="_blank">judge</a>.&rdquo;</p> <p>The cost of renting the flat was $2,388, the &ldquo;same in 2026 dollars&rdquo; as whenever Cuban lived there. Split six ways, all individual was<a href="https://en.mycoding.id/category/technology" target="_blank"> paying concerning $400 for rent</a>.</p> <p>The forthcoming billionaire&rsquo;s first living circumstance had an apt nickname to match.&ldquo;I didn&rsquo;t say I was <a href="https://en.mycoding.id/category/technology" target="_blank">living in a aspiration apartment</a>,&rdquo; he wrote. &ldquo;Everyone called it the Hell Hotel.&rdquo;</p> <h2 id="h-cuban-offers-other-advice-for-early-career-professionals">Cuban offers another direction for early-career professionals</h2> <p>Cuban regularly shares occupation direction on X, encouraging young workers to keep learning.&nbsp;</p> <p>In June, <a href="https://en.mycoding.id/category/technology" target="_blank">Cuban urged latest graduates</a> to regard small- and medium-sized businesses fairly than concentration on big companies. His reasoning was that smaller companies may need assistance putting AI to work, giving newcomers a chance to create an immediate, outsized contribution to their workplaces.&nbsp;</p> <p>Cuban stated that new hires could instruct those businesses how to use AI agents to grip processes they earlier lacked the period or prosperity to tackle. &ldquo;Entrepreneurial companies volition affection the value you add,&rdquo; Cuban wrote.</p> <p>Cuban became a <a href="https://en.mycoding.id/category/technology" target="_blank">millionaire in 1990</a>, at age 32, whenever he sold his device consulting business, MicroSolutions, to CompuServe for $6 million. He afterward co-founded AudioNet, which afterward <a href="https://en.mycoding.id/category/technology" target="_blank">became Broadcast.com</a>. Yahoo acquired the business for $5.7 milliard in 1999, making Cuban a <a href="https://en.mycoding.id/category/technology" target="_blank">billionaire at age 40</a>.&nbsp;</p> <p>According to the <a href="https://en.mycoding.id/category/technology" target="_blank">Bloomberg Billionaires Index</a>, the 68-year-old Cuban is now among the richest group in the world, alongside a net value of $10.7 billion.&nbsp;</p> <p>Cuban has additionally earlier discussed keeping his individual existence comparatively average notwithstanding his wealth. In a 2023 discussion on <a href="https://en.mycoding.id/category/technology" target="_blank"><em>The Really Good Podcast</em></a>, he stated he preferred doing chores and driving himself to hiring group for everything.</p> <p>&ldquo;I fair try to be the identical person, I mean, as I was whenever I was poor, middle, and rich,&rdquo; he said.</p> </div><div> <div> <h2>Key Takeaways</h2> <ul> <li>At age 24, Mark Cuban shared a three-bedroom flat in Dallas alongside five roommates.</li> <li>The billionaire entrepreneur, who is now 68, slept on the area flat for two years and kept his belongings in a corner.</li> <li>Split six ways, the apartment&rsquo;s rent amounted to concerning $400 per person.</li> </ul> </div> <p>Before earning billions,<a href="https://en.mycoding.id/category/technology" target="_blank"> Mark Cuban</a> lived alongside five roommates and had no bed of his own in a cramped three-bedroom, two-bathroom flat in Dallas, Texas.</p> <p>Cuban disclosed<a href="https://en.mycoding.id/category/technology" target="_blank"> in an X post</a> before this week that he lived in a 1,352-square-foot flat for two years. He was &ldquo;the final one in&rdquo; to the arrangement, so he got<a href="https://en.mycoding.id/category/technology" target="_blank"> the flat to sleep on</a> and &ldquo;a place in the corner&rdquo; of a area to put his belongings.</p> <p>Cuban stated that he honestly &ldquo;didn&rsquo;t intellect living alongside 5 roommates.&rdquo;</p> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/before-he-was-a-billionaire-24-year-old-mark-cuban-had-5-roommates-and-lived-in-hell-hotel-75480</guid> <pubDate>Tue, 03 Nov 2026 20:02:41 +0700</pubDate> <author><![CDATA[support@mycoding.id (Sherin Shibu)]]></author> </item> <item> <title><![CDATA[This Apple Watch Ultra 4 Is $100 Off Right Now]]></title> <description><![CDATA[This Apple Watch Ultra 4 Is $100 Off Right Now. Apple’s rugged GPS + Cellular 49mm Black Titanium example is now downward to $699.99.]]></description> <media:thumbnail url="https://lifehacker.com/imagery/articles/01M6HB7AA8MECSW2VH3PXMW33B/hero-image.jpg"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/this-apple-watch-ultra-4-is-100-off-right-now-75473</link> <content:encoded><![CDATA[<div class="leading-normal prose-sm m-0 line-clamp-5 font-normal"></div> <hr class="custom-gradient-background my-6 h-[6px] max-w-[75px] border-0"> <p>The <a href="https://en.mycoding.id/category/technology" target="_blank" rel="nofollow sponsored" target="_blank" title="open in a new window">Apple Watch Ultra 4</a> lone launched in September, and it’s already seeing an first <a href="https://en.mycoding.id/category/technology" target="_blank" target="_blank">Black Friday discount</a> of $100 on Amazon, bringing it downward to $699.99 (originally $799) and matching its record-low price. This first agreement on Apple’s rugged smartwatch includes perks akin multi-day power division existence and dual-frequency GPS. Note that lone the ample size is on sale. </p><div class="py-6"> <a href="https://en.mycoding.id/category/technology" target="_blank" data-commerce="1" target="_blank" rel="nofollow sponsored" data-parent-group="affiliate-link" title="(opens in a new window)" class="cursor-default no-underline" data-ga-click="data-ga-click" data-ga-module="shop-card" data-ga-element="offer" data-ga-item="offer-btn" data-ga-label="Apple Watch Ultra 4"> <div class="px-8"> <div class="grow"> <div class="leading-6">Apple Watch Ultra 4 </div> <div class="justify-between"> <div class="self-end"> <div class="justify-center"><div class=" font-sans leading-4 text-black"> <div class="justify-start"> <span class="font-bold"> $699.99 <span class="font-medium">at Amazon</span> </span> </div> <div class="justify-start"> <span class="text-sm line-through">$799.00</span> <span class="text-sm text-brand-green">Save $99.01</span> </div> </div> </div> </div> <div class="w-44 self-end"> Get Deal </div> </div> </div> <div class="hidden"> <div class="flex aspect-video items-center justify-center"> <img class="m-0 max-h-full max-w-full rounded-md" src="https://lifehacker.com/imagery/articles/01M6HB7AA8MECSW2VH3PXMW33B/images-2.fill.size_autoxauto.v1793731045.jpg" alt="Apple Watch Ultra 4" width="auto" height="auto" loading="lazy"> </div> </div> <div class="flex"> <div class="flex aspect-video items-center justify-center"> <img class="m-0 max-h-full max-w-full rounded-md" src="https://lifehacker.com/imagery/articles/01M6HB7AA8MECSW2VH3PXMW33B/images-2.fill.size_autoxauto.v1793731045.jpg" alt="Apple Watch Ultra 4" width="auto" height="auto" loading="lazy"> </div> </div> <div class="grow-0"> <div class="mt-4 w-full"> Get Deal </div> <div class="mx-2 mt-4 w-full"> <div class=" font-sans leading-4 text-black"> <div class="justify-start"> <span class="font-bold"> $699.99 <span class="font-medium">at Amazon</span> </span> </div> <div class="justify-start"> <span class="text-sm line-through">$799.00</span> <span class="text-sm text-brand-green">Save $99.01</span> </div> </div> </div> </div> </div> </a></div> <p>PCMag called it a “battery beast” in <a href="https://en.mycoding.id/category/technology" target="_blank" target="_blank" title="open in a new window" rel="noopener">its assessment of the Ultra 4</a>, giving it an “Excellent” ranking and citing its “jaw-dropping 74-hour power division life” in testing. Apple rates the observe for up to 50 hours of normal use and up to 84 hours in Low Power Mode. The updated Ultra 4 additionally has a faster S11 part and precision health tracking, making it a additional capable competitor to rugged outdoor watches from brands akin Garmin. It’s designed for group who desire a durable companion for adventures and endurance workouts.</p><div class="py-0" data-ga-click data-ga-template="Deals" data-ga-module="openweb_widget" data-ga-element="openweb_scroll" data-ga-item="openweb_scroll_midpage" x-data="&#039;, e); } } }" x-init="fetchCommentsCount()" x-cloak> <div class="absolute top-1/2 hidden w-full -translate-y-1/2 border-t-[1.5px] border-dashed border-black sm:block"></div> <div class="relative flex justify-center"> <div class="flex max-w-fit items-center gap-x-3 bg-white px-5"> <div class="relative"> <span class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 font-akshar text-sm font-medium text-black" aria-live="polite" x-show="hasComments" x-text="commentsCount"></span> <svg class="h-8 w-8 text-black" role="img" aria-hidden="true"> </svg> </div> <span class="text-sm font-medium text-black"> What do you think so far? </span> </div> </div> </div> <p>While the scheme and display remain mostly unchanged, the S11 part supports new application and health features, including a Readiness Score that assesses the user’s latest activity, sleep, and health data, afterward offers a regular recommendation. It additionally has updated heart-rate monitoring and stage counting. This example comes alongside cellular connectivity and dual-frequency GPS. If you’re an Apple person looking for a rugged observe alongside multi-day power division existence and detailed health tracking, the <a href="https://en.mycoding.id/category/technology" target="_blank" rel="nofollow sponsored" target="_blank" title="open in a new window">Apple Watch Ultra 4</a> could lawsuit mundane users and grave adventurers alike. </p><div class="left-1/2 md:w-[780px] md:max-w-max md:-translate-x-1/2" x-data=" false }"> <div class="text-left"> <div class="rounded-tl-none"> <div class="rounded-tl-none"> <span class="text-2xl">Our Best Editor-Vetted Early Black Friday Deals Right Now</span> <div class="text-base"> <div x-show="1 || showAll"> <a href="https://en.mycoding.id/category/technology" target="_blank" data-commerce="1" target="_blank" rel="nofollow sponsored" data-parent-group="affiliate-link" title="(opens in a new window)" class="text-brand-green-700" data-ga-click="data-ga-click" data-ga-item="offer-group-item" data-ga-label="Apple AirPods Pro 3 Noise Cancelling Heart Rate Wireless Earbuds" data-ga-element="offer" data-ga-module="offer-group" data-ga-position="1"> Apple AirPods Pro 3 Noise Cancelling Heart Rate Wireless Earbuds </a> <span class="text-black"> — <span class="font-bold">$199.00</span> <span class="!text-sm"> (List Price $249.00) </span> </span> </div> <div x-show="1 || showAll"> <a href="https://en.mycoding.id/category/technology" target="_blank" data-commerce="1" target="_blank" rel="nofollow sponsored" data-parent-group="affiliate-link" title="(opens in a new window)" class="text-brand-green-700" data-ga-click="data-ga-click" data-ga-item="offer-group-item" data-ga-label='Apple iPad 11&quot; 128GB Wi-Fi Retina Tablet (Blue, 2025 Release)' data-ga-element="offer" data-ga-module="offer-group" data-ga-position="2"> Apple iPad 11" 128GB A16 WiFi Tablet (Blue, 2025) </a> <span class="text-black"> — <span class="font-bold">$399.99</span> <span class="!text-sm"> (List Price $449.00) </span> </span> </div> <div x-show="1 || showAll"> <a href="https://en.mycoding.id/category/technology" target="_blank" data-commerce="1" target="_blank" rel="nofollow sponsored" data-parent-group="affiliate-link" title="(opens in a new window)" class="text-brand-green-700" data-ga-click="data-ga-click" data-ga-item="offer-group-item" data-ga-label="Apple HomeView Smart Display (Silver, 2026 Release)" data-ga-element="offer" data-ga-module="offer-group" data-ga-position="3"> Apple HomeView Smart Display (Silver, 2026 Release) </a> <span class="text-black"> — <span class="font-bold">$299.00</span> <span class="!text-sm"> (List Price $299.00) </span> </span> </div> <div x-show="1 || showAll"> <a href="https://en.mycoding.id/category/technology" target="_blank" data-commerce="1" target="_blank" rel="nofollow sponsored" data-parent-group="affiliate-link" title="(opens in a new window)" class="text-brand-green-700" data-ga-click="data-ga-click" data-ga-item="offer-group-item" data-ga-label='TCL Tab 10 Gen 4 128GB 10.1&quot; Tablet (Dark Blue/Gray)' data-ga-element="offer" data-ga-module="offer-group" data-ga-position="4"> TCL Tab 10 Gen 4 128GB 10.1" Tablet (Dark Blue/Gray) </a> <span class="text-black"> — <span class="font-bold">$169.99</span> <span class="!text-sm"> (List Price $199.99) </span> </span> </div> <div x-show="1 || showAll"> <a href="https://en.mycoding.id/category/technology" target="_blank" data-commerce="1" target="_blank" rel="nofollow sponsored" data-parent-group="affiliate-link" title="(opens in a new window)" class="text-brand-green-700" data-ga-click="data-ga-click" data-ga-item="offer-group-item" data-ga-label='50&quot; Amazon Amber 4-Series 4K HDR10+ Smart Fire TV (2025 Model)' data-ga-element="offer" data-ga-module="offer-group" data-ga-position="5"> Amazon Ember 50" 4-Series alongside Fire TV (newest model) </a> <span class="text-black"> — <span class="font-bold">$309.99</span> <span class="!text-sm"> (List Price $399.99) </span> </span> </div> </div> </div> </div> <div class="px-6"> <span class="text-sm">Deals are selected by our commerce team</span> </div> </div> </div> <div class="leading-normal prose-sm mt-4 line-clamp-2"> <p></p> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/this-apple-watch-ultra-4-is-100-off-right-now-75473</guid> <pubDate>Tue, 03 Nov 2026 20:00:00 +0700</pubDate> <author><![CDATA[support@mycoding.id (Naima Karp)]]></author> </item> <item> <title><![CDATA[That ‘100% Tax Write-Off’ on Your Company Car Isn’t What You Think. Here’s What to Know Before You Buy.]]></title> <description><![CDATA[That ‘100% Tax Write-Off’ on Your Company Car Isn’t What You Think. Here’s What to Know Before You Buy.. Your endeavor car write-off is smaller than social media claims.]]></description> <media:thumbnail url="https://www.entrepreneur.com/wp-content/uploads/sites/2/2026/10/business-car-write-off-1026-g-748333887.jpg"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/that-100-tax-write-off-on-your-company-car-isn-t-what-you-think-here-s-what-to-know-before-you-buy-75481</link> <content:encoded><![CDATA[<p> Opinions expressed by Entrepreneur contributors are their own. </p><div> <div> <h2>Key Takeaways</h2> <ul> <li>The conclusion amount depends on how much of the conveyance was used for endeavor purposes. Personal use and commuting are not deductible, despite of who owns the vehicle.</li> <li>Understand that your year-one conclusion decision power be permanent, passenger car depreciation caps power the math and the vehicle&rsquo;s importance creates additional conclusion possibilities.</li> <li>Verify the importance classification of the conveyance before you buy it, choose the method of conclusion in twelvemonth one, keep endeavor use complete 50% if you need to deduct alongside acceleration, document endeavor miles immediately, and obtain the endeavor part lone as allowed by law.</li> </ul> </div> <p>Every year, about this time, the identical category of inquiry appears from endeavor owners: &ldquo;Can I <a href="https://en.mycoding.id/category/technology" target="_blank">write off</a> the complete disbursal of a car if I buy it before December 31?&rdquo; It normally accompanies a video featuring person leaning against an SUV promising that the authorities volition pay for the entire thing.</p> <p>The abbreviated answer is no. The rules for deducting a <a href="https://en.mycoding.id/category/technology" target="_blank">business vehicle</a> are clear, and the discrepancy between what is promised on social media and what can be written off according to the law can disbursal you in an audit.</p> <p>Let&rsquo;s go through an example: $50,000 passenger car under 6,000 pounds, purchased from an unrelated seller, placed in assistance in 2026, driven 60% for endeavor and deducted using the genuine disbursal method. All dollar amounts are according to federal-only numbers.</p> <p>The conclusion amount depends on the use of the vehicle, not its ownership.</p> <p>The amount you can deduct does not depend on whether the car heading is in your name or whether it is an LLC purchasing the car. The <a href="https://en.mycoding.id/category/technology" target="_blank">deduction</a> amount depends on how much of the conveyance was used for endeavor purposes. A conveyance used 60% for endeavor purposes volition be 60% deductible and the another 40% personal, no matter the acquisition structure.</p> <p>Commuting trips create the most average errors. Commuting from residence to a regular office or endeavor location is continually personal, despite of the fact that the conveyance belongs to the business. Driving from the office to a client or from one job location to another is considered endeavor use. Get your percent accurate as all figure below depends on this figure.</p> <h2 id="h-your-year-one-deduction-decision-might-be-permanent">Your year-one conclusion decision power be permanent</h2> <p>There are two chief methods of claiming a conclusion for conveyance expenses. Standard mileage charge is applied whenever the mileage log of <a href="https://en.mycoding.id/category/technology" target="_blank">business trips</a> is multiplied by the per-mile fig that includes all expenses of maintaining the car. In 2026, the IRS established the norm mileage charge at 72.5 cents for the archetypal fractional of the twelvemonth and risen it to 76 cents for miles driven from July 1 through December 31. If you choose this method, create certain your mileage log breaks downward at July 1.</p> <p>Actual disbursal method includes the endeavor part of the genuine disbursal of the vehicle, including its depreciation. Here is what is not explained in videos on social media: to keep the choice of using the norm mileage charge for the owned vehicle, you must assertion it in twelvemonth one. If you assertion accelerated depreciation, reward depreciation or <a href="https://en.mycoding.id/category/technology" target="_blank">Section 179</a>, you cannot use the norm mileage method for the conveyance anymore. Make this decision alongside your CPA before purchasing the car, not afterwards.</p> <h2 id="h-passenger-car-caps-affect-the-math">Passenger car caps power the math</h2> <p>Section 280F of the Internal Revenue Code places a cap on the annual depreciation of passenger cars. IRS adjusts these caps all year.</p> <p>First, we compute the basis. The endeavor use of the conveyance is 60% and, therefore, the endeavor basis of the $50,000 passenger car is $30,000. The another $20,000 is individual and volition never be deductible.</p> <p>Second, let&rsquo;s use the cap. According to Rev. Proc. 2026-15, the first-year depreciation cap is $20,300 for a passenger car placed in assistance in 2026 and <a href="https://en.mycoding.id/category/technology" target="_blank">bonus depreciation</a> applicable. Apply your endeavor use percent to the cap: $20,300 x 60% = $12,180. This is your maximum conclusion in the archetypal twelvemonth &mdash; neither $50,000 nor $30,000. The balance of $17,820 volition be depreciated in forthcoming years. If reward depreciation is not applicable or is elected not to be claimed, the cap is reduced to $12,300, which becomes $7,380 following applying the business-use percentage.</p> <p>Bonus depreciation at 100% is applicable again for the asset acquired following January 19, 2025. However, it volition not lift the passenger car depreciation complete the 280F cap. The endeavor portion of fuel, coverage and repairs is deducted separately, and thus, $12,180 is not the complete conclusion for your vehicle.</p> <h2 id="h-vehicle-s-weight-creates-more-deduction-possibilities">Vehicle&rsquo;s importance creates additional conclusion possibilities</h2> <p>Those videos commitment the complete conclusion for dense vehicles. The caps for passenger cars use for the importance up to 6,000 pounds, measured by unloaded importance for passenger cars and income conveyance importance ranking for trucks, <a href="https://en.mycoding.id/category/technology" target="_blank">vans</a> and most SUVs. Check the sticker inner the driver&rsquo;s entrance of the conveyance before you buy.</p> <p>Heavier vehicles evade the particular caps mentioned above; that&rsquo;s why there are so many posts suggesting &ldquo;buy a big SUV.&rdquo; But there are several limits nevertheless. In tax years commencement in 2026, the Section 179 conclusion for a dense athletics usefulness conveyance is constricted to $32,000, although reward depreciation may deduct the remainder of the endeavor basis of the car.</p> <p>Independent of the vehicle&rsquo;s weight, the Section 179 conclusion cannot bypass passenger car caps. No method, being or conveyance category can create our $20,000 individual part deductible.</p> <h2 id="h-contemporaneous-records-help-preserve-the-deduction">Contemporaneous records assistance maintain the deduction</h2> <p>Nothing stated complete makes awareness without a contemporaneous mileage log documenting the date, endeavor intent and miles driven for all trip. The log created following receiving an <a href="https://en.mycoding.id/category/technology" target="_blank">audit</a> notice is among the easiest ways to endure your lawful deduction, and a phone use allows you to create it easily.</p> <p>In command to use accelerated depreciation, reward depreciation or Section 179, the qualified endeavor use must be additional than 50%. Our 60% car qualifies for this requirement. At 50% or lesser qualified endeavor use, you may motionless obtain the conclusion using the straight-line depreciation method or, if you qualify, the norm mileage rate; however, without accelerated write-offs.</p> <p>Here comes the pitfall. When the qualified endeavor use falls to 50% or lesser later, the excess <a href="https://en.mycoding.id/category/technology" target="_blank">depreciation</a> volition be included in the income, and you volition have to use the straight-line depreciation method. Usually, it happens whenever a endeavor car gradually turns into a family car. Moreover, whenever you dispose of or market the vehicle, depreciation is recaptured as average income, and the advantage is partially temporary.</p> <h2 id="h-buy-the-vehicle-your-business-needs-first">Buy the conveyance your endeavor needs first</h2> <p><a href="https://en.mycoding.id/category/technology" target="_blank">Tax advantage</a> should never be the motivation for purchasing the car. Start by identifying the conveyance your endeavor needs, and afterward go through the rules:</p> <p>&bull;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Verify the importance classification of the conveyance before you buy it</p> <p>&bull;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Choose the method of conclusion in twelvemonth one</p> <p>&bull;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Keep endeavor use complete 50% if you need to deduct alongside acceleration</p> <p>&bull;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document all endeavor miles immediately</p> <p>&bull;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Take the endeavor part lone as allowed by law</p> <p>For our $50,000 car, it is $12,180 in first-year depreciation affirmative the endeavor part of the functioning expenses.</p> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/that-100-tax-write-off-on-your-company-car-isn-t-what-you-think-here-s-what-to-know-before-you-buy-75481</guid> <pubDate>Tue, 03 Nov 2026 20:00:00 +0700</pubDate> <author><![CDATA[support@mycoding.id (Rob Pasquesi)]]></author> </item> <item> <title><![CDATA[Apple’s latest watchOS beta includes its new always-on Audio Intelligence features]]></title> <description><![CDATA[Apple’s latest watchOS beta includes its new always-on Audio Intelligence features. Starting today, Siri can tune into the Apple Watch's mic alongside Audio Intelligence features that are accessible in the new watchOS 27.3 developer beta rolling out ...]]></description> <media:thumbnail url="https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/Siri-Recap-example.jpg?quality=90&amp;strip=all&amp;crop=0%2C26.334151505894%2C100%2C67.420228175335&amp;w=1200"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/apple-s-latest-watchos-beta-includes-its-new-always-on-audio-intelligence-features-75459</link> <content:encoded><![CDATA[<div><div><div><div><div><p><a href="https://en.mycoding.id/category/technology" target="_blank"><img alt="Stevie Bonifield" data-chromatic="ignore" loading="lazy" width="36" height="36" decoding="async" data-nimg="1" srcset="https://platform.theverge.com/wp-content/uploads/sites/2/2025/10/STEVIE_BONIFIELD_BLURPLE.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=48 1x, https://platform.theverge.com/wp-content/uploads/sites/2/2025/10/STEVIE_BONIFIELD_BLURPLE.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=96 2x" src="https://platform.theverge.com/wp-content/uploads/sites/2/2025/10/STEVIE_BONIFIELD_BLURPLE.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=96"></a></p><div><p><span aria-expanded="false" aria-haspopup="true" role="button" tabindex="0"><span id="follow-author-standard_article_details-dmcyOmF1dGhvclByb2ZpbGU6ODAzMzIw"><span><span><svg width="9" height="9" viewbox="0 0 9 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-label="Follow"><path d="M5 0H4V4H0V5H4V9H5V5H9V4H5V0Z"></path></svg></span></span><span>Stevie Bonifield</span></span></span></p> <p><span>is a news author covering all things person tech. Stevie started out at Laptop Mag penning news and reviews on hardware, gaming, and AI.</span></p></div></div></div></div></div><div id="zephr-anchor"><p>Starting today, Siri can tune into the Apple Watch&rsquo;s mic alongside <a href="https://en.mycoding.id/category/technology" target="_blank">Audio Intelligence features</a> that are accessible in the new watchOS 27.3 developer beta rolling out now. The two new additions are Siri Recap, which uses &ldquo;ambient listening&rdquo; to create summaries of your conversation, and Live Rewind, which generates content transcripts of the final 15 seconds of audio your watch&rsquo;s mic detected.</p><p>Apple is additionally <a href="https://en.mycoding.id/category/technology" target="_blank">releasing</a> its <a href="https://en.mycoding.id/category/technology" target="_blank">redesigned Health app</a> for evaluation today in the iOS 27.3 developer beta, and announced expanded tongue assistance in earth English, Chinese (Simplified and Traditional), French, Japanese, Korean, Norwegian, Portuguese, Spanish, Turkish, and Vietnamese. It adds sections akin a new Insights tab alongside summaries for heart, sleep, fitness, and another data that pop up during the day, a For You division alongside personalized recommendations, and health satisfied akin instructional videos and articles.</p><div><ul><li><span>Live Rewind, which can assistance users recall what was fair stated in conversation. A double-press of the Digital Crown shows the former 15 seconds of a conversation as a content snippet, so the person can capture item they may have missed or are small acquainted with. Users can ask Siri concerning the satisfied of the content or preserve it to the Siri app to revisit later.</span></li><li><span>Siri Recap, which can create high-level summaries of conversations that users can assessment afterward to jog their memory. When Siri Recap is turned on, following a conversation, Apple Intelligence automatically generates a heading and key points in the new Siri app, allowing users to be additional current and busy in the moment.</span></li></ul></div><p>When it comes to the implications of an ambient, always-listening AI, Apple has released <a href="https://en.mycoding.id/category/technology" target="_blank">this Audio Intelligence<br>Privacy Overview (pdf)</a> concerning <a href="https://en.mycoding.id/category/technology" target="_blank">how it plans to defend users&rsquo; privacy</a> whenever their observe is listening about the clock. It goes into item concerning Apple&rsquo;s claims that users&rsquo; raw audio &ldquo;is handled inside dedicated hardware, is not saved as a file, and is not accessible to the functioning system, apps, or Apple.&rdquo; According to Apple, &ldquo;If you use iCloud alongside two-factor authentication and have a equipment passcode, any Siri Recap summary or Live Rewind content snippet you choose to preserve syncs throughout your devices end-to-end encrypted in the Siri app.&rdquo;</p><div><p><span><strong>Follow topics and authors</strong> from this narrative to see additional akin this in your personalized homepage nourish and to obtain email updates.</span></p><ul><li id="follow-author-article_footer-dmcyOmF1dGhvclByb2ZpbGU6ODAzMzIw"><span aria-expanded="false" aria-haspopup="true" role="button" tabindex="0"><span><span><svg width="9" height="9" viewbox="0 0 9 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-label="Follow"><path d="M5 0H4V4H0V5H4V9H5V5H9V4H5V0Z"></path></svg></span><span>Stevie Bonifield</span></span></span></li><li><li><li><li><li><li><li></ul></div></div></div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/apple-s-latest-watchos-beta-includes-its-new-always-on-audio-intelligence-features-75459</guid> <pubDate>Tue, 03 Nov 2026 19:31:00 +0700</pubDate> <author><![CDATA[support@mycoding.id (Stevie Bonifield)]]></author> </item> <item> <title><![CDATA[OpenAI says ChatGPT is catching up to Google in search]]></title> <description><![CDATA[OpenAI says ChatGPT is catching up to Google in search. In many circles, "Ask Chat" has replaced "Google it," and that's reflected in a new notice from OpenAI: the quantity of hunt queries run through ChatGPT n...]]></description> <media:thumbnail url="https://platform.theverge.com/wp-content/uploads/sites/2/2026/08/STK155_OPEN_AI_CVirginia_C-1.jpg?quality=90&amp;strip=all&amp;crop=0%2C10.732984293194%2C100%2C78.534031413613&amp;w=1200"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/openai-says-chatgpt-is-catching-up-to-google-in-search-75460</link> <content:encoded><![CDATA[<div id="zephr-anchor"><p>In many circles, &ldquo;Ask Chat&rdquo; has replaced &ldquo;Google it,&rdquo; and that&rsquo;s reflected in a new notice from OpenAI: the quantity of hunt queries run through ChatGPT now equals 20 percent of the quantity run through Google.</p><p>Adam Fry, OpenAI&rsquo;s person merchandise guide for ChatGPT, made the notice at a media event on Monday. He stated the business defines a hunt as any period a person inputs a query that results in a web search, as opposed to tasks akin defining a term or a uncomplicated how-to explanation. (Fry did not define the origin of the Google hunt quantity number.)</p><p>Having one-fifth as many searches as Google is motionless a lengthy way from overtaking it, but for comparison, Microsoft CEO Satya Nadella stated during Google&rsquo;s 2023 antitrust test that Bing had <a href="https://en.mycoding.id/category/technology" target="_blank">about 3 percent</a> of the hunt motor market portion following trying for additional than a decade. <a href="https://en.mycoding.id/category/technology" target="_blank">During the trial,</a> Google described AI as a possible disruptor, arguing ChatGPT was poised to earnestly vie alongside it &mdash; now, OpenAI seems to agree. (OpenAI apt uses <a href="https://en.mycoding.id/category/technology" target="_blank">Microsoft Bing</a> for a important part of its searches, alongside alongside its in-house hunt index, although there is <a href="https://en.mycoding.id/category/technology" target="_blank">still several speculation</a> that it routes several queries through Google.)</p><p>The news comes amid an ongoing hunt motor shake-up, as Google continues to decrease accepted referrals to third-party sites and invests heavily in AI tools &mdash; not fair AI Overview but additionally <a href="https://en.mycoding.id/category/technology" target="_blank">additional generative AI capabilities</a>, including personalized hunt results alongside visualizations and charts. But as hunt queries increasingly path through OpenAI and another AI labs&rsquo; services, another companies are investing in the identical types of AI-focused hunt experience, equal if they call it item else: for OpenAI, it&rsquo;s &ldquo;Intelligent UI,&rdquo; or creating a ocular and interactive interface inside a chatbot response. &ldquo;That&rsquo;s anywhere the forthcoming of this innovation goes. You&rsquo;re talking to a canvas,&rdquo; Fry said.</p><p>Much akin Google, OpenAI sees a possible way to profitability through ads, particularly as it approaches an IPO possibly slated for first next year. OpenAI has <a href="https://en.mycoding.id/category/technology" target="_blank">defended its ads</a> in the past, and Fry told reporters they hadn&rsquo;t produced a enduring backlash. &ldquo;Ads have not negatively affected the merchandise or the use of the product,&rdquo; he said, adding that &ldquo;most group do not appear to intellect ads in the product.&rdquo;</p><p>OpenAI announced <a href="https://en.mycoding.id/category/technology" target="_blank">last month</a> that the business would commencement introducing images of sponsored products and services in ChatGPT fairly than fair a company&rsquo;s name, logo, and a nexus to its merchandise akin before.</p><p>&ldquo;Ads have perchance shown us that we could be doing this more, actually,&rdquo; Fry said.</p><div><p><span><strong>Follow topics and authors</strong> from this narrative to see additional akin this in your personalized homepage nourish and to obtain email updates.</span></p><ul><li id="follow-author-article_footer-dmcyOmF1dGhvclByb2ZpbGU6Njc4MjM0"><span aria-expanded="false" aria-haspopup="true" role="button" tabindex="0"><span><span><svg width="9" height="9" viewbox="0 0 9 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-label="Follow"><path d="M5 0H4V4H0V5H4V9H5V5H9V4H5V0Z"></path></svg></span><span>Hayden Field</span></span></span></li><li><li><li><li><li></ul></div></div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/openai-says-chatgpt-is-catching-up-to-google-in-search-75460</guid> <pubDate>Tue, 03 Nov 2026 19:30:42 +0700</pubDate> <author><![CDATA[support@mycoding.id (Hayden Field)]]></author> </item> <item> <title><![CDATA[Reddit is adding more ads]]></title> <description><![CDATA[Reddit is adding more ads. Reddit is evaluation ads on another area of its platform: search. With this update, ads volition appear inside your hunt results "based on a range of factors, includ...]]></description> <media:thumbnail url="https://platform.theverge.com/wp-content/uploads/sites/2/2025/08/STK115_Reddit_01.jpg.webp?quality=90&amp;strip=all&amp;crop=0%2C10.732984293194%2C100%2C78.534031413613&amp;w=1200"/> <category><![CDATA[Technology]]></category> <link>https://en.mycoding.id/reddit-is-adding-more-ads-75461</link> <content:encoded><![CDATA[<div><div><div><div><div><p><a href="https://en.mycoding.id/category/technology" target="_blank"><img alt="Emma Roth" data-chromatic="ignore" loading="lazy" width="36" height="36" decoding="async" data-nimg="1" srcset="https://platform.theverge.com/wp-content/uploads/sites/2/chorus/author_profile_images/195810/EMMA_ROTH.0.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=48 1x, https://platform.theverge.com/wp-content/uploads/sites/2/chorus/author_profile_images/195810/EMMA_ROTH.0.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=96 2x" src="https://platform.theverge.com/wp-content/uploads/sites/2/chorus/author_profile_images/195810/EMMA_ROTH.0.jpg?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=96"></a></p><div><p><span aria-expanded="false" aria-haspopup="true" role="button" tabindex="0"><span id="follow-author-standard_article_details-dmcyOmF1dGhvclByb2ZpbGU6MTE2"><span><span><svg width="9" height="9" viewbox="0 0 9 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-label="Follow"><path d="M5 0H4V4H0V5H4V9H5V5H9V4H5V0Z"></path></svg></span></span><span>Emma Roth</span></span></span></p> <p><span>is a news author who covers the streaming wars, person tech, crypto, social media, and much more. Previously, she was a author and publishing company at MUO.</span></p></div></div></div></div></div><div id="zephr-anchor"><p>Reddit is evaluation ads on another area of its platform: search. With this update, ads volition appear inside your hunt results &ldquo;based on a range of factors, including contextual relevance to a hunt query,&rdquo; <a href="https://en.mycoding.id/category/technology" target="_blank">according to Reddit</a>.</p><p>That method searching for &ldquo;espresso station&rdquo; could current you alongside ads for espresso, machines, beans, or mugs, during a hunt for a &ldquo;home agency setup&rdquo; may output ads for monitors, desks, or agency chairs. Reddit currently shows ads throughout its feeds in a assortment of formats, including images, videos, sponsored posts, and AMAs. It additionally shows ads inside threads.</p><div><div><div><div class=""><div><p><a href="https://en.mycoding.id/category/technology" target="_blank" data-pswp-height="1792" data-pswp-width="1912" target="_blank" rel="noreferrer"><img alt="" data-chromatic="ignore" loading="lazy" decoding="async" data-nimg="fill" sizes=" 1023px) 50vw, 700px" srcset="https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=256 256w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=376 376w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=384 384w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=415 415w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=480 480w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=540 540w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=640 640w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=750 750w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=828 828w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=1080 1080w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=1200 1200w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=1440 1440w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=1920 1920w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=2048 2048w, https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=2400 2400w" src="https://platform.theverge.com/wp-content/uploads/sites/2/2026/11/reddit-search-ads.webp?quality=90&amp;strip=all&amp;crop=0%2C0%2C100%2C100&amp;w=2400"></a></p></div></div></div></div></div><div><p>Reddit has announced a figure of changes to its phase complete the former multiple weeks, including new <a href="https://en.mycoding.id/category/technology" target="_blank">Following and For You feeds</a> and <a href="https://en.mycoding.id/category/technology" target="_blank">limiting who can admission &ldquo;Old Reddit.&rdquo;</a> The business most lately announced plans to <a href="https://en.mycoding.id/category/technology" target="_blank">make Reddit a &ldquo;logged-in-only experience&rdquo;</a> to combat Google&rsquo;s AI scraping, contributing to its <a href="https://en.mycoding.id/category/technology" target="_blank">stock declining 29 percent</a>.</p></div><p>Reddit says it&rsquo;s piloting the new hunt ads alongside a choose figure of advertisers to start.</p><div><p><span><strong>Follow topics and authors</strong> from this narrative to see additional akin this in your personalized homepage nourish and to obtain email updates.</span></p><ul><li id="follow-author-article_footer-dmcyOmF1dGhvclByb2ZpbGU6MTE2"><span aria-expanded="false" aria-haspopup="true" role="button" tabindex="0"><span><span><svg width="9" height="9" viewbox="0 0 9 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-label="Follow"><path d="M5 0H4V4H0V5H4V9H5V5H9V4H5V0Z"></path></svg></span><span>Emma Roth</span></span></span></li><li><li><li><li><li></ul></div></div></div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/reddit-is-adding-more-ads-75461</guid> <pubDate>Tue, 03 Nov 2026 19:26:36 +0700</pubDate> <author><![CDATA[support@mycoding.id (Emma Roth)]]></author> </item> <item> <title><![CDATA[Rank Trackers Find Google Results About One Word Of A Query]]></title> <description><![CDATA[Rank Trackers Find Google Results About One Word Of A Query. Rank tracker data shows unrelated Google results that prosecute one term of the query, mostly below the top spots. Here's how to inspect a drop. The article Rank Tracke...]]></description> <media:thumbnail url="https://en.mycoding.id/site/assets/img/og-image.png"/> <category><![CDATA[Business]]></category> <link>https://en.mycoding.id/rank-trackers-find-google-results-about-one-word-of-a-query-75466</link> <content:encoded><![CDATA[<div class="sej-article-content gototop-pos "> <div class="sss2_sllo_o6"> </div> <div id="narrow-cont"><p>In mid-September, most unrelated results discovered by SE Ranking using Google position checking were lone concerning one term of the first hunt term. Almost all of them started at stance 9 or worse.</p> <p>SE Ranking <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">released an analysis</a> today according to 10,000 Google US desktop keywords it tracks for investigation purposes. Rank tracking resolute Nozzle documented a connected form in <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">an Oct. 22 report</a> on what it describes as Google ignoring part of a query. According to Nozzle’s findings, leaf 2 started dropping words on Sept. 16 during leaf 1 dropped words four days afterward (Sept. 20). Both firms market position tracking application and track ranks through their corresponding products.</p> <p>On Oct. 23 I covered <a href="https://en.mycoding.id/category/business" target="_blank">how position tracking providers say they grip the altered Google results</a>; previous to that, on Oct. 14 Roger Montti <a href="https://en.mycoding.id/category/business" target="_blank">reported Nozzle’s first analysis</a>. Both data sets display that most changes occurred in positions below the top positions. Nozzle’s data shows that most of the changes it saw happen on leaf 2. As such, whenever reviewing your delayed September/October ranking reports, inspect drops below the top positions and on leaf 2 first.</p><div data-total="6" id="SEJ_300x250_UnderPost_1-parent" class="content-unit sss2_sllo_o6 mmh-90-wrap"> <div class="mmh-90-inner"> <div class="mmh-90 flex-aligner"> <div data-adnumber="0" data-middle="no" data-p-slot="SEJ_300x250_UnderPost" data-slot="SEJ_300x250_UnderPost/SEJ_300x250_UnderPost_1" id="SEJ_300x250_UnderPost_1" class="sadslots"> </div> </div> </div> </div> <h2>Results About One Word Of The Query</h2> <p>The chief example of a single-word outcome set offered by SE Ranking is for the hunt term “business financial institution row of credit.” The top 9 results on this hunt were all financial institutions (banks/lenders) specified as Chase Bank, PNC Bank and LendingTree. Results established on leaf 2 were unrelated to banking or lending as they included videos of music, the LINE messaging use and The Line Hotel; hence these results lone used the term “line” in connection to the first query, fairly than answering the query.</p> <p>In 84% of the cases SE Ranking flagged, the unrelated listings were concerning one term of the query. The remainder followed two or additional words. Single-word keywords in its data never came rear alongside unrelated results, which the business says could be since there was no another term for the results to follow.</p><div id="summita-wrapa_112" class="middle_p_txt"></div> <p>In one of Nozzle’s examples, “easy strawberry jam” on Sept. 30, the AI Overview motionless gave a jam formula during the integrated results were concerning the term “easy,” including the TV sequence Easy. Nozzle established the leaf heading motionless showed the complete query on 99.8% of the pages that dropped words, alongside no “Showing results for” notice.</p> <h2>Below The Top Spots And On Page 2</h2> <p>SE Ranking saved up to 50 integrated results per keyword, and none of the groups of unrelated results it established started in the top five. They started at positions 6 to 8 in 3.5% of affected outcome sets and at stance 9 or lesser in the another 96.5%. SE Ranking notes that a quick appearance at the top results could create specified a leaf appear fine.</p><div data-total="6" id="SEJ_300x250_UnderPost_3-parent" class="content-unit sss2_sllo_o6 mmh-90-wrap"> <div class="mmh-90-inner"> <div class="mmh-90 flex-aligner"> <div data-adnumber="2" data-middle="no" data-p-slot="SEJ_300x250_UnderPost" data-slot="SEJ_300x250_UnderPost/SEJ_300x250_UnderPost_3" id="SEJ_300x250_UnderPost_3" class="sadslots"> </div> </div> </div> </div> <p>Since Sept. 16, leaf 2 ignored part of the query on 12.6% of the desktop searches Nozzle could fairness on the two pages, compared alongside 2.2% for leaf 1. On 93.6% of the leaf 2s that dropped words, leaf 1 motionless answered the query.</p> <h2>How Often, And What The Data Can’t Show</h2> <p>The way SE Ranking and Nozzle measure a hunt matter differs, hence their rates cannot be compared immediately to one another.</p> <p>On Sept. 16, the estimated percent of keywords in SE Ranking’s example whose saved outcome catalog included any unrelated listing was 0.09%. On Sept. 17 the evaluation was 57.3%, and by Sept. 24, which was the end of the test period, the percent had grown to 67.2%.</p> <p>Nozzle volition emblem a hunt results leaf if a term that has historically appeared in hunt results for the keyword appears in 20% or small of those results. Using this method, Nozzle measured that leaf 1 or leaf 2 misplaced conditions on about 13.9% of the desktop searches it judged on the two pages from Sept. 16 through Oct. 21. The highest charge of losing conditions was about 39.9% on Sept. 28. Nozzle additionally observed short-term spikes in the event of the form since March.</p><div data-total="6" id="SEJ_300x250_UnderPost_4-parent" class="content-unit sss2_sllo_o6 mmh-90-wrap"> <div class="mmh-90-inner"> <div class="mmh-90 flex-aligner"> <div data-adnumber="3" data-middle="no" data-p-slot="SEJ_300x250_UnderPost" data-slot="SEJ_300x250_UnderPost/SEJ_300x250_UnderPost_4" id="SEJ_300x250_UnderPost_4" class="sadslots"> </div> </div> </div> </div> <p>Nozzle viewed this as a distinct nonaccomplishment category from the “poisoned” hunt results <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">it reported in October</a> anywhere the query is motionless answered; nevertheless the keyword’s representative websites do not appear. According to Nozzle’s data, whenever a leaf misplaced terms, the keyword’s consequent hunt page(s) inside 3 days provided an answer to the query concerning 85.8% of the time.</p> <p>The numbers shown in SE Ranking’s regular study spanned from Sept. 17 through Sept. 24. SE Ranking’s baseline tests run in October used differing gathering settings. A sampling of cases was assessed by two autonomous AI reviewers, and 40 disputed cases were manually reviewed. SE Ranking adds that its data lone covers integrated listings and can’t inform Google’s intent or what searchers saw, and that Google hasn’t publically explained the results.</p> <h2>Why This Matters</h2> <p>SE Ranking notes that if an unrelated outcome has taken complete the lesser part of a hunt motor results leaf (SERP), a website which normally appears there may appear to be missing from a tracker study without its position necessarily changing for group using the Google hunt engine.</p> <p>Before reporting a delayed September/October autumn at stance 9 or lesser or on a second page, go through the collected results from your final update to see if the pages that took your location were connected to fair one term in the query. Then go rear to your next update and appearance at Search Console data for impressions and clicks on the identical query, as SE Ranking suggests.</p> <h2>Looking Ahead</h2> <p>AccuRanker, whose leaf 1 former inspect I described on Oct. 23, has updated <a href="https://en.mycoding.id/category/business" target="_blank" target="_blank" rel="noopener">its post</a> to say pages 2 and beyond have a connected problem, alongside results for lone one term of the query. It says it volition shield that in a distinct article. Check alongside your tracker to see whether it reviews leaf 2 or stops at leaf 1.</p> <p><em>Featured Image: Accogliente Design/Shutterstock</em></p> </div> <div id="bcats" class="bottom-cat narrow-cont"> <span class="sej-category boxed cat-label">Category</span> <a href="https://en.mycoding.id/category/business" target="_blank">News</a> <a href="https://en.mycoding.id/category/business" target="_blank">SEO Strategy</a> </div> <div class="sej-above-author-widget"> <div class="sej-widget clearfix"> <div class="sej-badge-box"> <a href="https://en.mycoding.id/category/business" target="_blank" data-placement="Under Article" aria-label="Add Search Engine Journal as a preferred origin on Google"> <svg class="sej-gps-g" viewbox="0 0 48 48" aria-hidden="true" focusable="false"> <path fill="#EA4335" d="M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"></path> <path fill="#4285F4" d="M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"></path> <path fill="#FBBC05" d="M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"></path> <path fill="#34A853" d="M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"></path> </svg> <span class="sej-gps-text">Add <b>SEJ</b> as a preferred origin on Google</span> </a> </div> </div> </div> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/rank-trackers-find-google-results-about-one-word-of-a-query-75466</guid> <pubDate>Tue, 03 Nov 2026 19:25:17 +0700</pubDate> <author><![CDATA[support@mycoding.id (Matt G. Southern)]]></author> </item> <item> <title><![CDATA[An NYC Marathon runner died suddenly at 24. Her family says the cause was rhabdomyolysis, a rare risk that can even affect fit athletes.]]></title> <description><![CDATA[An NYC Marathon runner died suddenly at 24. Her family says the cause was rhabdomyolysis, a rare risk that can even affect fit athletes.. A female died following collapsing near the complete row of the NYC Marathon. Here's what to cognize concerning rhabdomyolysis and the symptoms to appearance out for.]]></description> <media:thumbnail url="https://i.insider.com/6aea1310f5f059691404aacf?width=1200&amp;format=jpeg"/> <category><![CDATA[Business]]></category> <link>https://en.mycoding.id/an-nyc-marathon-runner-died-suddenly-at-24-her-family-says-the-cause-was-rhabdomyolysis-a-rare-risk-that-can-even-affect-fit-athletes-75462</link> <content:encoded><![CDATA[<div e-name="post-hero" data-component-type="post-hero" data-load-strategy="exclude"> <figure data-type="img" e-name="image-figure-image" data-media-container="image" itemscope itemtype="https://schema.org/ImageObject"> <div> <p><img src="https://i.insider.com/6aea12ec94c155f6acb2e04b?width=2000&amp;format=jpeg&amp;auto=webp" srcset="https://i.insider.com/6aea12ec94c155f6acb2e04b?width=400&amp;format=jpeg&amp;auto=webp 400w, https://i.insider.com/6aea12ec94c155f6acb2e04b?width=500&amp;format=jpeg&amp;auto=webp 500w, https://i.insider.com/6aea12ec94c155f6acb2e04b?width=700&amp;format=jpeg&amp;auto=webp 700w, https://i.insider.com/6aea12ec94c155f6acb2e04b?width=1000&amp;format=jpeg&amp;auto=webp 1000w, https://i.insider.com/6aea12ec94c155f6acb2e04b?width=1300&amp;format=jpeg&amp;auto=webp 1300w, https://i.insider.com/6aea12ec94c155f6acb2e04b?width=2000&amp;format=jpeg&amp;auto=webp 2000w" sizes=" 1280px) 900px" alt="Spectators observe runners vie in Central Park during the 2026 Marathon in New York City on November 1, 2026. The 26.2-mile competition passes through all five boroughs, commencement in Staten Island and finishing in Central Park. (Photo by kena betancur / AFP via Getty Images)" decoding="sync"> </p></div> <span> <span> <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewbox="0 0 24 24"> <path fill="currentColor" fill-rule="evenodd" d="m4.56 18.5 7.486-7.72 7.394 7.626 2.56-2.64L12.046 5.5 2 15.86l2.56 2.64Z"></path> </svg> <figcaption e-name="image-caption"> <span>A female died following collapsing at the New York City Marathon from a rare flank consequence of difficult exercise called rhabdomyolysis.</span> <span> <span e-name="image-source" itemprop="creditText">kena betancur / AFP via Getty Images</span> </span> </figcaption> </span> </span> </figure> </div> <div data-component-type="image-modal" data-load-strategy="lazy"> <p>A 24-year-old female who died following the New York City Marathon on Sunday was suffering from a <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">rare flank consequence of exercise</a> called rhabdomyolysis, her family said.</p><p>Rachel Apa, an informed D1 site hockey sportsperson who spent months training for the race, crumbled near mile 24 in Central Park and was taken by ambulance to the hospital, her begetter told <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;outbound_click&quot;}' rel=" nofollow">The New York Times</a>.</p><p>Apa was a merchandise director for an digital manufacturing company. Earlier this year, she posted on LinkedIn that she was operating the marathon to lift prosperity for the Parkinson's Foundation, in regard of her grandfather. </p><p>The New York Road Runners, the collection that organizes the marathon, and Apa's family did not immediately react to a petition for comment from Business Insider.</p><p>Rhabdomyolysis, known as rhabdo, is a hazard of extended strenuous exercise caused by muscle tissue breaking downward and overloading the kidneys.</p><p>Without immediate medicinal treatment, it can be life-threatening. Here's what to cognize concerning rhabdo, including the symptoms to appearance out for and how to forestall it.</p><h2 id="7b481b52-fe8a-40df-b84a-3df90c525443" data-toc-id="7b481b52-fe8a-40df-b84a-3df90c525443"><strong>What is rhabdomyolysis and what causes it?</strong></h2><p id="7b481b52-fe8a-40df-b84a-3df90c525443">Rhabdomyolysis can happen following serious muscle hurt or serious exertion. As damaged muscle tissue breaks down, it releases compounds into the bloodstream that the kidneys typically display out.</p><p id="7b481b52-fe8a-40df-b84a-3df90c525443">In rare cases, those byproducts can overwhelm the kidneys and guide to kidney damage or acute kidney failure.</p><p id="7b481b52-fe8a-40df-b84a-3df90c525443">About 26,000 cases of rhabdo are reported in the US all year, investigation suggests.</p> <p id="7b481b52-fe8a-40df-b84a-3df90c525443">Anyone can endure from rhabdo, but factors akin hot environments and dehydration can addition the risk, according to Cleveland Clinic.</p><p id="7b481b52-fe8a-40df-b84a-3df90c525443">While it's mostly not common, cases of rhabdo are frequently caused by high-intensity exercise or lengthy endurance sessions without rest. For instance, investigation has earlier connected cases of rhabdo to marathons (particularly during elevated temperatures) and <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">vigorous rotation classes</a>.</p><p id="7b481b52-fe8a-40df-b84a-3df90c525443">It's additionally increasingly a involvement for the military, which is operating to place <a href="https://en.mycoding.id/category/business" target="_blank" data-track-click='&quot;bi_value_unassigned&quot;}' rel="">rhabdo in troops</a> additional quickly.</p><h2 id="b5243db7-3ac9-4dac-a651-e7c18a4e9806" data-toc-id="b5243db7-3ac9-4dac-a651-e7c18a4e9806"><strong>What are the symptoms of rhabdo?</strong></h2><p id="b5243db7-3ac9-4dac-a651-e7c18a4e9806">Symptoms of rhabdo contain fatigue, muscle cramps or unexpected pain, and dark-colored urine, which can display up hours or days following exercise, according to the CDC.</p><p id="b5243db7-3ac9-4dac-a651-e7c18a4e9806">Rhabdo can be diagnosed alongside a lifeblood test and treated alongside IV fluids to assistance flush out the discarded products.</p><p id="b5243db7-3ac9-4dac-a651-e7c18a4e9806">To forestall rhabdo, evade pushing too difficult during exercise, obtain breaks as needed, and beverage plentifulness of water, particularly in hot, humid weather.</p> <p>This part is not a substitute for expert medicinal advice, diagnosis, or treatment. Always consult your qualified doctor or healthcare provider.</p> </div> <h2>Read next</h2> <div data-recommendations-content data-track-click-shared='&quot;Read next&quot;}'> <div e-name="read-next-list" data-recommendations-list> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> <span> <p><img src="image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%201%201&#039;%3E%3C/svg%3E" data-src="/public/assets/logos/placeholder.png" alt=""> </p> </span> <h3> <span>Business Insider tells the innovative stories you desire to know</span> </h3> </div> </div> <a e-name="read-next-image-link" data-recommendations-image-link data-recommendations-link tabindex="-1"> <p><img alt=""> </p> </a> <h3> <a e-name="read-next-title-link" data-recommendations-link data-recommendations-title></a> </h3> <div data-component-type="post-bottom-authors" data-load-strategy="exclude" data-track-view='&quot;module_in_view&quot;}' data-track-click-shared='&quot;navigation&quot;}'> <div data-track-view='&quot;module_in_view&quot;}'> <div> <div> <p><span>Gabby is a Health Correspondent alongside a concentration on nutrition, fitness, longevity, and all things performance.</span><span>Her safety spans from the regular routines of top athletes akin Michael Phelps and Coco Gauff to the latest cutting-edge discipline on construction muscle to the increase of peptides, supplements, and GLP medications.&nbsp;</span><span>She loves a profound dive into&nbsp;fitness subcultures, health companies, or the discipline rearward managing and preventing disease, particularly early-onset cancers.&nbsp;</span><span>Gabby has a backdrop in investigative reporting (previously contributing investigation for an <a href="https://en.mycoding.id/category/business" target="_blank">investigation </a>on correctional healthcare for the New Yorker).</span><span>In her liberated time, she likes lifting heavy, operating fast, and playing roller derby for Gotham in New York City.</span><span>Send narrative ideas and tips to glandsverk@businessinsider.com.</span><span><span>Expertise/Interests</span></span></p><ul><li><span>Longevity: how to dial in a regular routine to allocate in long-term health, and what makes several of the longest-living group on earth energetic and vibrant as they age.</span></li><li><span>Performance science: training techniques for goals ranging from muscle-building (hypertrophy), broad bodily preparedness, endurance, and hurt prevention, particularly for fitness beginners.&nbsp;</span></li><li><span>Cancer research: unpacking the discipline rearward why certain cancers are on the increase in younger people, how it's affecting the earth about us, and what we can do concerning it.&nbsp;</span></li><li><span>Healthy eating: how to navigate conflicting and contradictory direction throughout trends akin protein-maxxing, intermittent fasting, and the Mediterranean, Nordic, and MIND diets.</span></li><li><span>Medical importance loss: how emerging discipline about treatments akin GLP medications are shaping the connections between food, weight, and health.&nbsp;</span></li><li><span>Digital wellness: examining how telehealth is changing admission to healthcare, including through peptides, hormones, and direct-to-consumer lab tests.&nbsp;</span></li><li><span>Strength sports, including Olympic weightlifting, powerlifting, Hyrox, and CrossFit.&nbsp;</span></li></ul><p><span></span><span><span>Highlights:</span></span></p><ul><li><span><a href="https://en.mycoding.id/category/business" target="_blank">These twins' lives were identical, until one got colon malignancy at 21</a></span></li><li><span><a href="https://en.mycoding.id/category/business" target="_blank">Trouble in MAHA Land: They hoped RFK Jr. would assistance their kids alongside autism. Then the cuts began.</a></span></li><li><span><a href="https://en.mycoding.id/category/business" target="_blank">It's not fair for gym bros &mdash; scientists say a $0.50 muscle-building supplement slows aging and may counteract Alzheimer's</a></span></li><li><span><a href="https://en.mycoding.id/category/business" target="_blank">At 78, Arnold Schwarzenegger motionless trains nearly all day &mdash; but his workouts appearance extremely distinct now</a></span></li><li><span><a href="https://en.mycoding.id/category/business" target="_blank">How a stinky small seafood conquered America</a></span></li><li><span><a href="https://en.mycoding.id/category/business" target="_blank">Noom sells psychology-driven importance loss. Some users expected therapy</a></span></li></ul></div> </div> </div> </div>]]></content:encoded> <guid isPermaLink="true">https://en.mycoding.id/an-nyc-marathon-runner-died-suddenly-at-24-her-family-says-the-cause-was-rhabdomyolysis-a-rare-risk-that-can-even-affect-fit-athletes-75462</guid> <pubDate>Tue, 03 Nov 2026 19:11:59 +0700</pubDate> <author><![CDATA[support@mycoding.id (Gabby Landsverk)]]></author> </item> </channel> </rss>