SFO guy then says, "Always be closing. Always be closing." Didn't get the reference, so he sent me this YouTube link and told me to watch it. How come I've never heard of this movie before?!
Wednesday, July 1, 2026
Always Be Closing!
Saturday, June 27, 2026
The Push-Up Challenge
I've been doing pushups for the past few years, and I'm currently at 50 per day. I reckon pushing myself to do 80 shouldn't be too hard. And if I do the pushups twice a day, I can hit 160 pushups per day and beat the 3307 target. So I signed up for an account and downloaded the app.
The app gives you daily push-up targets that relate to an important Mental Health Fact. End of the day, you log your pushups and track your progress. Because I do fixed 160 pushups every day, I didn't use the app much.
By 26th of June, I've done 3840 pushups in 24 days. Because I didn't advertise my donation page, I raised zero dollars, but I did improve my pushup game. After the challenge, I went back to 80 pushups per day. Let's see how much I can do next year.
Saturday, December 6, 2025
Bose to Sonos
With the second death of my Bose SoundTouch 20 Portable, I decided to try out Sonos.
How's the sound quality difference? I can't tell because I got the ZonePlayer, instead of actual Sonos speakers.
Sonos ZP100 is the company's first ever product. Introduced back in 2005, I'm surprised these things are still working. Lots for sale on Facebook Marketplace and cheap compared to RRP.
ZP100 and ZP80 are the OG Sonos products. ZP100 comes with a built-in 50W amplifier and a 4-port switch. Paired with my Voll A44 bookshelf speakers, the combo works pretty well. The ZP100 is S1 only and there is no way to upgrade to S2. In a way, that might be a blessing in disguise. S2 is a disaster when it first came out. Maybe S2 got better now, but maybe S1 still more stable, even if it might have less features.
That said, it's a pain connecting to my shared music folder. Took me a while to get it working with my QNAP NAS. Had to enable SMBv1 (on the QNAP) to even get Sonos to see my NAS. Even then, it can only see the Multimedia top folder, and not Multimedia\Audio\Music\Tagged folder that I intended. So what happened is that the ZP100 is indexing ALL my Multimedia content, instead of just the Tagged music albums, and this is taking a looong time.
Solution, create a top-level Tagged shared folder my other Synology NAS and connect that to the Sonos instead. Problem is, Sonos kept saying incorrect username or password, when I know that's not the case. Enabled SMBv1 support and NTLMv1 auth, which I've proven to be required (based on the Synology logs), but still no go.
Gave up using a native integration to the NAS. Used Plex as the bridge instead. Works well enough for me.
Interesting fact. Using Symfonium, I was able to cast / stream FLACs to the Sonos using Chromecast, but the audio sounds average. Tested the same FLAC file using Plex and the resulting audio quality is much much better.
Thursday, August 7, 2025
Film Seen No More
My girlfriend and I used to watch (cheap) movies there, but after we got married and eventually moved suburb, we haven't gone back for many, many years. Did a bit of searching and looks like Film Seen is no more. Can't even access the website. The Wayback Machine's last snapshot for the site was dated June 13, 2025, and this is the blurb on the homepage:
In 2004 local film enthusiasts, with the generous support of Georges River Council and key sponsors, established a local, non-profit community cinema for the St. George region.
There was a great need for a film group to quench local film enthusiasts’ desire for a forum that allowed for the viewing and discussion of a variety of films.
The Film Seen promoted appreciation of a wide range of culturally diverse films, which were of particular interest to the locals residing in the St. George area. These included foreign films, independent films, arthouse films, classics and short/feature films by local film makers.
The Film Seen has shown movies from many countries including Argentina, Sweden, Israel, Japan, China, Russia, Iraq, India, Italy, Saudi Arabia, Korea, France, Holland, Germany, Canada, Belgium, the Netherlands, Denmark, Ireland, Scotland, New Zealand, England, the USA and Australia and on a number of occasions the movies’ Directors have attended for Q & A sessions with our audience.
As an Incorporated Association, attendance at screenings was by membership of the Association. Screenings were usually held on the third Sunday each month at the Civic Theatre, MacMahon Street, Hurstville.
The Film Seen concluded its screenings at the Civic Theatre with the last screening on Sunday 16 June, 2024. We thank our audience members for their strong support over our twenty years operation.
Sad to see that Film Seen is no more. I personally don't know of any other community cinemas. That said, below is a list of their screenings throughout the years. I plan to watch as many of the films as possible:
- 2024: Banshees of Inisherin (Jan), Notre-Dame on Fire (Feb), Farewell, Mr. Haffmann (Mar), Mr Holland's Opus (Apr), The Martian (May), The Fabelmans (Jun)
- 2023: The Duke (Jun), Our Little Sister (Jul), The Quiet Girl (Aug), Eiffel (Sep), Living (Oct), Empire of Light (Nov), November (Dec)
- 2022: Promising Young Woman (Feb), Penguin Bloom (Mar), Antoinette In The Cévennes (Apr), The Courier (May), Six Minutes to Midnight (Jun), Delicious (Jul), Belfast (Aug), The Last Wave (Sep), The Good Boss (Oct)
- 2021: After the Wedding (Jan), Everybody Knows (Feb), The Good Liar (Mar), Parasite (Apr), The Translators (May), Fisherman's Friends (Jun)
- 2020: Woman at War (Jan), The Journey (Feb), Capernaum (Mar), Yesterday (Oct), The Goldfinch (Nov)
- 2019: Darkest Hour (Jan), The Fencer (Feb), Promised Land (Mar), C'est La Vie (Apr), The Insult (May), Two is a Family (Jun), Crazy Rich Asians (Jul), Ladies in Black (Aug), Green Book (Sep), Sometimes, Always, Never (Oct), Greta (Nov), Woman at War (Dec)
- 2018: A Man Called Ove (Jan), Ex Machina (Feb), The Promise (Mar), Perfect Strangers (Apr), A United Kingdom (May), Paris Can Wait (Jun), Ali's Wedding (Jul), The Lovers (Aug), Just To Be Sure (Sep), Sweet Country (Oct), The Teacher (Nov), The Greatest Showman (Dec)
- 2017: Marguerite (Jan), Eye in the Sky (Feb), Planes, Trains and Automobiles (Mar), Mustang (Apr), Mystery Road (May), Grandma (Jun), Truman (Jul), A Month of Sundays (Aug), Rosalie Blum (Sep), Goldstone (Oct), Blancanieves (Nov), My Neighbour Totoro (Dec)
- 2016: Pride (Jan), The Imitation Game (Feb), Planes, Trains & Automobiles (Mar), The Age of Adaline (Apr), Gayby Baby (May), He Named Me Malala (Jun), Hereafter (Jul), Bridge of Spies (Aug), St Vincent (Sep), The Bélier Family (Oct), A Separation (Nov), Spirited Away (Dec)
- 2015: The Best Offer (Jan), Nebraska (Feb), Sunshine on Leith (Mar), Wadjda (Apr), Any Day Now (May), Calvary (Jun), The Immigrant (Jul), Four Minutes (Aug), The Two Faces of January (Sep), The Man from Cox's River (Oct), What We Did On Our Holiday (Nov), The Hundred Foot Journey (Dec)
- 2014: Whistle Down the Wind (Jan), The Hunt (Feb), Happiness Never Comes Alone (Mar), Performance (Apr), Blue Jasmine (May), The Butler (Jun), Backyard Ashes (Jul), The Book Thief (Aug), The Double Hour (Sep), One Chance (Oct), Ben X (Nov), Like Father, Like Son (Dec)
- 2013: Monsieur Lazhar (Jan), Chinese Take-Away (Feb), Arbitrage (Mar), The Intouchables (Apr), Tell No One (May), Your Sister's Sister (Jun), October Sky (Jul), Argo (Aug), Quartet (Sep), Silver Linings Playbook (Oct), Love is all you Need (Nov), Léon: The Professional (Dec)
- 2012: Oranges and Sunshine (Feb), Plots With a View (Mar), Midnight in Paris (Apr), The Women on the 6th Floor (May), Hugo (Jun), The Artist (Jul), Dr Zhivago (Aug), Headhunters (Sep), Salmon Fishing in the Yemen (Oct), My Week with Marilyn (Nov), The Sapphires (Dec)
- 2011: The Concert (Jan), Wild Target (Feb), Winter's Bone (Mar), Heartbreaker (Apr), The King's Speech (May), Another Year (Jun), The Secret in Their Eyes (Jul), In a Better World (Aug), My Afternoons with Margueritte (Sep), Mad Bastards (Oct), Mrs Carey's Concert (Nov), Beautiful Lies (Dec)
- 2010: Departures (Jan), An Education (Feb), The Topp Twins (Mar), Blessed (Apr), Bran Nue Dae (May), Brothers (Jun), A Single Man (Jul), The Girl with the Dragon Tattoo (Aug), Animal Kingdom (Oct), Mother and Child (Nov), City Island (Dec)
- 2009: The Painted Veil (Jan), Welcome to the Sticks (Feb), Blue Lies (Mar), Lemon Tree (Apr), I've Loved You So Long (May), Dean Spanley (Jun), Easy Virtue (Jul), Ryan's Daughter (Aug), My Year Without Sex (Sep), Noodle (Oct), Sunshine Cleaning (Nov), Ponyo (Dec)
- 2008: Black Book (Jan), 4 (Feb), Home Song Stories (Mar), Hunting and Gathering (Apr), Closing the Ring (May), Juno (Jun), La Vie en Rose (Jul), The Kite Runner (Aug), Lars and the Real Girl (Sep), Black Water (Oct), The Orphanage (Nov), Married Life (Dec)
- 2007: The Cave of the Yellow Dog (Jan), A Prairie Home Companion (Feb), Ten Canoes (Mar), As it is in Heaven (Apr), The Queen (May), Pan's Labyrinth (Jun), Priceless (Jul), The Lives of Others (Aug), The Italian (Sep), Guru (Oct), Romulus My Father (Nov), Clubland (Dec)
- 2006: Turtles Can Fly (Jan), Seducing Dr Lewis (Feb), Cabaret (Mar), Joyeux Noel (Apr), Mrs Henderson Presents (May), Welcome to Dongmakgol (Jun), The Ladykillers (Jul), Happy Endings (Aug), Tais-Toi (Sep), Live and Become (Oct), Monsoon Wedding (Nov), De-Lovely (Dec)
- 2005: Amélie (Jan), A Man's Gotta Do (Feb), In My Father's Den (Mar), Gallipoli (Apr), Apres-Vous (May), Les Choristes (Jun), High Society (Jul), Orange Love Story (Aug), Three Dollars (Sep), Nobody Knows (Oct), 2046 (Nov), [Millions](https://www.imdb.com/title/tt0366777 (Dec)
- 2004: Not One Less - Swimming Pool (Jun), The Pirate (Jul), They're a Weird Mob (Aug), Travelling Birds (Sep), Princess Mononoke (Oct), Vertigo (Nov), Crouching Tiger, Hidden Dragon (Dec)
Here's to you, Graham, Robin & Brian!
Wednesday, July 30, 2025
Docker default-address-pools
Have a bunch of new applications I wanted to add to Portainer, so needed to fix Docker's 29-network issue ASAP. Can't keep deleting other containers every time a new container needs to be added.
As a refresher, Docker's default config only gives you 32 subnets:
- 172.16.0.0/12 /16 16 subnets: 172.{16,17,18,...,31}.0.0/16
- 192.168.0.0/16 /20 16 subnets: 192.168.{0,16,32,…,240}.0/20
Once you've hit the limit and try to spin up another Docker container, you get below error message from Portainer - all predefined address pools have been fully subnetted
When I try to change the size of the default address pools in /etc/docker/daemon.json, I get this error message - unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '"' after object key:value pair
Maybe I'm not supposed to touch the existing pools??
One solution to try is this: (without breaking existing containers/networks)
{
"default-address-pools": [
{
"base":"172.17.0.0/12",
"size":16
},
{
"base":"192.168.0.0/16",
"size":20
},
{
"base":"10.99.0.0/16",
"size":24
}
]
}
First two are the default docker address pools, while the last one is the new private network. Did this and got the same error as last time.
This time, I ran the file through a JSON validator, and found my mistake. I appended the default-address-pools section to the existing config, but forgot to separate them with a comma. Below is the working config:
{
"data-root": "/mnt/dietpi_userdata/docker-data",
"log-driver": "journald",
"log-level": "warn",
"debug": false,
"default-address-pools": [
{
"base":"172.17.0.0/12",
"size":16
},
{
"base":"192.168.0.0/16",
"size":20
},
{
"base":"10.99.0.0/16",
"size":24
}
]
}
Did a "sudo service docker restart" and no more errors.
Sunday, June 1, 2025
29 Docker Networks
At some point in a homelabber's journey, they will start hitting some limits. You can always add more memory, more storage, but if you don't change the Docker default, you can only run 29 Docker containers. Ought to be enough for anybody, right? Not for me!
Apparently, Docker by default supports up to 32 subnets only. Excluding the host, bridge and none networks, you get 29 remaining. I found out the hard way today.
Was trying to add Caddy and kept getting deploy errors from Portainer. Log says "all predefined address pools have been fully subnetted". I have no idea internal networks are being allocated every time I spin up a container. Checked the networks and most of them are /16 or /20. No way each container needs that many IP addresses.
Checked the Docker docs (https://docs.docker.com/engine/daemon/ipv6/) and apparently below is the default config:
{
"default-address-pools": [
{ "base": "172.17.0.0/16", "size": 16 },
{ "base": "172.18.0.0/16", "size": 16 },
{ "base": "172.19.0.0/16", "size": 16 },
{ "base": "172.20.0.0/14", "size": 16 },
{ "base": "172.24.0.0/14", "size": 16 },
{ "base": "172.28.0.0/14", "size": 16 },
{ "base": "192.168.0.0/16", "size": 20 }
]
}
To get more subnets, the forums suggested editing the /etc/docker/daemon.json file to add this:
{
"default-address-pools": [
{ "base": "172.17.0.0/12", "size": 24 }
]
}
OR
{
"max-networks": 100
}
Second option gave me an "invalid directive" error when I restart the docker service. With the first option, regardless of how I edit daemon.json, I always get "unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '"' after object key:value pair" error.
I'm pretty sure I'm doing it correctly, so I can only attribute it to a dietpi quirk. With that, I took the easy way out and deleted some unused containers to free up some networks, so I can deploy Caddy.
Sunday, May 25, 2025
Further Adventures with Segmented Vimeo (and NicoVideo) Videos
As a follow-up to my previous blog post about segmented Vimeo videos, looks like a lot of things have changed since then.
Before, you could get lucky by searching through the network traffic for a direct URL for an mp4 file or even a 9-digit video file ID. Nowadays, I can't even find the master.json file to get the URL.
But I did find a playlist.json file, whose complete URL looks like this: https://vod-adaptive-ak.vimeocdn.com/exp=1746859637~acl=%2F2aed1a26-82e0-4e71-88b4-66b640063a50%2F%2A~hmac=406565bd4b1a97f835870e579db1914821de4d3308674c3679e3653ccdf5192f/2aed1a26-82e0-4e71-88b4-66b640063a50/v2/playlist/av/primary/playlist.json?omit=av1-hevc&pathsig=8c953e4f~ukiVn0xgiuGdzWbAuE_LQry4ltouJ-enH_rU-rIefIU&r=dXM%3D&rh=3fnUuf
Tried below ffmpeg command, but got an error:
ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -i "https://vod-adaptive-ak.vimeocdn.com/exp=1746859637~acl=%2F2aed1a26-82e0-4e71-88b4-66b640063a50%2F%2A~hmac=406565bd4b1a97f835870e579db1914821de4d3308674c3679e3653ccdf5192f/2aed1a26-82e0-4e71-88b4-66b640063a50/v2/playlist/av/primary/playlist.json?omit=av1-hevc&pathsig=8c953e4f~ukiVn0xgiuGdzWbAuE_LQry4ltouJ-enH_rU-rIefIU&r=dXM%3D&rh=3fnUuf" -c copy video.mp4
Tried changing the URL from json to mpd, but still didn't work:
ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -i "https://vod-adaptive-ak.vimeocdn.com/exp=1746859637~acl=%2F2aed1a26-82e0-4e71-88b4-66b640063a50%2F%2A~hmac=406565bd4b1a97f835870e579db1914821de4d3308674c3679e3653ccdf5192f/2aed1a26-82e0-4e71-88b4-66b640063a50/v2/playlist/av/primary/playlist.mpd" -c copy video.mp4
And apparently, these vimeo URLs time out and get refreshed after less than 5 minutes.
Did some searching and found a working solution: https://github.com/martiGIT/vimeo-download-by-playlist
There's another downloader that runs as a Docker container, which should also work: https://github.com/davidecavestro/vimeo-dl
While we're on the topic of dowloading videos, I found a working downloader for Niconico (aka Nico Nico Douga) videos: https://github.com/AlexAplin/nndownload
I was looking for YOASOBI's performance of Idol during the 74th NHK Kōhaku Uta Gassen (2023), and was told that it can only be found on Niconico, so here we are.
Monday, April 28, 2025
Plex Media Server on DietPi
After more than a year of troubleshooting on and off, I managed to get the Plex app on the PS5 to connect to the Plex Media Server hosted on my DietPi.
- DNS rebinding
- domain whitelisting
- setting plex.direct as private domain
- switching to public DNS servers
- getting your own domain certificate and switching to HTTPS
Wednesday, March 12, 2025
Dell Wyse 5060 SSD Upgrade
I've been using a Dell Wyse 5060 thin client as a Docker box using DietPi. It came with an Apacer 64 GB SSD. With more Docker containers being added and more media (ebooks, audiobooks, documents, etc.) being uploaded, I needed to upgrade the storage.
I watched a couple of YouTube videos about it and it looks simple enough. Open up the case, remove SSD, replace with new SSD, and voila!
Prior to the hardware upgarde, I did take a backup using dietpi-backup utility. It saves the specified folders in /mnt/dietpi-backup/data, and a dietpi-backup.log is generated and a hidden .dietpi-backup_stats file records the start and end time. To make a copy of the backup for offline storage, I did a tar cvfz backup.tgz /mnt/dietpi-backup/*
Couple of things to note:
- The SSD used is mSATA. That said, not all mSATA modules are the same size. I extracted my replacement from an ADATA SU650 SSD, and the module is wider and longer. No screw in the middle, too.
- Because of the bigger size, a part of the aluminum shield for the memory modules had to be removed/reduced for the SSD module to fit.
- When you run tar with a wildcard, hidden dotfiles are not captured and archived. And because the hidden .dietpi-backup_stats file was not archived by tar, dietpi-backup refused to restore my backup. I had to reconnect the original SSD, mount the USB stick, copy the missing hidden file to the USB stick, connect the new SSD, mount the USB stick, then copy over the missing hidden file.
- OR I could've just manually create and edit a new .dietpi-backup_stats file:
- YYYY-MM-DD_hh:mm:ss Backup starting
- YYYY-MM-DD_hh:mm:ss Backup completed
The better way of performing the backup/restore is:
- cd /mnt/dietpi-backup; tar cvfz /root/backup.tgz . (this will archive even hidden files in /mnt/dietpi-backup)
- cd /mnt/dietpi-backup; tar xvfz backup.tgz or tar xvfz /root/backup.tgz (depending where tgz is located)
I also did notice that the installer didn't seem to make use of my settings for /boot/dietpi.txt. It still asked for locale, keyboard settings, layout, etc.
On first boot, make sure network connection is there. DietPi wants to do apt update as part of first boot and will complain if it can't. Restore process also requires apt update, so provide network ASAP.
Also, prior to the backup process, make sure the OS, apps and packages are up-to-date. Purge old files, logs, backups, and Docker images. This drastically reduces backup and restore times.
Wednesday, March 5, 2025
直讀中文 cBook
I remember with fondness Ian Wong's 直讀中文 cBook app.
After some testing, it turns out that cBook needs permission to "Files and Media", but doesn't ask for it. Once I granted the permission, cBook 4.0.0beta5 now works as expected.
Thursday, February 20, 2025
Flashing the Samsung SM-S9260
Wife was gifted a Samsung Galaxy S24+ phone bought from China.
Now I know that phones sold in China don't support Google services or apps. But when I checked the phone, it does have the Google Play Store installed. I didn't even bother installing more Google apps or testing if they work or not. I've had an S9+ bought in China before. Google apps install fine, but they don't really work 100%. Best thing to do is to replace the firmware with something else ASAP.
For the specific SM-S9260 model, you have a choice of firmware for China, Taiwan or Hong Kong. For guaranteed Google compatibility, I chose TGY (Hong Kong). It is possible to flash firmware from other regions (CSC), but there could be complications if the firmware if not meant for the hardware.
Two options to download the latest firmware:
- from SamFW, which is the successor of SamMobile
- or via Frija, which downloads directly from Samsung FUS (Firmware Update Server) for fastest throughput
Frija has an auto mode, which detects your phone's model and CSC and downloads the latest compatible firmware. You can also use manual mode, where you enter the phone's model, CSC, and SN/IMEI, and it will present the latest firmware for it.
Once all the files have been downloaded, run Odin and load the binaries to their corresponding fields.
Power off the S24+ by pressing Vol Down + Power buttons.
Connect the S24+ to a computer using a USB cable, then power up the phone into download mode by pressing both Vol buttons + Power button.
Flash the firmware binaries using Odin. Phone will auto-reboot after success flashing.
Wednesday, October 16, 2024
Kobo Touch Can't Connect to WiFi or Internet
The Kobo Touch arrived, freshly factory reset. Selected my preferred language and was given a choice of Computer Setup or Wireless Setup.
For wireless setup, first screen asked me to configure the date, time and timezone. Proceeded to the next screen, which is for WiFi connectivity. Selected the WiFi network and put in the password. It says connected, but then sends me back to the first screen, which is for the date/time/timezone. Tried it a couple of times and used different WiFi networks. It says connected, but didn't let me through to the next sign-in page.
Backtracked and tried the Computer Setup option instead. This time, it asks me to go to kobosetup.com and download the Kobo Desktop software. Kobo device was detected, but now the desktop software is saying it can't connect to the Internet, which is strange.Quick check on the forums has multiple people reporting the same issue. It's like factory resetting the Kobo Touch essentially bricks the device and it can't complete initial setup. Apparently, you need to install the latest firmware to get the networking going, but you can't update to the latest firmware because networking is broken.- faster page turns
- image zooms
- footnote previews
- time-estimate metrics
- better responsiveness to text selection, font changes and searching
- page flip, etc.
And if you're feeling adventurous, you can also patch your Kobo to display NickelMenu for extended functionality.
Sunday, March 10, 2024
Jailbreaking the iPod Touch
Been using the iPod Touch for many years now. Never felt the need to jailbreak it. I mainly use them to play podcasts and stream online radio stations - either through the Sony dock or using the built-in speakers.
Just the other day, my Bose SoundTouch Portable died, so I'm thinking of replacing it with an iPod Touch on an Altec Lansing dock. Interesting thing I noticed - while one iPod Touch has the TuneIn Radio app, the other one does not. Worse, it can't even connect to the App Store to download it. Both 4th-generation and running the same iOS version (6.1.6) and on the same WiFi network. The only reason I can think of is that Apple must've cut off access to the App Store for unsupported devices.
I started reading online articles about jailbreaking iOS devices and that sounds like the solution I'm looking for, so here we go.
The articles suggest using checkra1n or p0sixpwn. checkra1n is currently only macOS or Linux. Tried to download the dmg on my MacBook Pro and got blocked/deleted by the company firewall/antivirus. Used my personal PC to download p0sixpwn instead. One thing to note, p0sixpwn requires iTunes version 11.1.5 for best results. iTunes doesn't need to be set up - it just needs to be installed on the PC.
After jailbreaking the iPod Touch, it didn't feel any different. There's just a new app called Cydia and that's it. After some more research, apparently, you'll need to install the tweaks or apps that you want from the default repositories / sources. If what you're looking for is not available, you'll need to add extra repos or sideload IPAs. Heck, you can even install other package managers like Sileo, Zebra, or Installer 5.
Now, sideloading IPAs is a whole different topic. Normally, Apple wouldn't let you sideload unsigned or expired IPAs, so either you'll have to set up or install an alternate app store and download from there. Or you can use Cydia Compactor to sideload IPAs, but the software asks for your Apple credentials and the IPA will need to be re-signed every 7 days. And there's also a limit of how many IPAs you can install. People with paid developer accounts have up to 1 year before re-signing is required. Sounds like a lot of work to me. All I want to have an old version of the free TuneIn Radio app installed.
That's where Karen's AppSync Unified comes in. "AppSync Unified is a tweak that allows users to freely install ad-hoc signed, fakesigned, unsigned, or expired IPA app packages on their iOS devices that iOS would otherwise consider invalid."
One option is where you download IPA from an online library via Safari. Send the file to the Filza file manager using the share option, then install from there.
For me, instead of installing Filza, I installed OpenSSH and MobileTerminal instead. Once the IPA file has been downloaded to the iPod Touch (or copied over via WinSCP), it's just a matter of running appinst (e.g. appinst /var/mobile/app.ipa) - either locally using MobileTerminal or remotely using OpenSSH via Putty.
In summary:
- Download and install iTunes version 11.1.5
- Download p0sixpwn
- Configure p0sixpwn to run in Windows 7 compatibility mode
- Start p0sixpwn as administrator
- Disable passcode lock on the iPod Touch, the connect it to the PC
- p0sixpwn should detect the iOS device. Click on Jailbreak to start the process
- Install SSLPatch tweak.
- Download SSL certificate from https://cydia.invoxiplaygames.uk/certificates/
- Add Karen's Repo
- Install AppSync United, Appinst and MobileTerm
- Install OpenSSH.
- Change password for root (default password is alpine) and mobile users
Where to find IPA files? From your iOS device browser, you can try https://mtmdev.org/webapp/ Click on the selected app to install.
You can also find some collections on archive.org
Saturday, September 9, 2023
Pixel Experience (Android 11) on the Samsung Galaxy S6
Checked out the ROMs on XDA Developers for S6 (zerofltexx) and settled on the Pixel Experience (Android 11). Not the newest one, but most of the stuff works. Latest build was released July 2021, but if you trawl through thread, famemanoan posted a newer build - August 2022.
For that, you'll need a new OrangeFox recovery. First things first, copy the recovery zip and ROM to the phone's root directory.
To flash OrangeFox recovery:
- boot to recovery by pressing Home+VolUp+Power
- flash the OrangeFox recovery zip
- phone will auto-reboot to recovery
To flash the ROM:
- ROM install instructions say to wipe cache, system and vendor partitions
- However, OrangeFox wiki says to NEVER wipe system
- As a compromise, I only wiped dalvik cache, cache, and data. Format data. Boot to recovery.
- After reboot, the files on the internal storage are gone, so no ROM to flash. Good thing MTP is enabled (and works), so I was able to re-copy the ROM to /sdcard. Whew!
- Flash ROM
- Boot to recovery
- Wipe cache again. Format data again.
- Boot to system.
Checked Google Photos, and this ROM is able to upload unlimited photos in Storage Saver quality. Not bad!
Friday, September 8, 2023
Pixel Experience (Android 13) on the Redmi Note 4X
Even though there is updated / latest LineageOS for mido, I decided to go with Pixel Experience because I've never tried that ROM before. And since there is official support for mido, why not?
On XDA Developers, this is the official thread for Pixel Experience (Android 13) for mido: https://forum.xda-developers.com/t/rom-official-stable-13-mido-pixelexperience-aosp.4423487/
You can download the ROM here: https://get.pixelexperience.org/mido
Recommended custom recovery here: https://sourceforge.net/projects/nranjan-17/files/RETROFIT%20OrangeFox/OrangeFox-R11.1-A12-RETROFIT-Unofficial-mido.zip/download
Install guide here: https://raw.githubusercontent.com/NRanjan-17/Pixel-Experience-Releases/main/RETROFIT_GUIDE.md
Pixel Experience website itself has a wiki and install notes for mido.
In any case, basic steps are below.
1) Flash RETROFIT recovery
- Reboot to your existing recovery (VolUp + Power)
- Wipe cache, data, system, vendor and Format Data
- Flash the RETROFIT Supported Recovery zip
- Reboot to Recovery (If flashing OrangeFox, it will be automatically rebooted to OrangeFox Recovery)
2) Wipe and format device
- After you flash and boot into the new OrangeFox recovery, format data and reboot to the recovery again.
- Now, wipe all the partitions (i.e. cache, metadata, data, internal storage). Wiping Internal might throw an error because of missing /data/media/ which is okay, reboot to recovery again.
- This format data and wiping of other partitions is required only once every clean flash.
- NB : encryption is now enabled by default and that is why a clean flash would cost you a data format.
3) Flash Pixel Experience ROM
- Flash the ROM
- Format data
- Reboot to system (it may show no os installed ignore it, if it doesn't boot then flash the ROM again and reboot to system)
As far as I can tell, that Xiaomi phone became a Pixel device, except for the Camera app.
With Google Photos, it detects the handset as a Pixel and allows unlimited photo/video uploads at original quality. Bonus!
Thursday, August 24, 2023
How I Got Myself a Pixel 6a
I've been using the Samsung Galaxy S9+ for more than four years now. Do I really need a new phone? Not really. Everything still works fine. Except that I noticed that the battery now lasts only a day (with minimal use). The camera app stutters once in a while when taking pictures. Some apps also take a few microseconds longer to start. Not a dealbreaker, but it got me looking around.
Just the other day, Telstra was selling the Pixel 7 for $499.50. Now that's a cracker deal. Only issue is I'm not a Telstra subscriber, so I'm not gonna be able to get it for that price. Checked with my siblings and parents. None of them used Telstra before - not even Telstra's cheaper MVNOs like Belong or Boost Mobile. I mean, there's so many cheaper alternatives out there, why would you? I checked with my sister-in-law, and turns out she's a Telstra subscriber. Yes!
Got her username and password and tried to place an order. Ordering page wants to verify the home address and 2FA for the account. Passed through that hurdle; now it wants to see some identification. In the interest of privacy and saving time, I went over to SIL's place during lunch break to get this sorted out. Unfortunately, Telstra won't accept her driver's license - the same ID she used to set up the account. Bummer.
Next opportunity came up when Google Store itself had the Pixels on sale - $399 for the Pixel 6a (down from $699) and $699 for the Pixel 7 (down from $999). Stack that with a 10% StudentBeans discount ON THE RRP, you can get the Pixel 6a for just $339.10! Was supposed to be working, but just can't let this pass.
Of course, the key here is to get a StudentBeans code in order to get that special price. Not being a student myself, I (and hundreds of other OzBargainers) are relying on the Code Giveaway Megathread to get a working code. The tricky thing is, you're not allowed to ask for a code. Someone will just post a code if they feel like it. After hundreds of page refreshes, I managed to snag a code that wasn't used within 5 seconds of it being posted. Paid and checked out successfully! Checked the delivery address on the invoice. Wrong address! Cancelled the order and quickly put in the correct address, and of course the code is now invalid.
After what seemed like an eternity, I got another working code. Verified the address this time and paid. Google Store says session has expired. Refreshed, checked the address again, paid, and went through succcessfully. Looked at the invoice - paid full price! For some reason, the discount code didn't get applied after the page refresh. Cancelled the order again.
At this point, there's less and less students posting codes on the thread. Every new code posted gets used literally within seconds. I've resorted to downloading a browser extension that refreshes the page very 3 seconds. A few desparate/brave souls started asking for codes openly, and their comments get removed. The smarter ones simply comment that it's so hard to get codes, etc. etc. Out of the blue, I get a DM with a code from a kind soul. By now, the Sage and Chalk options are out-of-stock. And just like that, I got myself a Charcoal Pixel 6a.
Tuesday, September 20, 2022
Resurrecting the 2009 iMac
Powered it on and was greeted by the startup chime and the Apple logo. Looking good so far. Progress bar steadily moving all the way till the end. Waited for more than 10 minutes, but still not loading the OS. It's most likely a really old CPU, but this is too long.
Suspecting a corrupted OS, I booted into macOS Recovery using Ctrl-R. There's a 1TB hard disk with 1.3GB used. Doesn't look like there is a proper OS on this thing though. Ran the Disk Utility to erase the disk - said "Unable to unmount disk". Chose the Install macOS option, but the 1TB hard disk does not show up as an option. First Aid reports the hard disk to be fine.
My guess is that because I'm running the recovery image from the HDD itself, Disk Utility is not able to unmount the disk. So the next step is to build a bootable USB stick, and run the erase/install from there.
Downloaded a bunch of DMGs and APPs, tried TransMac and command-line, but the USB sticks either won't be detected during boot-time, or getting a forbidden sign as soon as selected, or won't even get created by the createinstallmedia utility.
Another option is to replace the hard disk and try Internet Recovery, which bypasses the hard disk altogether. However, this requires me to open up the iMac, which doesn't look easy (if you don't have the right tools).
So I simply took the easy way out. Created a bootable installer of CloudReady (now ChromeOS Flex) and boom! Mission accomplished.
Sunday, June 12, 2022
Reinstalling Windows on Lenovo IdeaPad Miix 320-10ICR
It's a neat little tablet that does the job well. She doesn't even need to have the physical keyboard attached. Any typing required is done on the onscreen keyboard. The only complaint is that it's starting to get a little bit sluggish. All those Windows updates have used up all the free disk space, and the thing can't take any more new updates. The 32GB eMMC wasn't much to begin with.
I've always reinstalled the latest Windows 10 Pro to get around the updates issue, but looks like I need a more permanent solution. Given that the tablet is only used for media consumption, I've decided to just install Windows 7 on it. No performance degradation as there are no expected Windows updates. Turns out Windows 7 won't install as it's missing/asking for some device driver that it can't find.
Bumped it up to Windows 8.1. The operating system installed just fine, but the touchscreen does not work. Same goes for Peppermint OS. Need the touchscreen to work, so that we won't need to have the physical keyboard attached.
Looks like my only option is to just install Windows 10, then disable Windows Update. Version 21H2 didn't work. The ISO booted just fine, but the screen was all garbled. I can move the mouse and see something moving, but no way to complete the install. Then I read somewhere that Version 2004 and up won't work on the Miix 320. Tried Version 1909 and that one installed just fine. Took a looong time to set up though because every time I tried to create an offline account and set up the password, the system would switch to the "Just a moment..." screen then power off or hang.
I reckon this is because I've already set up the wireless network and it's trying to install drivers, while I was finishing the setup. After what felt like a dozen forced reboots, I managed to log in to Windows and set up my account. As for disabling Windows Updates, lots of tutorials out there, but none of them supposedly work anymore. Will just just reinstall the latest Windows the next time it slows down again.
Saturday, January 29, 2022
Field of Mars Reserve and Buffalo Creek Reserve
Field of Mars Reserve is a protected bushland reserve in East Ryde. Best way to start exploring the reserve is to use the main entrance along Pittwater Road. There's ample free parking when you get off the roundabout. There is a Visitors Centre nearby, which is open during weekends.
From the reserve entrance, you have a choice of four walking trails. The shortest is Doyle Loop, which 1.2 kilometers, 45 minutes return with a grade of medium. Next shortest is the Warada Loop - 1.9 kilometers, 60 minutes return, easy grade, which is the one we tried. You can find the walking trail map here.
We found the track (relatively) slow-going, and the kids didn't like the occasional spider web. So instead of taking the return loop, we pushed on north and took the Cressy Road exit. From there, we took the long way to the parking lot. If you intend to do the same, there is a cafe called Fox and Bird along Moncrieff Drive, in case you need some refreshments along the way.
Across the street is the Buffalo Creek Reserve. Had to give this a visit, as the kids spotted the shaded playground. Further beyond is a walking/bicycle track around a cricket oval. We almost missed it as we walked around the oval, but I knew what I was looking for.
On one side of the oval, you'll find access to The Great North Walk, which goes from Sydney to Newcastle. Of course, no 250-km. walk for us. We took the mangrove boardwalk loop and headed back to the oval.
Saturday, October 9, 2021
TomTom Map 2021 Update
Most of the time, I just use Google Maps on my Android phone. Cellular connectivity used to be an issue on long drives (depending on where you're going), but not anymore. And even then, you can download Google Maps for offline use.
In any case, let's see where things stand. Seems to be GPS Underground is no more. Good thing Navitotal is still around.
Got the latest 1075 maps here: https://www.navitotal.com/topic22415.html
And the meta codes here: https://www.navitotal.com/topic22420.html
Downloaded the newest 1075 map that is compatible with my v9.530 navcore.
Basically same upgrade procedure as before:
- Make a backup of the TomTom drive.
- Remove the old Australia maps folder and copy over the new one.
- Copy over the street cam files (from the backup folder) or new ones if you have.
- Run FastActivate (with the latest meta codes) to activate the maps.
In my case, activation was successful, but device was not able to detect the new map. Had to downgrade to an older map (one that is actually shown on the compatibility chart) for it to work.
















