<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Geek Rant dot org</title>
	<atom:link href="https://www.geekrant.org/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.geekrant.org</link>
	<description></description>
	<lastBuildDate>Fri, 09 Jan 2026 11:51:50 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>
	<item>
		<title>160/10/6 print chart</title>
		<link>https://www.geekrant.org/2026/01/09/160-10-6-print-chart/</link>
					<comments>https://www.geekrant.org/2026/01/09/160-10-6-print-chart/#respond</comments>
		
		<dc:creator><![CDATA[daniel]]></dc:creator>
		<pubDate>Fri, 09 Jan 2026 11:51:50 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Nostalgia]]></category>
		<guid isPermaLink="false">https://www.geekrant.org/?p=7972</guid>

					<description><![CDATA[Just having a clear-out, and found this old sheet of paper from my university days. I have no idea why I kept it. The full thing is A3, but this is an excerpt. I seem to have kept this photocopy, and a few originals which use yellow ink. They seem to have been printed by [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Just having a clear-out, and found this old sheet of paper from my university days. I have no idea why I kept it.</p>



<p>The full thing is A3, but this is an excerpt.</p>



<figure class="wp-block-embed is-type-photo is-provider-flickr wp-block-embed-flickr"><div class="wp-block-embed__wrapper">
<a href="https://www.flickr.com/photos/danielbowen/55032085220/in/dateposted/"><img fetchpriority="high" decoding="async" src="https://live.staticflickr.com/65535/55032085220_d71374c8a8_c.jpg" alt="&quot;150/10/6&quot; print layout sheet, originally circa 1970s" width="800" height="407" /></a>
</div></figure>



<p>I seem to have kept this photocopy, and a few originals which use yellow ink.</p>



<p>They seem to have been printed by the Chisholm Institute of Technology (later Monash University) student union for the use of information technology students like me.</p>



<p>I recall a lot of primitive equipment when I was studying there in 1989-92, especially in that first year before they introduced a lot of upgrades. We used these sheets for <a href="https://en.wikipedia.org/wiki/COBOL">COBOL</a> programming, because all the code had to be formatted in a very specific way.</p>



<p><a href="http://www.bitsavers.org/pdf/ibm/1130/A26-5916-10_1130_Bibliograpy_Dec73.pdf">This document</a> describes these sheets thus:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>This 11&#8243; x 18&#8243; chart is printed in green ink and provides 150 printing positions (at 10 positions per inch horizontally) for a printer carriage space-setting of 6 lines per inch. This form replaces GX20-1776 which allowed for a printing span of 144 characters. Printer charts requiring 150-character spans (3211 with 18 additional print position feature) may be prepared using this chart. This chart may be reproduced using most standard office copying machines.</p>
</blockquote>



<p>Not intending to keep these, but thought I&#8217;d scan and post before they go in the recycling.</p>



<p>I don&#8217;t look fondly back on using these&#8230; but they&#8217;re a bit of history.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.geekrant.org/2026/01/09/160-10-6-print-chart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Use Python to load CSV into sqlite3 database</title>
		<link>https://www.geekrant.org/2025/07/13/use-python-to-load-csv-into-sqlite3-database/</link>
					<comments>https://www.geekrant.org/2025/07/13/use-python-to-load-csv-into-sqlite3-database/#respond</comments>
		
		<dc:creator><![CDATA[Josh]]></dc:creator>
		<pubDate>Sun, 13 Jul 2025 00:57:51 +0000</pubDate>
				<category><![CDATA[Data]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://www.geekrant.org/?p=7963</guid>

					<description><![CDATA[The Internet seems to have trouble telling you how to load an arbitrary comma separated values datafile into a database. Assuming the CSV has a header row, and given sqlite3 doesn&#8217;t know or care about data types, this ought to be a doddle. import csv import sqlite def import_csv_to_db(table_name: str): """Load arbitarty CSV file into [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>The Internet seems to have trouble telling you how to load an arbitrary comma separated values datafile into a database. Assuming the CSV has a header row, and given sqlite3 doesn&#8217;t know or care about data types, this ought to be a doddle.</p>


<pre><code class="python">import csv
import sqlite

def import_csv_to_db(table_name: str):
  """Load arbitarty CSV file into database"""
  filename = f"{table_name}.csv"
  columns = None
  count = None
  with open(filename) as f:
    rows = []
    reader = csv.reader(f)
    for row in reader:
      if columns:
        rows.append(row)
        if len(row)!=count:
          print(f"{table_name} column count mismatch; {len(row)} columns in this row, {count} in header")
          print(row)
          print("Halting")
          exit()
      else:
        columns = row
        count = len(columns)
        col_list = ",".join(columns)
        create_sql = f"CREATE TABLE IF NOT EXISTS {table_name} ({col_list})"
        insert_sql = f"INSERT INTO {table_name} ({col_list}) VALUES ({','.join('?' * len(columns))})"
  return create_sql, insert_sql, rows
  
conn = sqlite3.connect(self.db_path)
c = conn.cursor()

create, insert, rows = import_csv_to_db('import_filename')
c.execute(create_sql)
c.executemany(insert_sql, rows)</code></pre>


<p>You could do what I did, and add a column-name:datatype lookup, but rather than throw that in here I&#8217;ve left it as an exercise for the reader. Equally, halting the program when there&#8217;s missing columns is kinda extreme, but in my particular use case it&#8217;s reasonable. Fix it if you don&#8217;t like it.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.geekrant.org/2025/07/13/use-python-to-load-csv-into-sqlite3-database/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Windows 10 end of support in 2025 &#8211; options</title>
		<link>https://www.geekrant.org/2025/04/18/windows-10-end-of-support/</link>
					<comments>https://www.geekrant.org/2025/04/18/windows-10-end-of-support/#comments</comments>
		
		<dc:creator><![CDATA[daniel]]></dc:creator>
		<pubDate>Fri, 18 Apr 2025 13:28:35 +0000</pubDate>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[upgrades]]></category>
		<category><![CDATA[Windows 10]]></category>
		<category><![CDATA[Windows 11]]></category>
		<guid isPermaLink="false">https://www.geekrant.org/?p=7882</guid>

					<description><![CDATA[Windows 10 ends support in October 2025. Annoying. I had a desktop PC on Win10. The desktop is very fast, and was a recent hand-me-down from a friend who is a gamer and has upgraded. But it has an i5-4670K as its CPU, which is not supported by Win11. So I had to figure out [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Windows 10 ends support in October 2025. Annoying.</p>



<p>I had a desktop PC on Win10. The desktop is very fast, and was a recent hand-me-down from a friend who is a gamer and has upgraded.</p>



<p>But it has an i5-4670K as its CPU, which is <a href="https://learn.microsoft.com/en-us/windows-hardware/design/minimum/supported/windows-11-supported-intel-processors">not supported</a> by Win11. So I had to figure out what to do.</p>



<p>Possible options:</p>



<ul class="wp-block-list">
<li>Ignore the deadline &#8211; definitely not wise</li>



<li>Upgrade/replace the PC &#8211; seems wasteful because apart from arbitrary Windows 11 support requirements, it&#8217;s actually fine</li>



<li>Pay for support &#8211; <a href="https://www.microsoft.com/en-au/windows/end-of-support">Extended Security Updates</a> for home users will cost US$30 and may not run for more than a year</li>



<li>In my case I could get the laptop docked properly and just use that &#8211; and scrap the desktop &#8211; a big waste</li>



<li>Perhaps I could migrate to Linux</li>
</ul>



<h2 class="wp-block-heading">Switching to Linux?</h2>



<p>I have to admit, attempting to abandon commercial software is appealing to me.</p>



<p>Which Linux distro? I&#8217;d probably lean towards an <a href="https://wiki.ubuntu.com/Releases">LTS version of Ubuntu</a>, because it&#8217;s well supported, and hopefully the interface is fairly familiar as a Windows user.</p>



<p>A lot of the stuff I do on this desktop is web-based, so apart from installing the OS, the main challenge would be to find equivalents for the non-web applications that I use:</p>



<ul class="wp-block-list">
<li>Word, Excel, Powerpoint &#8211; shouldn&#8217;t be too hard; mostly covered by LibreOffice and variants</li>



<li>I also use Access. Libre has <a href="https://www.libreoffice.org/discover/base/">Base</a>&#8230; but I tried the Windows version and found it impossibly complicated and limited.</li>



<li>Paint.Net &#8211; there seem to be <a href="https://www.reddit.com/r/linuxquestions/comments/vue5pf/best_paintnet_alternative_on_linux/">a few options</a> &#8211; not sure if any support HEIC images off iPhones</li>



<li>A video editor &#8211; I recently tried <a href="https://www.blackmagicdesign.com/products/davinciresolve">Da Vinci Resolve</a> for Windows, and have been impressed. I notice there&#8217;s a Linux version. Officially it only supports CentOS, but there seems to be a way to <a href="https://www.linuxuprising.com/2018/06/how-to-install-davinci-resolve-15-in.html">get it onto other distros</a>. The other one I&#8217;ve used a bit recently is Capcut, which also has a Linux version.</li>
</ul>



<p>Printer/scanner support could be a challenge. I have an old Canon MP610 that I don&#8217;t particularly want to replace either.</p>



<h2 class="wp-block-heading">How to dodge Win 11&#8217;s requirements</h2>



<p>There&#8217;s one more option. Turns out there are ways to dodge Microsoft&#8217;s requirements for specific CPUs, TPM and Secure Boot.</p>



<p>You can use <a href="https://rufus.ie/en/">Rufus</a> to create a customised Windows 11 install ISO.</p>



<p>These articles go into some detail: <a href="https://www.tomshardware.com/how-to/bypass-windows-11-tpm-requirement">Tom&#8217;s Hardware</a>, <a href="https://www.zdnet.com/article/how-to-upgrade-an-incompatible-windows-10-pc-to-windows-11-two-ways/">ZDNet/Ed Bott</a>.</p>



<p><strong>In short:</strong></p>



<ul class="wp-block-list">
<li><a href="https://aka.ms/DownloadWindows11">Download</a> a Windows ISO</li>



<li>Run <a href="https://rufus.ie/en/">Rufus</a> to create a USB disk image that removes the system requirements you don&#8217;t want</li>



<li>Run the USB drive SETUP.EXE</li>
</ul>



<p>That&#8217;s about it. Follow the prompts and Windows 10 will be upgraded to 11.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="800" height="389" src="https://www.geekrant.org/files/2007/win11-install.png" alt="Installing Windows 11" class="wp-image-7967" srcset="https://www.geekrant.org/files/2007/win11-install.png 800w, https://www.geekrant.org/files/2007/win11-install-300x146.png 300w, https://www.geekrant.org/files/2007/win11-install-768x373.png 768w, https://www.geekrant.org/files/2007/win11-install-624x303.png 624w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>One gotcha I noticed while trying this first on an old laptop: if you choose a different language ISO than you were using for Win10, you can&#8217;t keep your applications. I had been on the standard English US version of Win10, and downloaded the Win11 English International version.</p>



<p>Most of us Australians are probably on the English US version. It seems to be a bit hard to tell, but if you check a Windows option/setting such as desktop personalisation and it says Color (US spelling) you&#8217;re probably on it. Get the correct ISO and you can keep everything. You&#8217;ll be warned before it starts if you get the wrong one.</p>



<p>When upgrading you may also see a warning about entitlement to updates. The <a href="https://www.reddit.com/r/Windows11/comments/q4i95r/what_does_not_entitled_to_receive_updates_mean/">crowd on Reddit think</a> this is just legalese to cover themselves &#8211; or that you&#8217;ll only get security updates, not feature updates. After I upgraded my laptop, Windows Update was able to find and install security updates.</p>



<p>After doing the old laptop, the second computer I tried was my desktop PC&#8230; this also went smoothly.</p>



<p>Not saying I won&#8217;t dabble with Linux in the future, but for me I&#8217;ve solved the immediate problem.</p>



<p>Hope this helps others.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.geekrant.org/2025/04/18/windows-10-end-of-support/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Nine newspapers: one for all</title>
		<link>https://www.geekrant.org/2024/11/16/nine-newspapers-one-for-all/</link>
					<comments>https://www.geekrant.org/2024/11/16/nine-newspapers-one-for-all/#respond</comments>
		
		<dc:creator><![CDATA[daniel]]></dc:creator>
		<pubDate>Sat, 16 Nov 2024 03:37:00 +0000</pubDate>
				<category><![CDATA[Web pages]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[URLs]]></category>
		<guid isPermaLink="false">https://www.geekrant.org/?p=7913</guid>

					<description><![CDATA[Nine Entertainment&#8217;s major Australian newspapers, The Age, Sydney Morning Herald, and Brisbane Times, have a soft paywall. You can get some articles for free; some are only for paying customers; and some fall somewhere in between, with them granting complimentary access to a few, before asking for money. This post is not to tell you [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://en.wikipedia.org/wiki/Nine_Entertainment">Nine Entertainment&#8217;s</a> major Australian newspapers, <a href="https://www.theage.com.au/">The Age</a>, <a href="https://www.smh.com.au/">Sydney Morning Herald</a>, and <a href="https://www.brisbanetimes.com.au/">Brisbane Times</a>, have a soft paywall. You can get some articles for free; some are only for paying customers; and some fall somewhere in between, with them granting complimentary access to a few, before asking for money.</p>



<p>This post is not to tell you about various ways of bypassing the paywall if you don&#8217;t have a subscription.</p>



<p>But if you have a subscription to <strong>one</strong> of these, then you can get access to the other two.</p>



<p>I subscribe to The Age, but sometimes hit the paywall when trying to read SMH or BT articles.</p>



<p>In fact sometimes the links within Age articles are sloppy, and point to SMH. Ditto some of the social media shares I see that are from people who I know to be Age readers. I think there&#8217;s something dodgy in the app or web site that sometimes spits out an SMH link.</p>



<p>Then I noticed the articles on each site are replicated to the others. If there&#8217;s an <strong>smh.com.au</strong>/whatever/article URL that I can&#8217;t read, simply changing it to <strong>theage.com.au</strong>/whatever/article works. Same with brisbanetimes.</p>



<p>Not too hard to do this by hand in the browser, but it can also be done automatically with a browser plugin such as <a href="https://einaregilsson.com/redirector/">Redirector</a>.</p>



<p>I wanted it to preserve the SMH or BT home pages, so I can see what the Sydney or Brisbane headlines are. So I added an exclusion for that.</p>



<p>It just about works, with the caveat that if browsing the SMH or BT home page, you need to right-click and open link in a new tab for Redirector to kick-in with the modified Age URL.</p>



<p>Import the JSON config I&#8217;ve listed below, or write your own. </p>



<pre class="wp-block-code"><code>{
    "createdBy": "Redirector v3.5.3",
    "createdAt": "2024-11-12T04:20:41.494Z",
    "redirects": &#91;
        {
            "description": "SMH to Age",
            "exampleUrl": "https://www.smh.com.au/technology/shameful-tech-council-facing-questions-over-richard-white-saga-20241025-p5kla6.html",
            "exampleResult": "https://www.theage.com.au/technology/shameful-tech-council-facing-questions-over-richard-white-saga-20241025-p5kla6.html",
            "error": null,
            "includePattern": "https://www.smh.com.au/*",
            "excludePattern": "https://www.smh.com.au/",
            "patternDesc": "",
            "redirectUrl": "https://www.theage.com.au/$1",
            "patternType": "W",
            "processMatches": "noProcessing",
            "disabled": false,
            "grouped": false,
            "appliesTo": &#91;
                "main_frame"
            ]
        },
        {
            "description": "Brisbane Times to Age",
            "exampleUrl": "https://www.brisbanetimes.com.au/business/companies/abc-to-slash-dozens-of-jobs-ahead-of-restructure-20230615-p5dgoe.html",
            "exampleResult": "https://www.theage.com.au/business/companies/abc-to-slash-dozens-of-jobs-ahead-of-restructure-20230615-p5dgoe.html",
            "error": null,
            "includePattern": "https://www.brisbanetimes.com.au/*",
            "excludePattern": "https://www.brisbanetimes.com.au/",
            "patternDesc": "",
            "redirectUrl": "https://www.theage.com.au/$1",
            "patternType": "W",
            "processMatches": "noProcessing",
            "disabled": false,
            "grouped": false,
            "appliesTo": &#91;
                "main_frame"
            ]
        }
    ]
}</code></pre>



<p>Hopefully this is useful to others who subscribe to one of these sites.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.geekrant.org/2024/11/16/nine-newspapers-one-for-all/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Embedding Mastodon posts in WordPress</title>
		<link>https://www.geekrant.org/2024/10/04/embedding-mastodon-posts-in-wordpress/</link>
					<comments>https://www.geekrant.org/2024/10/04/embedding-mastodon-posts-in-wordpress/#comments</comments>
		
		<dc:creator><![CDATA[daniel]]></dc:creator>
		<pubDate>Fri, 04 Oct 2024 11:35:35 +0000</pubDate>
				<category><![CDATA[Social networking]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Mastodon]]></category>
		<guid isPermaLink="false">https://www.geekrant.org/?p=7908</guid>

					<description><![CDATA[I&#8217;m someone who has made their escape from Twitter, mostly posting to a mix of Mastodon, Threads and Bluesky. It was really easy to embed a Twitter post in WordPress: just paste the URL into the block editor and it&#8217;d do the hard work for you. That doesn&#8217;t work for Mastodon, possibly because it&#8217;s so [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;m someone who has made their escape from Twitter, mostly posting to a mix of Mastodon, Threads and Bluesky.</p>



<p>It was really easy to embed a Twitter post in WordPress: just paste the URL into the block editor and it&#8217;d do the hard work for you.</p>



<p>That doesn&#8217;t work for Mastodon, possibly because it&#8217;s so many different domains (servers) that WP can&#8217;t figure out when it&#8217;s a Mastodon post. Pasting the URL just displays&#8230; the URL.</p>



<p>Mastodon does have a function to get the embed code, which you can put into a WP Custom HTML block&#8230; but that didn&#8217;t work for me either. On <a href="https://danielbowen.com/">my personal blog</a> with its modified <a href="https://en-au.wordpress.org/themes/twentytwenty/">Twenty Twenty theme</a>, the Mastodon post appeared hard against the left hand side of the browser window, out of whack with the rest of the post text.</p>



<p>With some experimentation and Googling, I discovered that tweaking the embed code slightly made it better.</p>



<p>Basically in the HTML, edit the blockquote style attribute <strong>margin</strong> and change it from <strong>0</strong> to <strong>auto</strong>. That made it appear in line with the rest of the post.</p>



<p>I&#8217;d love to show you it here, but it turns out the even older theme we&#8217;re using on geekrant.org.right now can&#8217;t handle them at all. Attempting to save a post with embedded Mastodon HTML results in a Save error. (And I don&#8217;t have time right now to get screen grabs.)</p>



<p>Hmm, might be time for a theme update.</p>



<p>Anyway, hope this helps someone else out there (and remind me of what I need to do next time).</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.geekrant.org/2024/10/04/embedding-mastodon-posts-in-wordpress/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
