Joseph Zikusooka ~ Zik

A Linux software engineer specializing in open source technologies | Very experienced in building and configuring UNIX/Linux systems and servers. Passionate about developing software applications and hardware for the smart home | Currently serving as the CEO of Jambula Labs and the project leader at JambulaTV, a smart home automation and entertainment platform - https://jambulatv.com | This blog focuses on the following areas: Linux How-Tos and Tutorials ::: IT Security News ::: Free and Libre Open Source Software ::: Smart Home Software ::: Digital Innovations in East Africa https://mastodon.social/@jzik | https://github.com/zikusooka

Jambula OS Linux – Version 2025.1.0 Released

I have just compiled and released a new image for Jambula OS Linux version 2025.1.0! This exciting update features a range of innovative enhancements, including:

🌟 Seamless integration with the latest Home Assistant smart home software

📅 Radicale, the lightweight and powerful CalDAV/CardDAV server for all calendaring needs

🎵 A local music server that supports audio announcements and alerts

🕰️ A talking clock feature that announces the time at hourly intervals

🌦️ Periodic weather updates delivered through voice alerts tailored to your location

📷 MQTT-based triggers activated by motion detection from the built-in camera server

For more information about Jambula OS Linux, including instructions on how to download and install it, please visit:

https://github.com/zikusooka/Jambula-OS

Hass Core Installer, a new Home Assistant Installer and upgrade tool for Linux

I’m excited to announce that I have uploaded a new tool called HASS Core Installer. As you have guested, its a handy tool that makes it very easy to install, upgrade, and uninstall Home Assistant Core on Linux. So weather you are a beginner, intermediate, or advanced Home Assistant user, this tool is just what you need if any of the official and recommended methods are not sufficient for your use case.

I initially developed this tool for use on Jambula OS, a custom tailored Linux operating system designed for SoC devices such as the Raspberry Pi. However, you can use it on any Linux distribution such as Ubuntu, Fedora, OpenSUSE, Ubuntu, Debian etc.

HASS Core Installer also works off-line allowing for local installations and upgrades of Home Assistant in scenarios where there’s no access to the Internet.

To get started or contribute to this project, check out the HASS Core Installer repository on my Github!

Jambula OS Linux now offers support for Home Assistant

🚀✨ Exciting news for smart home enthusiasts! I have added support for Home Assistant Core installs & upgrades to Jambula OS (starting with version 2024.10.0) 🎉

⚙️ Jambula OS is a custom Linux operating system 🐧 designed specifically for SoC devices like the Raspberry Pi 5

⬇️ You can download it here: https://github.com/zikusooka/Jambula-OS/

🏡 Upgrade today and kickstart your journey to creating a private, offline smart home 💡hub!

Linux TIPS

Loading Mastodon feed...

Open source software tools I used while preparing for Creative Freedom Summit 2024

This week I will be presenting at the Creative Freedom Summit 2014. In case you don’t already know about it, the Creative Freedom Summit is a virtual conference dedicated solely to the features and benefits of Open Source creative tools.

My talk at this open source summit will be focused on JambulaTV, a smart home hub I built using only Free/Libre open source software (FLOSS) tools. You can read the details of what my talk is about at:

https://creativefreedomsummit2024.sched.com/event/1Xzv4/using-fedora-linux-to-create-a-private-and-locally-based-smart-home-hub

To prepare for my presentation, and in the spirit of open source software, I exclusively used the following open source tools:

LibreOffice Impress: Used to create the slide show

LibreOffice Impress is part of the LibreOffice suite and is used to create powerful and nice looking slide shows for presentations

https://www.libreoffice.org/discover/impress

OBS Studio: Used to record the video session

OBS Studio is a free and open-source, cross-platform screen-casting and streaming app. It is available and packaged for nearly all the major Linux distributions

https://obsproject.com

GIMP: Used to create or edit the graphics used in the slide show


GNU Image Manipulation Program, commonly known by its acronym GIMP, is a free and open-source raster graphics editor used for image manipulation and image editing, free-form drawing, transcoding between different image file formats, and more specialized tasks.

https://www.gimp.org

FFMpeg: Used to clean up the audio/video output file

FFmpeg is a free and open-source software project consisting of a suite of libraries and programs for handling video, audio, and other multimedia files and streams.

