G's Blog

Just a place to post random things. Enjoy your stay.

My Podcasts listening

First I'll say HAPPY NEW YEAR! Hope 12,022 brings much joy and memories.

So a while ago I asked for some recommended podcasts to listen to. I was looking for something to fill mostly my drive to and from work, my lunch hour on days I don't feel like reading and other moments where I needed something “quiet” to do for whatever reason. What better time then my first post of the year to share with you the ones I ended up with. In no particular order.

99% Invisible

This is probably my favorite. In each episode the host explores a topic that most of us have probably never heard or thought about or just something that we take for granted. For example the color of margarine or the fact that you used to be able to order a house in the mail to name just a few of the recent episodes.

Canadian True Crime

In each episode of this podcast the host presents the details of a crime that happened in Canada. Each are presented in great detail using many different sources of information from police records to news articles and witness/victim statements. Being Canadian this one hits home.

Geek to Geek

This one is just two geeks geeking out about things from video games to movies. Being a geek this one just made sense. It's all unscripted conversations(just talking point planed out) which I enjoy.

The geekbits podcast

This one is similar to the above but it features The 8-bit guy his brother and a long time friend just discussing different topics each episodes.

Nice Try!

This one is from a bigger podcast network and so far only has 2 seasons. Not sure if it's coming back for a 3rd. Both seasons are worth checking out. Season one takes a look at different attempts during history to create a “utopia” and why/how they have all failed. Season 2 goes inside the home and looks at products that have been sold to us that may or may not always live up to what they promise.

PineTalk Podcast

PostmarketOS Podcast

I'm grouping these two together as I listen to them kinda for the same reasons. To keep up with things pinephone/linux phone related. Both cover the topic from their perspective along with other things they touch(IE linux phones in general and pine hardware in general)

Most of these are now on a holiday break but should be coming back in the next few weeks so it is a great time to subscribe to them and check out some of the old episodes in anticipations of the new ones. I've been doing all my listening from my phone using the AntennaPod application. It's available from F-Droid and is a great easy to use application.

One last one that I'm been listening to in-between episode releases from the list above is The History of WWII podcast. This one requires little explanation. It explores different events leading up to and during WW2. It has 350 episodes so far and I'm up to episode 28.

Anyways that's it for today. Thanks for reading.

#Podcasts

Until next time. Stay safe!

G @mgrondin@youdabomb.social

Making “Retro” Home Movies

So if you follow me on the fediverse you will know that i recently picked up a nice Panasonic PV-007-K. It is a camcorder from 1997 that uses VHS-C tapes. I grew up playing around with camcorders and wanted to capture some memories with one again. Why? you might ask. Couple reasons. One just because i figured it would be fun to use and show off. And two because ain't no way google or anyone else is going to get there hands on this footage LOL.

So i finally captured some footage today. Let me tell you we are spoiled these days when it comes to image stabilization. It's very hard to get a stable shot with this camera. Luckily i found a way to stabilize it some using FFMPEG. It's a two step process.

First you issue this command

ffmpeg -i input.mp4 -vf vidstabdetect=stepsize=32:shakiness=10:accuracy=10:result=transforms.trf -f null -

You follow that up with

ffmpeg -y -i input.mp4 -vf vidstabtransform=input=transforms.trf:zoom=0:smoothing=10,unsharp=5:5:0.8:3:3:0.4 -vcodec libx264 -tune film -acodec copy -preset slow output.mp4

And that will produce a more stable version of the input. It's not perfect but it's much better. See for yourself.

Source video

Stabilized video

The biggest give away that something is up is the date/time display. Lesson is don't enable that i guess.

