<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>iljitsch.com - retro</title>
<link>http://retro.iljitsch.com/</link>
<description>Iljitsch van Beijnum's retro posts</description>

<item>
  <title>Vandaag is Teletext 45 jaar oud!</title>
  <description>&lt;style&gt;@font-face { font-family: &quot;ttx&quot;; src: url(&quot;https://www.iljitsch.com/fonts//MODE7GX3.TTF&quot;); }&lt;/style&gt;
&lt;div style=&quot;font-family: ttx; background-color: black; color: #e0e000; padding: 0.5em;&quot;&gt;
Op 1 april 1980 werd in Nederland Teletekst gelanceerd. Zelf maakte ik hier in 1983 kennis mee, en dit was voor het eerst dat ik digitale informatie waar ik zelf (in enige mate) keuze in had op mijn scherm zag verschijnen.
&lt;p&gt;

Bijna een halve eeuw later bestaat Teletext nog steeds in Nederland, waar de &lt;a style=&quot;color: #00e0e0;&quot; href=https://nos.nl/teletekst/101&gt;101&lt;/a&gt; toch het hoogste is wat je kan bereiken qua actueel nieuws.
&lt;p&gt;

Ik open de app meerdere keren per dag op mijn iPhone of iPad, en met enige regelmaat ook op mijn LG TV.
&lt;p&gt;

Soms moeten we toch stellen &quot;less is more&quot;, waarbij de beperkingen uit de jaren &apos;80 Teletext beter maken dan het wilde westen van het web.
&lt;/div&gt;</description>
  <link>http://www.iljitsch.com/2025/04-01-vandaag-is-teletext-45-jaar-oud.html</link>
  <guid isPermaLink="true">http://www.iljitsch.com/2025/04-01-vandaag-is-teletext-45-jaar-oud.html</guid>
  <pubDate>Tue, 01 Apr 2025 18:35:24 GMT</pubDate>
</item>

<item xml:lang="en">
  <title>More on optical disc longevity</title>
  <description>Two years ago, I wrote a blog post on &lt;a href=&quot;https://www.iljitsch.com/2022/01-09-longevity-of-recordable-blu-ray-discs-bd-r-bd-re.html&quot;&gt;the longevity of optical media&lt;/a&gt;. Today, I found out that the Canadian government also has an interest in this topic and produced the following article: &lt;a href=&quot;https://www.canada.ca/en/conservation-institute/services/conservation-preservation-publications/canadian-conservation-institute-notes/longevity-recordable-cds-dvds.html&quot;&gt;Longevity of Recordable CDs, DVDs and Blu-rays&lt;/a&gt;.
&lt;p&gt;

Much recommended if you&apos;re interested in the topic. However...
&lt;p&gt;

Although I&apos;m sure their findings that a gold reflective layer is much, much better than silver / silver alloy / aluminium, I find their conclusions for &quot;regular&quot; CD-Rs, CD-RWs, DVD-RWs and DVD+RWs, based on accelerated aging tests, clash with my own experiences.
&lt;p&gt;

CD-RWs are rated for 20 to 50 years, but in my experience, those are not reliable at all, with most of them failing in well under 20 years. Rewritable DVDs are even worse, regularly failing &lt;em&gt;immediately&lt;/em&gt;.
&lt;p&gt;

Mass manufactured read-only DVDs and BRs are listed as 10 - 20 years. I can&apos;t think of any of the about 200 that I have that fall in that age range failing to play because the disc was unreadable.
&lt;p&gt;

BD-REs (rewritable blu-ray discs) are listed as 10 - 20 years, which is not too bad, but BD-Rs only 5 - 10 years. I&apos;m glad to report that my oldest ones, both two years old, still read without trouble, but this seems a very low number... especially for HTL discs that don&apos;t use organic dyes. Can it be right?
&lt;p&gt;

Also &lt;a href=&quot;http://www.microscopy-uk.org.uk/mag/indexmag.html?http://www.microscopy-uk.org.uk/mag/artsep16/mol-mdisc-review.html&quot;&gt;see this&lt;/a&gt; on M-DISC longevity.</description>
  <link>http://www.iljitsch.com/2024/05-09-more-on-optical-disc-longevity.html</link>
  <guid isPermaLink="true">http://www.iljitsch.com/2024/05-09-more-on-optical-disc-longevity.html</guid>
  <pubDate>Thu, 09 May 2024 13:23:07 GMT</pubDate>
</item>

<item xml:lang="en">
  <title>&#8594; The beauty of finished software</title>
  <description>&lt;blockquote&gt;Finished software is software that’s not expected to change, and that’s a feature! You can rely on it to do some real work.&lt;/blockquote&gt;
&lt;p&gt;

We need more of this.
&lt;p&gt;

But: how do you &lt;em&gt;write&lt;/em&gt; software that will keep working for decades to come? Certainly don&apos;t look at Apple for this, they keep changing their CPU architectures every decade or so and after a transition period, the old stuff is dead.
&lt;p&gt;

Could &lt;a href=&quot;https://en.wikipedia.org/wiki/WebAssembly&quot;&gt;WebAssembly&lt;/a&gt; be the solution? This is a pretty fast binary format that almost any programming language can be compiled to.</description>
  <link>https://josem.co/the-beauty-of-finished-software/</link>
  <guid isPermaLink="true">https://josem.co/the-beauty-of-finished-software/</guid>
  <pubDate>Wed, 01 Nov 2023 17:01:30 GMT</pubDate>
</item>

<item xml:lang="en">
  <title>SQLite: add a powerful database engine to any app</title>
  <description>When I was 24, I decided to give up my job and go to college and study computer science. If I&apos;d have known how many database classes that involved, maybe I would have reconsidered.
&lt;p&gt;

Back then, we had a big server that ran a RDBMS (relational database management system) that hundreds of students all used together. These systems were big, complex and &lt;em&gt;expensive&lt;/em&gt;. (Oracle made its fortune selling RDBMSes.) MySQL and PostgresQL are somewhat more streamlined free and open source RDBMSes. Much better, but firewalling, user authentication and backups are still somewhat of a headache. But hey, if you need a database, you need a database.
&lt;p&gt;

Enter SQLite.
&lt;p&gt;

Traditional RDBMSes are a &lt;em&gt;service&lt;/em&gt; that you connect to over the network—even if the RDBMS runs on the local machine. SQLite, on the other hand, is just a (pretty small) library that you link to in your software, and all the database contents go into a single file stored on the local file system. But you still get a very complete implementation of SQL, the &quot;structured query language&quot; that is used to interact with most databases.
&lt;p&gt;

I find myself dealing with &lt;a href=&quot;https://en.wikipedia.org/wiki/Comma-separated_values&quot;&gt;CSV files&lt;/a&gt; and the like pretty regularly. For just getting data in and out of applications, this is usually fine. But doing anything useful with CSV data in your own scripts or applications is a chore. With SQL, on the other hand, you can easily analyse and transform data, often with pretty simple SQL queries.
&lt;p&gt;

&lt;h2&gt;Compared to MySQL&lt;/h2&gt;
&lt;p&gt;

In the past, I&apos;ve installed MySQL on my laptop to some &lt;a href=&quot;//www.bgpexpert.com/presentations/AS%20paths%20long%20longer%20longest.pdf&quot;&gt;data analysis&lt;/a&gt;. Having to install a big piece of software and configuring a user account and permissions is less than ideal. With SQLite you just point to a local file and you&apos;re in business. &lt;a href=&quot;https://stackoverflow.com/questions/1711631/improve-insert-per-second-performance-of-sqlite&quot;&gt;If you know what you&apos;re doing&lt;/a&gt;, SQLite can also be a lot faster than many other database engines such as MySQL. (Although without grouping large numbers of insert statements into larger &lt;a href=&quot;https://en.wikipedia.org/wiki/Database_transaction#In_SQL&quot;&gt;transactions&lt;/a&gt; SQLite will be slow.)
&lt;p&gt;

Se the page &lt;a href=&quot;https://www.sqlite.org/whentouse.html&quot;&gt;Appropriate Uses For SQLite&lt;/a&gt; on the SQLite website to learn when SQLite is a good fit and when it isn&apos;t. The main thing is that SQLite is not a good fit when the application needs to access the database over a network.
&lt;p&gt;

&lt;h2&gt;Using SQLite with PHP&lt;/h2&gt;
&lt;p&gt;

Initially, it seemed that moving from MySQL to SQLite in PHP &lt;a href=&quot;https://phpdelusions.net/pdo&quot;&gt;would be tricky&lt;/a&gt;. However, the basics are no issue at all. This is the simple way to use MySQL in PHP:
&lt;p&gt;

&lt;pre&gt;
$db = mysqli_connect(&quot;localhost&quot;, &quot;db_user&quot;, &quot;secretpw&quot;, &quot;db_name&quot;);
$result = $db-&gt;query(&quot;select * from pages where pagenum = $n&quot;);
while ($row = $result-&gt;fetch_assoc())
  echo json_encode($row);
$db-&gt;close();
&lt;/pre&gt;
&lt;p&gt;

That translates relatively neatly into SQLite:
&lt;p&gt;

&lt;pre&gt;
$db = new SQLite3(&quot;content.db&quot;);
$result = $db-&gt;query(&quot;select * from pages where pagenum = $n&quot;);
if ($row = $result-&gt;fetchArray())
  echo json_encode($row);
$db-&gt;close();
&lt;/pre&gt;
&lt;p&gt;

The &lt;a href=&quot;https://www.sqlite.org/quickstart.html&quot;&gt;C API&lt;/a&gt; requires a few more steps to get things done, but doesn&apos;t look excessively complicated.
However, MySQL and SQLite use different SQL dialects. So far, my main issue has been the missing left() and right() functions and the handling of &lt;a href=&quot;https://www.sqlite.org/lang_datefunc.html&quot;&gt;dates/times&lt;/a&gt;. Especially adjusting a given date is done in rather different ways.
&lt;p&gt;

&lt;h2&gt;SQLite from the command line&lt;/h2&gt;
&lt;p&gt;

You can directly interact with SQLite databases through the sqlite3 program that is installed by default on a good number of operating systems. You can download the Windows version from the &lt;a href=&quot;https://www.sqlite.org/download.html&quot;&gt;sqlite.org&lt;/a&gt; version. And there&apos;s even an &lt;a href=&quot;https://aminet.net/package/biz/dbase/sqlite-3.34.0-amiga&quot;&gt;Amiga port&lt;/a&gt;. Sweet. Just type &quot;sqlite3&quot; followed by the filename of a database file and you&apos;re in business. SQLite 3 is open source, and interestingly, has no license: it&apos;s entirely in the public domain.
&lt;p&gt;

A features in SQLite that I really like is that you can read &lt;a href=&quot;https://en.wikipedia.org/wiki/Binary_large_object&quot;&gt;blobs&lt;/a&gt; from the file system in order to store them in a database table, and then later write those back to the file system:
&lt;p&gt;

insert into blobstore (id, data) values (1, readfile(&apos;Makefile&apos;));
select writefile(&apos;blob.bin&apos;, data) from blobstore where id = 1;
&lt;p&gt;

And another great feature of the command line sqlite3 program is that you can just call an editor to edit the contents of a field. This is especially useful if you store larger texts in a database. It works like this:
&lt;p&gt;

&lt;pre&gt;
% sqlite3 test.db
SQLite version 3.28.0 2019-04-15 14:49:49
Enter &quot;.help&quot; for usage hints.
sqlite&gt; update blobstore set data = edit(data, &apos;vi&apos;) where id = 1;
&lt;/pre&gt;
&lt;p&gt;

(Of course in general you&apos;d probably edit text columns, not blob columns.)
&lt;p&gt;

&lt;h2&gt;Portability and easy backups&lt;/h2&gt;
&lt;p&gt;

As mentioned before, SQLite stores an entire database, holding one or more tables and all the associated housekeeping, in a single file. So you can just copy that file to another computer, email it to someone, or use standard backup mechanisms to back it up. (Ok, it seems that backing up the database file while changes are being made is not 100% bullet proof, but it&apos;s close.)
&lt;p&gt;

The SQLite3 file format has been backward compatible since 2004, and it&apos;s 32/64-bit and big-endian/little-endian agnostic. This means you can just email a copy of a SQLite database to someone else, and they will be able to use it without trouble. And you can be fairly confident that several decades from now, it&apos;s still possible to retrieve data from an SQLite file.
&lt;p&gt;

SQLite has some interesting Unicode caveats, but I&apos;ll save those for a later post.</description>
  <link>http://www.iljitsch.com/2023/09-04-sqlite-add-a-powerful-database-engine-to-any-app.html</link>
  <guid isPermaLink="true">http://www.iljitsch.com/2023/09-04-sqlite-add-a-powerful-database-engine-to-any-app.html</guid>
  <pubDate>Mon, 04 Sep 2023 14:51:39 GMT</pubDate>
</item>

<item xml:lang="en">
  <title>SDBox: a cheap SD card adapter for your Amiga</title>
  <description>I was watching the videos &lt;url=https://www.youtube.com/watch?v=2Sgleturods&gt;on the BBC Master&lt;/a&gt; computer on the Adrian&apos;s Digital Basement Youtube channel. Adrian has cleaned up this old Acorn BBC Master, restored the keyboard to full functionality and then started to &quot;Americanize&quot; it by changing the power supply to use 120 V, and making the composite video NTSC rather PAL.
&lt;p&gt;

But what really peaked my interest is that he made a tiny little interface to hook up SD cards to the Master&apos;s user port. I think it only uses four wires. There&apos;s a very small circuit board, but that only has some resistors to adapt the user port&apos;s 5 V to the 3.3 V used by SD cards. Apparently, that&apos;s all the hardware you need for reading (and writing?) SD cards. Wow.
&lt;p&gt;

Digging a bit deeper, it looks like SD cards use the super simple &lt;a href=&quot;https://en.wikipedia.org/wiki/Serial_Peripheral_Interface&quot;&gt;Serial Peripheral Interface&lt;/a&gt; (SPI) interface/protocol as a lowest common denominator. And that is a protocol that you can &lt;a href=&quot;https://www.iljitsch.com/2022/04-03-making-8-bit-computers-load-from-tape-super-fast.html&quot;&gt;bit bang&lt;/a&gt; with a few general purpose IO lines without trouble. That&apos;s going to be slow, but it&apos;ll still work.
&lt;p&gt;

So...
&lt;p&gt;

Could this also work on an Amiga?
&lt;p&gt;

One of the issues with Amigas is that none of their I/O options are in general use today. Getting data on and off your Amiga can be a challenge, especially for A500s without any additional hardware. So a simple way to read and perhaps write SD cards would be very welcome. Turns out, there are indeed cheap/easy solutions to use SPI in general or use SD cards with through the printer port on all Amigas (except for the A1000).
&lt;p&gt;

If you are inclined to build your own hardware, have a look at the &lt;a href=&quot;https://github.com/jbilander/SDBox-v2&quot;&gt;SDBox-v2 github repository&lt;/a&gt;. You can also &lt;a href=&quot;https://amigastore.eu/825-sdbox.html&quot;&gt;buy one premade&lt;/a&gt; for about 50 euros. And read &lt;a href=&quot;https://lyonsden.net/sdbox-review/&quot;&gt;this review&lt;/a&gt; to learn how well it works.
&lt;p&gt;

It does use an Arduino to translate the parallel I/O from the Amiga&apos;s printer port to SPI on the SD card side, though, no bit banging.
&lt;p&gt;

I&apos;d say that with an A600 or A1200 you&apos;re better off with CF cards in the PCMCIA slot for about the same price, or perhaps a PCMCIA card network card with a &lt;a href=&quot;https://aminet.net/package/driver/net/cnetdevice&quot;&gt;driver&lt;/a&gt; off of Aminet.
&lt;p&gt;

I&apos;d say that for an A500 or an A2000 without a harddrive, a &lt;a href=&quot;http://www.iljitsch.com/2020/10-21-amiga-short-takes-upgrading-my-amiga-3000.html&quot;&gt;Gotek&lt;/a&gt; floppy emulator is probably a better option. But for any non-A600/A1200 without a harddrive, the SDBox is a great solution because it lets you files that are larger than what fits on one floppy on your computer.</description>
  <link>http://www.iljitsch.com/2023/08-21-sdbox-a-cheap-sd-card-adapter-for-your-amiga.html</link>
  <guid isPermaLink="true">http://www.iljitsch.com/2023/08-21-sdbox-a-cheap-sd-card-adapter-for-your-amiga.html</guid>
  <pubDate>Mon, 21 Aug 2023 14:14:16 GMT</pubDate>
</item>

</channel>
</rss>