https://ffmpeg.org

Jitsi: To remotely connect with the summit hosts for the virtual presentation

Jitsi is a free and open-source multiplatform voice, video conferencing and instant messaging applications for the Web platform, Windows, Linux, macOS, iOS and Android.

https://jitsi.org

Linux, Python, Security, and Open Source Software TIPS

  • Happy I Love Free Software Day ♥️#ilovefs #softwarefreedom #foss #opensource @kirschnerSome of my favorite projects and organizations that contribute to #freesoftware (in no particular order):@fedora @opensuse @debian @tails @signalapp @homeassistant @nextcloud @icing@raspberrypi @linuxfoundation@conservancy@matrix@fsfe@ThePSF @sovtechfund@iscdotorg#Linux#systemd #buildroot#fediverse…Thank you to everyone who dedicates their time to contribute to open source software
  • 💡On a Linux system, use the "nohup" utility to execute one-time commands or scripts that can run later, even after you log out of your terminal session @opensuse @fedora @debian Example: To schedule a one-time script to run 15 minutes after you disconnect from the terminal:nohup bash -c "(sleep 900 && ./myscript.sh)" &#ZikTIPS #linuxtips #techtips #sysadmin #Fedora #OpenSUSE #Opensource
  • Introduction to Pipewire @fedora @opensuse #fedora #pipewire #opensource https://fedoramagazine.org/introduction-to-pipewire/
  • 💡 Use the following Linux command to create a file with a specific access and modification timestamp @fedora @opensuse @archlinux touch -t [FILE] e.g. For a file named mytalk.txt March 10, 2025 at 9AM:touch -t 202503100900 mytalk.txtTo verify:stat -c "%x%y" mytalk.txt.#ZikTIPs #Linuxtips #LinuxTechTips #Opensource
  • FOSS events like #FOSDEM happening this weekend are vital for inspiring #opensource developers and contributors especially in underrepresented regions.Shameless plug: I'm planning to attend several #FOSS conferences this summer. My participation will enhance my efforts to promote the widespread adoption of Open Source Software in Africa. Your support can empower our communities and drive innovation in these regions.https://gofund.me/408f9378#FOSDEM2025 #fundraiser #fundraising#crowdfunding
  • I've just released a new image for Jambula OS Linux version 2025.1.0! New features include:🌟 Easy install & upgrades of Home Assistant📅 Radicale, a CalDAV/CardDAV server for your calendaring needs🎵 A music server that supports audio notifications🌦️ Periodic weather updates delivered through voice alerts📷 MQTT-based triggers activated by CCTV motion detectionInstructions on how to download & install at: https://github.com/zikusooka/Jambula-OS#JambulaOS #smarthome #homeassistant #OpenSource
  • 💡 You can simultaneously query multiple domain name records using the dig command in Linux as follows: dig OPTIONS @server -f BATCH_FILEExample:dig +nocmd +noquestion +nostats +nocomments @8.8.8.8 -f mydomains.txtcat mydomains.txtexample.com Aexample.net MXexample.org NSTIP: dig is part of the dns/bind utilities package depending on your distribution#ZikTIPS #DNS #Bind #SysAdmins #CLI #Opensource
  • I need your support to attend a couple of open source conferences this summer. Any help is greatly appreciated. Thank you!http://gofund.me/1b774382#opensource #softwarefreedom #fundraising #funding #TravelSupport
  • 💡 To display a full list of known users on a Linux system, use the following command @fedora @opensuse @debian @ubuntu lslogins#ZikTIPS #Sysadmin #CLI #Fedora #OpenSUSE #opensource #TipsTech
  • My friend @ErikGustafson has just joined Mastodon! Let's give him a warm welcome to the #Fediverse by following him #Intro #introduction #opensource
  • The schedule for FOSS Backstage 2025 is officially out! I'm looking forward to being part of this incredible open source software event happening in Berlin #FOSSBack #FLOSS #OpenSourcehttps://25.foss-backstage.de/schedule/
  • I'm stoked to be among the scheduled speakers at FOSS Backstage 2025 taking place March 10-11 in Berlin.Join us for insightful discussions on the non-technical aspects of Free and Open Source Software. @FOSSBackstage #FOSSBackstage #FOSSBack #Opensourcehttps://25.foss-backstage.de/speakers/
  • The guys over at Home-Assistant have just released a new open source based voice control device for local and private smart homes @homeassistant #smarthome #opensource https://www.home-assistant.io/voice-pe
  • 🎉 Excited to share HASS Core Installer, a tool that simplifies installing and upgrading Home Assistant Core in a Python 3 virtual environment! @homeassistant @jambulatv @jambula 🚀 Works online & offline, complementing existing methods for diverse setups.🥦 Check it out on GitHub: https://github.com/zikusooka/hass-core-installer#HomeAssistant #SmartHome #ZikTIPs #opensource
  • End of an era: The last 4.19.y Linux kernel has been released.#Linux #opensource https://lore.kernel.org/lkml/2024120520-preorder-untracked-6e5b@gregkh/T/
  • 💡To display the DHCP IPv4 options assigned to a Linux client, use the following command line @opensuse @fedora @NetworkManager #ZikTIPs #CLI #Networking #OpenSourcenmcli -f DHCP4 device show "$INTERFACE"e.g. nmcli -f DHCP4 device show eth0
  • 💡 Use the 'lsof' command to quickly identify the ports that a specific service is listening on within a Linux system @opensuse @fedora @climagic Example:SERVICE=sshd; lsof -i -P -n | grep $SERVICE | awk '/LISTEN/ {print $9}' | uniq#ZikTIPs #SysAdmins #Opensource
  • 🚀 If you're using Buildroot, check out my GitHub repo for patches! I've added support for new packages starting with Kea DHCP. 🔧💻 #Buildroot #KeaDHCP #DIY #embedded #Opensourcehttps://github.com/zikusooka/buildroot-patches
  • 💡 Use the following command to quickly check how much space you have left on your Linux filesystem@opensuse @fedora @debian #ZikTIPs #CLI #Opensource #linuxdf -h –output=avail /
  • 💡 If you have SELinux enabled on your Linux system, you can view the context of an object as follows @opensuse @fedora #ZikTIPS #Sysadmin #SELinux #CLI #OpenSUSE #LinuxFor a file:ls -Z [FILE] e.g.ls -Z /etc/selinux/configFor a process:ps -eZ | grep [PROCESS_NAME] e.g.ps -eZ | grep apache2

