Category Archives: Programming

Running Puddletag on Linux distributions with limited Python 2 support

I am a big fan of Puddletag, an audio tag editor for Linux similar to the Mp3tag Windows program. As seen above, Puddletag uses a spreadsheet-like layout which makes it quite unique in the Linux world and matches 100% with how I like tagging to be. Puddletag and I are on the same wavelength and I have been using it for some years now to curate my extensive music collection.

Unfortunately, Puddletag was written in Python 2 and relies on a number of Python 2 libraries. When I upgraded to Fedora Linux 32 a few days ago, I lost a number of those libraries as well as Puddletag (as Python 2 reached its end of life (EOL) on 1st January 2020).

Fortunately, the Linux community came to the rescue and created a corresponding AppImage which works on all new Linux distributions like Fedora 32 or Ubuntu 20.04. Get the AppImage here courtesy of Patsim and have fun!

I’ve tested it in Fedora Linux 32 and it works great!

Playing Quake again after 23 years

Quake was born when Christina and I were studying in France in 1996.

Like most people we knew, we fell in love with the game: the graphics were amazing (and we even bought a 3dfx Voodoo 2 to run it), the audio was great and the atmosphere phenomenal. As a matter of fact, Quake is one of the few games I completed. I ran it on Windows 95.

Fast forward 23 years

Today, my laptop runs Fedora Linux 29 and I only use its integrated Intel graphics chipset (despite the laptop having an nVidia chipset as well). This morning, I stumbled upon Quaddicted:

From there, I quickly discovered that, since Quake was released as open source software in 2012, a number of people have embarked on correcting bugs and enhancing the Quake engine. According to Quaddicted (and who am I to disagree!), the best engine for Linux is Quakespasm.

I quickly downloaded it and found an executable called quakespasm-sdl2 which I quickly ran. I got an error message telling me that a folder id1 was not found.

I remembered having zipped my Quake installation years and years ago and, because I am a very methodical guy, took only 5 seconds to find the ZIP. It had the id1 folder in it which I quickly copied to the Quakespasm folder. I got the Quake music. I ran quakespasm-sdl2 again and, lo and behold, Quake started in all its glory. I quickly selected the full screen option and opened a save game from decades ago and it worked! This is what you can see in the top screenshot.

But quake is more than quake…

While reading Quaddicted, a stumbled upon Quake Injector, a tool written in Java which allows you to easily download and run 3rd party maps in Quake. Think maps as levels, distinct from the Quake default levels, but as great and sometimes greater to play.

[Caveat: Quake Injector did not run at first as I had Java 11 on my Linux laptop. I had to switch to Java 8 (which I also had but was inactive)]

As soon as Quake Injector started, I installed the very highly rated DaMaul6 map and this is where I am now. Wish me luck as DaMaul6 is known to be very difficult.

MaxCDN sponsors GNU Bash logo redesign

bash-orgOn 16 December 2015, Chet Ramey, the maintainer of GNU Bash announced an excited piece of news, that of new logo proposals for GNU Bash. The iconic Bash logo seen on the left was taken from tiswww.case.edu/php/chet/bash/bashtop.html.

Depending on the number of votes from the community, one of the below designs could soon sport GNU Bash.

new-bash-logo

Bash, which is a short form of writing Bourne Again Shell, is a Unix shell that comes bundled in Linux distributions and OS X. Released in 1989, GNU Bash was welcomed as a free software replacement for the Bourne shell.

Unfolding the story behind the Bash logo designs

maxcdn-logoI had this chat with Justin Dorfman, a fellow designer at MaxCDN, who had the idea of the GNU Bash logo redesign. As Justin explains, MaxCDN encourages its staff to contribute to Open Source in various ways.

Now, Justin is a huge fan of Bash, he adores stickers and realizing that GNU Bash doesn’t have an attractive logo, he wrote to Chet Ramey in September asking whether he would be okay with MaxCDN sponsoring a logo redesign. Chet showed the green light and Justin also obtained approval for resources from MaxCDN.

Justin says ProspectOne, the company behind jsDelivr and another freelancer were hired for the task. When the proposals were sent to Chet, he chose three designs by ProspectOne but could not further decide which one to select. Therefore they decided to let the final choice be that of the community and Chet sent the announcement on the bug-bash mailing list.

On the first day ~200 votes were recorded. A user by the name ‘anlar’ then posted about voting for the new bash logo on Reddit, which garnered 160 comments. At the time of writing this post over 12,000 votes were recorded, with logo no. 2 earning 79.3% of the votes.

gnu-bash-votes-10k

I thank Justin who provided me an insight of the story behind the new Bash logo. Below are some of the designs that were among the initial proposals.

BASH-new-logo-2015-v5
BASH-new-logo-2015-v6

Is the final GNU Bash logo decided yet? Nah. You still have time to vote for your favorite. Please visit the page, and cast your vote now.

The post MaxCDN sponsors GNU Bash logo redesign appeared first on HACKLOG.

Vote for your favorite Bash logo

Chet Ramey, maintainer of GNU Bash, the popular shell that comes bundled with Linux distributions, announced earlier that he received new logo proposals for Bash. In his message on the bug-bash mail list, he invites Bash users to vote for their favorite among the three logo proposals that he received from Justin Dorfman.

new-bash-logo

Source: http://imgur.com/RTK89fX

Chet shared a Google form allowing people to cast their vote. I like the second proposal and voted for the same. At the time I voted the form recorded 12 responses, out of which the second logo received 11.

bash-logo-votes

If you’d like to see your favorite logo sport GNU Bash, cast your vote now :)

The post Vote for your favorite Bash logo appeared first on HACKLOG.

Introduction to Flask