I also need to work on my capture method(I'll detail that in another post). The audio does not seem to come out very loud. Or maybe this camera just has a really bad mic. I also suspect that the capture device(or software) i use is negatively affecting the quality greatly. We'll see in time as i mess around.

Until next time. Stay safe!

G @mgrondin@youdabomb.social

So long GTube

As i write this the DNS servers of the world are forgetting all about video.gcfam.net.

If you follow me on the fediverse then you will already know that i am shutting down my Peertube instance and moving to https://spectra.video . I have downloaded all my videos and will be re-uploading them there in the coming days.

Peertube is a great service i just got tired of the instance maintenance for the amount i actually used it. This will probably be the only “service” i shutdown. At least for the foreseeable future.

That's all for now

Until next time. Stay safe!

G @mgrondin@youdabomb.social

Writing D64 images to real floppies

Hello everyone.

When I started my #retrocomputing journey i knew that i would end up with a floppy drive at some point. Had to upgrade from tapes right? One thing i was always unsure of was would i be able to really put it to use. Well when i went looking for a drive i also looked for floppies. Luckily i did find some NOS floppies. Now i had to find a way to get some content on them. In comes the Pi1541. This lovely project turns a Raspberry Pi into a 1541 disk drive. It actually emulates the 1541 in a cycle perfect way. This changed everything for me. With this it was now like i had 2 1541 drives.

So using VIC 2 disk backup i was now able to take a D64 disk image and write it to a real floppy. The software requires at least 16k of memory expansion. It can also use 24k. The way it works is actually quite simple. Here is what the software does.

  1. Prompts for a disk name and ID
  2. Format the new disk.
  3. Read in as many blocks as the available memory will allow
  4. Write those blocks to the floppy.

Repeat 3-4 till all blocks are copied.

It works fairly well. I’ve not had it fail on me yet. I’ve captured a small but probably uninteresting video of the process.

If you have a system compatible with the commodore 1541 disk drive you should get yourself a Pi1541. I can’t directly compare it to regular SD2IEC devices as i’ve not used those. But this thing works great. Now i can load DOOM from a real floppy (-:


Also just a little housekeeping. Its been a while since i posted again. Things are slowing down here and i might find myself with extra free time on my hands. That might turn into more posts again. I'll also acknowledge my failure to complete the 100 days to offload challenge. I'm a little disappointed but at the same time it did get me to write more posts. If only for a short period of time.

Well that's all for now

Until next time. Stay safe!

G @mgrondin@youdabomb.social

Back to the 80's AKA Got me a VIC-20 (#100DaysToOffload Day32)

So this is something i have been wanting to get into for a while. #RetroComputing. I could never find the right listing at the right price. Well this time when i went looking all was right and i scored a (what i consider) mint condition VIC-20. Also got a tape drive for it, some educational software on tape and a couple cart games.

See pics here

So now what to do with this. Well i discovered that there is still an active community of people making games for this system so that's been fun. Downloading games and converting to a format that i can then record to cassette since that's the only way i have(for now) of getting things to/from the VIC. That's worked out pretty well so far. I have also found Compute Gazette on archive.org and have embarked on a semi quest of archiving the program listings from them. I'll document that better here some day but for now you can find .tap files of what I've done here. I'll also post it all over on the Denial forum(linked above) under the games section.

I have also made .tap files for the above mentioned educational software.

That's all for now.

Till next time. Be safe!

@mgrondin@youdabomb.social

Until next time. Stay safe!

G @mgrondin@youdabomb.social

Keeping FreeBSD up-to-date on Raspi-B from Linux (#100DaysToOffload Day31)

So if you follow my blog/fediverse account you know that i've started using FreeBSD on some RapberryPi Model B's i had around(that's down to 1 now...) as some in home servers. The remaining one hosts my gopher space and a disposable mailbox service. The trouble I've had was that the only way to upgrade between releases was to either build from source on the Pi(haha who's got time for that) or start from scratch with a new image every time. Had to come up/find another option.

Thanks to @mpts@mastodon.social who pointed me to an article about just this. Mind you the article is about FreeBSD 11 but same process applies. So i set off to get this going. First attempt was to do it from my little Dell laptop. While it worked it took like 2 and a half hours to build world+kernel. Had to be a faster way. Not that this needs to be done often but still. Then it hit me. I can use Qemu on my linux PC to setup and use FreeBSD. So i did just that. This post will detail the steps i took to get this accomplished. The time savings are well worth it in my case. So lets get started.

Step 1 is to create the disk image. This is done like so

qemu-img create -f qcow2 -o preallocation=full FreeBSD.img 64G

Since i only plan on using this to build for the Raspberry Pi 64gb should be more than enough. Preallocation will speed things up a little by having the file at it's max size and not having it take time to expand as it needs.

Step 2 is to grab the 64-bit installer image for FreeBSD 12.2 and use that to install FreeBSD in our VM.

We start Qemu like so to boot the installer.

qemu-system-x86_64 -vga std -smp cores=8 -machine accel=kvm -m 4096 -hda FreeBSD.img -cdrom FreeBSD-12.2-RELEASE-amd64-disc1.iso -name "FreeBSD" -rtc base=localtime -boot d

This will create/boot a VM with 8 processors/cores and 4g of ram using our image created above as the hard disk. We can then step through the installation as normal. The defaults are good enough for this use.

After the install is finished we can power down the VM and start it back up without the cd mounted like so

 qemu-system-x86_64 -vga std -smp cores=8 -machine accel=kvm -m 4096 -hda FreeBSD.img -name "FreeBSD" -rtc base=localtime 

The rest of this is taken directly from the article linked above and adapted to build 12.2 instead of 11.

So Step 3 is to grab the FreeBSD source.

cd /usr/src
svn checkout https://svn.freebsd.org/base/releng/12.2

Once this has completed we can start the build

make -j9 TARGET_ARCH=armv6 UBLDR_LOADADDR=0x2000000 buildworld

It is important to set the UBLDR_LOADADDR variable otherwise the system wont boot.

On my system this took about about 30 minutes.

Once that is down we build the kernel

make -j9 TARGET_ARCH=armv6 KERNCONF=RPI-B buildkernel

This took about 5 minutes for me.

Now came the next part i knew i would have to figure out. How to mount the Pi's SD card in Qemu. After some searching i found how to do this using USB pass-throught. First step is to find the device by using lsusb

Bus 004 Device 003: ID 0480:0212 Toshiba America Inc External USB 3.0
Bus 004 Device 002: ID 0480:0212 Toshiba America Inc External USB 3.0
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 1058:1230 Western Digital Technologies, Inc. My Book (WDBFJK)
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 17f6:0821 Unicomp, Inc R6_0_Trackball_v3_45
Bus 001 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 009: ID **1908:0226** GEMBIRD 
Bus 001 Device 004: ID 1058:0827 Western Digital Technologies, Inc. My Passport 0827
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Note the bolded vendor/product ID above. The resulting command is then

qemu-system-x86_64 -vga cirrus -smp cores=8 -machine accel=kvm -m 4096 -hda FreeBSD.img -device usb-ehci,id=ehci -device usb-host,bus=ehci.0,vendorid=0x**1908**,productid=0x**0226** -name "FreeBSD" -rtc base=localtime

Notice the same bolded vendor/product id's. This will allow access to that USB device from the FreeBSD VM just as if it was connected to a physical pc.

Now we keep going with the install of the kernel/world we just built.

First we mount the SD card

mount /dev/da0s2a /mnt

Device name might differ.

Then the install steps

make TARGET_ARCH=armv6 KERNCONF=RPI-B DESTDIR=/mnt installkernel
mergemaster -p -A armv6 -D /mnt
make TARGET_ARCH=armv6 DESTDIR=/mnt installworld
mergemaster -iF -A armv6 -D /mnt
make TARGET_ARCH=armv6 DESTDIR=/mnt delete-old
make TARGET_ARCH=armv6 DESTDIR=/mnt delete-old-libs

This takes very little time overall. The biggests steps in a way are the 2 mergemaster commands as you have to pay attention to the files so you don't wipe your configurations.

Once that is all done we simply unmount the SD card, put it in the Pi and power it on. If all went well we should have a Pi booted up with the latest release of FreeBSD-12.2.

That's all for now.

Until next time. Be Safe!

@mgrondin@youdabomb.social

#Tech #FreeBSD

Until next time. Stay safe!

G @mgrondin@youdabomb.social

Weekly Music Review ( #100DaysToOffload Day 30)

So this one is a little late again. Sorry about that.

For the past week or so i've been listening to Calypso Drip FM by Gryff. There was no surprise here to be honest. Based on the album cover and the description it was pretty much exactly what i expected. It very much reminded me of driving around playing GTA: Vice City or something. All around a great album to drive to for real. Upbeat all the way with just the right vibe. Really check it out.

For the next album i have chosen Why Don't You Dance by PanicBasket. This looks like a fun little album and based on the first song along i think i will enjoy very much. It's a return to some Metal after a few Synthwave offerings. Lets see what it brings.

On another note i'm not sure how much longer i will keep these weekly reviews going. As much as i enjoy them they add up at the end of the month. And i'm not sure i can really call them “reviews” since they are mostly very short. So i will also spend the next week considering if i'm going to keep these going or maybe make them bi-weekly or drop them all together.

I started doing this for a few reasons. First to give me something to blog about and secondly because i truly love music and am always looking for something new. While doing these has satisfied both those things the money each week adds up.

Anyways that is all for now.

Until next time. Be Safe!

@mgrondin@youdabomb.social

Until next time. Stay safe!

G @mgrondin@youdabomb.social

Weekly Music Review and Fixing an error ( #100DaysToOffload Day 29)

So this “review” is technically a week late. After the last post i neglected to pick up the new album and did not realize until the end of the week.

So for the last week i've been listening to Daze of the Future by Mr. 45. If you recall i picked this album from the surprise me section of Bandcamp and i must say i was very pleased with it. It's a bit more on the dark side which is part of what i enjoyed about it. I guess i don't have much else to say about it than that. It's some good (dark)synthwave music which is just what i'm into these days.

Onto the next one which i've already picked up to avoid the same situation as last time. This week i'll be listening to Calypso Drip FM by Gryff. This is a debut album which makes it that much more worth a listen. I picked it for 2 reasons.

  1. The cover is very inviting.
  2. The description of the inspiration for this album is something i can really appreciate.

Lets see where it goes.


As some of you may know i run my own Git using Sourcehut. See Part 1 and Part 2 of my adventure getting it setup.

Well a little while ago i messed up the actual Git part. What caused the mess up was letting it fall too many versions behind and got me to this mess. You can see my posts and “solution” at the bottom of that. I'll summarize. When the latest version was trying to apply the DB migrations it was running into a situation of needing a later migration applied before the “next” one. So my “solution to this was to force re-order the process. This did get everything to apply but left me in such a state that i needed to re-force that order with each update. It would result in this

upgrading git.sr.ht 100%
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
ERROR [alembic.util.messaging] Requested revision d42e577c5dcd overlaps with other requested revisions c167cf8a1271
FAILED: Requested revision d42e577c5dcd overlaps with other requested revisions c167cf8a1271
error: command failed to execute correctly

I lived with this for a while then it hit me. That revision must be stored somewhere in the DB and i just need to correct that and all should be good. It was truly that simple. In the git.sr.ht DB there is a alembic_version table. This table should only contain 1 row. The latest migration applied. In my case it contained 2. So the real solution was to delete the 2nd row(the one not matching up with the latest revision). Once this was done everything went just fine with the next update of git.sr.ht. So the moral of this story is to keep things up-to-date. Especially when something is considered in alpha status.

That is all for now.

Until next time. Be safe!

@mgrondin@youdabomb.social

#Music #Tech #SelfHost

Until next time. Stay safe!

G @mgrondin@youdabomb.social

A Quick and Dirty DNS server using FreeBSD ( #100DaysToOffload Day 28)

In today's post i'm going to show you how to setup up something i should have done a long time ago. Knowing now how easy it could be. What is this thing? Setting up a in-home DHCP/DNS server. At first i was just looking for a DNS server thinking like a Pi-Hole but i knew i wanted to use FreeBSD as the OS. I want to use BSD's more mainly just to learn about them not because i think they are better(yet). FreeBSD is my choice simply because i've had the best experience with it. This would work from any of the BSD's but some step might differ a little. So Looking around i found out that the “Pi-Hole” only runs on linux. Looking a little further i found out that a Pi-Hole really is just a DNS server plus a block list. Doing this also means i don't have to maintain a host file on each device i own.

Enter dnsmasq

This little piece of software is just what i was looking for. Plus it's also a DHCP and TFTP server. And it's native to BSD's(It can also be found on linux).

The setup was quite easy. I am using a Raspberry Pi Model B rev 2(A second one i had laying around) for now but this is going to be upgraded to something else as it does struggle a little. But it is very usable and any slow downs are only noticeable when the TTL of the DNS record expires.

So step one was to flash the SD card with the FreeBSD image this i did using dd from my linux PC

dd if=FreeBSD-12.1-RELEASE-arm-armv6-RPI-B.img of=/dev/sdX

Pop that in the Pi and boot it up. I always do the initial Pi boot up with it connected to a display just in case something goes wrong and plus then i don't have to try and look at DHCP lease tables to find out what the IP address of it is.

After initial boot next task should be to change the default password(s) for root account and freebsd account. You can do that using the same passwd command as on linux.

Next you really should set a static IP on any server and also set a hostname to do that on FreeBSD you edit /etc/rc.confand add these lines

hostname="hyperion"
ifconfig_ue0="inet 192.168.2.6 netmask 255.255.255.0"
defaultrouter="192.168.2.1"

ue0 above is the name of the network interface. This could be different on your system. You can find the interface name using the ifconfig command.

Now i know i could have these changes take effect with a few command but i always reboot when making changes like this.

What i always do next is somewhat optional but HIGHLY recommended. Make SSH use public key authentication. I'll assume you know how to do this and move onto the setup of the actual DHCP/DNS server. At this point i would also disconnect the Pi from the display, Place it in it's final resting place and do the rest of the setup over SSH.

The only package we need to install is dnsmasq

pkg install dnsmasq

Once that is installed it's a matter of configuring it. dnsmasq is a caching DNS server by default but can also be a DHCP and TFTP server. I decided to also use it as the DHCP server on my network to ensure that all clients use it as DNS server. dnsmasq parses /etc/hosts and turns those into DNS records/responses.

Here is my config


# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv

no-resolv
server=9.9.9.10
server=149.112.112.10
dhcp-range=192.168.2.20,192.168.2.150,24h
dhcp-option=3,192.168.2.1
dhcp-authoritative

# Send microsoft-specific option to tell windows to release the DHCP lease
# when it shuts down. Note the "i" flag, to tell dnsmasq to send the
# value as a four-byte integer - that's what microsoft wants. See
# http://technet2.microsoft.com/WindowsServer/en/library/a70f1bb7-d2d4-49f0-96d6-4b7414ecfaae1033.mspx?mfr=true
dhcp-option=vendor:MSFT,2,1i

cache-size=300
conf-dir=/usr/local/etc/dnsmasq.d

# If a DHCP client claims that its name is "wpad", ignore that.
# This fixes a security hole. see CERT Vulnerability VU#598349
dhcp-name-match=set:wpad-ignore,wpad
dhcp-ignore-names=tag:wpad-ignore

# Always allocate the host with Ethernet address 11:22:33:44:55:66
# The IP address 192.168.0.60
#dhcp-host=11:22:33:44:55:66,192.168.0.60
# If this line is uncommented, dnsmasq will read /etc/ethers and act
# on the ethernet-address/IP pairs found there just as if they had
# been given as --dhcp-host options. Useful if you keep
# MAC-address/host mappings there for other purposes.
#read-ethers

Most of those options are explained or self-explanatory so i'll explain the less obvious ones.

no-resolv by default dnsmasq gets it's list of upstream dns servers to pass onto clients by reading /etc/resolv.conf this disables that and makes it get it's upstream server from it's own config file.

server=9.9.9.10
server=149.112.112.10

These are the 2 upstream DNS server i use. They are provided by Quad9. These are the unsecured non-blocking servers as i will supply my own blocking list.

So then in /etc/resolve.conf you just need to have nameserver 127.0.0.1

and then disable resolvconf by creating /etc/resolvconf.conf with the following content

resolvconf=NO

dhcp-option=3,192.168.2.1 this sets DHCP option 3(Default gateway) for all clients to 192.168.2.1 dhcp-authoritative This makes dnsmasq forcefully become the only DHCP server on the network so it will takeover leases from other servers(if i understand that correctly)

I've left the addresses reservation lines because i may use them someday.

conf-dir=/usr/local/etc/dnsmasq.d this makes dnsmasq parse all files under that folder

in that folder i have the block list found here

This list get updated everyday and is a large list blocking AD and malware domains.

So with that all in place all that is left to do is to enable/start the service

To enable add this to /etc/rc.conf

dnsmasq_enable="YES"

Then to start it right now

service dnsmasq start

That's it the server is now running and will answer DHCP and DNS requests. Any clients you have set with static network configurations you will need to update the DNS server on those to point to this newly setup server.

The other thing i did was create a small script to update the block list everyday and restart dnsmasq.


#!/usr/local/bin/bash
wget -O /usr/local/etc/dnsmasq.d/dnsmasq.blacklist.txt https://raw.githubusercontent.com/notracking/hosts-blocklists/master/dnsmasq/dnsmasq.blacklist.txt
service dnsmasq restart

and add that to /etc/crontab

0 1 * * * root /root/upblocklist.sh >/dev/null 2>&1

I have that set to go at 1AM every day as the blocklist repo is updated right around 12am in my time zone. You'll have to adjust this so you grab it after it's been updated.

And that is it. Like i said the Pi model B is not the best deivce to do this with. I think anything more recent with more than 1 CPU core would work just fine. My plan is to get a Rock64.

Well i hope this post was helpful to someone.

Until next time Stay safe!

@mgrondin@youdabomb.social

#Tech #BSD #Selfhost

Until next time. Stay safe!

G @mgrondin@youdabomb.social

Weekly music review ( #100DaysToOffload day 27)

So this past week i have been listening to Floppy Disk Overdrive by Master Boot Record and oh boy did i have no clue what i was in for.

This album stands on its own. I found it in the Synthwave listings but calling it that is a stretch. I would go as far as defining a new genre. Call it MetalWave or SythMetal or something. The songs have the structure and feel of metal with some very Synth elements. On first listen you just don't know what to expect. Every song takes unexpected turns for the better. It does take more than one listen to really appreciate it but now I can't stop listening to it. It's going to be hard to move on from this one. Highly recommend this one. You should not pass it up.

Moving on i must.

Next we shall check out Daze of the Future by Mr. 45. This one is a little older but i went to the Surprise Me listings of bandcamp and this one caught my eye. Lets see what surprises it holds.

That is all for today.

Until next time be safe!

@mgrondin@youdabomb.social

#Music

Until next time. Stay safe!

G @mgrondin@youdabomb.social