gpg signed git commits

To enable git to sign commits we must configure the key to be used for signing. This can be accomplished by editing ~/.gitconfig

         name = Matt Kowalczyk
         email =
         signingkey = A53C8900B710D91F

Also, if you have both gpg and gpg2 installed on your system, you may need to force git to use a specific program to perform the signing. In my case, I needed to use gpg2 and this was accomplished by appending the below to ~/.gitconfig,

         program = gpg2

With these changes, we’re now able to sign commits and tags and also verify these signatures. For instance,

$ git add foo.txt
$ git commit -S -m "initial commit"
 [master (root-commit) 7f5db95] initial commit
  1 file changed, 1 insertion(+)
  create mode 100644 foo.txt
$ git log --show-signature
 commit 7f5db95d63f68813df4229835ca6b775dbe1b5ac
 gpg: Signature made Sat 08 Jun 2019 07:51:46 PM PDT using RSA key ID 951E6431
 gpg: Good signature from "Matt Kowalczyk" [ultimate]
 Author: Matt Kowalczyk
 Date:   Sat Jun 8 19:51:46 2019 -0700
 initial commit

Notice the use of --show-signature. The git-scm shows various other ways of useful git commands related to signing. For instance,

$ git merge --verify-signatures -S <BRANCH>
$ git rebase -S

Setting up Palm Pilot – Linux

So, I have had my Tungsten T3 Palm Pilot for quite some time now, but I’ve not been able to take full advantage of it in my daily work life. The problem was that when I purchased the Palm, I had a Windows XP system running the synchronization software. However, after removing Windows from my life, I’ve had to put aside my organizer until today.

This labor day weekend, I was determined to configure my Palm. Believe me, I have tried to task before and failed. I wonder what I did differently this time. Nonetheless, I have a fully functioning Tungsten T3 Palm Pilot capable of Internte access synchronizing with my system via the cradle. I will describe the steps I took to accomplish this goal along with some neat tools and services I discovered that make my Palm actually worth the money it cost.


  • Fedora Core 4 – Kernel Version 2.6.16-1-2111
  • Pilot Link 0.11.8-11.4
  • Pilot Link Devel 0.11.8-11.4
  • Gnome Pilot 2.0.13-5
  • Gnome Pilot Devel 2.0.13-5
  • USB Visor –
  • J-Pilot