How to install the latest Python 3 version on Linux using sources

Introduction

Python 3.11.0 was officially released on October 24 2022. However, most Linux distributions have not yet upgraded to the latest Python version i.e. Python 3.11.2 (released on February 8 2023). Please visit this page to see the most recent versions.

The jump from versions 3.10.X to 3.11.X brought with it significant changes and improvements to Python code. Among the improvements is that Python is now 10 – 60% faster than before. That’s a big and noticeable speed boost. So beyond the usual reasons for upgrades i.e. security etc, I really wanted this version on my Linux desktop as soon as the final release was made publicly available.

If you are like me and don’t like waiting for your favourite open-source program to be supported on your Linux distribution, here is how to install the latest Python 3 version on Linux using sources.

Before you begin, check the current version on your Linux system:

python  --version

Currently the version of Python on my Linux system is three (3) releases behind. So it is time for me to upgrade to the most recent version.

CAUTION: Due to the many dependencies on the currently installed Python common package, I highly recommend that you do not remove the existing version. Instead, we will install the latest version in an alternate location e.g. /usr/local

Prerequisites

Please ensure that your Linux system has the following packages installed:

On Ubuntu or Debian:

sudo apt-get install build-essential

sudo apt-get install autoconf automake gdb libffi-dev zlib1g-dev libssl-dev libncurses5-dev libgdbm-dev libnss3-dev libreadline-dev libsqlite3-dev

On Fedora or Rocky Linux:

sudo dnf groupinstall “Development Tools”

sudo dnf install openssl-devel libffi-devel bzip2-devel sqlite-devel

* You will also need wget which is generally included by default on most Linux distributions

Visit the Python downloads page for sources to get the direct link to latest Python source package. In this tutorial I will be using the XZ compressed source tarball i.e. Python-3.11.2.tar.xz

Download the latest Python package to a temporary directory:

wget  -c  -P /tmp  https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tar.xz

Unpack the Python 3 tarball:

