Sunday, August 16, 2026

How to update Tiny Core Linux from version 17.0 to 17.1

I am running only the Core base system, so these instructions cover only that.

  1. First, run getMirror. This will populate $MIRROR system variable. 

  2. Now, you have to update optional kernel modules, if you have any - I don't:
    cd /etc/sysconfig/tcedir/optional
    for File in *\-6.18.2\-*.tcz*; do wget $MIRROR/${File/\-6.18.2\-/\-6.18.35\-}; done

  3. Download updated vmlinuz and core.gz files from:
    http://www.tinycorelinux.net/17.x/x86/release/distribution_files/

    Replace with them existing files in the boot directory. In my case, it is:
    /mnt/sda3/tce/boot

  4. Reboot the system and that's it!

 

Saturday, August 15, 2026

Configuring the SSH server on Tiny Core Linux using OpenSSH

  1. Create (and persist) a proper user

    The default tc user is passwordless, so you either want to set a password for it or perhaps create a separate user. Creating a user and setting a password is the same as on other Linux distributions. Once you do that, you'll need to persist the changes. Add these lines to the /opt/.filetool.lst:

    etc/passwd
    etc/shadow
    etc/group

  2. Install the openSSH package

  3. Create the SSHD configuration from the template

    cd /usr/local/etc/ssh/
    sudo cp sshd_config.orig sshd_config
  4. Start the SSH daemon

    sudo /usr/local/etc/init.d/openssh start

    At this point you should be able to ssh into your machine.
  5. Make the SSH configuration persistent

    sudo echo 'usr/local/etc/ssh' >> /opt/.filetool.lst

  6. Edit the system startup file

    sudo echo '/usr/local/etc/init.d/openssh start &' >> /opt/bootlocal.sh

  7. Backup your configuration files

    backup 

  8. Reboot the system 

That should be it! 

Sunday, June 7, 2026

Novine.eu — reddit post

Copy-paste mog reddit posta koji se nalazi ovdje.

Novine.eu - news site / web servis za sažimanje novinskih članaka u dva paragrafa, on-line već 2.5 godine, tech stack ako koga zanima

Prije 10-ak dana netko je objavio post o svom sličnom web servisu, pa kažem ... idem i ja o svome.

I meni smetaju click-bait naslovi, pop-up prozori, reklame i sve ostalo što je danas, na žalost, postalo neizbježno iskustvo kod konzumiranja vijesti. Ovaj web servis je nastao iz potrebe da za sebe riješim taj problem, a i da se poigram sa nekim stvarčicama (OpenAI API, tipografija, itd.).

Dakle, kada poželite pročitati članak objavljen na nekom news portalu (trenutno su podržani index, telegram, jutarnji i slobodna d.), umjesto da se hrvate s njim, jednostavno ga možete sažeti u dva paragrafa sa najbitnijim informacijama. Klikom na bookmarklet u toolbaru vašeg browsera, copy-pasteom ili drag-and-dropom linka na članak. Napravio sam i jednostavan android app, ali trenutno nije public pa ga koristim samo ja.

Linkovi na sažetke (sa informativnim naslovima) se automatski objavljuju na facebooku, linkedinu, twitteru, blueskyu, pa tako možete pratiti čitljive vijesti i na tim platformama.

Napravio sam i reddit bot-a kojeg ste možda primijetili na nekom od hrvatskih subova: kada netko posta link na članak, bot odgovori sa sažetkom.

Web site, inspiriran minimalizmom, se nalazi na adresi novine.eu

Postoje zasebne kategorije, rubrike i tagovi za članke, i RSS kanali za svaku/svakog od njih. Dosta toga nije još implementirano, bez obzira što je web imao silent launch prije 2.5 godine, jer imam jako mali broj ljudskih posjetitelja (za razliku od botova zbog kojih sam morao upaliti cloudflare zaštitu), pa nove feature dodajem kako su meni potrebni ili interesantni.

Back-end je u Pythonu, sa Flask frameworkom. Front-end je HTML/CSS/JS, nisam neki veliki ljubitelj front-end frameworka. Stvar se vrti na google app engine-u, hosting me košta oko $1 mjesečno. Upravo sam vidio da je većina troška tzv. artifact registry, mislim da bi ga mogao srezati na pola kada počistim stare deploymente.

