<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/sitemap_generator/default/sitemap.xsl"?>
<!--Generated by the Simple XML Sitemap Drupal module: https://drupal.org/project/simple_sitemap.-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
 <url>
  <loc>https://www.dealmobile.co.uk/</loc>
  <lastmod>2026-10-23T19:27:24+01:00</lastmod>
  <changefreq>weekly</changefreq>
  <priority>1.0</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/cv</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.9</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/products</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.8</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing</loc>
  <lastmod>2026-10-23T19:27:24+01:00</lastmod>
  <changefreq>weekly</changefreq>
  <priority>0.8</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/contact</loc>
  <changefreq>yearly</changefreq>
  <priority>0.5</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/making-large-uploads-resumable</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/making-large-uploads-resumable/hero.png</image:loc>
   <image:caption>A row of twelve chunks: the first eight are marked as already held by the server, the last four are highlighted as the ones sent now, with the client asking the server for its status.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/one-source-of-truth-behind-a-static-app</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/one-source-of-truth-behind-a-static-app/hero.png</image:loc>
   <image:caption>A flow from the CMS to a snapshot of static JSON files to a highlighted gate and then the app, with the gate also leading to “Any drift: no build”.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/publishing-to-apple-news-from-php</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/publishing-to-apple-news-from-php/hero.png</image:loc>
   <image:caption>A diagram of PHP objects becoming a multipart POST of article.json, metadata and an image, signed with HHMAC, and sent to Apple News.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/saving-websites-for-offline-reading</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/saving-websites-for-offline-reading/hero.png</image:loc>
   <image:caption>Five page addresses on the left, each with an arrow to the file it is saved as on the right, with the numbered news address folded into one file name highlighted.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/why-the-solar-calendar-has-13-months</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/why-the-solar-calendar-has-13-months/hero.png</image:loc>
   <image:caption>Thirteen identical blocks of four weeks, each starting on a Monday, with a gold extra week at the end for leap years. The heading reads “364 days = 52 whole weeks”.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/checking-a-delegates-edits</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/checking-a-delegates-edits/hero.png</image:loc>
   <image:caption>Terminal output from Mullet’s diff classifier on a test file: a changed expectation from 2 to 1 raises a test_assertion_changed flag, and a curly quote turned straight raises a quote_flattening flag.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/combining-keyword-and-vector-search</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/combining-keyword-and-vector-search/hero.png</image:loc>
   <image:caption>Diagram of keyword search and vector search feeding a merge step that puts their scores on one scale, followed by a highlighted cross-encoder that reads the query and chunk together and decides the final order.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/counting-developer-activity-from-git</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/counting-developer-activity-from-git/hero.png</image:loc>
   <image:caption>Diagram, with example figures, of one commit touching a source file and a lock file: the source file’s lines are counted, while the lock file’s thousands of lines are left out of the total and listed separately.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/calendar-feed-and-badge-from-a-worker</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/calendar-feed-and-badge-from-a-worker/hero.png</image:loc>
   <image:caption>The Solar Calendar’s live badge reading 19 Winterfylleþ 2026, above a real calendar feed event titled “☀ 19 Winterfylleþ” on a dark terminal card.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/fetching-feeds-from-untrusted-urls</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/fetching-feeds-from-untrusted-urls/hero.png</image:loc>
   <image:caption>A terminal showing RSS to JSON refusing three addresses, including the cloud metadata address written as IPv6, each with the message “Refusing to connect ... private or reserved address”.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/testing-servers-against-an-upload-protocol</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/testing-servers-against-an-upload-protocol/hero.png</image:loc>
   <image:caption>Terminal output of TurboPush’s conformance suite, a list of passing checks with the two that found bugs in the PHP endpoint highlighted, ending in 74 checks, 70 passed, 0 failed.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/cloning-repositories-without-a-token-in-the-url</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/cloning-repositories-without-a-token-in-the-url/hero.png</image:loc>
   <image:caption>Diagram of git asking a short-lived GIT_ASKPASS script for the password and receiving the token, with the remote URL saved in the repository config shown with a user name only and the token-in-URL form struck through.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/finding-the-dull-parts-of-a-screen-recording</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/finding-the-dull-parts-of-a-screen-recording/hero.png</image:loc>
   <image:caption>A chart of motion scores across a 30 second test clip: flat near zero, apart from one tall block from about 15 to 20 seconds that is highlighted as the part kept, above a dashed threshold line.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/indexing-code-by-function-class-and-method</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/indexing-code-by-function-class-and-method/hero.png</image:loc>
   <image:caption>Diagram of one source file split into four chunks: a function, a class summary (highlighted), and two methods, each labelled with its name.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/live-coverage-on-apple-news-from-php</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/live-coverage-on-apple-news-from-php/hero.png</image:loc>
   <image:caption>A diagram of the liveCoverageState values moving from NONE to LIVE, highlighted, to COMPLETED, above a stack of live posts listed newest first.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/one-json-shape-for-rss-atom-and-rdf</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/one-json-shape-for-rss-atom-and-rdf/hero.png</image:loc>
   <image:caption>Three boxes, RSS 2.0, RSS 1.0 and Atom, each with arrows pointing to one highlighted box labelled channel[‘item’], always a list.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/picking-the-cheapest-model-that-can-do-the-job</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/picking-the-cheapest-model-that-can-do-the-job/hero.png</image:loc>
   <image:caption>Bar chart of coding scores against a dashed floor of 54 for advanced work: DeepSeek V4 Flash at 59 clears it, kimi-k2.7-code and kimi-k2.5, with estimated scores of 35 and 25, do not.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/rewriting-an-old-scraper-around-curl-multi</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/rewriting-an-old-scraper-around-curl-multi/hero.png</image:loc>
   <image:caption>Terminal output from Scrape’s search mode on a test listing, with the same report.pdf listed twice under two different local paths and both entries highlighted.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/taxing-a-household-one-earner-at-a-time</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/taxing-a-household-one-earner-at-a-time/hero.png</image:loc>
   <image:caption>A flow from two earners through “Tax each alone” and “Rules on top” to the result, with a gold path showing one person skipping the rules and keeping the calculator’s own figures.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/testing-an-api-client-without-the-network</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/testing-an-api-client-without-the-network/hero.png</image:loc>
   <image:caption>A terminal showing the Puzzler PHP SDK’s offline test run ending in OK, 25 tests, 55 assertions.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/turning-web-pages-into-clean-markdown</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/turning-web-pages-into-clean-markdown/hero.png</image:loc>
   <image:caption>An example page made of navigation, a cookie banner, a newsletter box, the article, a most-read list, share buttons and a footer, with only the article highlighted, and the clean Markdown it becomes beside it.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/a-fourth-screen-on-the-living-room-tv</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/a-fourth-screen-on-the-living-room-tv/hero.png</image:loc>
   <image:caption>The laptop’s desktop drawn to scale: the 3840 by 2160 TV screen on the left, then the laptop’s own panel, then two portrait 4K monitors.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/decluttering-a-tcl-google-tv</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/decluttering-a-tcl-google-tv/home-screen.png</image:loc>
   <image:caption>The TV’s home screen after decluttering: one Fire Stick input and a row of apps, with nothing recommended.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/letting-an-agent-drive-the-tv</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/letting-an-agent-drive-the-tv/hero.png</image:loc>
   <image:caption>The loop each batch went round: a batch file, the batch script, me checking the TV, and the changelog.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/the-packages-i-kept-on-a-google-tv</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/the-packages-i-kept-on-a-google-tv/hero.png</image:loc>
   <image:caption>Ten of the keep-list’s packages, each with the reason it’s kept: the speech recogniser and MediaTek’s picture quality, both checked on the TV, then menus, Wi-Fi, volume and boot loops reported elsewhere, and the setup’s own apps.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/a-tv-remote-from-the-command-line</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/a-tv-remote-from-the-command-line/hero.png</image:loc>
   <image:caption>The TV’s pairing screen, asking for the code DAE61C to be entered on the tcl_tv PC.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/a-markdown-version-of-every-page</loc>
  <lastmod>2026-10-23T19:27:24+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.7</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/posts/a-markdown-version-of-every-page/hero.png</image:loc>
   <image:caption>On the left, the top of a product page on this site, with the Markdown link in the masthead circled. On the right, the start of that page’s Markdown version: front matter with the title, address, type and summary, then the title as a heading and the first paragraph.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/about</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.5</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/pages/about/hero.png</image:loc>
   <image:caption>A timeline from 2004 to now with one bar per job: Summit Media, eCommerce Associates, Tigerfish, Wonga, Turner Broadcasting, then Bright Sites, where the Development Lead years from 2021 are marked in gold.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/accessibility</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.5</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/pages/accessibility/hero.png</image:loc>
   <image:caption>The home page of this site shown twice side by side, in the light theme on the left and the dark theme on the right, with the same text readable in both.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/colophon</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.5</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/pages/colophon/hero.png</image:loc>
   <image:caption>A chain of five boxes: Markdown files in content, a CMS, a theme written for the site (highlighted), Cloudflare, and the visitor’s browser. Below it, a note that almost everything comes from this domain, the two exceptions being Cloudflare’s spam check and visit counter.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/cookies</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.5</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/pages/cookies/hero.png</image:loc>
   <image:caption>Four cards: the session cookie, set only if you send the contact form (highlighted); Cloudflare Web Analytics, which uses no cookies; the light or dark choice, kept in local storage and not a cookie; and Cloudflare’s own cookie for bot checks.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/legal</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.5</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/pages/legal/hero.png</image:loc>
   <image:caption>Four boxes stacked top to bottom: your browser, Cloudflare, 123 Reg and Tom Gould, who runs the site as an individual (highlighted), beside the words “A personal site: sells nothing, no advertising”.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/privacy</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.5</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/pages/privacy/hero.png</image:loc>
   <image:caption>The contact form’s four fields, name, email address, reason and message, lead to two boxes: the message is emailed to me and not kept by the site, and short-lived anti-spam records last from 5 minutes to 30 days.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/terms</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.5</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/pages/terms/hero.png</image:loc>
   <image:caption>Three cards: what is welcome (read, link, share, quote short extracts with a link back), what to ask first (anything beyond a short extract), and what not to do (break or overload the site, enter non-public parts, send spam).</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/dealmobile</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.5</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/dealmobile/dealmobile-2012.png</image:loc>
   <image:title>Deal Mobile in June 2012, comparing the HTC One X with the Samsung Galaxy S III. From the Internet Archive’s Wayback Machine.</image:title>
   <image:caption>The Deal Mobile home page in June 2012: the DealMobile.co.uk logo, a menu of phones, deals, Android, pay as you go, SIM-free, SIM-only, broadband and free gifts, the date the deals were last updated, and an article comparing the HTC One X with the Samsung Galaxy S III.</image:caption>
  </image:image>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/dealmobile/dealmobile-2018.png</image:loc>
   <image:title>Deal Mobile in December 2018, with the Galaxy S7 and the iPhone 6s at the top. Also from the Wayback Machine.</image:title>
   <image:caption>The Deal Mobile home page in December 2018, saying it had 1,372 phones, 29,300 tariffs and 134,430 deals, with the Samsung Galaxy S7 and the iPhone 6s at the top of the list.</image:caption>
  </image:image>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/pages/dealmobile/hero.png</image:loc>
   <image:caption>A timeline from 2011 to 2026. Deal Mobile, the phone deals site, runs from late 2011 to 2019, with 994,202 deals in November 2011 and 1,032,942 at the end of 2015, then a holding page and this site, in gold.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/products/apple-news-api</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.8</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/apple-news-api-light.png</image:loc>
   <image:caption>The documentation home page for the Apple News API PHP client, listing its namespaces and packages.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/products/puzzler-php-sdk</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.8</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/puzzler-php-sdk.png</image:loc>
   <image:caption>A terminal showing one signed request built by the Puzzler PHP SDK: the POST address, client ID, API key and timestamp headers, a highlighted signature and the JSON body.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/products/reelify</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.8</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/reelify.png</image:loc>
   <image:caption>A 30 second recording shown as a bar of idle, active and idle stretches, with an arrow labelled reelify process pointing to a 5.7 second summary and a frame from it.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/products/rss-to-json</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.8</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/rss-to-json.png</image:loc>
   <image:caption>A feed item as XML on the left and the JSON that RSS to JSON’s command prints for it on the right, with attributes under @attributes and repeated categories as a list.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/products/scrape</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.8</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/scrape.png</image:loc>
   <image:caption>Terminal output from Scrape downloading five files from a test directory listing into a local folder tree, ending in 5 successful and 0 failed.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/products/scrapepy</loc>
  <lastmod>2026-10-23T11:48:02+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.8</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/scrapepy.png</image:loc>
   <image:caption>A Markdown file written by ScrapePy: its frontmatter with title, URL, date, page type, word count and domain highlighted, followed by the page’s heading and first link.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/products/solar-calendar</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.8</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/solar-calendar-light.png</image:loc>
   <image:caption>The month view for the 8th month of solar 2026, with Gregorian dates beside each day and today marked.</image:caption>
  </image:image>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/solar-calendar-dark.png</image:loc>
   <image:caption>The month view for the 8th month of solar 2026, with Gregorian dates beside each day and today marked.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/products/turbopush</loc>
  <lastmod>2026-10-20T16:43:59+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.8</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/turbopush-light.png</image:loc>
   <image:caption>The TurboPush demo: a drop zone for up to five files, with options to make chunks fail and to carry on after a reload.</image:caption>
  </image:image>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/turbopush-dark.png</image:loc>
   <image:caption>The TurboPush demo: a drop zone for up to five files, with options to make chunks fail and to carry on after a reload.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/products/where-should-i-live</loc>
  <lastmod>2026-10-20T11:24:37+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.8</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/where-should-i-live-light.png</image:loc>
   <image:caption>The results page filtered to Europe for a business owner on £150,000 with a UK passport: 42 cities match, and Limassol in Cyprus ranks first with a score of 85, a 15% tax rate and monthly costs of £1,211.</image:caption>
  </image:image>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/where-should-i-live-dark.png</image:loc>
   <image:caption>The results page filtered to Europe for a business owner on £150,000 with a UK passport: 42 cities match, and Limassol in Cyprus ranks first with a score of 85, a 15% tax rate and monthly costs of £1,211.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/products/github-auditor</loc>
  <lastmod>2026-10-20T16:43:59+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.8</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/github-auditor-light.png</image:loc>
   <image:caption>Part of a GitHub Auditor activity report, rendered from its Markdown: a developer leaderboard of commits, lines, pull requests and reviews, a separate table for a dependency bot, and the lines left out of each person’s count. The organisation, repositories and people are made-up sample data.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/products/mullet</loc>
  <lastmod>2026-10-20T18:33:20+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.8</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/mullet-light.png</image:loc>
   <image:caption>Mullet in a terminal. mullet preset list shows the four built-in presets, and mullet explain scores a sample task, “redesign the auth architecture across all services, migrate production data and debug the token race condition”, at 85 out of 100 from five signals, puts it in the ADVANCED tier and compares the estimated cost of each tier. The task is made up, and no model was called.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/products/trove</loc>
  <lastmod>2026-10-21T19:28:29+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.8</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/trove-light.png</image:loc>
   <image:caption>A Trove search in a terminal for “write a custom reranker plugin”, over an index of Trove’s own documentation used as sample data. Each of the three results shows its re-ranking, keyword, vector and combined scores, and the plugin guide comes first although another chunk had a higher combined score.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/products/tcl-google-tv-tools</loc>
  <lastmod>2026-10-23T11:15:35+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.8</priority>
  <image:image>
   <image:loc>https://www.dealmobile.co.uk/sites/default/files/content/images/products/tcl-google-tv-tools.png</image:loc>
   <image:caption>The TV’s home screen after decluttering, in Projectivy Launcher: one Fire Stick input, then a row of apps starting with TV, BBC iPlayer, ITVX, Channel 4, 5 and Netflix, with nothing recommended.</image:caption>
  </image:image>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/typescript</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/php</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/uploads</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/security</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/javascript</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/testing</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/data</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/apple-news</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/apis</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/publishing</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/python</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/scraping</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/markdown</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/calendars</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/astronomy</loc>
  <lastmod>2026-10-20T10:43:31+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/ai</loc>
  <lastmod>2026-10-20T16:43:59+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/git</loc>
  <lastmod>2026-10-20T16:43:59+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/search</loc>
  <lastmod>2026-10-20T16:43:59+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/linux</loc>
  <lastmod>2026-10-23T09:39:14+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
 <url>
  <loc>https://www.dealmobile.co.uk/writing/tag/android</loc>
  <lastmod>2026-10-23T09:39:14+01:00</lastmod>
  <changefreq>monthly</changefreq>
  <priority>0.4</priority>
 </url>
</urlset>