On the 14th of September 2015, Avinash Meetoo replied to this email on the Linux User Group of Mauritius (LUGM) mailing list and showed interest in doing a presentation for the next LUGM meetup.

The meetup happened today in Curepipe. I was not able to attend it physically, but thanks to Logan who did the necessary for setting up a Google Hangout session, I joined around 13h00. Shortly after, Avinash started his presentation “Introduction to Flask”.

flask-intro-avinash-meetoo

He welcomed everyone who joined and gave a quick brief about the underlying infrastructure of webapps. I particularly liked the way he explained the model-view-controller (MVC) software design pattern; taking from there he talked about Python frameworks. The popular Django framework comes first, Avinash says. Django should be a powerful framework when a lot is needed for a project, like an interface for backend etc. However, if someone wants a pretty quick setup, say for example a prototype for demo’ing to customers or a small web application, there is this Python micro-framework called Flask that comes handy. Avinash explains why it’s called a “micro” framework; reason being it’s limitation to a subset of functions that full stack Python frameworks would offer. Nonetheless, the functions in Flask are pretty enough for setting up web applications.

flask-logo

Avinash mentioned how he uses Flask in his many projects at Knowledge Seven and how he designed his web application electionsmauritius.com. He and his wife, Christina, came up with an idea about a web application to help Mauritians vote intelligently, two weeks before the General Elections 2014. Avinash then put his genius in the making of the “Elections Mauritius” webapp.

During the presentation, Avinash showed a demo of a simple web application and unveiled the code behind his “Elections Mauritius” web application. The prez lasted for approximately 50 mins including the questions & answers at the end. Those who missed the Hangout session can still catch up on YouTube and once again, thank you Avinash :)


Flask logo used from flask.pocoo.org.

The post Introduction to Flask appeared first on HACKLOG.

Bash source file

While I had no particular reason why to code it in Perl or Python, I ended writing my scripts in Bash on this Sunday afternoon. No huge tasks were meant to be executed, just some database reading. However, all of the short scripts would be using common variables, namely regarding the DB credentials. Sourcing variables from an external file could be achieved using . filename or source filename.

A little heck comes when passwords containing special characters such as $ < > [] {} ` ' " | & ; * ? are used. In your source file you need to escape each of those characters using a backslash symbol.

For example we could have a configuration file db.conf as follows:

HOST=localhost
DBNAME=testdb
DBUSER=user001
DBPASS=!p@ssw0rd$

Now, let’s get the variables as follows:

#!/bin/bash
. db.conf
echo $DBPASS

Copy the above in a file named getSQLPass.sh and we run it.

bash-source-file

The backslash symbols do not get printed.

The post Bash source file appeared first on HACKLOG.

Pygame with Fedora and Python 3

20141104-pygame

I’m having some fun with pygame, a library to create games in Python.

The exact steps to follow to have pygame in Python 3 on Fedora Linux are detailed in the Python Fun blog. In essence:

  • yum install python3 python3-tools python3-devel
  • yum install SDL SDL-devel portmidi portmidi-devel ffmpeg ffmpeg-devel SDL_image-devel SDL_mixer-devel SDL_ttf-devel libjpeg-turbo-devel
  • cd /usr/lib64 && ln -s libportmidi.so libporttime.so

This takes care of all dependencies needed (minus smpeg which does not exist in recent Fedora Linux distributions). Then:

  • Get the pygame source code (e.g. hg clone https://bitbucket.org/pygame/pygame)
  • python3 config.py
  • python3 setup.py build
  • python3 setup.py install

That’s it! Test by running python3 and importing pygame.

Have fun creating games ;-)

Pygame with Fedora and Python 3

20141104-pygame

I’m having some fun with pygame, a library to create games in Python.

The exact steps to follow to have pygame in Python 3 on Fedora Linux are detailed in the Python Fun blog. In essence:

  • yum install python3 python3-tools python3-devel
  • yum install SDL SDL-devel portmidi portmidi-devel ffmpeg ffmpeg-devel SDL_image-devel SDL_mixer-devel SDL_ttf-devel libjpeg-turbo-devel
  • cd /usr/lib64 && ln -s libportmidi.so libporttime.so

This takes care of all dependencies needed (minus smpeg which does not exist in recent Fedora Linux distributions). Then:

  • Get the pygame source code (e.g. hg clone https://bitbucket.org/pygame/pygame)
  • python3 config.py
  • python3 setup.py build
  • python3 setup.py install

That’s it! Test by running python3 and importing pygame.

Have fun creating games ;-)

Pygame with Fedora and Python 3

20141104-pygame

I’m having some fun with pygame, a library to create games in Python.

The exact steps to follow to have pygame in Python 3 on Fedora Linux are detailed in the Python Fun blog. In essence:

  • yum install python3 python3-tools python3-devel
  • yum install SDL SDL-devel portmidi portmidi-devel ffmpeg ffmpeg-devel
  • cd /usr/lib64 && ln -s libportmidi.so libporttime.so

This takes care of all dependencies needed (minus smpeg which does not exist in recent Fedora Linux distributions). Then:

  • Get the pygame source code (e.g. hg clone https://bitbucket.org/pygame/pygame)
  • python3 config.py
  • python3 setup.py build
  • python3 setup.py install

That’s it! Test by running python3 and importing pygame.

Have fun creating games ;-)

Geany, themes pack

Installed Geany on a fresh Ubuntu machine & I realise it does’t have much to offer as customization. Ran a quick sudo apt-cache search geany yet nothing about the themes. I did an Internet search and then I realised the last time I customized Geany it was using template config files from Codebrainz Github page.… Read more ➡

The post Geany, themes pack appeared first on HACKLOG.