Za sažimanje članaka koristim gpt-4o-mini model, za tu namjenu je skroz OK, koji put ode u ekavicu, ili kako su neki na redditu komentirali - zna posrbit sažetak. U prosjeku se sažme nekih 10-ak članaka dnevno, mjesečno oko 400,000 input tokena. Ali i tih $0.15 mi je otpisano jer sam u nekom programu gdje se moji requesti koriste za treniranje modela.

Sva pitanja, konstruktivne kritike i prijedlozi su dobrodošli! 

Ažuriranje 2026.08.02:

Počistio sam artifact registry, i ukupan mjesečni trošak hostinga mi je sada $0.20 USD.  


 

 

Wednesday, May 20, 2026

Modern OS for an Old PC: a dumpster Pentium I story

Last update: 2026.08.15

I recently came across an old machine resting on top of a dumpster just as it started to rain. Feeling a bit sad for it, I decided to give this computer a second chance. To my surprise, it turned out to be a 1st generation Pentium running at 200 MHz with 256 MB of RAM—quite impressive for its time back in 1997!

Hardware

The motherboard is a Socket 7 Lucky Star 5I-TX1 REV 2.0. The computer came with two USB ports, but it cannot boot from them. Only HDD, CD, and 3.5" floppy drives are supported.

Memory tested OK but unfortunately, the hard drive was dead, it was making a chirping noise, reminiscent of a bird. I pulled it out and now I'm waiting for an IDE to SD card adapter to arrive, which will help breathe new life into this vintage machine.

PCI 56K Software modem with Motorola chip 62412-51. I don't think we'll be needing it.

The computer came with a PCI 56K software modem featuring a Motorola chip, model 62412-51. Those PCI cards sell for $20-$25 USD on eBay, though I am not sure if this one works - at this time, I won't bother testing it. Since I can not find any use for the 56K modem, I replaced the card with a spare network card. 

HDD and CMOS battery dead

Not to my surprise, the CMOS battery was dead. The new battery didn’t fit properly, likely due to deformation of the slot over the years. This caused a loss of contact, resulting in the BIOS losing its settings every time the power was disconnected. To fix this, I placed a layer of aluminum foil under the battery.

With that issue resolved, it was time to attempt running a live distribution on the machine!

Operating systems 

I am interested only in up-to-date, maintained operating systems that can run on a machine that old. The computer will be connected to a home network with access to the internet, so any old and unmaintained operating system could present a security threat.  

FreeDOS 

FreeDOS 1.4 running on a dumpster Pentium I