Make sure that you have the above programs installed. You may download the Pilot Link and Gnome Pilot from Pilot Link ( is a program which allows you to interact with your Palm. It basically setups the capability for the Palm to communicate with Linux. Our synchronization programs will utilize pilot-link to send and retreive content to and from the palm. This is all done automatically by J-Pilot, we only need to have the softawre installed. J-Pilot is your Palm Desktop equivelent. It manages the synchronization of the Calendar, Contacts, ToDo List, and MemoPad. An alternative to J-Pilot is Evolution. Evolution is the answer to Microsoft Outlook for Linux. However, as far as synchronizing with a Palm, I found Evolution to be lacking. The address book did not update the Birthday field, and it did not support Memos. Plus, I use Thunderbird as my email client and do not need to be running yet another one. Lastily, USB Visor takes care of the USB interface for the Palm. When we plug the Palm into the system, Visor will detect it as a Palm and allow pilot-link to communicate with it. The Visor website contains all the information you may need to configure the tool.

Okay, first thing we need to do is load some kernel modules. Login as root and type:

/sbin/modprobe usbserial
/sbin/modprobe visor

You should then see:

> /sbin/lsmod | grep visor
visor 19405 0
usbserial 31501 1 visor

Print some /var/log/messages output

Talk about the

dlpsh -p /dev/ttyUSB1
Send link to
Setting up permissions
usbcam udev

Maintaining a random playlist

Today, I was thinking about how rhythmbox happens to be playing songs that I enjoy hearing, one after another. It for whatever reason, happens to know exactly the next song that I would like to hear. This got me thinking about the why this works. With these thoughts, I also got an idea how this processes could be improved to be even better.

When a new playlist is loaded, every song can be sorted on the following fields:

  • Title
  • Author
  • Album
  • Play count
  • Genre
  • Length
  • Last 10 time times
  • Surrounding tracks at last rating
  • Surrounding tracks at current rating

Play count is initialized to 0. Next, the user begins playing new tracks. This would increase the play count under the following conditions:

  • The song was completely played, or
  • The song was played atleast 75% and the next played track has a rating of atleast 3.

Upon updating the play count, the surrounding tracks are placed in the temporary surrounding tracks list. Later, this list becomes either the current rating or previous rating surrounding track list.

When a certain number of tracks have been seeded, the initialization of the random list can begin.

The first 10 tracks are sorted and the one with the most popular play time ( See most updating most popular play time ) closest to the current time is selected for play. This ensures that the first played song is a of high rating. Songs played at the same time, e.g. after work help build a profile of the listener. Perhaps, the individual begins preparing a meal when coming home from work at 6 pm. However, Friday he comes home at a different time and instead enjoys a different flavor of music. This sort of behavior requires that days are considered in the popular play time calculation.

Interesting things can begin to happen. The user at this time is always capable of switching to the next track. However, if the track is played through, note that its count and rating will be adjusted. This will continue for each succesively played track. Note that, occacionally, more frequent during first few minutes of playtime or number of songs played, the next selected track will be skewed from the current play list position. The exact offset is determined by a selective algorithm that considers the following information:

  • Tracks in the surrounding track list of the current and previous rating
  • Position at a random offset of the current. The exact offset is picked based on:
    • Genre similarity of next track compared to current
    • Artist
  • The above suggests that certain the next song should be as similiar to the current track as possilbe. It would be interesting to determine the beat patterns of the next songs in the list. It would also be beneficial to analyze and record a priority list of beat patterns which are most enjoyable to the current listener. This would be most ideal however suffers from a critical flaw in that different genres, even those in same, may have compeletly different patterns however they are appropriate to be played at the present time.

Now, certain songs are penelized in rating, more so, repelled from the list of surrounding tracks of current rating of the switching track. This may assist in composing distinctions between “moods” For instance, when I am listening to soft music and the next track isn’t desirable, I will change it. This behavior indicates that the two tracks are not related and instead, priority should be given to the track which was selected. This binding will enforce a playlist of desirable songs. Frequently, a song can place an individual into a specific mood. This is more strengthened when following songs further reinforce the mood. The listener is overcome with a feeling of “perfectly selected” tracks.

It would also be interesting to create a sorted list of authors based on rating. For instance, a list of favorite Do or Die songs. Note that at anytime that a song is played, a rating is increased. The author hopes that the listener is not consistently in random play and is continually refiniforcing behavioral patterns. However, this is far fetched. In reality, this cannot be guaranteed and the random play must exploring new songs on its own. It will therefore attemtp to select sogns over time which have never been visited. This process will create an organic playlist since new songs are selected. However, unattended play or attempt to find new songs can have negative effect since poisoning of the list can occur. This means that there must be an aggresive algorithm for 1. Retaining strong bounded songs and mood files 2. Be flexible in adjusting this list 3. Efficiently label songs as unwanted. The challange remains in that at one particular time a song was not friendly since it had bad timing (perhaps the mood algorithm was incorrect) it should still maintain its rating but analyses of whether the song should mainting its strong bound should be considered, perhaps simply weakened.

Allow people to queue next song – strong indicator of mood and acceptable next song – however, user may be experimenting and this should be accounted for. Allow users to quickly enable and disable the list. Also, allow users to easily remove songs from the queue.

Problems with iTunes Smart Playlist

The iTunes is apparently a successful manager of enormeous playlists. However, preminelary analysis shows critical falts including:

  • Only supports organization based on limited criteria which do not nesesseraly reflect the mood of the listener and validity of next play song. Smart Playlist is limited to:
    • Play count
    • File type filtretation
    • Conditions based on:
      • Time, genre, etc which includes field values created by customized user input – especially mood
    • In the mood is based on keywords associated with a song. Therefore, each song must be individually labelled with a particular mood.

Positive of Smart Playlist

There are qualities of Smart Playlist which make it a successful algorithm, including:

  • Creation and composition of multiple playlists. N x N relationships can be created among playlists. In other words, subsets of playlists can be composed to create a new smart playlist.


Note that additional research is needed into the Smart Playlist aswell as alternative solutions in order to leverage and incorporate successful solutions.

Note that algorithm must be able to determine songs that are enjoyable in a series, for instance, I like to hear all Phil Collins track.  It’s my Phil Collins mood.

Systematic method of file sharing

This post deals with creating a method that will allow users to download related files in a systematic fashion, e.g. automatically downloaded such as with RSS feeds).

The website contains a list of files that are requested for download. The processes will be explained with an example involving The Sopranos episodes. When the episode is aired or created, a user will attempt to upload it. Users will then download the file and be able to adjust its rating. Note that, several users will be able to upload the same file at the same time. This will allow for switching to valid files. It is negotioable whether users will be able to view all versions of possible tracks. It would be advisible to do so, since users will be able to download and rate higher successful uploads. Instead of listing all the user uploads for a parcticular file, instead, only the first five determined by the rating of the user uploading the file. Users posting a file similiar or with a certain number of positive tracks have their rating also increased.

Users with a high rating are rewarded in the following ways:
given more bandwidth for downloads

Download music
Download complete shows
Create communities for particular songs – voting?