tar xvf /tmp/Python-3.11.2.tar.xz -C /usr/src

Compile and build Python:

cd  /usr/src/Python-3.11.2

./configure  --prefix=/usr/local  --enable-shared  --enable-optimizations  --with-system-expat  --with-system-ffi

IMPORTANT: Ensure the prefix i.e. ‘/usr/local’ you use is different from that used by your Linux distribution otherwise you will overwrite the default Python 3 installation!

Optional: You can make some of your modules a permanent part of the Python interpreter. To do so, simply modify the file: Modules/Setup.local before running make. To see my my local setup, see the appendix.

sudo  make

TIP: you can add “– j $(getconf _NPROCESSORS_ONLN)” to the make command in order to speed things up i.e. sudo make -j $(getconf _NPROCESSORS_ONLN)

sudo  make  altinstall

Add the following export command to your shell initialization file:

Using Bash shell:

echo  “export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib”  >>  ~/.bashrc

Then source the file for now:

source  ~/.bashrc

To verify if you now have the latest Python 3 (including pip installer) versions:

/usr/local/bin/python3.11 –version

/usr/local/bin/pip3.11 –version

Congratulations! You now have the latest Python 3 version on your Linux system.

NOTE: When your distribution eventually catches up, you can remove this installation by issuing the ‘make uninstall‘ command in the installation directory i.e. /usr/src/Python3.11

Appendix

Here’s my sample ./Modules/Setup.local file:

array -DPy_BUILD_CORE_MODULE arraymodule.c
_contextvars _contextvarsmodule.c
_struct -DPy_BUILD_CORE_MODULE _struct.c
_random _randommodule.c -DPy_BUILD_CORE_MODULE
_elementtree -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI _elementtree.c
_pickle -DPy_BUILD_CORE_MODULE _pickle.c
_datetime _datetimemodule.c
_zoneinfo _zoneinfo.c -DPy_BUILD_CORE_MODULE
_bisect _bisectmodule.c
_asyncio _asynciomodule.c
_json -I$(srcdir)/Include/internal -DPy_BUILD_CORE_BUILTIN _json.c
unicodedata unicodedata.c -DPy_BUILD_CORE_BUILTIN
fcntl fcntlmodule.c
spwd spwdmodule.c
grp grpmodule.c
select selectmodule.c
mmap mmapmodule.c
_csv _csv.c
_socket socketmodule.c
termios termios.c
resource resource.c
_posixsubprocess  -DPy_BUILD_CORE_BUILTIN _posixsubprocess.c
audioop audioop.c
_md5 md5module.c
_sha1 sha1module.c
_sha256 sha256module.c -DPy_BUILD_CORE_BUILTIN
_sha512 sha512module.c -DPy_BUILD_CORE_BUILTIN
_sha3 _sha3/sha3module.c
_blake2 _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c
syslog syslogmodule.c
binascii binascii.c
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DXML_POOR_ENTROPY -DUSE_PYEXPAT_CAPI
_multibytecodec cjkcodecs/multibytecodec.c

How to use Linux GNOME terminal like a Pro

For most users work is typically done in a web browser like Firefox or Chrome. (BTW, if you are not using Mozilla’s Firefox, I can not emphasize enough why you should switch to this opensource browser)
For advanced users i.e. IT admins, software developers, most of their time may be spent in a terminal and on Linux most often gnome terminal

Like regular users who prefer to open multiple tabs in a browser, using tabs in a terminal is necessary for an advanced user if they are to be productive. However, it can get pretty tedious and boring having to open up multiple terminal tabs in every time you start your Linux desktop

Using the command line tool gnome-terminal this process can be automated. This tool allows you to open multiple gnome-terminal tabs like a pro i.e. At desktop startup, open several & different tabs each with its own specified directory path or run command. You can even log into a remote system, if you have setup to allow passwordless SSH connections.

Below is a basic example of gnome-terminal command in action

gnome-terminal --maximize --geometry=80x24+200+200 --display=:0 --tab-with-profile=DAY -t Local --working-directory=/projects --tab-with-profile=NIGHT -t Remote -e "ssh -t jambula@REMOTE \"cd /opt; bash\""

I use this in a script which is activated by a custom keyboard shortcut to start my day

Scroll to top