FreeDOS was my first choice to try out, and it didn't fail me! The LiveCD booted without any problems, and I was able to try out some applications and games. However, it's frustrating that some games and applications are looking for a swap file on the C drive (which I still don't have), while the memory-mapped drive is on the R drive. Additionally, it would be nice if it detected a network card. Configuring the network card requires saving configuration files and rebooting, which obviously doesn't work on a LiveCD.

antiX 

antiX [wikipedia article] was next on the list. Though it is claimed that it is "suitable for older, less powerful x86-based systems", it turned out that my system is too old for it. 

antiX initial boot screen

The antiX documentation states that the recommended minimum memory is 512MB, while my machine has only 256MB. According to the same documentation, that should be enough for antiX-core (v26, 32-bit), which I tried to run (as I am interested in a console OS only anyway). 

The first problem during the boot was an ‘ACPI BIOS error’ which I solved by adding acpi=off to the boot line. However, I couldn’t get past the next problem — kernel panic.

antiX kernel panic on Pentium I

init was trying to execute an instruction that is not available on the i586 architecture. The telltale signal was the exc_invalid_op message and code <0f> 43, which corresponds to the CMOVAE instruction introduced with the P6 architecture. It turned out that although the kernel is compiled for i486, init is not, and support for those machines has been dropped. You can see the full thread on the antiX forum here. Time to move on...

NetBSD 

NetBSD is available for a wide range of platforms, and my old one should be included. The i386 port wiki page states that "any i486 or better CPU should work". I created a bootable CD from the NetBSD-10.1-i386.iso image and tried to boot the machine. However, during the boot process, NetBSD displayed only the following:

NetBSD/x86 cd9660 Primary Bootstrap

and everything stopped there. Not a single character more. Next, I tried to 'force' the boot from USB via Plop Boot Manager, which is a great tool, by the way! Now, I got the following displayed:

NetBSD MBR boot

NetBSD/x86 ffsv1 Primary Bootstrap

... and then everything stops just like with CD. The same happened with NetBSD versions 9.4 and 8.3. Obviously, the boot procedure is stuck either in the transition from phase 1 to phase 2 or in phase 2. The same thing happened after the BIOS was patched. Being out of ideas, I will leave this here for the moment.

Fast forward a few weeks, I got the idea to try booting NetBSD with another CD drive. It worked! The strange thing is that the same CD drive that works with the NetBSD boot CD doesn't work with the FreeDOS boot CD. Conversely, the CD drive that works with the FreeDOS boot CD doesn't work with the NetBSD boot CD. Both CDs are the same Verbatim brand. Go figure it out. I lost a lot of time on this one.

Finally managed to boot NetBSD

fastfetch output after updating to NetBSD 11.0

Tiny Core Linux

I created a live CD with the Core version, which offers only a command line interface. Tiny Core Linux booted in seconds, detected the network card right away and I was ready to download the files necessary to patch the BIOS.

Other operating systems

I successfully booted KolibriOS as well, which has a graphical interface by default. It was running slowly, it didn't detect my graphics card properly, so the resolution was rather low. Additionally, it seems that the OS doesn't support a mouse on the serial port. It also did not detect my network card.

Debian's last version working on i586/P5 is v8.11.1 (Jessie) from 2018.
Up to date Alpine Linux requires i686 compatible CPU or later.
SparkyLinux also requires newer processor: i686 (32bit) or amd64 (64bit) Pentium 4, or AMD Athlon.

Slackware might support my machine, and Gentoo too—if I decide to compile everything. I'll leave those experiments for some other time.

Patching the BIOS

The original Award BIOS that the machine came with has a bug that causes the system to hang if a hard disk drive larger than 32GB is detected. I found an unofficial patch here and downloaded it along with a FreeDOS floppy boot image and the Award BIOS flasher.

Using Tiny Core Linux to create a FreeDOS bootable floppy

Patching didn't go smoothly either, as the latest Award BIOS flasher (version 8.99) constantly displayed the message "The program file's part number does not match your system!". I read on a forum that this is actually a problem with the flasher, and that version 8.x does not work well with Socket 7 motherboards. Flasher version 7.95 worked fine, and now the BIOS is patched! Just in time for disk installation.

BIOS successfully patched!

Replacing the HDD 

The most cost-effective solution was to replace the failed HDD with a 40-pin IDE to SD card adapter. I purchased it for $9.09 USD on AliExpress. Once it arrived, I inserted a 32GB Kingston SD card, and everything worked fine. The BIOS detected the disk geometry, and I successfully installed a NetBSD/FreeDOS multiboot system. NetBSD identified the adapter as "FC-1307 SD to CF Adapter V1.4".

Working HDD to SD card adapter

32GB should be enough for a multi-boot hobby project system. However, if I decide to pass the PC on, I shouldn't do so with the most expensive SD card brand. Therefore, I decided to try out another micro-SD card with the micro-to-SD card adapter. The BIOS detected it, and the data was written to it correctly, but the system just refused to boot from that card. It turned out that this is a common problem with HDD to SD card adapters when using micro-SD cards.

Unbootable micro-SD card and adapter

Now I had to get myself a standard-sized SD card. Just in case, I ordered two: one no-name brand for €2.92 and a Kodak one for €9.54. It was a smart decision because it turned out that the cheaper one can't be booted from either.

Another SD card that could't be booted from

Another note: although all mentioned cards were labeled as 32GB, they all had different capacities, so I wasn't able to simply copy the image from the Kingston card to another; I had to install everything anew. Yes, that includes mentioned swapping of unreliable CD drives.

Three different 32GB SD cards reporting three different actual sizes

I have decided to partition 32GB in the following way: 2GB for FreeDOS, 10GB for NetBSD, 10GB for Tiny Core Linux, and the remaining space for a FAT32 data partition. I installed the operating systems in that exact order. NetBSD couldn't modify the partition table when the partitions were created with FreeDOS's fdisk, so I needed to partition the drive again during the NetBSD installation. Then, Tiny Core Linux deleted the MBR and was unable to detect the other operating systems, so I had to configure the multiboot options anew from the FreeBSD installation.

NetBSD configuration

Networking

NetBSD and Tiny Core Linux detected my 3Com 3c905-TX/TX-M PCI network card immediately and the PC was ready to access the network. FreeDOS required some additional configuration, by default it was displaying message:

Physical hardware networking is not supported at this time

Although the message sounded fatal, all I had to do was get the packet driver for my card (I found it on theretroweb.com) and load it from FDAUTO.BAT. 

USB drive

In NetBSD and Linux, USB drives work without any problems. You can plug in the drive, mount it, and the files are accessible. FreeDOS is another story.

I have the USBDOS package installed. I ran USBUHCI /addresses and discovered that when a cheap EasyDrive USB pendrive was inserted, my system reported a Prolific USB hub chip (no USB hub was reported for the Kingston USB pendrive), so I started USBHUB as well. My sequence is: USBUHCI, USBHUB, USBDRIVE, and then I plug in the drive. The drive's LED light is initially blinking. USBDRIVE /S sometimes reports that the drive is initializing, sometimes that it is connected, and sometimes that it is connected and assigns it a drive letter (as shown in the photo). Performing a DIR command on that letter takes an eternity and ultimately fails.

USB drive in FreeDOS. Detected but still inaccessible.

I have emailed the USBDOS package author, Bret E. Johnson, but I haven't received any reply. I considered trying to fix the problem myself, as the USBDOS package is open-sourced, although I have zero knowledge of the USB protocol. It turned out that all the mentioned applications are written in assembly. The author's webpage states that they are built with A86 assembler, which is free to use. As a starting point, I attempted to rebuild the applications without any modifications, as they are, but it turned out they are actually written to be compiled with A386 assembler, which is not free.

To be continued ... 

 

 

Wednesday, March 18, 2026

AI and the future of work: which jobs are at risk (2)

After Anthropic's study tracking the "exposure" of various occupations to AI, Andrej Karpathy has made an interactive open-source tool called "US Job Market Visualizer", that uses AI for exposure scoring and treemap visualization. This may be useful if you are considering a career with less exposure to AI. 😉

Link to the tool:
https://karpathy.ai/jobs/

Source code:
https://github.com/karpathy/jobs


 

Saturday, March 7, 2026

AI and the future of work: which jobs are at risk (1)

Anthropic has released a new study tracking the "exposure" of various occupations to AI.
 
Key takeaways:
  • Artificial intelligence is far from reaching its theoretical potential: actual adoption still represents only a fraction of what is feasible.
  • Occupations with higher exposure are projected to grow more slowly by 2034. (BTW, have you calculated how many years you have until retirement?)
  • Workers in the most exposed professions are more likely to be older, female, highly educated, and better paid.
  • Since late 2022, there has been no systematic increase in unemployment among highly exposed workers, though there is suggestive evidence that hiring of juniors in these occupations has slowed.
 
Graph for those who enjoy envisioning their future:

 

Thursday, February 12, 2026

Crafting a winning onboarding experience - podcast summary

Listen to the complete episode of Starter StoryI vibe coded a $20K/month mobile app in 14 days.

Here are the key takeaways that stood out to me ...

Start building a new app by gathering inspiration from other apps in your niche. Download a handful of apps - around 20 or so - that you think are well-designed, and take screenshots of every page in their onboarding sequences. Compile these screenshots into a single file, to get a sense of the different approaches being taken. From there, pick and choose the elements that resonate with you, and use them as a starting point for designing your own onboarding process. A well-designed onboarding process is crucial. Interviewee would argue that it's worth investing just as much time and effort into crafting a compelling onboarding sequence as you would into designing the app's core functionality.

The most important things regarding onboarding that you want to do to make sure that your app converts successfully are:

  1. Invoke emotion. Most purchases are made emotionally and are not logical when it comes to consumers.
  2. Show benefits. Show how the app is going to improve your users' life.
  3. Personalize the experience. People want to make sure that what they're buying feels like it's meant for them specifically.
  4. Be scientificMake sure that you have some sort of charts, graphs, something to make the app feel more scientific. People like to know that something that they're using has been proven to work, that other people have successfully used it. And by adding these charts and graphs, you make your app look very legitimate.